/*! For license information please see popup.js.LICENSE.txt */
(() => {
  var __webpack_modules__ = {
    5307(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __webpack_unused_export__;
      __webpack_unused_export__ = validate10;
      const schema11 = {
        type: "object",
        required: [],
        additionalProperties: {
          type: "object",
          properties: {
            last_updated_at: {
              type: "number"
            }
          },
          required: [ "last_updated_at" ],
          additionalProperties: {
            type: "number",
            nullable: true
          },
          nullable: true
        }
      };
      function validate10(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          for (const key0 in data) {
            let data0 = data[key0];
            if (!(data0 && typeof data0 == "object" && !Array.isArray(data0)) && data0 !== null) {
              const err0 = {
                instancePath: instancePath + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),
                schemaPath: "#/additionalProperties/type",
                keyword: "type",
                params: {
                  type: "object"
                },
                message: "must be object"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
            if (data0 && typeof data0 == "object" && !Array.isArray(data0)) {
              if (data0.last_updated_at === undefined) {
                const err1 = {
                  instancePath: instancePath + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),
                  schemaPath: "#/additionalProperties/required",
                  keyword: "required",
                  params: {
                    missingProperty: "last_updated_at"
                  },
                  message: "must have required property '" + "last_updated_at" + "'"
                };
                if (vErrors === null) {
                  vErrors = [ err1 ];
                } else {
                  vErrors.push(err1);
                }
                errors++;
              }
              for (const key1 in data0) {
                if (!(key1 === "last_updated_at")) {
                  let data1 = data0[key1];
                  if (!(typeof data1 == "number" && isFinite(data1)) && data1 !== null) {
                    const err2 = {
                      instancePath: instancePath + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1") + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
                      schemaPath: "#/additionalProperties/additionalProperties/type",
                      keyword: "type",
                      params: {
                        type: "number"
                      },
                      message: "must be number"
                    };
                    if (vErrors === null) {
                      vErrors = [ err2 ];
                    } else {
                      vErrors.push(err2);
                    }
                    errors++;
                  }
                }
              }
              if (data0.last_updated_at !== undefined) {
                let data2 = data0.last_updated_at;
                if (!(typeof data2 == "number" && isFinite(data2))) {
                  const err3 = {
                    instancePath: instancePath + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1") + "/last_updated_at",
                    schemaPath: "#/additionalProperties/properties/last_updated_at/type",
                    keyword: "type",
                    params: {
                      type: "number"
                    },
                    message: "must be number"
                  };
                  if (vErrors === null) {
                    vErrors = [ err3 ];
                  } else {
                    vErrors.push(err3);
                  }
                  errors++;
                }
              }
            }
          }
        } else {
          const err4 = {
            instancePath,
            schemaPath: "#/type",
            keyword: "type",
            params: {
              type: "object"
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err4 ];
          } else {
            vErrors.push(err4);
          }
          errors++;
        }
        validate10.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate11;
      const schema12 = {
        $schema: "http://json-schema.org/draft-07/schema#",
        $id: "https://uniswap.org/tokenlist.schema.json",
        title: "Uniswap Token List",
        description: "Schema for lists of tokens compatible with the Uniswap Interface",
        definitions: {
          Version: {
            type: "object",
            description: "The version of the list, used in change detection",
            examples: [ {
              major: 1,
              minor: 0,
              patch: 0
            } ],
            additionalProperties: false,
            properties: {
              major: {
                type: "integer",
                description: "The major version of the list. Must be incremented when tokens are removed from the list or token addresses are changed.",
                minimum: 0,
                examples: [ 1, 2 ]
              },
              minor: {
                type: "integer",
                description: "The minor version of the list. Must be incremented when tokens are added to the list.",
                minimum: 0,
                examples: [ 0, 1 ]
              },
              patch: {
                type: "integer",
                description: "The patch version of the list. Must be incremented for any changes to the list.",
                minimum: 0,
                examples: [ 0, 1 ]
              }
            },
            required: [ "major", "minor", "patch" ]
          },
          TagIdentifier: {
            type: "string",
            description: "The unique identifier of a tag",
            minLength: 1,
            maxLength: 10,
            pattern: "^[\\w]+$",
            examples: [ "compound", "stablecoin" ]
          },
          ExtensionIdentifier: {
            type: "string",
            description: "The name of a token extension property",
            minLength: 1,
            maxLength: 40,
            pattern: "^[\\w]+$",
            examples: [ "color", "is_fee_on_transfer", "aliases" ]
          },
          ExtensionMap: {
            type: "object",
            description: "An object containing any arbitrary or vendor-specific token metadata",
            maxProperties: 10,
            propertyNames: {
              $ref: "#/definitions/ExtensionIdentifier"
            },
            additionalProperties: {
              $ref: "#/definitions/ExtensionValue"
            },
            examples: [ {
              color: "#000000",
              is_verified_by_me: true
            }, {
              "x-bridged-addresses-by-chain": {
                1: {
                  bridgeAddress: "0x4200000000000000000000000000000000000010",
                  tokenAddress: "0x4200000000000000000000000000000000000010"
                }
              }
            } ]
          },
          ExtensionPrimitiveValue: {
            anyOf: [ {
              type: "string",
              minLength: 1,
              maxLength: 42,
              examples: [ "#00000" ]
            }, {
              type: "boolean",
              examples: [ true ]
            }, {
              type: "number",
              examples: [ 15 ]
            }, {
              type: "null"
            } ]
          },
          ExtensionValue: {
            anyOf: [ {
              $ref: "#/definitions/ExtensionPrimitiveValue"
            }, {
              type: "object",
              maxProperties: 10,
              propertyNames: {
                $ref: "#/definitions/ExtensionIdentifier"
              },
              additionalProperties: {
                $ref: "#/definitions/ExtensionValueInner0"
              }
            } ]
          },
          ExtensionValueInner0: {
            anyOf: [ {
              $ref: "#/definitions/ExtensionPrimitiveValue"
            }, {
              type: "object",
              maxProperties: 10,
              propertyNames: {
                $ref: "#/definitions/ExtensionIdentifier"
              },
              additionalProperties: {
                $ref: "#/definitions/ExtensionValueInner1"
              }
            } ]
          },
          ExtensionValueInner1: {
            anyOf: [ {
              $ref: "#/definitions/ExtensionPrimitiveValue"
            } ]
          },
          TagDefinition: {
            type: "object",
            description: "Definition of a tag that can be associated with a token via its identifier",
            additionalProperties: false,
            properties: {
              name: {
                type: "string",
                description: "The name of the tag",
                pattern: "^[ \\w]+$",
                minLength: 1,
                maxLength: 20
              },
              description: {
                type: "string",
                description: "A user-friendly description of the tag",
                pattern: "^[ \\w\\.,:]+$",
                minLength: 1,
                maxLength: 200
              }
            },
            required: [ "name", "description" ],
            examples: [ {
              name: "Stablecoin",
              description: "A token with value pegged to another asset"
            } ]
          },
          TokenInfo: {
            type: "object",
            description: "Metadata for a single token in a token list",
            additionalProperties: false,
            properties: {
              chainId: {
                type: "integer",
                description: "The chain ID of the Ethereum network where this token is deployed",
                minimum: 1,
                examples: [ 1, 42 ]
              },
              address: {
                type: "string",
                description: "The checksummed address of the token on the specified chain ID",
                pattern: "^0x[a-fA-F0-9]{40}$",
                examples: [ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" ]
              },
              decimals: {
                type: "integer",
                description: "The number of decimals for the token balance",
                minimum: 0,
                maximum: 255,
                examples: [ 18 ]
              },
              name: {
                type: "string",
                description: "The name of the token",
                minLength: 1,
                maxLength: 40,
                pattern: "^[ \\w.'+\\-%/À-ÖØ-öø-ÿ:&\\[\\]\\(\\)]+$",
                examples: [ "USD Coin" ]
              },
              symbol: {
                type: "string",
                description: "The symbol for the token; must be alphanumeric",
                pattern: "^[a-zA-Z0-9+\\-%/$.]+$",
                minLength: 1,
                maxLength: 20,
                examples: [ "USDC" ]
              },
              logoURI: {
                type: "string",
                description: "A URI to the token logo asset; if not set, interface will attempt to find a logo based on the token address; suggest SVG or PNG of size 64x64",
                format: "uri",
                examples: [ "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" ]
              },
              tags: {
                type: "array",
                description: "An array of tag identifiers associated with the token; tags are defined at the list level",
                items: {
                  $ref: "#/definitions/TagIdentifier"
                },
                maxItems: 10,
                examples: [ "stablecoin", "compound" ]
              },
              extensions: {
                $ref: "#/definitions/ExtensionMap"
              }
            },
            required: [ "chainId", "address", "decimals", "name", "symbol" ]
          }
        },
        type: "object",
        additionalProperties: false,
        properties: {
          name: {
            type: "string",
            description: "The name of the token list",
            minLength: 1,
            maxLength: 30,
            pattern: "^[\\w ]+$",
            examples: [ "My Token List" ]
          },
          timestamp: {
            type: "string",
            format: "date-time",
            description: "The timestamp of this list version; i.e. when this immutable version of the list was created"
          },
          version: {
            $ref: "#/definitions/Version"
          },
          tokens: {
            type: "array",
            description: "The list of tokens included in the list",
            items: {
              $ref: "#/definitions/TokenInfo"
            },
            minItems: 1,
            maxItems: 1e4
          },
          keywords: {
            type: "array",
            description: "Keywords associated with the contents of the list; may be used in list discoverability",
            items: {
              type: "string",
              description: "A keyword to describe the contents of the list",
              minLength: 1,
              maxLength: 20,
              pattern: "^[\\w ]+$",
              examples: [ "compound", "lending", "personal tokens" ]
            },
            maxItems: 20,
            uniqueItems: true
          },
          tags: {
            type: "object",
            description: "A mapping of tag identifiers to their name and description",
            propertyNames: {
              $ref: "#/definitions/TagIdentifier"
            },
            additionalProperties: {
              $ref: "#/definitions/TagDefinition"
            },
            maxProperties: 20,
            examples: [ {
              stablecoin: {
                name: "Stablecoin",
                description: "A token with value pegged to another asset"
              }
            } ]
          },
          logoURI: {
            type: "string",
            description: "A URI for the logo of the token list; prefer SVG or PNG of size 256x256",
            format: "uri",
            examples: [ "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" ]
          }
        },
        required: [ "name", "timestamp", "version", "tokens" ]
      };
      const schema13 = {
        type: "object",
        description: "The version of the list, used in change detection",
        examples: [ {
          major: 1,
          minor: 0,
          patch: 0
        } ],
        additionalProperties: false,
        properties: {
          major: {
            type: "integer",
            description: "The major version of the list. Must be incremented when tokens are removed from the list or token addresses are changed.",
            minimum: 0,
            examples: [ 1, 2 ]
          },
          minor: {
            type: "integer",
            description: "The minor version of the list. Must be incremented when tokens are added to the list.",
            minimum: 0,
            examples: [ 0, 1 ]
          },
          patch: {
            type: "integer",
            description: "The patch version of the list. Must be incremented for any changes to the list.",
            minimum: 0,
            examples: [ 0, 1 ]
          }
        },
        required: [ "major", "minor", "patch" ]
      };
      const schema15 = {
        type: "string",
        description: "The unique identifier of a tag",
        minLength: 1,
        maxLength: 10,
        pattern: "^[\\w]+$",
        examples: [ "compound", "stablecoin" ]
      };
      const schema27 = {
        type: "object",
        description: "Definition of a tag that can be associated with a token via its identifier",
        additionalProperties: false,
        properties: {
          name: {
            type: "string",
            description: "The name of the tag",
            pattern: "^[ \\w]+$",
            minLength: 1,
            maxLength: 20
          },
          description: {
            type: "string",
            description: "A user-friendly description of the tag",
            pattern: "^[ \\w\\.,:]+$",
            minLength: 1,
            maxLength: 200
          }
        },
        required: [ "name", "description" ],
        examples: [ {
          name: "Stablecoin",
          description: "A token with value pegged to another asset"
        } ]
      };
      const func4 = __webpack_require__(3853).A;
      const pattern0 = new RegExp("^[\\w ]+$", "u");
      const pattern4 = new RegExp("^[\\w]+$", "u");
      const pattern10 = new RegExp("^[ \\w]+$", "u");
      const pattern11 = new RegExp("^[ \\w\\.,:]+$", "u");
      const schema14 = {
        type: "object",
        description: "Metadata for a single token in a token list",
        additionalProperties: false,
        properties: {
          chainId: {
            type: "integer",
            description: "The chain ID of the Ethereum network where this token is deployed",
            minimum: 1,
            examples: [ 1, 42 ]
          },
          address: {
            type: "string",
            description: "The checksummed address of the token on the specified chain ID",
            pattern: "^0x[a-fA-F0-9]{40}$",
            examples: [ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" ]
          },
          decimals: {
            type: "integer",
            description: "The number of decimals for the token balance",
            minimum: 0,
            maximum: 255,
            examples: [ 18 ]
          },
          name: {
            type: "string",
            description: "The name of the token",
            minLength: 1,
            maxLength: 40,
            pattern: "^[ \\w.'+\\-%/À-ÖØ-öø-ÿ:&\\[\\]\\(\\)]+$",
            examples: [ "USD Coin" ]
          },
          symbol: {
            type: "string",
            description: "The symbol for the token; must be alphanumeric",
            pattern: "^[a-zA-Z0-9+\\-%/$.]+$",
            minLength: 1,
            maxLength: 20,
            examples: [ "USDC" ]
          },
          logoURI: {
            type: "string",
            description: "A URI to the token logo asset; if not set, interface will attempt to find a logo based on the token address; suggest SVG or PNG of size 64x64",
            format: "uri",
            examples: [ "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" ]
          },
          tags: {
            type: "array",
            description: "An array of tag identifiers associated with the token; tags are defined at the list level",
            items: {
              $ref: "#/definitions/TagIdentifier"
            },
            maxItems: 10,
            examples: [ "stablecoin", "compound" ]
          },
          extensions: {
            $ref: "#/definitions/ExtensionMap"
          }
        },
        required: [ "chainId", "address", "decimals", "name", "symbol" ]
      };
      const pattern1 = new RegExp("^0x[a-fA-F0-9]{40}$", "u");
      const pattern2 = new RegExp("^[ \\w.'+\\-%/À-ÖØ-öø-ÿ:&\\[\\]\\(\\)]+$", "u");
      const pattern3 = new RegExp("^[a-zA-Z0-9+\\-%/$.]+$", "u");
      const schema16 = {
        type: "object",
        description: "An object containing any arbitrary or vendor-specific token metadata",
        maxProperties: 10,
        propertyNames: {
          $ref: "#/definitions/ExtensionIdentifier"
        },
        additionalProperties: {
          $ref: "#/definitions/ExtensionValue"
        },
        examples: [ {
          color: "#000000",
          is_verified_by_me: true
        }, {
          "x-bridged-addresses-by-chain": {
            1: {
              bridgeAddress: "0x4200000000000000000000000000000000000010",
              tokenAddress: "0x4200000000000000000000000000000000000010"
            }
          }
        } ]
      };
      const schema17 = {
        type: "string",
        description: "The name of a token extension property",
        minLength: 1,
        maxLength: 40,
        pattern: "^[\\w]+$",
        examples: [ "color", "is_fee_on_transfer", "aliases" ]
      };
      const schema18 = {
        anyOf: [ {
          $ref: "#/definitions/ExtensionPrimitiveValue"
        }, {
          type: "object",
          maxProperties: 10,
          propertyNames: {
            $ref: "#/definitions/ExtensionIdentifier"
          },
          additionalProperties: {
            $ref: "#/definitions/ExtensionValueInner0"
          }
        } ]
      };
      const schema19 = {
        anyOf: [ {
          type: "string",
          minLength: 1,
          maxLength: 42,
          examples: [ "#00000" ]
        }, {
          type: "boolean",
          examples: [ true ]
        }, {
          type: "number",
          examples: [ 15 ]
        }, {
          type: "null"
        } ]
      };
      const schema21 = {
        anyOf: [ {
          $ref: "#/definitions/ExtensionPrimitiveValue"
        }, {
          type: "object",
          maxProperties: 10,
          propertyNames: {
            $ref: "#/definitions/ExtensionIdentifier"
          },
          additionalProperties: {
            $ref: "#/definitions/ExtensionValueInner1"
          }
        } ]
      };
      const schema24 = {
        anyOf: [ {
          $ref: "#/definitions/ExtensionPrimitiveValue"
        } ]
      };
      function validate16(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        const _errs0 = errors;
        let valid0 = false;
        const _errs1 = errors;
        const _errs3 = errors;
        let valid2 = false;
        const _errs4 = errors;
        if (typeof data === "string") {
          if (func4(data) > 42) {
            const err0 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/maxLength",
              keyword: "maxLength",
              params: {
                limit: 42
              },
              message: "must NOT have more than 42 characters"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          if (func4(data) < 1) {
            const err1 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/minLength",
              keyword: "minLength",
              params: {
                limit: 1
              },
              message: "must NOT have fewer than 1 characters"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
        } else {
          const err2 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/type",
            keyword: "type",
            params: {
              type: "string"
            },
            message: "must be string"
          };
          if (vErrors === null) {
            vErrors = [ err2 ];
          } else {
            vErrors.push(err2);
          }
          errors++;
        }
        var _valid1 = _errs4 === errors;
        valid2 = valid2 || _valid1;
        if (!valid2) {
          const _errs6 = errors;
          if (typeof data !== "boolean") {
            const err3 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/1/type",
              keyword: "type",
              params: {
                type: "boolean"
              },
              message: "must be boolean"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          var _valid1 = _errs6 === errors;
          valid2 = valid2 || _valid1;
          if (!valid2) {
            const _errs8 = errors;
            if (!(typeof data == "number" && isFinite(data))) {
              const err4 = {
                instancePath,
                schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/2/type",
                keyword: "type",
                params: {
                  type: "number"
                },
                message: "must be number"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
            var _valid1 = _errs8 === errors;
            valid2 = valid2 || _valid1;
            if (!valid2) {
              const _errs10 = errors;
              if (data !== null) {
                const err5 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/3/type",
                  keyword: "type",
                  params: {
                    type: "null"
                  },
                  message: "must be null"
                };
                if (vErrors === null) {
                  vErrors = [ err5 ];
                } else {
                  vErrors.push(err5);
                }
                errors++;
              }
              var _valid1 = _errs10 === errors;
              valid2 = valid2 || _valid1;
            }
          }
        }
        if (!valid2) {
          const err6 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err6 ];
          } else {
            vErrors.push(err6);
          }
          errors++;
        } else {
          errors = _errs3;
          if (vErrors !== null) {
            if (_errs3) {
              vErrors.length = _errs3;
            } else {
              vErrors = null;
            }
          }
        }
        var _valid0 = _errs1 === errors;
        valid0 = valid0 || _valid0;
        if (!valid0) {
          const err7 = {
            instancePath,
            schemaPath: "#/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err7 ];
          } else {
            vErrors.push(err7);
          }
          errors++;
        } else {
          errors = _errs0;
          if (vErrors !== null) {
            if (_errs0) {
              vErrors.length = _errs0;
            } else {
              vErrors = null;
            }
          }
        }
        validate16.errors = vErrors;
        return errors === 0;
      }
      function validate15(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        const _errs0 = errors;
        let valid0 = false;
        const _errs1 = errors;
        const _errs3 = errors;
        let valid2 = false;
        const _errs4 = errors;
        if (typeof data === "string") {
          if (func4(data) > 42) {
            const err0 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/maxLength",
              keyword: "maxLength",
              params: {
                limit: 42
              },
              message: "must NOT have more than 42 characters"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          if (func4(data) < 1) {
            const err1 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/minLength",
              keyword: "minLength",
              params: {
                limit: 1
              },
              message: "must NOT have fewer than 1 characters"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
        } else {
          const err2 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/type",
            keyword: "type",
            params: {
              type: "string"
            },
            message: "must be string"
          };
          if (vErrors === null) {
            vErrors = [ err2 ];
          } else {
            vErrors.push(err2);
          }
          errors++;
        }
        var _valid1 = _errs4 === errors;
        valid2 = valid2 || _valid1;
        if (!valid2) {
          const _errs6 = errors;
          if (typeof data !== "boolean") {
            const err3 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/1/type",
              keyword: "type",
              params: {
                type: "boolean"
              },
              message: "must be boolean"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          var _valid1 = _errs6 === errors;
          valid2 = valid2 || _valid1;
          if (!valid2) {
            const _errs8 = errors;
            if (!(typeof data == "number" && isFinite(data))) {
              const err4 = {
                instancePath,
                schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/2/type",
                keyword: "type",
                params: {
                  type: "number"
                },
                message: "must be number"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
            var _valid1 = _errs8 === errors;
            valid2 = valid2 || _valid1;
            if (!valid2) {
              const _errs10 = errors;
              if (data !== null) {
                const err5 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/3/type",
                  keyword: "type",
                  params: {
                    type: "null"
                  },
                  message: "must be null"
                };
                if (vErrors === null) {
                  vErrors = [ err5 ];
                } else {
                  vErrors.push(err5);
                }
                errors++;
              }
              var _valid1 = _errs10 === errors;
              valid2 = valid2 || _valid1;
            }
          }
        }
        if (!valid2) {
          const err6 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err6 ];
          } else {
            vErrors.push(err6);
          }
          errors++;
        } else {
          errors = _errs3;
          if (vErrors !== null) {
            if (_errs3) {
              vErrors.length = _errs3;
            } else {
              vErrors = null;
            }
          }
        }
        var _valid0 = _errs1 === errors;
        valid0 = valid0 || _valid0;
        if (!valid0) {
          const _errs12 = errors;
          if (data && typeof data == "object" && !Array.isArray(data)) {
            if (Object.keys(data).length > 10) {
              const err7 = {
                instancePath,
                schemaPath: "#/anyOf/1/maxProperties",
                keyword: "maxProperties",
                params: {
                  limit: 10
                },
                message: "must NOT have more than 10 items"
              };
              if (vErrors === null) {
                vErrors = [ err7 ];
              } else {
                vErrors.push(err7);
              }
              errors++;
            }
            for (const key0 in data) {
              const _errs14 = errors;
              if (typeof key0 === "string") {
                if (func4(key0) > 40) {
                  const err8 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/maxLength",
                    keyword: "maxLength",
                    params: {
                      limit: 40
                    },
                    message: "must NOT have more than 40 characters",
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err8 ];
                  } else {
                    vErrors.push(err8);
                  }
                  errors++;
                }
                if (func4(key0) < 1) {
                  const err9 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/minLength",
                    keyword: "minLength",
                    params: {
                      limit: 1
                    },
                    message: "must NOT have fewer than 1 characters",
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err9 ];
                  } else {
                    vErrors.push(err9);
                  }
                  errors++;
                }
                if (!pattern4.test(key0)) {
                  const err10 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/pattern",
                    keyword: "pattern",
                    params: {
                      pattern: "^[\\w]+$"
                    },
                    message: 'must match pattern "' + "^[\\w]+$" + '"',
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err10 ];
                  } else {
                    vErrors.push(err10);
                  }
                  errors++;
                }
              } else {
                const err11 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionIdentifier/type",
                  keyword: "type",
                  params: {
                    type: "string"
                  },
                  message: "must be string",
                  propertyName: key0
                };
                if (vErrors === null) {
                  vErrors = [ err11 ];
                } else {
                  vErrors.push(err11);
                }
                errors++;
              }
              var valid3 = _errs14 === errors;
              if (!valid3) {
                const err12 = {
                  instancePath,
                  schemaPath: "#/anyOf/1/propertyNames",
                  keyword: "propertyNames",
                  params: {
                    propertyName: key0
                  },
                  message: "property name must be valid"
                };
                if (vErrors === null) {
                  vErrors = [ err12 ];
                } else {
                  vErrors.push(err12);
                }
                errors++;
              }
            }
            for (const key1 in data) {
              if (!validate16(data[key1], {
                instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
                parentData: data,
                parentDataProperty: key1,
                rootData
              })) {
                vErrors = vErrors === null ? validate16.errors : vErrors.concat(validate16.errors);
                errors = vErrors.length;
              }
            }
          } else {
            const err13 = {
              instancePath,
              schemaPath: "#/anyOf/1/type",
              keyword: "type",
              params: {
                type: "object"
              },
              message: "must be object"
            };
            if (vErrors === null) {
              vErrors = [ err13 ];
            } else {
              vErrors.push(err13);
            }
            errors++;
          }
          var _valid0 = _errs12 === errors;
          valid0 = valid0 || _valid0;
        }
        if (!valid0) {
          const err14 = {
            instancePath,
            schemaPath: "#/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err14 ];
          } else {
            vErrors.push(err14);
          }
          errors++;
        } else {
          errors = _errs0;
          if (vErrors !== null) {
            if (_errs0) {
              vErrors.length = _errs0;
            } else {
              vErrors = null;
            }
          }
        }
        validate15.errors = vErrors;
        return errors === 0;
      }
      function validate14(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        const _errs0 = errors;
        let valid0 = false;
        const _errs1 = errors;
        const _errs3 = errors;
        let valid2 = false;
        const _errs4 = errors;
        if (typeof data === "string") {
          if (func4(data) > 42) {
            const err0 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/maxLength",
              keyword: "maxLength",
              params: {
                limit: 42
              },
              message: "must NOT have more than 42 characters"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          if (func4(data) < 1) {
            const err1 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/minLength",
              keyword: "minLength",
              params: {
                limit: 1
              },
              message: "must NOT have fewer than 1 characters"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
        } else {
          const err2 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/0/type",
            keyword: "type",
            params: {
              type: "string"
            },
            message: "must be string"
          };
          if (vErrors === null) {
            vErrors = [ err2 ];
          } else {
            vErrors.push(err2);
          }
          errors++;
        }
        var _valid1 = _errs4 === errors;
        valid2 = valid2 || _valid1;
        if (!valid2) {
          const _errs6 = errors;
          if (typeof data !== "boolean") {
            const err3 = {
              instancePath,
              schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/1/type",
              keyword: "type",
              params: {
                type: "boolean"
              },
              message: "must be boolean"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          var _valid1 = _errs6 === errors;
          valid2 = valid2 || _valid1;
          if (!valid2) {
            const _errs8 = errors;
            if (!(typeof data == "number" && isFinite(data))) {
              const err4 = {
                instancePath,
                schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/2/type",
                keyword: "type",
                params: {
                  type: "number"
                },
                message: "must be number"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
            var _valid1 = _errs8 === errors;
            valid2 = valid2 || _valid1;
            if (!valid2) {
              const _errs10 = errors;
              if (data !== null) {
                const err5 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf/3/type",
                  keyword: "type",
                  params: {
                    type: "null"
                  },
                  message: "must be null"
                };
                if (vErrors === null) {
                  vErrors = [ err5 ];
                } else {
                  vErrors.push(err5);
                }
                errors++;
              }
              var _valid1 = _errs10 === errors;
              valid2 = valid2 || _valid1;
            }
          }
        }
        if (!valid2) {
          const err6 = {
            instancePath,
            schemaPath: "#/definitions/ExtensionPrimitiveValue/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err6 ];
          } else {
            vErrors.push(err6);
          }
          errors++;
        } else {
          errors = _errs3;
          if (vErrors !== null) {
            if (_errs3) {
              vErrors.length = _errs3;
            } else {
              vErrors = null;
            }
          }
        }
        var _valid0 = _errs1 === errors;
        valid0 = valid0 || _valid0;
        if (!valid0) {
          const _errs12 = errors;
          if (data && typeof data == "object" && !Array.isArray(data)) {
            if (Object.keys(data).length > 10) {
              const err7 = {
                instancePath,
                schemaPath: "#/anyOf/1/maxProperties",
                keyword: "maxProperties",
                params: {
                  limit: 10
                },
                message: "must NOT have more than 10 items"
              };
              if (vErrors === null) {
                vErrors = [ err7 ];
              } else {
                vErrors.push(err7);
              }
              errors++;
            }
            for (const key0 in data) {
              const _errs14 = errors;
              if (typeof key0 === "string") {
                if (func4(key0) > 40) {
                  const err8 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/maxLength",
                    keyword: "maxLength",
                    params: {
                      limit: 40
                    },
                    message: "must NOT have more than 40 characters",
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err8 ];
                  } else {
                    vErrors.push(err8);
                  }
                  errors++;
                }
                if (func4(key0) < 1) {
                  const err9 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/minLength",
                    keyword: "minLength",
                    params: {
                      limit: 1
                    },
                    message: "must NOT have fewer than 1 characters",
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err9 ];
                  } else {
                    vErrors.push(err9);
                  }
                  errors++;
                }
                if (!pattern4.test(key0)) {
                  const err10 = {
                    instancePath,
                    schemaPath: "#/definitions/ExtensionIdentifier/pattern",
                    keyword: "pattern",
                    params: {
                      pattern: "^[\\w]+$"
                    },
                    message: 'must match pattern "' + "^[\\w]+$" + '"',
                    propertyName: key0
                  };
                  if (vErrors === null) {
                    vErrors = [ err10 ];
                  } else {
                    vErrors.push(err10);
                  }
                  errors++;
                }
              } else {
                const err11 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionIdentifier/type",
                  keyword: "type",
                  params: {
                    type: "string"
                  },
                  message: "must be string",
                  propertyName: key0
                };
                if (vErrors === null) {
                  vErrors = [ err11 ];
                } else {
                  vErrors.push(err11);
                }
                errors++;
              }
              var valid3 = _errs14 === errors;
              if (!valid3) {
                const err12 = {
                  instancePath,
                  schemaPath: "#/anyOf/1/propertyNames",
                  keyword: "propertyNames",
                  params: {
                    propertyName: key0
                  },
                  message: "property name must be valid"
                };
                if (vErrors === null) {
                  vErrors = [ err12 ];
                } else {
                  vErrors.push(err12);
                }
                errors++;
              }
            }
            for (const key1 in data) {
              if (!validate15(data[key1], {
                instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
                parentData: data,
                parentDataProperty: key1,
                rootData
              })) {
                vErrors = vErrors === null ? validate15.errors : vErrors.concat(validate15.errors);
                errors = vErrors.length;
              }
            }
          } else {
            const err13 = {
              instancePath,
              schemaPath: "#/anyOf/1/type",
              keyword: "type",
              params: {
                type: "object"
              },
              message: "must be object"
            };
            if (vErrors === null) {
              vErrors = [ err13 ];
            } else {
              vErrors.push(err13);
            }
            errors++;
          }
          var _valid0 = _errs12 === errors;
          valid0 = valid0 || _valid0;
        }
        if (!valid0) {
          const err14 = {
            instancePath,
            schemaPath: "#/anyOf",
            keyword: "anyOf",
            params: {},
            message: "must match a schema in anyOf"
          };
          if (vErrors === null) {
            vErrors = [ err14 ];
          } else {
            vErrors.push(err14);
          }
          errors++;
        } else {
          errors = _errs0;
          if (vErrors !== null) {
            if (_errs0) {
              vErrors.length = _errs0;
            } else {
              vErrors = null;
            }
          }
        }
        validate14.errors = vErrors;
        return errors === 0;
      }
      function validate13(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          if (Object.keys(data).length > 10) {
            const err0 = {
              instancePath,
              schemaPath: "#/maxProperties",
              keyword: "maxProperties",
              params: {
                limit: 10
              },
              message: "must NOT have more than 10 items"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          for (const key0 in data) {
            const _errs1 = errors;
            if (typeof key0 === "string") {
              if (func4(key0) > 40) {
                const err1 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionIdentifier/maxLength",
                  keyword: "maxLength",
                  params: {
                    limit: 40
                  },
                  message: "must NOT have more than 40 characters",
                  propertyName: key0
                };
                if (vErrors === null) {
                  vErrors = [ err1 ];
                } else {
                  vErrors.push(err1);
                }
                errors++;
              }
              if (func4(key0) < 1) {
                const err2 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionIdentifier/minLength",
                  keyword: "minLength",
                  params: {
                    limit: 1
                  },
                  message: "must NOT have fewer than 1 characters",
                  propertyName: key0
                };
                if (vErrors === null) {
                  vErrors = [ err2 ];
                } else {
                  vErrors.push(err2);
                }
                errors++;
              }
              if (!pattern4.test(key0)) {
                const err3 = {
                  instancePath,
                  schemaPath: "#/definitions/ExtensionIdentifier/pattern",
                  keyword: "pattern",
                  params: {
                    pattern: "^[\\w]+$"
                  },
                  message: 'must match pattern "' + "^[\\w]+$" + '"',
                  propertyName: key0
                };
                if (vErrors === null) {
                  vErrors = [ err3 ];
                } else {
                  vErrors.push(err3);
                }
                errors++;
              }
            } else {
              const err4 = {
                instancePath,
                schemaPath: "#/definitions/ExtensionIdentifier/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string",
                propertyName: key0
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
            var valid0 = _errs1 === errors;
            if (!valid0) {
              const err5 = {
                instancePath,
                schemaPath: "#/propertyNames",
                keyword: "propertyNames",
                params: {
                  propertyName: key0
                },
                message: "property name must be valid"
              };
              if (vErrors === null) {
                vErrors = [ err5 ];
              } else {
                vErrors.push(err5);
              }
              errors++;
            }
          }
          for (const key1 in data) {
            if (!validate14(data[key1], {
              instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
              parentData: data,
              parentDataProperty: key1,
              rootData
            })) {
              vErrors = vErrors === null ? validate14.errors : vErrors.concat(validate14.errors);
              errors = vErrors.length;
            }
          }
        } else {
          const err6 = {
            instancePath,
            schemaPath: "#/type",
            keyword: "type",
            params: {
              type: "object"
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err6 ];
          } else {
            vErrors.push(err6);
          }
          errors++;
        }
        validate13.errors = vErrors;
        return errors === 0;
      }
      function validate12(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          if (data.chainId === undefined) {
            const err0 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "chainId"
              },
              message: "must have required property '" + "chainId" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          if (data.address === undefined) {
            const err1 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "address"
              },
              message: "must have required property '" + "address" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.decimals === undefined) {
            const err2 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "decimals"
              },
              message: "must have required property '" + "decimals" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err2 ];
            } else {
              vErrors.push(err2);
            }
            errors++;
          }
          if (data.name === undefined) {
            const err3 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "name"
              },
              message: "must have required property '" + "name" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          if (data.symbol === undefined) {
            const err4 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "symbol"
              },
              message: "must have required property '" + "symbol" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err4 ];
            } else {
              vErrors.push(err4);
            }
            errors++;
          }
          for (const key0 in data) {
            if (!(key0 === "chainId" || key0 === "address" || key0 === "decimals" || key0 === "name" || key0 === "symbol" || key0 === "logoURI" || key0 === "tags" || key0 === "extensions")) {
              const err5 = {
                instancePath,
                schemaPath: "#/additionalProperties",
                keyword: "additionalProperties",
                params: {
                  additionalProperty: key0
                },
                message: "must NOT have additional properties"
              };
              if (vErrors === null) {
                vErrors = [ err5 ];
              } else {
                vErrors.push(err5);
              }
              errors++;
            }
          }
          if (data.chainId !== undefined) {
            let data0 = data.chainId;
            if (!(typeof data0 == "number" && (!(data0 % 1) && !isNaN(data0)) && isFinite(data0))) {
              const err6 = {
                instancePath: instancePath + "/chainId",
                schemaPath: "#/properties/chainId/type",
                keyword: "type",
                params: {
                  type: "integer"
                },
                message: "must be integer"
              };
              if (vErrors === null) {
                vErrors = [ err6 ];
              } else {
                vErrors.push(err6);
              }
              errors++;
            }
            if (typeof data0 == "number" && isFinite(data0)) {
              if (data0 < 1 || isNaN(data0)) {
                const err7 = {
                  instancePath: instancePath + "/chainId",
                  schemaPath: "#/properties/chainId/minimum",
                  keyword: "minimum",
                  params: {
                    comparison: ">=",
                    limit: 1
                  },
                  message: "must be >= 1"
                };
                if (vErrors === null) {
                  vErrors = [ err7 ];
                } else {
                  vErrors.push(err7);
                }
                errors++;
              }
            }
          }
          if (data.address !== undefined) {
            let data1 = data.address;
            if (typeof data1 === "string") {
              if (!pattern1.test(data1)) {
                const err8 = {
                  instancePath: instancePath + "/address",
                  schemaPath: "#/properties/address/pattern",
                  keyword: "pattern",
                  params: {
                    pattern: "^0x[a-fA-F0-9]{40}$"
                  },
                  message: 'must match pattern "' + "^0x[a-fA-F0-9]{40}$" + '"'
                };
                if (vErrors === null) {
                  vErrors = [ err8 ];
                } else {
                  vErrors.push(err8);
                }
                errors++;
              }
            } else {
              const err9 = {
                instancePath: instancePath + "/address",
                schemaPath: "#/properties/address/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err9 ];
              } else {
                vErrors.push(err9);
              }
              errors++;
            }
          }
          if (data.decimals !== undefined) {
            let data2 = data.decimals;
            if (!(typeof data2 == "number" && (!(data2 % 1) && !isNaN(data2)) && isFinite(data2))) {
              const err10 = {
                instancePath: instancePath + "/decimals",
                schemaPath: "#/properties/decimals/type",
                keyword: "type",
                params: {
                  type: "integer"
                },
                message: "must be integer"
              };
              if (vErrors === null) {
                vErrors = [ err10 ];
              } else {
                vErrors.push(err10);
              }
              errors++;
            }
            if (typeof data2 == "number" && isFinite(data2)) {
              if (data2 > 255 || isNaN(data2)) {
                const err11 = {
                  instancePath: instancePath + "/decimals",
                  schemaPath: "#/properties/decimals/maximum",
                  keyword: "maximum",
                  params: {
                    comparison: "<=",
                    limit: 255
                  },
                  message: "must be <= 255"
                };
                if (vErrors === null) {
                  vErrors = [ err11 ];
                } else {
                  vErrors.push(err11);
                }
                errors++;
              }
              if (data2 < 0 || isNaN(data2)) {
                const err12 = {
                  instancePath: instancePath + "/decimals",
                  schemaPath: "#/properties/decimals/minimum",
                  keyword: "minimum",
                  params: {
                    comparison: ">=",
                    limit: 0
                  },
                  message: "must be >= 0"
                };
                if (vErrors === null) {
                  vErrors = [ err12 ];
                } else {
                  vErrors.push(err12);
                }
                errors++;
              }
            }
          }
          if (data.name !== undefined) {
            let data3 = data.name;
            if (typeof data3 === "string") {
              if (func4(data3) > 40) {
                const err13 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/maxLength",
                  keyword: "maxLength",
                  params: {
                    limit: 40
                  },
                  message: "must NOT have more than 40 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err13 ];
                } else {
                  vErrors.push(err13);
                }
                errors++;
              }
              if (func4(data3) < 1) {
                const err14 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/minLength",
                  keyword: "minLength",
                  params: {
                    limit: 1
                  },
                  message: "must NOT have fewer than 1 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err14 ];
                } else {
                  vErrors.push(err14);
                }
                errors++;
              }
              if (!pattern2.test(data3)) {
                const err15 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/pattern",
                  keyword: "pattern",
                  params: {
                    pattern: "^[ \\w.'+\\-%/À-ÖØ-öø-ÿ:&\\[\\]\\(\\)]+$"
                  },
                  message: 'must match pattern "' + "^[ \\w.'+\\-%/À-ÖØ-öø-ÿ:&\\[\\]\\(\\)]+$" + '"'
                };
                if (vErrors === null) {
                  vErrors = [ err15 ];
                } else {
                  vErrors.push(err15);
                }
                errors++;
              }
            } else {
              const err16 = {
                instancePath: instancePath + "/name",
                schemaPath: "#/properties/name/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err16 ];
              } else {
                vErrors.push(err16);
              }
              errors++;
            }
          }
          if (data.symbol !== undefined) {
            let data4 = data.symbol;
            if (typeof data4 === "string") {
              if (func4(data4) > 20) {
                const err17 = {
                  instancePath: instancePath + "/symbol",
                  schemaPath: "#/properties/symbol/maxLength",
                  keyword: "maxLength",
                  params: {
                    limit: 20
                  },
                  message: "must NOT have more than 20 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err17 ];
                } else {
                  vErrors.push(err17);
                }
                errors++;
              }
              if (func4(data4) < 1) {
                const err18 = {
                  instancePath: instancePath + "/symbol",
                  schemaPath: "#/properties/symbol/minLength",
                  keyword: "minLength",
                  params: {
                    limit: 1
                  },
                  message: "must NOT have fewer than 1 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err18 ];
                } else {
                  vErrors.push(err18);
                }
                errors++;
              }
              if (!pattern3.test(data4)) {
                const err19 = {
                  instancePath: instancePath + "/symbol",
                  schemaPath: "#/properties/symbol/pattern",
                  keyword: "pattern",
                  params: {
                    pattern: "^[a-zA-Z0-9+\\-%/$.]+$"
                  },
                  message: 'must match pattern "' + "^[a-zA-Z0-9+\\-%/$.]+$" + '"'
                };
                if (vErrors === null) {
                  vErrors = [ err19 ];
                } else {
                  vErrors.push(err19);
                }
                errors++;
              }
            } else {
              const err20 = {
                instancePath: instancePath + "/symbol",
                schemaPath: "#/properties/symbol/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err20 ];
              } else {
                vErrors.push(err20);
              }
              errors++;
            }
          }
          if (data.logoURI !== undefined) {
            if (!(typeof data.logoURI === "string")) {
              const err21 = {
                instancePath: instancePath + "/logoURI",
                schemaPath: "#/properties/logoURI/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err21 ];
              } else {
                vErrors.push(err21);
              }
              errors++;
            }
          }
          if (data.tags !== undefined) {
            let data6 = data.tags;
            if (Array.isArray(data6)) {
              if (data6.length > 10) {
                const err22 = {
                  instancePath: instancePath + "/tags",
                  schemaPath: "#/properties/tags/maxItems",
                  keyword: "maxItems",
                  params: {
                    limit: 10
                  },
                  message: "must NOT have more than 10 items"
                };
                if (vErrors === null) {
                  vErrors = [ err22 ];
                } else {
                  vErrors.push(err22);
                }
                errors++;
              }
              const len0 = data6.length;
              for (let i0 = 0; i0 < len0; i0++) {
                let data7 = data6[i0];
                if (typeof data7 === "string") {
                  if (func4(data7) > 10) {
                    const err23 = {
                      instancePath: instancePath + "/tags/" + i0,
                      schemaPath: "#/definitions/TagIdentifier/maxLength",
                      keyword: "maxLength",
                      params: {
                        limit: 10
                      },
                      message: "must NOT have more than 10 characters"
                    };
                    if (vErrors === null) {
                      vErrors = [ err23 ];
                    } else {
                      vErrors.push(err23);
                    }
                    errors++;
                  }
                  if (func4(data7) < 1) {
                    const err24 = {
                      instancePath: instancePath + "/tags/" + i0,
                      schemaPath: "#/definitions/TagIdentifier/minLength",
                      keyword: "minLength",
                      params: {
                        limit: 1
                      },
                      message: "must NOT have fewer than 1 characters"
                    };
                    if (vErrors === null) {
                      vErrors = [ err24 ];
                    } else {
                      vErrors.push(err24);
                    }
                    errors++;
                  }
                  if (!pattern4.test(data7)) {
                    const err25 = {
                      instancePath: instancePath + "/tags/" + i0,
                      schemaPath: "#/definitions/TagIdentifier/pattern",
                      keyword: "pattern",
                      params: {
                        pattern: "^[\\w]+$"
                      },
                      message: 'must match pattern "' + "^[\\w]+$" + '"'
                    };
                    if (vErrors === null) {
                      vErrors = [ err25 ];
                    } else {
                      vErrors.push(err25);
                    }
                    errors++;
                  }
                } else {
                  const err26 = {
                    instancePath: instancePath + "/tags/" + i0,
                    schemaPath: "#/definitions/TagIdentifier/type",
                    keyword: "type",
                    params: {
                      type: "string"
                    },
                    message: "must be string"
                  };
                  if (vErrors === null) {
                    vErrors = [ err26 ];
                  } else {
                    vErrors.push(err26);
                  }
                  errors++;
                }
              }
            } else {
              const err27 = {
                instancePath: instancePath + "/tags",
                schemaPath: "#/properties/tags/type",
                keyword: "type",
                params: {
                  type: "array"
                },
                message: "must be array"
              };
              if (vErrors === null) {
                vErrors = [ err27 ];
              } else {
                vErrors.push(err27);
              }
              errors++;
            }
          }
          if (data.extensions !== undefined) {
            if (!validate13(data.extensions, {
              instancePath: instancePath + "/extensions",
              parentData: data,
              parentDataProperty: "extensions",
              rootData
            })) {
              vErrors = vErrors === null ? validate13.errors : vErrors.concat(validate13.errors);
              errors = vErrors.length;
            }
          }
        } else {
          const err28 = {
            instancePath,
            schemaPath: "#/type",
            keyword: "type",
            params: {
              type: "object"
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err28 ];
          } else {
            vErrors.push(err28);
          }
          errors++;
        }
        validate12.errors = vErrors;
        return errors === 0;
      }
      function validate11(data, {instancePath = "", parentData, parentDataProperty, rootData = data} = {}) {
        let vErrors = null;
        let errors = 0;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          if (data.name === undefined) {
            const err0 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "name"
              },
              message: "must have required property '" + "name" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err0 ];
            } else {
              vErrors.push(err0);
            }
            errors++;
          }
          if (data.timestamp === undefined) {
            const err1 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "timestamp"
              },
              message: "must have required property '" + "timestamp" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.version === undefined) {
            const err2 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "version"
              },
              message: "must have required property '" + "version" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err2 ];
            } else {
              vErrors.push(err2);
            }
            errors++;
          }
          if (data.tokens === undefined) {
            const err3 = {
              instancePath,
              schemaPath: "#/required",
              keyword: "required",
              params: {
                missingProperty: "tokens"
              },
              message: "must have required property '" + "tokens" + "'"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          for (const key0 in data) {
            if (!(key0 === "name" || key0 === "timestamp" || key0 === "version" || key0 === "tokens" || key0 === "keywords" || key0 === "tags" || key0 === "logoURI")) {
              const err4 = {
                instancePath,
                schemaPath: "#/additionalProperties",
                keyword: "additionalProperties",
                params: {
                  additionalProperty: key0
                },
                message: "must NOT have additional properties"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
          }
          if (data.name !== undefined) {
            let data0 = data.name;
            if (typeof data0 === "string") {
              if (func4(data0) > 30) {
                const err5 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/maxLength",
                  keyword: "maxLength",
                  params: {
                    limit: 30
                  },
                  message: "must NOT have more than 30 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err5 ];
                } else {
                  vErrors.push(err5);
                }
                errors++;
              }
              if (func4(data0) < 1) {
                const err6 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/minLength",
                  keyword: "minLength",
                  params: {
                    limit: 1
                  },
                  message: "must NOT have fewer than 1 characters"
                };
                if (vErrors === null) {
                  vErrors = [ err6 ];
                } else {
                  vErrors.push(err6);
                }
                errors++;
              }
              if (!pattern0.test(data0)) {
                const err7 = {
                  instancePath: instancePath + "/name",
                  schemaPath: "#/properties/name/pattern",
                  keyword: "pattern",
                  params: {
                    pattern: "^[\\w ]+$"
                  },
                  message: 'must match pattern "' + "^[\\w ]+$" + '"'
                };
                if (vErrors === null) {
                  vErrors = [ err7 ];
                } else {
                  vErrors.push(err7);
                }
                errors++;
              }
            } else {
              const err8 = {
                instancePath: instancePath + "/name",
                schemaPath: "#/properties/name/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err8 ];
              } else {
                vErrors.push(err8);
              }
              errors++;
            }
          }
          if (data.timestamp !== undefined) {
            if (!(typeof data.timestamp === "string")) {
              const err9 = {
                instancePath: instancePath + "/timestamp",
                schemaPath: "#/properties/timestamp/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err9 ];
              } else {
                vErrors.push(err9);
              }
              errors++;
            }
          }
          if (data.version !== undefined) {
            let data2 = data.version;
            if (data2 && typeof data2 == "object" && !Array.isArray(data2)) {
              if (data2.major === undefined) {
                const err10 = {
                  instancePath: instancePath + "/version",
                  schemaPath: "#/definitions/Version/required",
                  keyword: "required",
                  params: {
                    missingProperty: "major"
                  },
                  message: "must have required property '" + "major" + "'"
                };
                if (vErrors === null) {
                  vErrors = [ err10 ];
                } else {
                  vErrors.push(err10);
                }
                errors++;
              }
              if (data2.minor === undefined) {
                const err11 = {
                  instancePath: instancePath + "/version",
                  schemaPath: "#/definitions/Version/required",
                  keyword: "required",
                  params: {
                    missingProperty: "minor"
                  },
                  message: "must have required property '" + "minor" + "'"
                };
                if (vErrors === null) {
                  vErrors = [ err11 ];
                } else {
                  vErrors.push(err11);
                }
                errors++;
              }
              if (data2.patch === undefined) {
                const err12 = {
                  instancePath: instancePath + "/version",
                  schemaPath: "#/definitions/Version/required",
                  keyword: "required",
                  params: {
                    missingProperty: "patch"
                  },
                  message: "must have required property '" + "patch" + "'"
                };
                if (vErrors === null) {
                  vErrors = [ err12 ];
                } else {
                  vErrors.push(err12);
                }
                errors++;
              }
              for (const key1 in data2) {
                if (!(key1 === "major" || key1 === "minor" || key1 === "patch")) {
                  const err13 = {
                    instancePath: instancePath + "/version",
                    schemaPath: "#/definitions/Version/additionalProperties",
                    keyword: "additionalProperties",
                    params: {
                      additionalProperty: key1
                    },
                    message: "must NOT have additional properties"
                  };
                  if (vErrors === null) {
                    vErrors = [ err13 ];
                  } else {
                    vErrors.push(err13);
                  }
                  errors++;
                }
              }
              if (data2.major !== undefined) {
                let data3 = data2.major;
                if (!(typeof data3 == "number" && (!(data3 % 1) && !isNaN(data3)) && isFinite(data3))) {
                  const err14 = {
                    instancePath: instancePath + "/version/major",
                    schemaPath: "#/definitions/Version/properties/major/type",
                    keyword: "type",
                    params: {
                      type: "integer"
                    },
                    message: "must be integer"
                  };
                  if (vErrors === null) {
                    vErrors = [ err14 ];
                  } else {
                    vErrors.push(err14);
                  }
                  errors++;
                }
                if (typeof data3 == "number" && isFinite(data3)) {
                  if (data3 < 0 || isNaN(data3)) {
                    const err15 = {
                      instancePath: instancePath + "/version/major",
                      schemaPath: "#/definitions/Version/properties/major/minimum",
                      keyword: "minimum",
                      params: {
                        comparison: ">=",
                        limit: 0
                      },
                      message: "must be >= 0"
                    };
                    if (vErrors === null) {
                      vErrors = [ err15 ];
                    } else {
                      vErrors.push(err15);
                    }
                    errors++;
                  }
                }
              }
              if (data2.minor !== undefined) {
                let data4 = data2.minor;
                if (!(typeof data4 == "number" && (!(data4 % 1) && !isNaN(data4)) && isFinite(data4))) {
                  const err16 = {
                    instancePath: instancePath + "/version/minor",
                    schemaPath: "#/definitions/Version/properties/minor/type",
                    keyword: "type",
                    params: {
                      type: "integer"
                    },
                    message: "must be integer"
                  };
                  if (vErrors === null) {
                    vErrors = [ err16 ];
                  } else {
                    vErrors.push(err16);
                  }
                  errors++;
                }
                if (typeof data4 == "number" && isFinite(data4)) {
                  if (data4 < 0 || isNaN(data4)) {
                    const err17 = {
                      instancePath: instancePath + "/version/minor",
                      schemaPath: "#/definitions/Version/properties/minor/minimum",
                      keyword: "minimum",
                      params: {
                        comparison: ">=",
                        limit: 0
                      },
                      message: "must be >= 0"
                    };
                    if (vErrors === null) {
                      vErrors = [ err17 ];
                    } else {
                      vErrors.push(err17);
                    }
                    errors++;
                  }
                }
              }
              if (data2.patch !== undefined) {
                let data5 = data2.patch;
                if (!(typeof data5 == "number" && (!(data5 % 1) && !isNaN(data5)) && isFinite(data5))) {
                  const err18 = {
                    instancePath: instancePath + "/version/patch",
                    schemaPath: "#/definitions/Version/properties/patch/type",
                    keyword: "type",
                    params: {
                      type: "integer"
                    },
                    message: "must be integer"
                  };
                  if (vErrors === null) {
                    vErrors = [ err18 ];
                  } else {
                    vErrors.push(err18);
                  }
                  errors++;
                }
                if (typeof data5 == "number" && isFinite(data5)) {
                  if (data5 < 0 || isNaN(data5)) {
                    const err19 = {
                      instancePath: instancePath + "/version/patch",
                      schemaPath: "#/definitions/Version/properties/patch/minimum",
                      keyword: "minimum",
                      params: {
                        comparison: ">=",
                        limit: 0
                      },
                      message: "must be >= 0"
                    };
                    if (vErrors === null) {
                      vErrors = [ err19 ];
                    } else {
                      vErrors.push(err19);
                    }
                    errors++;
                  }
                }
              }
            } else {
              const err20 = {
                instancePath: instancePath + "/version",
                schemaPath: "#/definitions/Version/type",
                keyword: "type",
                params: {
                  type: "object"
                },
                message: "must be object"
              };
              if (vErrors === null) {
                vErrors = [ err20 ];
              } else {
                vErrors.push(err20);
              }
              errors++;
            }
          }
          if (data.tokens !== undefined) {
            let data6 = data.tokens;
            if (Array.isArray(data6)) {
              if (data6.length > 1e4) {
                const err21 = {
                  instancePath: instancePath + "/tokens",
                  schemaPath: "#/properties/tokens/maxItems",
                  keyword: "maxItems",
                  params: {
                    limit: 1e4
                  },
                  message: "must NOT have more than 10000 items"
                };
                if (vErrors === null) {
                  vErrors = [ err21 ];
                } else {
                  vErrors.push(err21);
                }
                errors++;
              }
              if (data6.length < 1) {
                const err22 = {
                  instancePath: instancePath + "/tokens",
                  schemaPath: "#/properties/tokens/minItems",
                  keyword: "minItems",
                  params: {
                    limit: 1
                  },
                  message: "must NOT have fewer than 1 items"
                };
                if (vErrors === null) {
                  vErrors = [ err22 ];
                } else {
                  vErrors.push(err22);
                }
                errors++;
              }
              const len0 = data6.length;
              for (let i0 = 0; i0 < len0; i0++) {
                if (!validate12(data6[i0], {
                  instancePath: instancePath + "/tokens/" + i0,
                  parentData: data6,
                  parentDataProperty: i0,
                  rootData
                })) {
                  vErrors = vErrors === null ? validate12.errors : vErrors.concat(validate12.errors);
                  errors = vErrors.length;
                }
              }
            } else {
              const err23 = {
                instancePath: instancePath + "/tokens",
                schemaPath: "#/properties/tokens/type",
                keyword: "type",
                params: {
                  type: "array"
                },
                message: "must be array"
              };
              if (vErrors === null) {
                vErrors = [ err23 ];
              } else {
                vErrors.push(err23);
              }
              errors++;
            }
          }
          if (data.keywords !== undefined) {
            let data8 = data.keywords;
            if (Array.isArray(data8)) {
              if (data8.length > 20) {
                const err24 = {
                  instancePath: instancePath + "/keywords",
                  schemaPath: "#/properties/keywords/maxItems",
                  keyword: "maxItems",
                  params: {
                    limit: 20
                  },
                  message: "must NOT have more than 20 items"
                };
                if (vErrors === null) {
                  vErrors = [ err24 ];
                } else {
                  vErrors.push(err24);
                }
                errors++;
              }
              const len1 = data8.length;
              for (let i1 = 0; i1 < len1; i1++) {
                let data9 = data8[i1];
                if (typeof data9 === "string") {
                  if (func4(data9) > 20) {
                    const err25 = {
                      instancePath: instancePath + "/keywords/" + i1,
                      schemaPath: "#/properties/keywords/items/maxLength",
                      keyword: "maxLength",
                      params: {
                        limit: 20
                      },
                      message: "must NOT have more than 20 characters"
                    };
                    if (vErrors === null) {
                      vErrors = [ err25 ];
                    } else {
                      vErrors.push(err25);
                    }
                    errors++;
                  }
                  if (func4(data9) < 1) {
                    const err26 = {
                      instancePath: instancePath + "/keywords/" + i1,
                      schemaPath: "#/properties/keywords/items/minLength",
                      keyword: "minLength",
                      params: {
                        limit: 1
                      },
                      message: "must NOT have fewer than 1 characters"
                    };
                    if (vErrors === null) {
                      vErrors = [ err26 ];
                    } else {
                      vErrors.push(err26);
                    }
                    errors++;
                  }
                  if (!pattern0.test(data9)) {
                    const err27 = {
                      instancePath: instancePath + "/keywords/" + i1,
                      schemaPath: "#/properties/keywords/items/pattern",
                      keyword: "pattern",
                      params: {
                        pattern: "^[\\w ]+$"
                      },
                      message: 'must match pattern "' + "^[\\w ]+$" + '"'
                    };
                    if (vErrors === null) {
                      vErrors = [ err27 ];
                    } else {
                      vErrors.push(err27);
                    }
                    errors++;
                  }
                } else {
                  const err28 = {
                    instancePath: instancePath + "/keywords/" + i1,
                    schemaPath: "#/properties/keywords/items/type",
                    keyword: "type",
                    params: {
                      type: "string"
                    },
                    message: "must be string"
                  };
                  if (vErrors === null) {
                    vErrors = [ err28 ];
                  } else {
                    vErrors.push(err28);
                  }
                  errors++;
                }
              }
              let i2 = data8.length;
              let j0;
              if (i2 > 1) {
                const indices0 = {};
                for (;i2--; ) {
                  let item0 = data8[i2];
                  if (typeof item0 !== "string") {
                    continue;
                  }
                  if (typeof indices0[item0] == "number") {
                    j0 = indices0[item0];
                    const err29 = {
                      instancePath: instancePath + "/keywords",
                      schemaPath: "#/properties/keywords/uniqueItems",
                      keyword: "uniqueItems",
                      params: {
                        i: i2,
                        j: j0
                      },
                      message: "must NOT have duplicate items (items ## " + j0 + " and " + i2 + " are identical)"
                    };
                    if (vErrors === null) {
                      vErrors = [ err29 ];
                    } else {
                      vErrors.push(err29);
                    }
                    errors++;
                    break;
                  }
                  indices0[item0] = i2;
                }
              }
            } else {
              const err30 = {
                instancePath: instancePath + "/keywords",
                schemaPath: "#/properties/keywords/type",
                keyword: "type",
                params: {
                  type: "array"
                },
                message: "must be array"
              };
              if (vErrors === null) {
                vErrors = [ err30 ];
              } else {
                vErrors.push(err30);
              }
              errors++;
            }
          }
          if (data.tags !== undefined) {
            let data10 = data.tags;
            if (data10 && typeof data10 == "object" && !Array.isArray(data10)) {
              if (Object.keys(data10).length > 20) {
                const err31 = {
                  instancePath: instancePath + "/tags",
                  schemaPath: "#/properties/tags/maxProperties",
                  keyword: "maxProperties",
                  params: {
                    limit: 20
                  },
                  message: "must NOT have more than 20 items"
                };
                if (vErrors === null) {
                  vErrors = [ err31 ];
                } else {
                  vErrors.push(err31);
                }
                errors++;
              }
              for (const key2 in data10) {
                const _errs25 = errors;
                if (typeof key2 === "string") {
                  if (func4(key2) > 10) {
                    const err32 = {
                      instancePath: instancePath + "/tags",
                      schemaPath: "#/definitions/TagIdentifier/maxLength",
                      keyword: "maxLength",
                      params: {
                        limit: 10
                      },
                      message: "must NOT have more than 10 characters",
                      propertyName: key2
                    };
                    if (vErrors === null) {
                      vErrors = [ err32 ];
                    } else {
                      vErrors.push(err32);
                    }
                    errors++;
                  }
                  if (func4(key2) < 1) {
                    const err33 = {
                      instancePath: instancePath + "/tags",
                      schemaPath: "#/definitions/TagIdentifier/minLength",
                      keyword: "minLength",
                      params: {
                        limit: 1
                      },
                      message: "must NOT have fewer than 1 characters",
                      propertyName: key2
                    };
                    if (vErrors === null) {
                      vErrors = [ err33 ];
                    } else {
                      vErrors.push(err33);
                    }
                    errors++;
                  }
                  if (!pattern4.test(key2)) {
                    const err34 = {
                      instancePath: instancePath + "/tags",
                      schemaPath: "#/definitions/TagIdentifier/pattern",
                      keyword: "pattern",
                      params: {
                        pattern: "^[\\w]+$"
                      },
                      message: 'must match pattern "' + "^[\\w]+$" + '"',
                      propertyName: key2
                    };
                    if (vErrors === null) {
                      vErrors = [ err34 ];
                    } else {
                      vErrors.push(err34);
                    }
                    errors++;
                  }
                } else {
                  const err35 = {
                    instancePath: instancePath + "/tags",
                    schemaPath: "#/definitions/TagIdentifier/type",
                    keyword: "type",
                    params: {
                      type: "string"
                    },
                    message: "must be string",
                    propertyName: key2
                  };
                  if (vErrors === null) {
                    vErrors = [ err35 ];
                  } else {
                    vErrors.push(err35);
                  }
                  errors++;
                }
                var valid8 = _errs25 === errors;
                if (!valid8) {
                  const err36 = {
                    instancePath: instancePath + "/tags",
                    schemaPath: "#/properties/tags/propertyNames",
                    keyword: "propertyNames",
                    params: {
                      propertyName: key2
                    },
                    message: "property name must be valid"
                  };
                  if (vErrors === null) {
                    vErrors = [ err36 ];
                  } else {
                    vErrors.push(err36);
                  }
                  errors++;
                }
              }
              for (const key3 in data10) {
                let data11 = data10[key3];
                if (data11 && typeof data11 == "object" && !Array.isArray(data11)) {
                  if (data11.name === undefined) {
                    const err37 = {
                      instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"),
                      schemaPath: "#/definitions/TagDefinition/required",
                      keyword: "required",
                      params: {
                        missingProperty: "name"
                      },
                      message: "must have required property '" + "name" + "'"
                    };
                    if (vErrors === null) {
                      vErrors = [ err37 ];
                    } else {
                      vErrors.push(err37);
                    }
                    errors++;
                  }
                  if (data11.description === undefined) {
                    const err38 = {
                      instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"),
                      schemaPath: "#/definitions/TagDefinition/required",
                      keyword: "required",
                      params: {
                        missingProperty: "description"
                      },
                      message: "must have required property '" + "description" + "'"
                    };
                    if (vErrors === null) {
                      vErrors = [ err38 ];
                    } else {
                      vErrors.push(err38);
                    }
                    errors++;
                  }
                  for (const key4 in data11) {
                    if (!(key4 === "name" || key4 === "description")) {
                      const err39 = {
                        instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"),
                        schemaPath: "#/definitions/TagDefinition/additionalProperties",
                        keyword: "additionalProperties",
                        params: {
                          additionalProperty: key4
                        },
                        message: "must NOT have additional properties"
                      };
                      if (vErrors === null) {
                        vErrors = [ err39 ];
                      } else {
                        vErrors.push(err39);
                      }
                      errors++;
                    }
                  }
                  if (data11.name !== undefined) {
                    let data12 = data11.name;
                    if (typeof data12 === "string") {
                      if (func4(data12) > 20) {
                        const err40 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/name",
                          schemaPath: "#/definitions/TagDefinition/properties/name/maxLength",
                          keyword: "maxLength",
                          params: {
                            limit: 20
                          },
                          message: "must NOT have more than 20 characters"
                        };
                        if (vErrors === null) {
                          vErrors = [ err40 ];
                        } else {
                          vErrors.push(err40);
                        }
                        errors++;
                      }
                      if (func4(data12) < 1) {
                        const err41 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/name",
                          schemaPath: "#/definitions/TagDefinition/properties/name/minLength",
                          keyword: "minLength",
                          params: {
                            limit: 1
                          },
                          message: "must NOT have fewer than 1 characters"
                        };
                        if (vErrors === null) {
                          vErrors = [ err41 ];
                        } else {
                          vErrors.push(err41);
                        }
                        errors++;
                      }
                      if (!pattern10.test(data12)) {
                        const err42 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/name",
                          schemaPath: "#/definitions/TagDefinition/properties/name/pattern",
                          keyword: "pattern",
                          params: {
                            pattern: "^[ \\w]+$"
                          },
                          message: 'must match pattern "' + "^[ \\w]+$" + '"'
                        };
                        if (vErrors === null) {
                          vErrors = [ err42 ];
                        } else {
                          vErrors.push(err42);
                        }
                        errors++;
                      }
                    } else {
                      const err43 = {
                        instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/name",
                        schemaPath: "#/definitions/TagDefinition/properties/name/type",
                        keyword: "type",
                        params: {
                          type: "string"
                        },
                        message: "must be string"
                      };
                      if (vErrors === null) {
                        vErrors = [ err43 ];
                      } else {
                        vErrors.push(err43);
                      }
                      errors++;
                    }
                  }
                  if (data11.description !== undefined) {
                    let data13 = data11.description;
                    if (typeof data13 === "string") {
                      if (func4(data13) > 200) {
                        const err44 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/description",
                          schemaPath: "#/definitions/TagDefinition/properties/description/maxLength",
                          keyword: "maxLength",
                          params: {
                            limit: 200
                          },
                          message: "must NOT have more than 200 characters"
                        };
                        if (vErrors === null) {
                          vErrors = [ err44 ];
                        } else {
                          vErrors.push(err44);
                        }
                        errors++;
                      }
                      if (func4(data13) < 1) {
                        const err45 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/description",
                          schemaPath: "#/definitions/TagDefinition/properties/description/minLength",
                          keyword: "minLength",
                          params: {
                            limit: 1
                          },
                          message: "must NOT have fewer than 1 characters"
                        };
                        if (vErrors === null) {
                          vErrors = [ err45 ];
                        } else {
                          vErrors.push(err45);
                        }
                        errors++;
                      }
                      if (!pattern11.test(data13)) {
                        const err46 = {
                          instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/description",
                          schemaPath: "#/definitions/TagDefinition/properties/description/pattern",
                          keyword: "pattern",
                          params: {
                            pattern: "^[ \\w\\.,:]+$"
                          },
                          message: 'must match pattern "' + "^[ \\w\\.,:]+$" + '"'
                        };
                        if (vErrors === null) {
                          vErrors = [ err46 ];
                        } else {
                          vErrors.push(err46);
                        }
                        errors++;
                      }
                    } else {
                      const err47 = {
                        instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/description",
                        schemaPath: "#/definitions/TagDefinition/properties/description/type",
                        keyword: "type",
                        params: {
                          type: "string"
                        },
                        message: "must be string"
                      };
                      if (vErrors === null) {
                        vErrors = [ err47 ];
                      } else {
                        vErrors.push(err47);
                      }
                      errors++;
                    }
                  }
                } else {
                  const err48 = {
                    instancePath: instancePath + "/tags/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"),
                    schemaPath: "#/definitions/TagDefinition/type",
                    keyword: "type",
                    params: {
                      type: "object"
                    },
                    message: "must be object"
                  };
                  if (vErrors === null) {
                    vErrors = [ err48 ];
                  } else {
                    vErrors.push(err48);
                  }
                  errors++;
                }
              }
            } else {
              const err49 = {
                instancePath: instancePath + "/tags",
                schemaPath: "#/properties/tags/type",
                keyword: "type",
                params: {
                  type: "object"
                },
                message: "must be object"
              };
              if (vErrors === null) {
                vErrors = [ err49 ];
              } else {
                vErrors.push(err49);
              }
              errors++;
            }
          }
          if (data.logoURI !== undefined) {
            if (!(typeof data.logoURI === "string")) {
              const err50 = {
                instancePath: instancePath + "/logoURI",
                schemaPath: "#/properties/logoURI/type",
                keyword: "type",
                params: {
                  type: "string"
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err50 ];
              } else {
                vErrors.push(err50);
              }
              errors++;
            }
          }
        } else {
          const err51 = {
            instancePath,
            schemaPath: "#/type",
            keyword: "type",
            params: {
              type: "object"
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err51 ];
          } else {
            vErrors.push(err51);
          }
          errors++;
        }
        validate11.errors = vErrors;
        return errors === 0;
      }
    },
    1415(__unused_webpack_module, exports) {
      "use strict";
      var __webpack_unused_export__;
      exports.QJ = validate57;
      var schema29 = {
        optionalProperties: {
          name: {
            type: "string"
          },
          description: {
            type: "string"
          },
          image: {
            type: "string"
          },
          title: {
            type: "string"
          },
          external_url: {
            type: "string"
          }
        },
        additionalProperties: true
      };
      function validate57(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.name !== undefined) {
            if (!(typeof data.name == "string")) {
              var err0 = {
                instancePath: instancePath + "/name",
                schemaPath: "/optionalProperties/name/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
          }
          if (data.description !== undefined) {
            if (!(typeof data.description == "string")) {
              var err1 = {
                instancePath: instancePath + "/description",
                schemaPath: "/optionalProperties/description/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err1 ];
              } else {
                vErrors.push(err1);
              }
              errors++;
            }
          }
          if (data.image !== undefined) {
            if (!(typeof data.image == "string")) {
              var err2 = {
                instancePath: instancePath + "/image",
                schemaPath: "/optionalProperties/image/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err2 ];
              } else {
                vErrors.push(err2);
              }
              errors++;
            }
          }
          if (data.title !== undefined) {
            if (!(typeof data.title == "string")) {
              var err3 = {
                instancePath: instancePath + "/title",
                schemaPath: "/optionalProperties/title/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err3 ];
              } else {
                vErrors.push(err3);
              }
              errors++;
            }
          }
          if (data.external_url !== undefined) {
            if (!(typeof data.external_url == "string")) {
              var err4 = {
                instancePath: instancePath + "/external_url",
                schemaPath: "/optionalProperties/external_url/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
          }
        }
        if (!valid0) {
          var err5 = {
            instancePath,
            schemaPath: "/optionalProperties",
            keyword: "optionalProperties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err5 ];
          } else {
            vErrors.push(err5);
          }
          errors++;
        }
        validate57.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate58;
      var schema30 = {
        properties: {
          transfers: {
            elements: {
              properties: {
                asset: {
                  type: "string",
                  nullable: true
                },
                hash: {
                  type: "string"
                },
                blockNum: {
                  type: "string"
                },
                category: {
                  enum: [ "token", "internal", "external", "erc20", "erc1155" ]
                },
                from: {
                  type: "string",
                  nullable: true
                },
                to: {
                  type: "string",
                  nullable: true
                },
                erc721TokenId: {
                  type: "string",
                  nullable: true
                }
              },
              optionalProperties: {
                rawContract: {
                  properties: {
                    address: {
                      type: "string",
                      nullable: true
                    },
                    decimal: {
                      type: "string",
                      nullable: true
                    },
                    value: {
                      type: "string",
                      nullable: true
                    }
                  }
                }
              },
              additionalProperties: true
            }
          }
        },
        additionalProperties: true
      };
      function validate58(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.transfers !== undefined) {
            var data0 = data.transfers;
            var valid2 = false;
            if (!valid2) {
              if (Array.isArray(data0)) {
                var valid4 = true;
                var len0 = data0.length;
                for (var i0 = 0; i0 < len0; i0++) {
                  var data1 = data0[i0];
                  var _errs1 = errors;
                  var valid5 = false;
                  if (data1 && typeof data1 == "object" && !Array.isArray(data1)) {
                    valid5 = true;
                    if (data1.asset !== undefined) {
                      var data2 = data1.asset;
                      if (!(data2 === null || typeof data2 == "string")) {
                        var err0 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/asset",
                          schemaPath: "/properties/transfers/elements/properties/asset/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: true
                          },
                          message: "must be string or null"
                        };
                        if (vErrors === null) {
                          vErrors = [ err0 ];
                        } else {
                          vErrors.push(err0);
                        }
                        errors++;
                      }
                    } else {
                      var err1 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/asset",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "asset"
                        },
                        message: "must have property 'asset'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err1 ];
                      } else {
                        vErrors.push(err1);
                      }
                      errors++;
                    }
                    if (data1.hash !== undefined) {
                      if (!(typeof data1.hash == "string")) {
                        var err2 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/hash",
                          schemaPath: "/properties/transfers/elements/properties/hash/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err2 ];
                        } else {
                          vErrors.push(err2);
                        }
                        errors++;
                      }
                    } else {
                      var err3 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/hash",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "hash"
                        },
                        message: "must have property 'hash'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err3 ];
                      } else {
                        vErrors.push(err3);
                      }
                      errors++;
                    }
                    if (data1.blockNum !== undefined) {
                      if (!(typeof data1.blockNum == "string")) {
                        var err4 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/blockNum",
                          schemaPath: "/properties/transfers/elements/properties/blockNum/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err4 ];
                        } else {
                          vErrors.push(err4);
                        }
                        errors++;
                      }
                    } else {
                      var err5 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/blockNum",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "blockNum"
                        },
                        message: "must have property 'blockNum'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err5 ];
                      } else {
                        vErrors.push(err5);
                      }
                      errors++;
                    }
                    if (data1.category !== undefined) {
                      var data5 = data1.category;
                      if (!(typeof data5 == "string" && (data5 === "token" || data5 === "internal" || data5 === "external" || data5 === "erc20" || data5 === "erc1155"))) {
                        var err6 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/category",
                          schemaPath: "/properties/transfers/elements/properties/category/enum",
                          keyword: "enum",
                          params: {
                            allowedValues: schema30.properties.transfers.elements.properties.category.enum
                          },
                          message: "must be equal to one of the allowed values"
                        };
                        if (vErrors === null) {
                          vErrors = [ err6 ];
                        } else {
                          vErrors.push(err6);
                        }
                        errors++;
                      }
                    } else {
                      var err7 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/category",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "category"
                        },
                        message: "must have property 'category'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err7 ];
                      } else {
                        vErrors.push(err7);
                      }
                      errors++;
                    }
                    if (data1.from !== undefined) {
                      var data6 = data1.from;
                      if (!(data6 === null || typeof data6 == "string")) {
                        var err8 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/from",
                          schemaPath: "/properties/transfers/elements/properties/from/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: true
                          },
                          message: "must be string or null"
                        };
                        if (vErrors === null) {
                          vErrors = [ err8 ];
                        } else {
                          vErrors.push(err8);
                        }
                        errors++;
                      }
                    } else {
                      var err9 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/from",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "from"
                        },
                        message: "must have property 'from'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err9 ];
                      } else {
                        vErrors.push(err9);
                      }
                      errors++;
                    }
                    if (data1.to !== undefined) {
                      var data7 = data1.to;
                      if (!(data7 === null || typeof data7 == "string")) {
                        var err10 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/to",
                          schemaPath: "/properties/transfers/elements/properties/to/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: true
                          },
                          message: "must be string or null"
                        };
                        if (vErrors === null) {
                          vErrors = [ err10 ];
                        } else {
                          vErrors.push(err10);
                        }
                        errors++;
                      }
                    } else {
                      var err11 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/to",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "to"
                        },
                        message: "must have property 'to'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err11 ];
                      } else {
                        vErrors.push(err11);
                      }
                      errors++;
                    }
                    if (data1.erc721TokenId !== undefined) {
                      var data8 = data1.erc721TokenId;
                      if (!(data8 === null || typeof data8 == "string")) {
                        var err12 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/erc721TokenId",
                          schemaPath: "/properties/transfers/elements/properties/erc721TokenId/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: true
                          },
                          message: "must be string or null"
                        };
                        if (vErrors === null) {
                          vErrors = [ err12 ];
                        } else {
                          vErrors.push(err12);
                        }
                        errors++;
                      }
                    } else {
                      var err13 = {
                        instancePath: instancePath + "/transfers/" + i0,
                        schemaPath: "/properties/transfers/elements/properties/erc721TokenId",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "erc721TokenId"
                        },
                        message: "must have property 'erc721TokenId'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err13 ];
                      } else {
                        vErrors.push(err13);
                      }
                      errors++;
                    }
                    if (data1.rawContract !== undefined) {
                      var data9 = data1.rawContract;
                      var valid8 = false;
                      if (data9 && typeof data9 == "object" && !Array.isArray(data9)) {
                        valid8 = true;
                        if (data9.address !== undefined) {
                          var data10 = data9.address;
                          if (!(data10 === null || typeof data10 == "string")) {
                            var err14 = {
                              instancePath: instancePath + "/transfers/" + i0 + "/rawContract/address",
                              schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/address/type",
                              keyword: "type",
                              params: {
                                type: "string",
                                nullable: true
                              },
                              message: "must be string or null"
                            };
                            if (vErrors === null) {
                              vErrors = [ err14 ];
                            } else {
                              vErrors.push(err14);
                            }
                            errors++;
                          }
                        } else {
                          var err15 = {
                            instancePath: instancePath + "/transfers/" + i0 + "/rawContract",
                            schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/address",
                            keyword: "properties",
                            params: {
                              error: "missing",
                              missingProperty: "address"
                            },
                            message: "must have property 'address'"
                          };
                          if (vErrors === null) {
                            vErrors = [ err15 ];
                          } else {
                            vErrors.push(err15);
                          }
                          errors++;
                        }
                        if (data9.decimal !== undefined) {
                          var data11 = data9.decimal;
                          if (!(data11 === null || typeof data11 == "string")) {
                            var err16 = {
                              instancePath: instancePath + "/transfers/" + i0 + "/rawContract/decimal",
                              schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/decimal/type",
                              keyword: "type",
                              params: {
                                type: "string",
                                nullable: true
                              },
                              message: "must be string or null"
                            };
                            if (vErrors === null) {
                              vErrors = [ err16 ];
                            } else {
                              vErrors.push(err16);
                            }
                            errors++;
                          }
                        } else {
                          var err17 = {
                            instancePath: instancePath + "/transfers/" + i0 + "/rawContract",
                            schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/decimal",
                            keyword: "properties",
                            params: {
                              error: "missing",
                              missingProperty: "decimal"
                            },
                            message: "must have property 'decimal'"
                          };
                          if (vErrors === null) {
                            vErrors = [ err17 ];
                          } else {
                            vErrors.push(err17);
                          }
                          errors++;
                        }
                        if (data9.value !== undefined) {
                          var data12 = data9.value;
                          if (!(data12 === null || typeof data12 == "string")) {
                            var err18 = {
                              instancePath: instancePath + "/transfers/" + i0 + "/rawContract/value",
                              schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/value/type",
                              keyword: "type",
                              params: {
                                type: "string",
                                nullable: true
                              },
                              message: "must be string or null"
                            };
                            if (vErrors === null) {
                              vErrors = [ err18 ];
                            } else {
                              vErrors.push(err18);
                            }
                            errors++;
                          }
                        } else {
                          var err19 = {
                            instancePath: instancePath + "/transfers/" + i0 + "/rawContract",
                            schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties/value",
                            keyword: "properties",
                            params: {
                              error: "missing",
                              missingProperty: "value"
                            },
                            message: "must have property 'value'"
                          };
                          if (vErrors === null) {
                            vErrors = [ err19 ];
                          } else {
                            vErrors.push(err19);
                          }
                          errors++;
                        }
                        for (var key0 in data9) {
                          if (key0 !== "address" && key0 !== "decimal" && key0 !== "value") {
                            var err20 = {
                              instancePath: instancePath + "/transfers/" + i0 + "/rawContract/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),
                              schemaPath: "/properties/transfers/elements/optionalProperties/rawContract",
                              keyword: "properties",
                              params: {
                                error: "additional",
                                additionalProperty: key0
                              },
                              message: "must NOT have additional properties"
                            };
                            if (vErrors === null) {
                              vErrors = [ err20 ];
                            } else {
                              vErrors.push(err20);
                            }
                            errors++;
                          }
                        }
                      }
                      if (!valid8) {
                        var err21 = {
                          instancePath: instancePath + "/transfers/" + i0 + "/rawContract",
                          schemaPath: "/properties/transfers/elements/optionalProperties/rawContract/properties",
                          keyword: "properties",
                          params: {
                            type: "object",
                            nullable: false
                          },
                          message: "must be object"
                        };
                        if (vErrors === null) {
                          vErrors = [ err21 ];
                        } else {
                          vErrors.push(err21);
                        }
                        errors++;
                      }
                    }
                  }
                  if (!valid5) {
                    var err22 = {
                      instancePath: instancePath + "/transfers/" + i0,
                      schemaPath: "/properties/transfers/elements/properties",
                      keyword: "properties",
                      params: {
                        type: "object",
                        nullable: false
                      },
                      message: "must be object"
                    };
                    if (vErrors === null) {
                      vErrors = [ err22 ];
                    } else {
                      vErrors.push(err22);
                    }
                    errors++;
                  }
                  var valid3 = _errs1 === errors;
                  if (!valid3) {
                    valid4 = false;
                  }
                }
                valid2 = valid4;
              } else {
                var err23 = {
                  instancePath: instancePath + "/transfers",
                  schemaPath: "/properties/transfers/elements",
                  keyword: "elements",
                  params: {
                    type: "array",
                    nullable: false
                  },
                  message: "must be array"
                };
                if (vErrors === null) {
                  vErrors = [ err23 ];
                } else {
                  vErrors.push(err23);
                }
                errors++;
              }
            }
          } else {
            var err24 = {
              instancePath,
              schemaPath: "/properties/transfers",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "transfers"
              },
              message: "must have property 'transfers'"
            };
            if (vErrors === null) {
              vErrors = [ err24 ];
            } else {
              vErrors.push(err24);
            }
            errors++;
          }
        }
        if (!valid0) {
          var err25 = {
            instancePath,
            schemaPath: "/properties",
            keyword: "properties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err25 ];
          } else {
            vErrors.push(err25);
          }
          errors++;
        }
        validate58.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate59;
      var schema31 = {
        properties: {
          address: {
            type: "string"
          },
          tokenBalances: {
            elements: {
              properties: {
                contractAddress: {
                  type: "string"
                },
                error: {}
              },
              optionalProperties: {
                tokenBalance: {
                  type: "string",
                  nullable: true
                }
              }
            }
          }
        },
        optionalProperties: {
          pageKey: {
            type: "string"
          }
        },
        additionalProperties: false
      };
      function validate59(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.address !== undefined) {
            if (!(typeof data.address == "string")) {
              var err0 = {
                instancePath: instancePath + "/address",
                schemaPath: "/properties/address/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
          } else {
            var err1 = {
              instancePath,
              schemaPath: "/properties/address",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "address"
              },
              message: "must have property 'address'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.tokenBalances !== undefined) {
            var data1 = data.tokenBalances;
            var valid2 = false;
            if (!valid2) {
              if (Array.isArray(data1)) {
                var valid4 = true;
                var len0 = data1.length;
                for (var i0 = 0; i0 < len0; i0++) {
                  var data2 = data1[i0];
                  var _errs2 = errors;
                  var valid5 = false;
                  if (data2 && typeof data2 == "object" && !Array.isArray(data2)) {
                    valid5 = true;
                    if (data2.contractAddress !== undefined) {
                      if (!(typeof data2.contractAddress == "string")) {
                        var err2 = {
                          instancePath: instancePath + "/tokenBalances/" + i0 + "/contractAddress",
                          schemaPath: "/properties/tokenBalances/elements/properties/contractAddress/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err2 ];
                        } else {
                          vErrors.push(err2);
                        }
                        errors++;
                      }
                    } else {
                      var err3 = {
                        instancePath: instancePath + "/tokenBalances/" + i0,
                        schemaPath: "/properties/tokenBalances/elements/properties/contractAddress",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "contractAddress"
                        },
                        message: "must have property 'contractAddress'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err3 ];
                      } else {
                        vErrors.push(err3);
                      }
                      errors++;
                    }
                    if (data2.tokenBalance !== undefined) {
                      var data4 = data2.tokenBalance;
                      if (!(data4 === null || typeof data4 == "string")) {
                        var err4 = {
                          instancePath: instancePath + "/tokenBalances/" + i0 + "/tokenBalance",
                          schemaPath: "/properties/tokenBalances/elements/optionalProperties/tokenBalance/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: true
                          },
                          message: "must be string or null"
                        };
                        if (vErrors === null) {
                          vErrors = [ err4 ];
                        } else {
                          vErrors.push(err4);
                        }
                        errors++;
                      }
                    }
                    for (var key0 in data2) {
                      if (key0 !== "contractAddress" && key0 !== "error" && key0 !== "tokenBalance") {
                        var err5 = {
                          instancePath: instancePath + "/tokenBalances/" + i0 + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),
                          schemaPath: "/properties/tokenBalances/elements",
                          keyword: "properties",
                          params: {
                            error: "additional",
                            additionalProperty: key0
                          },
                          message: "must NOT have additional properties"
                        };
                        if (vErrors === null) {
                          vErrors = [ err5 ];
                        } else {
                          vErrors.push(err5);
                        }
                        errors++;
                      }
                    }
                  }
                  if (!valid5) {
                    var err6 = {
                      instancePath: instancePath + "/tokenBalances/" + i0,
                      schemaPath: "/properties/tokenBalances/elements/properties",
                      keyword: "properties",
                      params: {
                        type: "object",
                        nullable: false
                      },
                      message: "must be object"
                    };
                    if (vErrors === null) {
                      vErrors = [ err6 ];
                    } else {
                      vErrors.push(err6);
                    }
                    errors++;
                  }
                  var valid3 = _errs2 === errors;
                  if (!valid3) {
                    valid4 = false;
                  }
                }
                valid2 = valid4;
              } else {
                var err7 = {
                  instancePath: instancePath + "/tokenBalances",
                  schemaPath: "/properties/tokenBalances/elements",
                  keyword: "elements",
                  params: {
                    type: "array",
                    nullable: false
                  },
                  message: "must be array"
                };
                if (vErrors === null) {
                  vErrors = [ err7 ];
                } else {
                  vErrors.push(err7);
                }
                errors++;
              }
            }
          } else {
            var err8 = {
              instancePath,
              schemaPath: "/properties/tokenBalances",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "tokenBalances"
              },
              message: "must have property 'tokenBalances'"
            };
            if (vErrors === null) {
              vErrors = [ err8 ];
            } else {
              vErrors.push(err8);
            }
            errors++;
          }
          if (data.pageKey !== undefined) {
            if (!(typeof data.pageKey == "string")) {
              var err9 = {
                instancePath: instancePath + "/pageKey",
                schemaPath: "/optionalProperties/pageKey/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err9 ];
              } else {
                vErrors.push(err9);
              }
              errors++;
            }
          }
          for (var key1 in data) {
            if (key1 !== "address" && key1 !== "tokenBalances" && key1 !== "pageKey") {
              var err10 = {
                instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
                schemaPath: "",
                keyword: "properties",
                params: {
                  error: "additional",
                  additionalProperty: key1
                },
                message: "must NOT have additional properties"
              };
              if (vErrors === null) {
                vErrors = [ err10 ];
              } else {
                vErrors.push(err10);
              }
              errors++;
            }
          }
        }
        if (!valid0) {
          var err11 = {
            instancePath,
            schemaPath: "/properties",
            keyword: "properties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err11 ];
          } else {
            vErrors.push(err11);
          }
          errors++;
        }
        validate59.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate60;
      var schema32 = {
        properties: {
          decimals: {
            type: "uint32",
            nullable: true
          },
          name: {
            type: "string"
          },
          symbol: {
            type: "string"
          },
          logo: {
            type: "string",
            nullable: true
          }
        },
        additionalProperties: false
      };
      function validate60(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.decimals !== undefined) {
            var data0 = data.decimals;
            if (!(data0 === null || typeof data0 == "number" && isFinite(data0) && !(data0 % 1) && data0 >= 0 && data0 <= 4294967295)) {
              var err0 = {
                instancePath: instancePath + "/decimals",
                schemaPath: "/properties/decimals/type",
                keyword: "type",
                params: {
                  type: "uint32",
                  nullable: true
                },
                message: "must be uint32 or null"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
          } else {
            var err1 = {
              instancePath,
              schemaPath: "/properties/decimals",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "decimals"
              },
              message: "must have property 'decimals'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.name !== undefined) {
            if (!(typeof data.name == "string")) {
              var err2 = {
                instancePath: instancePath + "/name",
                schemaPath: "/properties/name/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err2 ];
              } else {
                vErrors.push(err2);
              }
              errors++;
            }
          } else {
            var err3 = {
              instancePath,
              schemaPath: "/properties/name",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "name"
              },
              message: "must have property 'name'"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          if (data.symbol !== undefined) {
            if (!(typeof data.symbol == "string")) {
              var err4 = {
                instancePath: instancePath + "/symbol",
                schemaPath: "/properties/symbol/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
          } else {
            var err5 = {
              instancePath,
              schemaPath: "/properties/symbol",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "symbol"
              },
              message: "must have property 'symbol'"
            };
            if (vErrors === null) {
              vErrors = [ err5 ];
            } else {
              vErrors.push(err5);
            }
            errors++;
          }
          if (data.logo !== undefined) {
            var data3 = data.logo;
            if (!(data3 === null || typeof data3 == "string")) {
              var err6 = {
                instancePath: instancePath + "/logo",
                schemaPath: "/properties/logo/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: true
                },
                message: "must be string or null"
              };
              if (vErrors === null) {
                vErrors = [ err6 ];
              } else {
                vErrors.push(err6);
              }
              errors++;
            }
          } else {
            var err7 = {
              instancePath,
              schemaPath: "/properties/logo",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "logo"
              },
              message: "must have property 'logo'"
            };
            if (vErrors === null) {
              vErrors = [ err7 ];
            } else {
              vErrors.push(err7);
            }
            errors++;
          }
          for (var key0 in data) {
            if (key0 !== "decimals" && key0 !== "name" && key0 !== "symbol" && key0 !== "logo") {
              var err8 = {
                instancePath: instancePath + "/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),
                schemaPath: "",
                keyword: "properties",
                params: {
                  error: "additional",
                  additionalProperty: key0
                },
                message: "must NOT have additional properties"
              };
              if (vErrors === null) {
                vErrors = [ err8 ];
              } else {
                vErrors.push(err8);
              }
              errors++;
            }
          }
        }
        if (!valid0) {
          var err9 = {
            instancePath,
            schemaPath: "/properties",
            keyword: "properties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err9 ];
          } else {
            vErrors.push(err9);
          }
          errors++;
        }
        validate60.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate61;
      var schema33 = {
        properties: {
          chainId: {
            type: "uint32"
          },
          price: {
            type: "string"
          },
          value: {
            type: "string"
          },
          gasPrice: {
            type: "string"
          },
          gas: {
            type: "string"
          },
          estimatedGas: {
            type: "string"
          },
          protocolFee: {
            type: "string"
          },
          minimumProtocolFee: {
            type: "string"
          },
          buyTokenAddress: {
            type: "string"
          },
          buyAmount: {
            type: "string"
          },
          sellTokenAddress: {
            type: "string"
          },
          sellAmount: {
            type: "string"
          },
          sources: {
            elements: {
              properties: {
                name: {
                  type: "string"
                },
                proportion: {
                  type: "string"
                }
              },
              additionalProperties: true
            }
          },
          allowanceTarget: {
            type: "string"
          },
          sellTokenToEthRate: {
            type: "string"
          },
          buyTokenToEthRate: {
            type: "string"
          },
          estimatedPriceImpact: {
            type: "string"
          }
        },
        additionalProperties: true
      };
      function validate61(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.chainId !== undefined) {
            var data0 = data.chainId;
            if (!(typeof data0 == "number" && isFinite(data0) && !(data0 % 1) && data0 >= 0 && data0 <= 4294967295)) {
              var err0 = {
                instancePath: instancePath + "/chainId",
                schemaPath: "/properties/chainId/type",
                keyword: "type",
                params: {
                  type: "uint32",
                  nullable: false
                },
                message: "must be uint32"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
          } else {
            var err1 = {
              instancePath,
              schemaPath: "/properties/chainId",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "chainId"
              },
              message: "must have property 'chainId'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.price !== undefined) {
            if (!(typeof data.price == "string")) {
              var err2 = {
                instancePath: instancePath + "/price",
                schemaPath: "/properties/price/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err2 ];
              } else {
                vErrors.push(err2);
              }
              errors++;
            }
          } else {
            var err3 = {
              instancePath,
              schemaPath: "/properties/price",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "price"
              },
              message: "must have property 'price'"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          if (data.value !== undefined) {
            if (!(typeof data.value == "string")) {
              var err4 = {
                instancePath: instancePath + "/value",
                schemaPath: "/properties/value/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
          } else {
            var err5 = {
              instancePath,
              schemaPath: "/properties/value",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "value"
              },
              message: "must have property 'value'"
            };
            if (vErrors === null) {
              vErrors = [ err5 ];
            } else {
              vErrors.push(err5);
            }
            errors++;
          }
          if (data.gasPrice !== undefined) {
            if (!(typeof data.gasPrice == "string")) {
              var err6 = {
                instancePath: instancePath + "/gasPrice",
                schemaPath: "/properties/gasPrice/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err6 ];
              } else {
                vErrors.push(err6);
              }
              errors++;
            }
          } else {
            var err7 = {
              instancePath,
              schemaPath: "/properties/gasPrice",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "gasPrice"
              },
              message: "must have property 'gasPrice'"
            };
            if (vErrors === null) {
              vErrors = [ err7 ];
            } else {
              vErrors.push(err7);
            }
            errors++;
          }
          if (data.gas !== undefined) {
            if (!(typeof data.gas == "string")) {
              var err8 = {
                instancePath: instancePath + "/gas",
                schemaPath: "/properties/gas/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err8 ];
              } else {
                vErrors.push(err8);
              }
              errors++;
            }
          } else {
            var err9 = {
              instancePath,
              schemaPath: "/properties/gas",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "gas"
              },
              message: "must have property 'gas'"
            };
            if (vErrors === null) {
              vErrors = [ err9 ];
            } else {
              vErrors.push(err9);
            }
            errors++;
          }
          if (data.estimatedGas !== undefined) {
            if (!(typeof data.estimatedGas == "string")) {
              var err10 = {
                instancePath: instancePath + "/estimatedGas",
                schemaPath: "/properties/estimatedGas/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err10 ];
              } else {
                vErrors.push(err10);
              }
              errors++;
            }
          } else {
            var err11 = {
              instancePath,
              schemaPath: "/properties/estimatedGas",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "estimatedGas"
              },
              message: "must have property 'estimatedGas'"
            };
            if (vErrors === null) {
              vErrors = [ err11 ];
            } else {
              vErrors.push(err11);
            }
            errors++;
          }
          if (data.protocolFee !== undefined) {
            if (!(typeof data.protocolFee == "string")) {
              var err12 = {
                instancePath: instancePath + "/protocolFee",
                schemaPath: "/properties/protocolFee/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err12 ];
              } else {
                vErrors.push(err12);
              }
              errors++;
            }
          } else {
            var err13 = {
              instancePath,
              schemaPath: "/properties/protocolFee",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "protocolFee"
              },
              message: "must have property 'protocolFee'"
            };
            if (vErrors === null) {
              vErrors = [ err13 ];
            } else {
              vErrors.push(err13);
            }
            errors++;
          }
          if (data.minimumProtocolFee !== undefined) {
            if (!(typeof data.minimumProtocolFee == "string")) {
              var err14 = {
                instancePath: instancePath + "/minimumProtocolFee",
                schemaPath: "/properties/minimumProtocolFee/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err14 ];
              } else {
                vErrors.push(err14);
              }
              errors++;
            }
          } else {
            var err15 = {
              instancePath,
              schemaPath: "/properties/minimumProtocolFee",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "minimumProtocolFee"
              },
              message: "must have property 'minimumProtocolFee'"
            };
            if (vErrors === null) {
              vErrors = [ err15 ];
            } else {
              vErrors.push(err15);
            }
            errors++;
          }
          if (data.buyTokenAddress !== undefined) {
            if (!(typeof data.buyTokenAddress == "string")) {
              var err16 = {
                instancePath: instancePath + "/buyTokenAddress",
                schemaPath: "/properties/buyTokenAddress/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err16 ];
              } else {
                vErrors.push(err16);
              }
              errors++;
            }
          } else {
            var err17 = {
              instancePath,
              schemaPath: "/properties/buyTokenAddress",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyTokenAddress"
              },
              message: "must have property 'buyTokenAddress'"
            };
            if (vErrors === null) {
              vErrors = [ err17 ];
            } else {
              vErrors.push(err17);
            }
            errors++;
          }
          if (data.buyAmount !== undefined) {
            if (!(typeof data.buyAmount == "string")) {
              var err18 = {
                instancePath: instancePath + "/buyAmount",
                schemaPath: "/properties/buyAmount/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err18 ];
              } else {
                vErrors.push(err18);
              }
              errors++;
            }
          } else {
            var err19 = {
              instancePath,
              schemaPath: "/properties/buyAmount",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyAmount"
              },
              message: "must have property 'buyAmount'"
            };
            if (vErrors === null) {
              vErrors = [ err19 ];
            } else {
              vErrors.push(err19);
            }
            errors++;
          }
          if (data.sellTokenAddress !== undefined) {
            if (!(typeof data.sellTokenAddress == "string")) {
              var err20 = {
                instancePath: instancePath + "/sellTokenAddress",
                schemaPath: "/properties/sellTokenAddress/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err20 ];
              } else {
                vErrors.push(err20);
              }
              errors++;
            }
          } else {
            var err21 = {
              instancePath,
              schemaPath: "/properties/sellTokenAddress",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellTokenAddress"
              },
              message: "must have property 'sellTokenAddress'"
            };
            if (vErrors === null) {
              vErrors = [ err21 ];
            } else {
              vErrors.push(err21);
            }
            errors++;
          }
          if (data.sellAmount !== undefined) {
            if (!(typeof data.sellAmount == "string")) {
              var err22 = {
                instancePath: instancePath + "/sellAmount",
                schemaPath: "/properties/sellAmount/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err22 ];
              } else {
                vErrors.push(err22);
              }
              errors++;
            }
          } else {
            var err23 = {
              instancePath,
              schemaPath: "/properties/sellAmount",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellAmount"
              },
              message: "must have property 'sellAmount'"
            };
            if (vErrors === null) {
              vErrors = [ err23 ];
            } else {
              vErrors.push(err23);
            }
            errors++;
          }
          if (data.sources !== undefined) {
            var data12 = data.sources;
            var valid2 = false;
            if (!valid2) {
              if (Array.isArray(data12)) {
                var valid4 = true;
                var len0 = data12.length;
                for (var i0 = 0; i0 < len0; i0++) {
                  var data13 = data12[i0];
                  var _errs13 = errors;
                  var valid5 = false;
                  if (data13 && typeof data13 == "object" && !Array.isArray(data13)) {
                    valid5 = true;
                    if (data13.name !== undefined) {
                      if (!(typeof data13.name == "string")) {
                        var err24 = {
                          instancePath: instancePath + "/sources/" + i0 + "/name",
                          schemaPath: "/properties/sources/elements/properties/name/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err24 ];
                        } else {
                          vErrors.push(err24);
                        }
                        errors++;
                      }
                    } else {
                      var err25 = {
                        instancePath: instancePath + "/sources/" + i0,
                        schemaPath: "/properties/sources/elements/properties/name",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "name"
                        },
                        message: "must have property 'name'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err25 ];
                      } else {
                        vErrors.push(err25);
                      }
                      errors++;
                    }
                    if (data13.proportion !== undefined) {
                      if (!(typeof data13.proportion == "string")) {
                        var err26 = {
                          instancePath: instancePath + "/sources/" + i0 + "/proportion",
                          schemaPath: "/properties/sources/elements/properties/proportion/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err26 ];
                        } else {
                          vErrors.push(err26);
                        }
                        errors++;
                      }
                    } else {
                      var err27 = {
                        instancePath: instancePath + "/sources/" + i0,
                        schemaPath: "/properties/sources/elements/properties/proportion",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "proportion"
                        },
                        message: "must have property 'proportion'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err27 ];
                      } else {
                        vErrors.push(err27);
                      }
                      errors++;
                    }
                  }
                  if (!valid5) {
                    var err28 = {
                      instancePath: instancePath + "/sources/" + i0,
                      schemaPath: "/properties/sources/elements/properties",
                      keyword: "properties",
                      params: {
                        type: "object",
                        nullable: false
                      },
                      message: "must be object"
                    };
                    if (vErrors === null) {
                      vErrors = [ err28 ];
                    } else {
                      vErrors.push(err28);
                    }
                    errors++;
                  }
                  var valid3 = _errs13 === errors;
                  if (!valid3) {
                    valid4 = false;
                  }
                }
                valid2 = valid4;
              } else {
                var err29 = {
                  instancePath: instancePath + "/sources",
                  schemaPath: "/properties/sources/elements",
                  keyword: "elements",
                  params: {
                    type: "array",
                    nullable: false
                  },
                  message: "must be array"
                };
                if (vErrors === null) {
                  vErrors = [ err29 ];
                } else {
                  vErrors.push(err29);
                }
                errors++;
              }
            }
          } else {
            var err30 = {
              instancePath,
              schemaPath: "/properties/sources",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sources"
              },
              message: "must have property 'sources'"
            };
            if (vErrors === null) {
              vErrors = [ err30 ];
            } else {
              vErrors.push(err30);
            }
            errors++;
          }
          if (data.allowanceTarget !== undefined) {
            if (!(typeof data.allowanceTarget == "string")) {
              var err31 = {
                instancePath: instancePath + "/allowanceTarget",
                schemaPath: "/properties/allowanceTarget/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err31 ];
              } else {
                vErrors.push(err31);
              }
              errors++;
            }
          } else {
            var err32 = {
              instancePath,
              schemaPath: "/properties/allowanceTarget",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "allowanceTarget"
              },
              message: "must have property 'allowanceTarget'"
            };
            if (vErrors === null) {
              vErrors = [ err32 ];
            } else {
              vErrors.push(err32);
            }
            errors++;
          }
          if (data.sellTokenToEthRate !== undefined) {
            if (!(typeof data.sellTokenToEthRate == "string")) {
              var err33 = {
                instancePath: instancePath + "/sellTokenToEthRate",
                schemaPath: "/properties/sellTokenToEthRate/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err33 ];
              } else {
                vErrors.push(err33);
              }
              errors++;
            }
          } else {
            var err34 = {
              instancePath,
              schemaPath: "/properties/sellTokenToEthRate",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellTokenToEthRate"
              },
              message: "must have property 'sellTokenToEthRate'"
            };
            if (vErrors === null) {
              vErrors = [ err34 ];
            } else {
              vErrors.push(err34);
            }
            errors++;
          }
          if (data.buyTokenToEthRate !== undefined) {
            if (!(typeof data.buyTokenToEthRate == "string")) {
              var err35 = {
                instancePath: instancePath + "/buyTokenToEthRate",
                schemaPath: "/properties/buyTokenToEthRate/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err35 ];
              } else {
                vErrors.push(err35);
              }
              errors++;
            }
          } else {
            var err36 = {
              instancePath,
              schemaPath: "/properties/buyTokenToEthRate",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyTokenToEthRate"
              },
              message: "must have property 'buyTokenToEthRate'"
            };
            if (vErrors === null) {
              vErrors = [ err36 ];
            } else {
              vErrors.push(err36);
            }
            errors++;
          }
          if (data.estimatedPriceImpact !== undefined) {
            if (!(typeof data.estimatedPriceImpact == "string")) {
              var err37 = {
                instancePath: instancePath + "/estimatedPriceImpact",
                schemaPath: "/properties/estimatedPriceImpact/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err37 ];
              } else {
                vErrors.push(err37);
              }
              errors++;
            }
          } else {
            var err38 = {
              instancePath,
              schemaPath: "/properties/estimatedPriceImpact",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "estimatedPriceImpact"
              },
              message: "must have property 'estimatedPriceImpact'"
            };
            if (vErrors === null) {
              vErrors = [ err38 ];
            } else {
              vErrors.push(err38);
            }
            errors++;
          }
        }
        if (!valid0) {
          var err39 = {
            instancePath,
            schemaPath: "/properties",
            keyword: "properties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err39 ];
          } else {
            vErrors.push(err39);
          }
          errors++;
        }
        validate61.errors = vErrors;
        return errors === 0;
      }
      __webpack_unused_export__ = validate62;
      var schema34 = {
        properties: {
          chainId: {
            type: "uint32"
          },
          price: {
            type: "string"
          },
          value: {
            type: "string"
          },
          gasPrice: {
            type: "string"
          },
          gas: {
            type: "string"
          },
          estimatedGas: {
            type: "string"
          },
          protocolFee: {
            type: "string"
          },
          minimumProtocolFee: {
            type: "string"
          },
          buyTokenAddress: {
            type: "string"
          },
          buyAmount: {
            type: "string"
          },
          sellTokenAddress: {
            type: "string"
          },
          sellAmount: {
            type: "string"
          },
          sources: {
            elements: {
              properties: {
                name: {
                  type: "string"
                },
                proportion: {
                  type: "string"
                }
              },
              additionalProperties: true
            }
          },
          allowanceTarget: {
            type: "string"
          },
          sellTokenToEthRate: {
            type: "string"
          },
          buyTokenToEthRate: {
            type: "string"
          },
          estimatedPriceImpact: {
            type: "string"
          },
          data: {
            type: "string"
          },
          guaranteedPrice: {
            type: "string"
          },
          to: {
            type: "string"
          }
        },
        optionalProperties: {
          from: {
            type: "string"
          }
        },
        additionalProperties: true
      };
      function validate62(data, valCxt) {
        "use strict";
        if (valCxt) {
          var instancePath = valCxt.instancePath;
          var parentData = valCxt.parentData;
          var parentDataProperty = valCxt.parentDataProperty;
          var rootData = valCxt.rootData;
        } else {
          var instancePath = "";
          var parentData = undefined;
          var parentDataProperty = undefined;
          var rootData = data;
        }
        var vErrors = null;
        var errors = 0;
        var valid0 = false;
        if (data && typeof data == "object" && !Array.isArray(data)) {
          valid0 = true;
          if (data.chainId !== undefined) {
            var data0 = data.chainId;
            if (!(typeof data0 == "number" && isFinite(data0) && !(data0 % 1) && data0 >= 0 && data0 <= 4294967295)) {
              var err0 = {
                instancePath: instancePath + "/chainId",
                schemaPath: "/properties/chainId/type",
                keyword: "type",
                params: {
                  type: "uint32",
                  nullable: false
                },
                message: "must be uint32"
              };
              if (vErrors === null) {
                vErrors = [ err0 ];
              } else {
                vErrors.push(err0);
              }
              errors++;
            }
          } else {
            var err1 = {
              instancePath,
              schemaPath: "/properties/chainId",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "chainId"
              },
              message: "must have property 'chainId'"
            };
            if (vErrors === null) {
              vErrors = [ err1 ];
            } else {
              vErrors.push(err1);
            }
            errors++;
          }
          if (data.price !== undefined) {
            if (!(typeof data.price == "string")) {
              var err2 = {
                instancePath: instancePath + "/price",
                schemaPath: "/properties/price/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err2 ];
              } else {
                vErrors.push(err2);
              }
              errors++;
            }
          } else {
            var err3 = {
              instancePath,
              schemaPath: "/properties/price",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "price"
              },
              message: "must have property 'price'"
            };
            if (vErrors === null) {
              vErrors = [ err3 ];
            } else {
              vErrors.push(err3);
            }
            errors++;
          }
          if (data.value !== undefined) {
            if (!(typeof data.value == "string")) {
              var err4 = {
                instancePath: instancePath + "/value",
                schemaPath: "/properties/value/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err4 ];
              } else {
                vErrors.push(err4);
              }
              errors++;
            }
          } else {
            var err5 = {
              instancePath,
              schemaPath: "/properties/value",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "value"
              },
              message: "must have property 'value'"
            };
            if (vErrors === null) {
              vErrors = [ err5 ];
            } else {
              vErrors.push(err5);
            }
            errors++;
          }
          if (data.gasPrice !== undefined) {
            if (!(typeof data.gasPrice == "string")) {
              var err6 = {
                instancePath: instancePath + "/gasPrice",
                schemaPath: "/properties/gasPrice/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err6 ];
              } else {
                vErrors.push(err6);
              }
              errors++;
            }
          } else {
            var err7 = {
              instancePath,
              schemaPath: "/properties/gasPrice",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "gasPrice"
              },
              message: "must have property 'gasPrice'"
            };
            if (vErrors === null) {
              vErrors = [ err7 ];
            } else {
              vErrors.push(err7);
            }
            errors++;
          }
          if (data.gas !== undefined) {
            if (!(typeof data.gas == "string")) {
              var err8 = {
                instancePath: instancePath + "/gas",
                schemaPath: "/properties/gas/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err8 ];
              } else {
                vErrors.push(err8);
              }
              errors++;
            }
          } else {
            var err9 = {
              instancePath,
              schemaPath: "/properties/gas",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "gas"
              },
              message: "must have property 'gas'"
            };
            if (vErrors === null) {
              vErrors = [ err9 ];
            } else {
              vErrors.push(err9);
            }
            errors++;
          }
          if (data.estimatedGas !== undefined) {
            if (!(typeof data.estimatedGas == "string")) {
              var err10 = {
                instancePath: instancePath + "/estimatedGas",
                schemaPath: "/properties/estimatedGas/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err10 ];
              } else {
                vErrors.push(err10);
              }
              errors++;
            }
          } else {
            var err11 = {
              instancePath,
              schemaPath: "/properties/estimatedGas",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "estimatedGas"
              },
              message: "must have property 'estimatedGas'"
            };
            if (vErrors === null) {
              vErrors = [ err11 ];
            } else {
              vErrors.push(err11);
            }
            errors++;
          }
          if (data.protocolFee !== undefined) {
            if (!(typeof data.protocolFee == "string")) {
              var err12 = {
                instancePath: instancePath + "/protocolFee",
                schemaPath: "/properties/protocolFee/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err12 ];
              } else {
                vErrors.push(err12);
              }
              errors++;
            }
          } else {
            var err13 = {
              instancePath,
              schemaPath: "/properties/protocolFee",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "protocolFee"
              },
              message: "must have property 'protocolFee'"
            };
            if (vErrors === null) {
              vErrors = [ err13 ];
            } else {
              vErrors.push(err13);
            }
            errors++;
          }
          if (data.minimumProtocolFee !== undefined) {
            if (!(typeof data.minimumProtocolFee == "string")) {
              var err14 = {
                instancePath: instancePath + "/minimumProtocolFee",
                schemaPath: "/properties/minimumProtocolFee/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err14 ];
              } else {
                vErrors.push(err14);
              }
              errors++;
            }
          } else {
            var err15 = {
              instancePath,
              schemaPath: "/properties/minimumProtocolFee",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "minimumProtocolFee"
              },
              message: "must have property 'minimumProtocolFee'"
            };
            if (vErrors === null) {
              vErrors = [ err15 ];
            } else {
              vErrors.push(err15);
            }
            errors++;
          }
          if (data.buyTokenAddress !== undefined) {
            if (!(typeof data.buyTokenAddress == "string")) {
              var err16 = {
                instancePath: instancePath + "/buyTokenAddress",
                schemaPath: "/properties/buyTokenAddress/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err16 ];
              } else {
                vErrors.push(err16);
              }
              errors++;
            }
          } else {
            var err17 = {
              instancePath,
              schemaPath: "/properties/buyTokenAddress",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyTokenAddress"
              },
              message: "must have property 'buyTokenAddress'"
            };
            if (vErrors === null) {
              vErrors = [ err17 ];
            } else {
              vErrors.push(err17);
            }
            errors++;
          }
          if (data.buyAmount !== undefined) {
            if (!(typeof data.buyAmount == "string")) {
              var err18 = {
                instancePath: instancePath + "/buyAmount",
                schemaPath: "/properties/buyAmount/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err18 ];
              } else {
                vErrors.push(err18);
              }
              errors++;
            }
          } else {
            var err19 = {
              instancePath,
              schemaPath: "/properties/buyAmount",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyAmount"
              },
              message: "must have property 'buyAmount'"
            };
            if (vErrors === null) {
              vErrors = [ err19 ];
            } else {
              vErrors.push(err19);
            }
            errors++;
          }
          if (data.sellTokenAddress !== undefined) {
            if (!(typeof data.sellTokenAddress == "string")) {
              var err20 = {
                instancePath: instancePath + "/sellTokenAddress",
                schemaPath: "/properties/sellTokenAddress/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err20 ];
              } else {
                vErrors.push(err20);
              }
              errors++;
            }
          } else {
            var err21 = {
              instancePath,
              schemaPath: "/properties/sellTokenAddress",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellTokenAddress"
              },
              message: "must have property 'sellTokenAddress'"
            };
            if (vErrors === null) {
              vErrors = [ err21 ];
            } else {
              vErrors.push(err21);
            }
            errors++;
          }
          if (data.sellAmount !== undefined) {
            if (!(typeof data.sellAmount == "string")) {
              var err22 = {
                instancePath: instancePath + "/sellAmount",
                schemaPath: "/properties/sellAmount/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err22 ];
              } else {
                vErrors.push(err22);
              }
              errors++;
            }
          } else {
            var err23 = {
              instancePath,
              schemaPath: "/properties/sellAmount",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellAmount"
              },
              message: "must have property 'sellAmount'"
            };
            if (vErrors === null) {
              vErrors = [ err23 ];
            } else {
              vErrors.push(err23);
            }
            errors++;
          }
          if (data.sources !== undefined) {
            var data12 = data.sources;
            var valid2 = false;
            if (!valid2) {
              if (Array.isArray(data12)) {
                var valid4 = true;
                var len0 = data12.length;
                for (var i0 = 0; i0 < len0; i0++) {
                  var data13 = data12[i0];
                  var _errs13 = errors;
                  var valid5 = false;
                  if (data13 && typeof data13 == "object" && !Array.isArray(data13)) {
                    valid5 = true;
                    if (data13.name !== undefined) {
                      if (!(typeof data13.name == "string")) {
                        var err24 = {
                          instancePath: instancePath + "/sources/" + i0 + "/name",
                          schemaPath: "/properties/sources/elements/properties/name/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err24 ];
                        } else {
                          vErrors.push(err24);
                        }
                        errors++;
                      }
                    } else {
                      var err25 = {
                        instancePath: instancePath + "/sources/" + i0,
                        schemaPath: "/properties/sources/elements/properties/name",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "name"
                        },
                        message: "must have property 'name'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err25 ];
                      } else {
                        vErrors.push(err25);
                      }
                      errors++;
                    }
                    if (data13.proportion !== undefined) {
                      if (!(typeof data13.proportion == "string")) {
                        var err26 = {
                          instancePath: instancePath + "/sources/" + i0 + "/proportion",
                          schemaPath: "/properties/sources/elements/properties/proportion/type",
                          keyword: "type",
                          params: {
                            type: "string",
                            nullable: false
                          },
                          message: "must be string"
                        };
                        if (vErrors === null) {
                          vErrors = [ err26 ];
                        } else {
                          vErrors.push(err26);
                        }
                        errors++;
                      }
                    } else {
                      var err27 = {
                        instancePath: instancePath + "/sources/" + i0,
                        schemaPath: "/properties/sources/elements/properties/proportion",
                        keyword: "properties",
                        params: {
                          error: "missing",
                          missingProperty: "proportion"
                        },
                        message: "must have property 'proportion'"
                      };
                      if (vErrors === null) {
                        vErrors = [ err27 ];
                      } else {
                        vErrors.push(err27);
                      }
                      errors++;
                    }
                  }
                  if (!valid5) {
                    var err28 = {
                      instancePath: instancePath + "/sources/" + i0,
                      schemaPath: "/properties/sources/elements/properties",
                      keyword: "properties",
                      params: {
                        type: "object",
                        nullable: false
                      },
                      message: "must be object"
                    };
                    if (vErrors === null) {
                      vErrors = [ err28 ];
                    } else {
                      vErrors.push(err28);
                    }
                    errors++;
                  }
                  var valid3 = _errs13 === errors;
                  if (!valid3) {
                    valid4 = false;
                  }
                }
                valid2 = valid4;
              } else {
                var err29 = {
                  instancePath: instancePath + "/sources",
                  schemaPath: "/properties/sources/elements",
                  keyword: "elements",
                  params: {
                    type: "array",
                    nullable: false
                  },
                  message: "must be array"
                };
                if (vErrors === null) {
                  vErrors = [ err29 ];
                } else {
                  vErrors.push(err29);
                }
                errors++;
              }
            }
          } else {
            var err30 = {
              instancePath,
              schemaPath: "/properties/sources",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sources"
              },
              message: "must have property 'sources'"
            };
            if (vErrors === null) {
              vErrors = [ err30 ];
            } else {
              vErrors.push(err30);
            }
            errors++;
          }
          if (data.allowanceTarget !== undefined) {
            if (!(typeof data.allowanceTarget == "string")) {
              var err31 = {
                instancePath: instancePath + "/allowanceTarget",
                schemaPath: "/properties/allowanceTarget/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err31 ];
              } else {
                vErrors.push(err31);
              }
              errors++;
            }
          } else {
            var err32 = {
              instancePath,
              schemaPath: "/properties/allowanceTarget",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "allowanceTarget"
              },
              message: "must have property 'allowanceTarget'"
            };
            if (vErrors === null) {
              vErrors = [ err32 ];
            } else {
              vErrors.push(err32);
            }
            errors++;
          }
          if (data.sellTokenToEthRate !== undefined) {
            if (!(typeof data.sellTokenToEthRate == "string")) {
              var err33 = {
                instancePath: instancePath + "/sellTokenToEthRate",
                schemaPath: "/properties/sellTokenToEthRate/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err33 ];
              } else {
                vErrors.push(err33);
              }
              errors++;
            }
          } else {
            var err34 = {
              instancePath,
              schemaPath: "/properties/sellTokenToEthRate",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "sellTokenToEthRate"
              },
              message: "must have property 'sellTokenToEthRate'"
            };
            if (vErrors === null) {
              vErrors = [ err34 ];
            } else {
              vErrors.push(err34);
            }
            errors++;
          }
          if (data.buyTokenToEthRate !== undefined) {
            if (!(typeof data.buyTokenToEthRate == "string")) {
              var err35 = {
                instancePath: instancePath + "/buyTokenToEthRate",
                schemaPath: "/properties/buyTokenToEthRate/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err35 ];
              } else {
                vErrors.push(err35);
              }
              errors++;
            }
          } else {
            var err36 = {
              instancePath,
              schemaPath: "/properties/buyTokenToEthRate",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "buyTokenToEthRate"
              },
              message: "must have property 'buyTokenToEthRate'"
            };
            if (vErrors === null) {
              vErrors = [ err36 ];
            } else {
              vErrors.push(err36);
            }
            errors++;
          }
          if (data.estimatedPriceImpact !== undefined) {
            if (!(typeof data.estimatedPriceImpact == "string")) {
              var err37 = {
                instancePath: instancePath + "/estimatedPriceImpact",
                schemaPath: "/properties/estimatedPriceImpact/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err37 ];
              } else {
                vErrors.push(err37);
              }
              errors++;
            }
          } else {
            var err38 = {
              instancePath,
              schemaPath: "/properties/estimatedPriceImpact",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "estimatedPriceImpact"
              },
              message: "must have property 'estimatedPriceImpact'"
            };
            if (vErrors === null) {
              vErrors = [ err38 ];
            } else {
              vErrors.push(err38);
            }
            errors++;
          }
          if (data.data !== undefined) {
            if (!(typeof data.data == "string")) {
              var err39 = {
                instancePath: instancePath + "/data",
                schemaPath: "/properties/data/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err39 ];
              } else {
                vErrors.push(err39);
              }
              errors++;
            }
          } else {
            var err40 = {
              instancePath,
              schemaPath: "/properties/data",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "data"
              },
              message: "must have property 'data'"
            };
            if (vErrors === null) {
              vErrors = [ err40 ];
            } else {
              vErrors.push(err40);
            }
            errors++;
          }
          if (data.guaranteedPrice !== undefined) {
            if (!(typeof data.guaranteedPrice == "string")) {
              var err41 = {
                instancePath: instancePath + "/guaranteedPrice",
                schemaPath: "/properties/guaranteedPrice/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err41 ];
              } else {
                vErrors.push(err41);
              }
              errors++;
            }
          } else {
            var err42 = {
              instancePath,
              schemaPath: "/properties/guaranteedPrice",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "guaranteedPrice"
              },
              message: "must have property 'guaranteedPrice'"
            };
            if (vErrors === null) {
              vErrors = [ err42 ];
            } else {
              vErrors.push(err42);
            }
            errors++;
          }
          if (data.to !== undefined) {
            if (!(typeof data.to == "string")) {
              var err43 = {
                instancePath: instancePath + "/to",
                schemaPath: "/properties/to/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err43 ];
              } else {
                vErrors.push(err43);
              }
              errors++;
            }
          } else {
            var err44 = {
              instancePath,
              schemaPath: "/properties/to",
              keyword: "properties",
              params: {
                error: "missing",
                missingProperty: "to"
              },
              message: "must have property 'to'"
            };
            if (vErrors === null) {
              vErrors = [ err44 ];
            } else {
              vErrors.push(err44);
            }
            errors++;
          }
          if (data.from !== undefined) {
            if (!(typeof data.from == "string")) {
              var err45 = {
                instancePath: instancePath + "/from",
                schemaPath: "/optionalProperties/from/type",
                keyword: "type",
                params: {
                  type: "string",
                  nullable: false
                },
                message: "must be string"
              };
              if (vErrors === null) {
                vErrors = [ err45 ];
              } else {
                vErrors.push(err45);
              }
              errors++;
            }
          }
        }
        if (!valid0) {
          var err46 = {
            instancePath,
            schemaPath: "/properties",
            keyword: "properties",
            params: {
              type: "object",
              nullable: false
            },
            message: "must be object"
          };
          if (vErrors === null) {
            vErrors = [ err46 ];
          } else {
            vErrors.push(err46);
          }
          errors++;
        }
        validate62.errors = vErrors;
        return errors === 0;
      }
    },
    6827(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      const anyMap = new WeakMap;
      const eventsMap = new WeakMap;
      const producersMap = new WeakMap;
      const anyProducer = Symbol("anyProducer");
      const resolvedPromise = Promise.resolve();
      const listenerAdded = Symbol("listenerAdded");
      const listenerRemoved = Symbol("listenerRemoved");
      let isGlobalDebugEnabled = false;
      function assertEventName(eventName) {
        if (typeof eventName !== "string" && typeof eventName !== "symbol") {
          throw new TypeError("eventName must be a string or a symbol");
        }
      }
      function assertListener(listener) {
        if (typeof listener !== "function") {
          throw new TypeError("listener must be a function");
        }
      }
      function getListeners(instance, eventName) {
        const events = eventsMap.get(instance);
        if (!events.has(eventName)) {
          events.set(eventName, new Set);
        }
        return events.get(eventName);
      }
      function getEventProducers(instance, eventName) {
        const key = typeof eventName === "string" || typeof eventName === "symbol" ? eventName : anyProducer;
        const producers = producersMap.get(instance);
        if (!producers.has(key)) {
          producers.set(key, new Set);
        }
        return producers.get(key);
      }
      function enqueueProducers(instance, eventName, eventData) {
        const producers = producersMap.get(instance);
        if (producers.has(eventName)) {
          for (const producer of producers.get(eventName)) {
            producer.enqueue(eventData);
          }
        }
        if (producers.has(anyProducer)) {
          const item = Promise.all([ eventName, eventData ]);
          for (const producer of producers.get(anyProducer)) {
            producer.enqueue(item);
          }
        }
      }
      function iterator(instance, eventNames) {
        eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
        let isFinished = false;
        let flush = () => {};
        let queue = [];
        const producer = {
          enqueue(item) {
            queue.push(item);
            flush();
          },
          finish() {
            isFinished = true;
            flush();
          }
        };
        for (const eventName of eventNames) {
          getEventProducers(instance, eventName).add(producer);
        }
        return {
          async next() {
            if (!queue) {
              return {
                done: true
              };
            }
            if (queue.length === 0) {
              if (isFinished) {
                queue = undefined;
                return this.next();
              }
              await new Promise((resolve => {
                flush = resolve;
              }));
              return this.next();
            }
            return {
              done: false,
              value: await queue.shift()
            };
          },
          async return(value) {
            queue = undefined;
            for (const eventName of eventNames) {
              getEventProducers(instance, eventName).delete(producer);
            }
            flush();
            return arguments.length > 0 ? {
              done: true,
              value: await value
            } : {
              done: true
            };
          },
          [Symbol.asyncIterator]() {
            return this;
          }
        };
      }
      function defaultMethodNamesOrAssert(methodNames) {
        if (methodNames === undefined) {
          return allEmitteryMethods;
        }
        if (!Array.isArray(methodNames)) {
          throw new TypeError("`methodNames` must be an array of strings");
        }
        for (const methodName of methodNames) {
          if (!allEmitteryMethods.includes(methodName)) {
            if (typeof methodName !== "string") {
              throw new TypeError("`methodNames` element must be a string");
            }
            throw new Error(`${methodName} is not Emittery method`);
          }
        }
        return methodNames;
      }
      const isListenerSymbol = symbol => symbol === listenerAdded || symbol === listenerRemoved;
      class Emittery {
        static mixin(emitteryPropertyName, methodNames) {
          methodNames = defaultMethodNamesOrAssert(methodNames);
          return target => {
            if (typeof target !== "function") {
              throw new TypeError("`target` must be function");
            }
            for (const methodName of methodNames) {
              if (target.prototype[methodName] !== undefined) {
                throw new Error(`The property \`${methodName}\` already exists on \`target\``);
              }
            }
            function getEmitteryProperty() {
              Object.defineProperty(this, emitteryPropertyName, {
                enumerable: false,
                value: new Emittery
              });
              return this[emitteryPropertyName];
            }
            Object.defineProperty(target.prototype, emitteryPropertyName, {
              enumerable: false,
              get: getEmitteryProperty
            });
            const emitteryMethodCaller = methodName => function(...args) {
              return this[emitteryPropertyName][methodName](...args);
            };
            for (const methodName of methodNames) {
              Object.defineProperty(target.prototype, methodName, {
                enumerable: false,
                value: emitteryMethodCaller(methodName)
              });
            }
            return target;
          };
        }
        static get isDebugEnabled() {
          if (typeof process !== "object") {
            return isGlobalDebugEnabled;
          }
          const {env} = process || {
            env: {}
          };
          return env.DEBUG === "emittery" || env.DEBUG === "*" || isGlobalDebugEnabled;
        }
        static set isDebugEnabled(newValue) {
          isGlobalDebugEnabled = newValue;
        }
        constructor(options = {}) {
          anyMap.set(this, new Set);
          eventsMap.set(this, new Map);
          producersMap.set(this, new Map);
          this.debug = options.debug || {};
          if (this.debug.enabled === undefined) {
            this.debug.enabled = false;
          }
          if (!this.debug.logger) {
            this.debug.logger = (type, debugName, eventName, eventData) => {
              eventData = JSON.stringify(eventData);
              if (typeof eventName === "symbol") {
                eventName = eventName.toString();
              }
              const currentTime = new Date;
              const logTime = `${currentTime.getHours()}:${currentTime.getMinutes()}:${currentTime.getSeconds()}.${currentTime.getMilliseconds()}`;
              console.log(`[${logTime}][emittery:${type}][${debugName}] Event Name: ${eventName}\n\tdata: ${eventData}`);
            };
          }
        }
        logIfDebugEnabled(type, eventName, eventData) {
          if (Emittery.isDebugEnabled || this.debug.enabled) {
            this.debug.logger(type, this.debug.name, eventName, eventData);
          }
        }
        on(eventNames, listener) {
          assertListener(listener);
          eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
          for (const eventName of eventNames) {
            assertEventName(eventName);
            getListeners(this, eventName).add(listener);
            this.logIfDebugEnabled("subscribe", eventName, undefined);
            if (!isListenerSymbol(eventName)) {
              this.emit(listenerAdded, {
                eventName,
                listener
              });
            }
          }
          return this.off.bind(this, eventNames, listener);
        }
        off(eventNames, listener) {
          assertListener(listener);
          eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
          for (const eventName of eventNames) {
            assertEventName(eventName);
            getListeners(this, eventName).delete(listener);
            this.logIfDebugEnabled("unsubscribe", eventName, undefined);
            if (!isListenerSymbol(eventName)) {
              this.emit(listenerRemoved, {
                eventName,
                listener
              });
            }
          }
        }
        once(eventNames) {
          return new Promise((resolve => {
            const off = this.on(eventNames, (data => {
              off();
              resolve(data);
            }));
          }));
        }
        events(eventNames) {
          eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
          for (const eventName of eventNames) {
            assertEventName(eventName);
          }
          return iterator(this, eventNames);
        }
        async emit(eventName, eventData) {
          assertEventName(eventName);
          this.logIfDebugEnabled("emit", eventName, eventData);
          enqueueProducers(this, eventName, eventData);
          const listeners = getListeners(this, eventName);
          const anyListeners = anyMap.get(this);
          const staticListeners = [ ...listeners ];
          const staticAnyListeners = isListenerSymbol(eventName) ? [] : [ ...anyListeners ];
          await resolvedPromise;
          await Promise.all([ ...staticListeners.map((async listener => {
            if (listeners.has(listener)) {
              return listener(eventData);
            }
          })), ...staticAnyListeners.map((async listener => {
            if (anyListeners.has(listener)) {
              return listener(eventName, eventData);
            }
          })) ]);
        }
        async emitSerial(eventName, eventData) {
          assertEventName(eventName);
          this.logIfDebugEnabled("emitSerial", eventName, eventData);
          const listeners = getListeners(this, eventName);
          const anyListeners = anyMap.get(this);
          const staticListeners = [ ...listeners ];
          const staticAnyListeners = [ ...anyListeners ];
          await resolvedPromise;
          for (const listener of staticListeners) {
            if (listeners.has(listener)) {
              await listener(eventData);
            }
          }
          for (const listener of staticAnyListeners) {
            if (anyListeners.has(listener)) {
              await listener(eventName, eventData);
            }
          }
        }
        onAny(listener) {
          assertListener(listener);
          this.logIfDebugEnabled("subscribeAny", undefined, undefined);
          anyMap.get(this).add(listener);
          this.emit(listenerAdded, {
            listener
          });
          return this.offAny.bind(this, listener);
        }
        anyEvent() {
          return iterator(this);
        }
        offAny(listener) {
          assertListener(listener);
          this.logIfDebugEnabled("unsubscribeAny", undefined, undefined);
          this.emit(listenerRemoved, {
            listener
          });
          anyMap.get(this).delete(listener);
        }
        clearListeners(eventNames) {
          eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
          for (const eventName of eventNames) {
            this.logIfDebugEnabled("clear", eventName, undefined);
            if (typeof eventName === "string" || typeof eventName === "symbol") {
              getListeners(this, eventName).clear();
              const producers = getEventProducers(this, eventName);
              for (const producer of producers) {
                producer.finish();
              }
              producers.clear();
            } else {
              anyMap.get(this).clear();
              for (const listeners of eventsMap.get(this).values()) {
                listeners.clear();
              }
              for (const producers of producersMap.get(this).values()) {
                for (const producer of producers) {
                  producer.finish();
                }
                producers.clear();
              }
            }
          }
        }
        listenerCount(eventNames) {
          eventNames = Array.isArray(eventNames) ? eventNames : [ eventNames ];
          let count = 0;
          for (const eventName of eventNames) {
            if (typeof eventName === "string") {
              count += anyMap.get(this).size + getListeners(this, eventName).size + getEventProducers(this, eventName).size + getEventProducers(this).size;
              continue;
            }
            if (typeof eventName !== "undefined") {
              assertEventName(eventName);
            }
            count += anyMap.get(this).size;
            for (const value of eventsMap.get(this).values()) {
              count += value.size;
            }
            for (const value of producersMap.get(this).values()) {
              count += value.size;
            }
          }
          return count;
        }
        bindMethods(target, methodNames) {
          if (typeof target !== "object" || target === null) {
            throw new TypeError("`target` must be an object");
          }
          methodNames = defaultMethodNamesOrAssert(methodNames);
          for (const methodName of methodNames) {
            if (target[methodName] !== undefined) {
              throw new Error(`The property \`${methodName}\` already exists on \`target\``);
            }
            Object.defineProperty(target, methodName, {
              enumerable: false,
              value: this[methodName].bind(this)
            });
          }
        }
      }
      const allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter((v => v !== "constructor"));
      Object.defineProperty(Emittery, "listenerAdded", {
        value: listenerAdded,
        writable: false,
        enumerable: true,
        configurable: false
      });
      Object.defineProperty(Emittery, "listenerRemoved", {
        value: listenerRemoved,
        writable: false,
        enumerable: true,
        configurable: false
      });
      module.exports = Emittery;
    },
    1446(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "abi/5.7.4";
    },
    2975(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.defaultAbiCoder = exports.AbiCoder = void 0;
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1446);
      const logger = new logger_1.Logger(_version_1.version);
      const abstract_coder_1 = __webpack_require__(7356);
      const address_1 = __webpack_require__(7528);
      const array_1 = __webpack_require__(425);
      const boolean_1 = __webpack_require__(8044);
      const bytes_2 = __webpack_require__(2963);
      const fixed_bytes_1 = __webpack_require__(5332);
      const null_1 = __webpack_require__(9019);
      const number_1 = __webpack_require__(6607);
      const string_1 = __webpack_require__(5807);
      const tuple_1 = __webpack_require__(9314);
      const function_1 = __webpack_require__(2162);
      const fragments_1 = __webpack_require__(5068);
      const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
      const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
      class AbiCoder {
        constructor(coerceFunc) {
          (0, properties_1.defineReadOnly)(this, "coerceFunc", coerceFunc || null);
        }
        _getCoder(param) {
          switch (param.baseType) {
           case "address":
            return new address_1.AddressCoder(param.name);

           case "bool":
            return new boolean_1.BooleanCoder(param.name);

           case "string":
            return new string_1.StringCoder(param.name);

           case "bytes":
            return new bytes_2.BytesCoder(param.name);

           case "array":
            return new array_1.ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);

           case "tuple":
            return new tuple_1.TupleCoder((param.components || []).map((component => this._getCoder(component))), param.name);

           case "function":
            return new function_1.FunctionCoder(param.name);

           case "":
            return new null_1.NullCoder(param.name);
          }
          let match = param.type.match(paramTypeNumber);
          if (match) {
            let size = parseInt(match[2] || "256");
            if (size === 0 || size > 256 || size % 8 !== 0) {
              logger.throwArgumentError("invalid " + match[1] + " bit length", "param", param);
            }
            return new number_1.NumberCoder(size / 8, match[1] === "int", param.name);
          }
          match = param.type.match(paramTypeBytes);
          if (match) {
            let size = parseInt(match[1]);
            if (size === 0 || size > 32) {
              logger.throwArgumentError("invalid bytes length", "param", param);
            }
            return new fixed_bytes_1.FixedBytesCoder(size, param.name);
          }
          return logger.throwArgumentError("invalid type", "type", param.type);
        }
        _getWordSize() {
          return 32;
        }
        _getReader(data, allowLoose) {
          return new abstract_coder_1.Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);
        }
        _getWriter() {
          return new abstract_coder_1.Writer(this._getWordSize());
        }
        getDefaultValue(types) {
          const coders = types.map((type => this._getCoder(fragments_1.ParamType.from(type))));
          const coder = new tuple_1.TupleCoder(coders, "_");
          return coder.defaultValue();
        }
        encode(types, values) {
          if (types.length !== values.length) {
            logger.throwError("types/values length mismatch", logger_1.Logger.errors.INVALID_ARGUMENT, {
              count: {
                types: types.length,
                values: values.length
              },
              value: {
                types,
                values
              }
            });
          }
          const coders = types.map((type => this._getCoder(fragments_1.ParamType.from(type))));
          const coder = new tuple_1.TupleCoder(coders, "_");
          const writer = this._getWriter();
          coder.encode(writer, values);
          return writer.data;
        }
        decode(types, data, loose) {
          const coders = types.map((type => this._getCoder(fragments_1.ParamType.from(type))));
          const coder = new tuple_1.TupleCoder(coders, "_");
          return coder.decode(this._getReader((0, bytes_1.arrayify)(data), loose));
        }
      }
      exports.AbiCoder = AbiCoder;
      exports.defaultAbiCoder = new AbiCoder;
    },
    7356(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Reader = exports.Writer = exports.Coder = exports.checkResultErrors = void 0;
      const bytes_1 = __webpack_require__(8380);
      const bignumber_1 = __webpack_require__(3804);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1446);
      const logger = new logger_1.Logger(_version_1.version);
      function checkResultErrors(result) {
        const errors = [];
        const checkErrors = function(path, object) {
          if (!Array.isArray(object)) {
            return;
          }
          for (let key in object) {
            const childPath = path.slice();
            childPath.push(key);
            try {
              checkErrors(childPath, object[key]);
            } catch (error) {
              errors.push({
                path: childPath,
                error
              });
            }
          }
        };
        checkErrors([], result);
        return errors;
      }
      exports.checkResultErrors = checkResultErrors;
      class Coder {
        constructor(name, type, localName, dynamic) {
          this.name = name;
          this.type = type;
          this.localName = localName;
          this.dynamic = dynamic;
        }
        _throwError(message, value) {
          logger.throwArgumentError(message, this.localName, value);
        }
      }
      exports.Coder = Coder;
      class Writer {
        constructor(wordSize) {
          (0, properties_1.defineReadOnly)(this, "wordSize", wordSize || 32);
          this._data = [];
          this._dataLength = 0;
          this._padding = new Uint8Array(wordSize);
        }
        get data() {
          return (0, bytes_1.hexConcat)(this._data);
        }
        get length() {
          return this._dataLength;
        }
        _writeData(data) {
          this._data.push(data);
          this._dataLength += data.length;
          return data.length;
        }
        appendWriter(writer) {
          return this._writeData((0, bytes_1.concat)(writer._data));
        }
        writeBytes(value) {
          let bytes = (0, bytes_1.arrayify)(value);
          const paddingOffset = bytes.length % this.wordSize;
          if (paddingOffset) {
            bytes = (0, bytes_1.concat)([ bytes, this._padding.slice(paddingOffset) ]);
          }
          return this._writeData(bytes);
        }
        _getValue(value) {
          let bytes = (0, bytes_1.arrayify)(bignumber_1.BigNumber.from(value));
          if (bytes.length > this.wordSize) {
            logger.throwError("value out-of-bounds", logger_1.Logger.errors.BUFFER_OVERRUN, {
              length: this.wordSize,
              offset: bytes.length
            });
          }
          if (bytes.length % this.wordSize) {
            bytes = (0, bytes_1.concat)([ this._padding.slice(bytes.length % this.wordSize), bytes ]);
          }
          return bytes;
        }
        writeValue(value) {
          return this._writeData(this._getValue(value));
        }
        writeUpdatableValue() {
          const offset = this._data.length;
          this._data.push(this._padding);
          this._dataLength += this.wordSize;
          return value => {
            this._data[offset] = this._getValue(value);
          };
        }
      }
      exports.Writer = Writer;
      class Reader {
        constructor(data, wordSize, coerceFunc, allowLoose) {
          (0, properties_1.defineReadOnly)(this, "_data", (0, bytes_1.arrayify)(data));
          (0, properties_1.defineReadOnly)(this, "wordSize", wordSize || 32);
          (0, properties_1.defineReadOnly)(this, "_coerceFunc", coerceFunc);
          (0, properties_1.defineReadOnly)(this, "allowLoose", allowLoose);
          this._offset = 0;
        }
        get data() {
          return (0, bytes_1.hexlify)(this._data);
        }
        get consumed() {
          return this._offset;
        }
        static coerce(name, value) {
          let match = name.match("^u?int([0-9]+)$");
          if (match && parseInt(match[1]) <= 48) {
            value = value.toNumber();
          }
          return value;
        }
        coerce(name, value) {
          if (this._coerceFunc) {
            return this._coerceFunc(name, value);
          }
          return Reader.coerce(name, value);
        }
        _peekBytes(offset, length, loose) {
          let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;
          if (this._offset + alignedLength > this._data.length) {
            if (this.allowLoose && loose && this._offset + length <= this._data.length) {
              alignedLength = length;
            } else {
              logger.throwError("data out-of-bounds", logger_1.Logger.errors.BUFFER_OVERRUN, {
                length: this._data.length,
                offset: this._offset + alignedLength
              });
            }
          }
          return this._data.slice(this._offset, this._offset + alignedLength);
        }
        subReader(offset) {
          return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);
        }
        readBytes(length, loose) {
          let bytes = this._peekBytes(0, length, !!loose);
          this._offset += bytes.length;
          return bytes.slice(0, length);
        }
        readValue() {
          return bignumber_1.BigNumber.from(this.readBytes(this.wordSize));
        }
      }
      exports.Reader = Reader;
    },
    7528(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.AddressCoder = void 0;
      const address_1 = __webpack_require__(171);
      const bytes_1 = __webpack_require__(8380);
      const abstract_coder_1 = __webpack_require__(7356);
      class AddressCoder extends abstract_coder_1.Coder {
        constructor(localName) {
          super("address", "address", localName, false);
        }
        defaultValue() {
          return "0x0000000000000000000000000000000000000000000000000000000000000000";
        }
        encode(writer, value) {
          try {
            value = (0, address_1.getAddress)(value);
          } catch (error) {
            this._throwError(error.message, value);
          }
          return writer.writeValue(value);
        }
        decode(reader) {
          return (0, address_1.getAddress)((0, bytes_1.hexZeroPad)(reader.readValue().toHexString(), 32));
        }
      }
      exports.AddressCoder = AddressCoder;
    },
    9921(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.AnonymousCoder = void 0;
      const abstract_coder_1 = __webpack_require__(7356);
      class AnonymousCoder extends abstract_coder_1.Coder {
        constructor(coder) {
          super(coder.name, coder.type, undefined, coder.dynamic);
          this.coder = coder;
        }
        defaultValue() {
          return this.coder.defaultValue();
        }
        encode(writer, value) {
          return this.coder.encode(writer, value);
        }
        decode(reader) {
          return this.coder.decode(reader);
        }
      }
      exports.AnonymousCoder = AnonymousCoder;
    },
    425(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.ArrayCoder = exports.unpack = exports.pack = void 0;
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1446);
      const logger = new logger_1.Logger(_version_1.version);
      const abstract_coder_1 = __webpack_require__(7356);
      const anonymous_1 = __webpack_require__(9921);
      function pack(writer, coders, values) {
        let arrayValues = null;
        if (Array.isArray(values)) {
          arrayValues = values;
        } else if (values && typeof values === "object") {
          let unique = {};
          arrayValues = coders.map((coder => {
            const name = coder.localName;
            if (!name) {
              logger.throwError("cannot encode object for signature with missing names", logger_1.Logger.errors.INVALID_ARGUMENT, {
                argument: "values",
                coder,
                value: values
              });
            }
            if (unique[name]) {
              logger.throwError("cannot encode object for signature with duplicate names", logger_1.Logger.errors.INVALID_ARGUMENT, {
                argument: "values",
                coder,
                value: values
              });
            }
            unique[name] = true;
            return values[name];
          }));
        } else {
          logger.throwArgumentError("invalid tuple value", "tuple", values);
        }
        if (coders.length !== arrayValues.length) {
          logger.throwArgumentError("types/value length mismatch", "tuple", values);
        }
        let staticWriter = new abstract_coder_1.Writer(writer.wordSize);
        let dynamicWriter = new abstract_coder_1.Writer(writer.wordSize);
        let updateFuncs = [];
        coders.forEach(((coder, index) => {
          let value = arrayValues[index];
          if (coder.dynamic) {
            let dynamicOffset = dynamicWriter.length;
            coder.encode(dynamicWriter, value);
            let updateFunc = staticWriter.writeUpdatableValue();
            updateFuncs.push((baseOffset => {
              updateFunc(baseOffset + dynamicOffset);
            }));
          } else {
            coder.encode(staticWriter, value);
          }
        }));
        updateFuncs.forEach((func => {
          func(staticWriter.length);
        }));
        let length = writer.appendWriter(staticWriter);
        length += writer.appendWriter(dynamicWriter);
        return length;
      }
      exports.pack = pack;
      function unpack(reader, coders) {
        let values = [];
        let baseReader = reader.subReader(0);
        coders.forEach((coder => {
          let value = null;
          if (coder.dynamic) {
            let offset = reader.readValue();
            let offsetReader = baseReader.subReader(offset.toNumber());
            try {
              value = coder.decode(offsetReader);
            } catch (error) {
              if (error.code === logger_1.Logger.errors.BUFFER_OVERRUN) {
                throw error;
              }
              value = error;
              value.baseType = coder.name;
              value.name = coder.localName;
              value.type = coder.type;
            }
          } else {
            try {
              value = coder.decode(reader);
            } catch (error) {
              if (error.code === logger_1.Logger.errors.BUFFER_OVERRUN) {
                throw error;
              }
              value = error;
              value.baseType = coder.name;
              value.name = coder.localName;
              value.type = coder.type;
            }
          }
          if (value != undefined) {
            values.push(value);
          }
        }));
        const uniqueNames = coders.reduce(((accum, coder) => {
          const name = coder.localName;
          if (name) {
            if (!accum[name]) {
              accum[name] = 0;
            }
            accum[name]++;
          }
          return accum;
        }), {});
        coders.forEach(((coder, index) => {
          let name = coder.localName;
          if (!name || uniqueNames[name] !== 1) {
            return;
          }
          if (name === "length") {
            name = "_length";
          }
          if (values[name] != null) {
            return;
          }
          const value = values[index];
          if (value instanceof Error) {
            Object.defineProperty(values, name, {
              enumerable: true,
              get: () => {
                throw value;
              }
            });
          } else {
            values[name] = value;
          }
        }));
        for (let i = 0; i < values.length; i++) {
          const value = values[i];
          if (value instanceof Error) {
            Object.defineProperty(values, i, {
              enumerable: true,
              get: () => {
                throw value;
              }
            });
          }
        }
        return Object.freeze(values);
      }
      exports.unpack = unpack;
      class ArrayCoder extends abstract_coder_1.Coder {
        constructor(coder, length, localName) {
          const type = coder.type + "[" + (length >= 0 ? length : "") + "]";
          const dynamic = length === -1 || coder.dynamic;
          super("array", type, localName, dynamic);
          this.coder = coder;
          this.length = length;
        }
        defaultValue() {
          const defaultChild = this.coder.defaultValue();
          const result = [];
          for (let i = 0; i < this.length; i++) {
            result.push(defaultChild);
          }
          return result;
        }
        encode(writer, value) {
          if (!Array.isArray(value)) {
            this._throwError("expected array value", value);
          }
          let count = this.length;
          if (count === -1) {
            count = value.length;
            writer.writeValue(value.length);
          }
          logger.checkArgumentCount(value.length, count, "coder array" + (this.localName ? " " + this.localName : ""));
          let coders = [];
          for (let i = 0; i < value.length; i++) {
            coders.push(this.coder);
          }
          return pack(writer, coders, value);
        }
        decode(reader) {
          let count = this.length;
          if (count === -1) {
            count = reader.readValue().toNumber();
            if (count * 32 > reader._data.length) {
              logger.throwError("insufficient data length", logger_1.Logger.errors.BUFFER_OVERRUN, {
                length: reader._data.length,
                count
              });
            }
          }
          let coders = [];
          for (let i = 0; i < count; i++) {
            coders.push(new anonymous_1.AnonymousCoder(this.coder));
          }
          return reader.coerce(this.name, unpack(reader, coders));
        }
      }
      exports.ArrayCoder = ArrayCoder;
    },
    8044(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.BooleanCoder = void 0;
      const abstract_coder_1 = __webpack_require__(7356);
      class BooleanCoder extends abstract_coder_1.Coder {
        constructor(localName) {
          super("bool", "bool", localName, false);
        }
        defaultValue() {
          return false;
        }
        encode(writer, value) {
          return writer.writeValue(value ? 1 : 0);
        }
        decode(reader) {
          return reader.coerce(this.type, !reader.readValue().isZero());
        }
      }
      exports.BooleanCoder = BooleanCoder;
    },
    2963(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.BytesCoder = exports.DynamicBytesCoder = void 0;
      const bytes_1 = __webpack_require__(8380);
      const abstract_coder_1 = __webpack_require__(7356);
      class DynamicBytesCoder extends abstract_coder_1.Coder {
        constructor(type, localName) {
          super(type, type, localName, true);
        }
        defaultValue() {
          return "0x";
        }
        encode(writer, value) {
          value = (0, bytes_1.arrayify)(value);
          let length = writer.writeValue(value.length);
          length += writer.writeBytes(value);
          return length;
        }
        decode(reader) {
          return reader.readBytes(reader.readValue().toNumber(), true);
        }
      }
      exports.DynamicBytesCoder = DynamicBytesCoder;
      class BytesCoder extends DynamicBytesCoder {
        constructor(localName) {
          super("bytes", localName);
        }
        decode(reader) {
          return reader.coerce(this.name, (0, bytes_1.hexlify)(super.decode(reader)));
        }
      }
      exports.BytesCoder = BytesCoder;
    },
    5332(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.FixedBytesCoder = void 0;
      const bytes_1 = __webpack_require__(8380);
      const abstract_coder_1 = __webpack_require__(7356);
      class FixedBytesCoder extends abstract_coder_1.Coder {
        constructor(size, localName) {
          let name = "bytes" + String(size);
          super(name, name, localName, false);
          this.size = size;
        }
        defaultValue() {
          return "0x0000000000000000000000000000000000000000000000000000000000000000".substring(0, 2 + this.size * 2);
        }
        encode(writer, value) {
          let data = (0, bytes_1.arrayify)(value);
          if (data.length !== this.size) {
            this._throwError("incorrect data length", value);
          }
          return writer.writeBytes(data);
        }
        decode(reader) {
          return reader.coerce(this.name, (0, bytes_1.hexlify)(reader.readBytes(this.size)));
        }
      }
      exports.FixedBytesCoder = FixedBytesCoder;
    },
    2162(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.FunctionCoder = void 0;
      const bytes_1 = __webpack_require__(8380);
      const address_1 = __webpack_require__(171);
      const abstract_coder_1 = __webpack_require__(7356);
      class FunctionCoder extends abstract_coder_1.Coder {
        constructor(localName) {
          super("function", "function", localName, false);
        }
        defaultValue() {
          return "0x" + "00".repeat(32) + "00000000";
        }
        encode(writer, value) {
          let hex = value;
          if (hex.startsWith("0x")) {
            hex = hex.substring(2);
          }
          if (hex.length !== 72) {
            this._throwError("invalid function value (expected 72 hex chars after 0x)", value);
          }
          const addressHex = "0x" + hex.substring(0, 64);
          const selectorHex = "0x" + hex.substring(64, 72);
          (0, address_1.getAddress)(addressHex);
          writer.writeValue(addressHex);
          writer.writeValue(selectorHex);
          return writer.length;
        }
        decode(reader) {
          const addressValue = reader.readValue();
          const selectorValue = reader.readValue();
          const addressHex = (0, bytes_1.hexZeroPad)(addressValue.toHexString(), 32).substring(2);
          const selectorHex = (0, bytes_1.hexZeroPad)(selectorValue.mask(32).toHexString(), 4).substring(2);
          return reader.coerce(this.name, "0x" + addressHex + selectorHex);
        }
      }
      exports.FunctionCoder = FunctionCoder;
    },
    9019(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.NullCoder = void 0;
      const abstract_coder_1 = __webpack_require__(7356);
      class NullCoder extends abstract_coder_1.Coder {
        constructor(localName) {
          super("null", "", localName, false);
        }
        defaultValue() {
          return null;
        }
        encode(writer, value) {
          if (value != null) {
            this._throwError("not null", value);
          }
          return writer.writeBytes([]);
        }
        decode(reader) {
          reader.readBytes(0);
          return reader.coerce(this.name, null);
        }
      }
      exports.NullCoder = NullCoder;
    },
    6607(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.NumberCoder = void 0;
      const bignumber_1 = __webpack_require__(3804);
      const constants_1 = __webpack_require__(846);
      const abstract_coder_1 = __webpack_require__(7356);
      class NumberCoder extends abstract_coder_1.Coder {
        constructor(size, signed, localName) {
          const name = (signed ? "int" : "uint") + size * 8;
          super(name, name, localName, false);
          this.size = size;
          this.signed = signed;
        }
        defaultValue() {
          return 0;
        }
        encode(writer, value) {
          let v = bignumber_1.BigNumber.from(value);
          let maxUintValue = constants_1.MaxUint256.mask(writer.wordSize * 8);
          if (this.signed) {
            let bounds = maxUintValue.mask(this.size * 8 - 1);
            if (v.gt(bounds) || v.lt(bounds.add(constants_1.One).mul(constants_1.NegativeOne))) {
              this._throwError("value out-of-bounds", value);
            }
          } else if (v.lt(constants_1.Zero) || v.gt(maxUintValue.mask(this.size * 8))) {
            this._throwError("value out-of-bounds", value);
          }
          v = v.toTwos(this.size * 8).mask(this.size * 8);
          if (this.signed) {
            v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);
          }
          return writer.writeValue(v);
        }
        decode(reader) {
          let value = reader.readValue().mask(this.size * 8);
          if (this.signed) {
            value = value.fromTwos(this.size * 8);
          }
          return reader.coerce(this.name, value);
        }
      }
      exports.NumberCoder = NumberCoder;
    },
    5807(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.StringCoder = void 0;
      const strings_1 = __webpack_require__(2509);
      const bytes_1 = __webpack_require__(2963);
      class StringCoder extends bytes_1.DynamicBytesCoder {
        constructor(localName) {
          super("string", localName);
        }
        defaultValue() {
          return "";
        }
        encode(writer, value) {
          return super.encode(writer, (0, strings_1.toUtf8Bytes)(value));
        }
        decode(reader) {
          return (0, strings_1.toUtf8String)(super.decode(reader));
        }
      }
      exports.StringCoder = StringCoder;
    },
    9314(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.TupleCoder = void 0;
      const abstract_coder_1 = __webpack_require__(7356);
      const array_1 = __webpack_require__(425);
      class TupleCoder extends abstract_coder_1.Coder {
        constructor(coders, localName) {
          let dynamic = false;
          const types = [];
          coders.forEach((coder => {
            if (coder.dynamic) {
              dynamic = true;
            }
            types.push(coder.type);
          }));
          const type = "tuple(" + types.join(",") + ")";
          super("tuple", type, localName, dynamic);
          this.coders = coders;
        }
        defaultValue() {
          const values = [];
          this.coders.forEach((coder => {
            values.push(coder.defaultValue());
          }));
          const uniqueNames = this.coders.reduce(((accum, coder) => {
            const name = coder.localName;
            if (name) {
              if (!accum[name]) {
                accum[name] = 0;
              }
              accum[name]++;
            }
            return accum;
          }), {});
          this.coders.forEach(((coder, index) => {
            let name = coder.localName;
            if (!name || uniqueNames[name] !== 1) {
              return;
            }
            if (name === "length") {
              name = "_length";
            }
            if (values[name] != null) {
              return;
            }
            values[name] = values[index];
          }));
          return Object.freeze(values);
        }
        encode(writer, value) {
          return (0, array_1.pack)(writer, this.coders, value);
        }
        decode(reader) {
          return reader.coerce(this.name, (0, array_1.unpack)(reader, this.coders));
        }
      }
      exports.TupleCoder = TupleCoder;
    },
    5068(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.ErrorFragment = exports.FunctionFragment = exports.ConstructorFragment = exports.EventFragment = exports.Fragment = exports.ParamType = exports.FormatTypes = void 0;
      const bignumber_1 = __webpack_require__(3804);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1446);
      const logger = new logger_1.Logger(_version_1.version);
      const _constructorGuard = {};
      let ModifiersBytes = {
        calldata: true,
        memory: true,
        storage: true
      };
      let ModifiersNest = {
        calldata: true,
        memory: true
      };
      function checkModifier(type, name) {
        if (type === "bytes" || type === "string") {
          if (ModifiersBytes[name]) {
            return true;
          }
        } else if (type === "address") {
          if (name === "payable") {
            return true;
          }
        } else if (type.indexOf("[") >= 0 || type === "tuple") {
          if (ModifiersNest[name]) {
            return true;
          }
        }
        if (ModifiersBytes[name] || name === "payable") {
          logger.throwArgumentError("invalid modifier", "name", name);
        }
        return false;
      }
      function parseParamType(param, allowIndexed) {
        let originalParam = param;
        function throwError(i) {
          logger.throwArgumentError(`unexpected character at position ${i}`, "param", param);
        }
        param = param.replace(/\s/g, " ");
        function newNode(parent) {
          let node = {
            type: "",
            name: "",
            parent,
            state: {
              allowType: true
            }
          };
          if (allowIndexed) {
            node.indexed = false;
          }
          return node;
        }
        let parent = {
          type: "",
          name: "",
          state: {
            allowType: true
          }
        };
        let node = parent;
        for (let i = 0; i < param.length; i++) {
          let c = param[i];
          switch (c) {
           case "(":
            if (node.state.allowType && node.type === "") {
              node.type = "tuple";
            } else if (!node.state.allowParams) {
              throwError(i);
            }
            node.state.allowType = false;
            node.type = verifyType(node.type);
            node.components = [ newNode(node) ];
            node = node.components[0];
            break;

           case ")":
            delete node.state;
            if (node.name === "indexed") {
              if (!allowIndexed) {
                throwError(i);
              }
              node.indexed = true;
              node.name = "";
            }
            if (checkModifier(node.type, node.name)) {
              node.name = "";
            }
            node.type = verifyType(node.type);
            let child = node;
            node = node.parent;
            if (!node) {
              throwError(i);
            }
            delete child.parent;
            node.state.allowParams = false;
            node.state.allowName = true;
            node.state.allowArray = true;
            break;

           case ",":
            delete node.state;
            if (node.name === "indexed") {
              if (!allowIndexed) {
                throwError(i);
              }
              node.indexed = true;
              node.name = "";
            }
            if (checkModifier(node.type, node.name)) {
              node.name = "";
            }
            node.type = verifyType(node.type);
            let sibling = newNode(node.parent);
            node.parent.components.push(sibling);
            delete node.parent;
            node = sibling;
            break;

           case " ":
            if (node.state.allowType) {
              if (node.type !== "") {
                node.type = verifyType(node.type);
                delete node.state.allowType;
                node.state.allowName = true;
                node.state.allowParams = true;
              }
            }
            if (node.state.allowName) {
              if (node.name !== "") {
                if (node.name === "indexed") {
                  if (!allowIndexed) {
                    throwError(i);
                  }
                  if (node.indexed) {
                    throwError(i);
                  }
                  node.indexed = true;
                  node.name = "";
                } else if (checkModifier(node.type, node.name)) {
                  node.name = "";
                } else {
                  node.state.allowName = false;
                }
              }
            }
            break;

           case "[":
            if (!node.state.allowArray) {
              throwError(i);
            }
            node.type += c;
            node.state.allowArray = false;
            node.state.allowName = false;
            node.state.readArray = true;
            break;

           case "]":
            if (!node.state.readArray) {
              throwError(i);
            }
            node.type += c;
            node.state.readArray = false;
            node.state.allowArray = true;
            node.state.allowName = true;
            break;

           default:
            if (node.state.allowType) {
              node.type += c;
              node.state.allowParams = true;
              node.state.allowArray = true;
            } else if (node.state.allowName) {
              node.name += c;
              delete node.state.allowArray;
            } else if (node.state.readArray) {
              node.type += c;
            } else {
              throwError(i);
            }
          }
        }
        if (node.parent) {
          logger.throwArgumentError("unexpected eof", "param", param);
        }
        delete parent.state;
        if (node.name === "indexed") {
          if (!allowIndexed) {
            throwError(originalParam.length - 7);
          }
          if (node.indexed) {
            throwError(originalParam.length - 7);
          }
          node.indexed = true;
          node.name = "";
        } else if (checkModifier(node.type, node.name)) {
          node.name = "";
        }
        parent.type = verifyType(parent.type);
        return parent;
      }
      function populate(object, params) {
        for (let key in params) {
          (0, properties_1.defineReadOnly)(object, key, params[key]);
        }
      }
      exports.FormatTypes = Object.freeze({
        sighash: "sighash",
        minimal: "minimal",
        full: "full",
        json: "json"
      });
      const paramTypeArray = new RegExp(/^(.*)\[([0-9]*)\]$/);
      class ParamType {
        constructor(constructorGuard, params) {
          if (constructorGuard !== _constructorGuard) {
            logger.throwError("use fromString", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "new ParamType()"
            });
          }
          populate(this, params);
          let match = this.type.match(paramTypeArray);
          if (match) {
            populate(this, {
              arrayLength: parseInt(match[2] || "-1"),
              arrayChildren: ParamType.fromObject({
                type: match[1],
                components: this.components
              }),
              baseType: "array"
            });
          } else {
            populate(this, {
              arrayLength: null,
              arrayChildren: null,
              baseType: this.components != null ? "tuple" : this.type
            });
          }
          this._isParamType = true;
          Object.freeze(this);
        }
        format(format) {
          if (!format) {
            format = exports.FormatTypes.sighash;
          }
          if (!exports.FormatTypes[format]) {
            logger.throwArgumentError("invalid format type", "format", format);
          }
          if (format === exports.FormatTypes.json) {
            let result = {
              type: this.baseType === "tuple" ? "tuple" : this.type,
              name: this.name || undefined
            };
            if (typeof this.indexed === "boolean") {
              result.indexed = this.indexed;
            }
            if (this.components) {
              result.components = this.components.map((comp => JSON.parse(comp.format(format))));
            }
            return JSON.stringify(result);
          }
          let result = "";
          if (this.baseType === "array") {
            result += this.arrayChildren.format(format);
            result += "[" + (this.arrayLength < 0 ? "" : String(this.arrayLength)) + "]";
          } else {
            if (this.baseType === "tuple") {
              if (format !== exports.FormatTypes.sighash) {
                result += this.type;
              }
              result += "(" + this.components.map((comp => comp.format(format))).join(format === exports.FormatTypes.full ? ", " : ",") + ")";
            } else {
              result += this.type;
            }
          }
          if (format !== exports.FormatTypes.sighash) {
            if (this.indexed === true) {
              result += " indexed";
            }
            if (format === exports.FormatTypes.full && this.name) {
              result += " " + this.name;
            }
          }
          return result;
        }
        static from(value, allowIndexed) {
          if (typeof value === "string") {
            return ParamType.fromString(value, allowIndexed);
          }
          return ParamType.fromObject(value);
        }
        static fromObject(value) {
          if (ParamType.isParamType(value)) {
            return value;
          }
          return new ParamType(_constructorGuard, {
            name: value.name || null,
            type: verifyType(value.type),
            indexed: value.indexed == null ? null : !!value.indexed,
            components: value.components ? value.components.map(ParamType.fromObject) : null
          });
        }
        static fromString(value, allowIndexed) {
          function ParamTypify(node) {
            return ParamType.fromObject({
              name: node.name,
              type: node.type,
              indexed: node.indexed,
              components: node.components
            });
          }
          return ParamTypify(parseParamType(value, !!allowIndexed));
        }
        static isParamType(value) {
          return !!(value != null && value._isParamType);
        }
      }
      exports.ParamType = ParamType;
      function parseParams(value, allowIndex) {
        return splitNesting(value).map((param => ParamType.fromString(param, allowIndex)));
      }
      class Fragment {
        constructor(constructorGuard, params) {
          if (constructorGuard !== _constructorGuard) {
            logger.throwError("use a static from method", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "new Fragment()"
            });
          }
          populate(this, params);
          this._isFragment = true;
          Object.freeze(this);
        }
        static from(value) {
          if (Fragment.isFragment(value)) {
            return value;
          }
          if (typeof value === "string") {
            return Fragment.fromString(value);
          }
          return Fragment.fromObject(value);
        }
        static fromObject(value) {
          if (Fragment.isFragment(value)) {
            return value;
          }
          switch (value.type) {
           case "function":
            return FunctionFragment.fromObject(value);

           case "event":
            return EventFragment.fromObject(value);

           case "constructor":
            return ConstructorFragment.fromObject(value);

           case "error":
            return ErrorFragment.fromObject(value);

           case "fallback":
           case "receive":
            return null;
          }
          return logger.throwArgumentError("invalid fragment object", "value", value);
        }
        static fromString(value) {
          value = value.replace(/\s/g, " ");
          value = value.replace(/\(/g, " (").replace(/\)/g, ") ").replace(/\s+/g, " ");
          value = value.trim();
          if (value.split(" ")[0] === "event") {
            return EventFragment.fromString(value.substring(5).trim());
          } else if (value.split(" ")[0] === "function") {
            return FunctionFragment.fromString(value.substring(8).trim());
          } else if (value.split("(")[0].trim() === "constructor") {
            return ConstructorFragment.fromString(value.trim());
          } else if (value.split(" ")[0] === "error") {
            return ErrorFragment.fromString(value.substring(5).trim());
          }
          return logger.throwArgumentError("unsupported fragment", "value", value);
        }
        static isFragment(value) {
          return !!(value && value._isFragment);
        }
      }
      exports.Fragment = Fragment;
      class EventFragment extends Fragment {
        format(format) {
          if (!format) {
            format = exports.FormatTypes.sighash;
          }
          if (!exports.FormatTypes[format]) {
            logger.throwArgumentError("invalid format type", "format", format);
          }
          if (format === exports.FormatTypes.json) {
            return JSON.stringify({
              type: "event",
              anonymous: this.anonymous,
              name: this.name,
              inputs: this.inputs.map((input => JSON.parse(input.format(format))))
            });
          }
          let result = "";
          if (format !== exports.FormatTypes.sighash) {
            result += "event ";
          }
          result += this.name + "(" + this.inputs.map((input => input.format(format))).join(format === exports.FormatTypes.full ? ", " : ",") + ") ";
          if (format !== exports.FormatTypes.sighash) {
            if (this.anonymous) {
              result += "anonymous ";
            }
          }
          return result.trim();
        }
        static from(value) {
          if (typeof value === "string") {
            return EventFragment.fromString(value);
          }
          return EventFragment.fromObject(value);
        }
        static fromObject(value) {
          if (EventFragment.isEventFragment(value)) {
            return value;
          }
          if (value.type !== "event") {
            logger.throwArgumentError("invalid event object", "value", value);
          }
          const params = {
            name: verifyIdentifier(value.name),
            anonymous: value.anonymous,
            inputs: value.inputs ? value.inputs.map(ParamType.fromObject) : [],
            type: "event"
          };
          return new EventFragment(_constructorGuard, params);
        }
        static fromString(value) {
          let match = value.match(regexParen);
          if (!match) {
            logger.throwArgumentError("invalid event string", "value", value);
          }
          let anonymous = false;
          match[3].split(" ").forEach((modifier => {
            switch (modifier.trim()) {
             case "anonymous":
              anonymous = true;
              break;

             case "":
              break;

             default:
              logger.warn("unknown modifier: " + modifier);
            }
          }));
          return EventFragment.fromObject({
            name: match[1].trim(),
            anonymous,
            inputs: parseParams(match[2], true),
            type: "event"
          });
        }
        static isEventFragment(value) {
          return value && value._isFragment && value.type === "event";
        }
      }
      exports.EventFragment = EventFragment;
      function parseGas(value, params) {
        params.gas = null;
        let comps = value.split("@");
        if (comps.length !== 1) {
          if (comps.length > 2) {
            logger.throwArgumentError("invalid human-readable ABI signature", "value", value);
          }
          if (!comps[1].match(/^[0-9]+$/)) {
            logger.throwArgumentError("invalid human-readable ABI signature gas", "value", value);
          }
          params.gas = bignumber_1.BigNumber.from(comps[1]);
          return comps[0];
        }
        return value;
      }
      function parseModifiers(value, params) {
        params.constant = false;
        params.payable = false;
        params.stateMutability = "nonpayable";
        value.split(" ").forEach((modifier => {
          switch (modifier.trim()) {
           case "constant":
            params.constant = true;
            break;

           case "payable":
            params.payable = true;
            params.stateMutability = "payable";
            break;

           case "nonpayable":
            params.payable = false;
            params.stateMutability = "nonpayable";
            break;

           case "pure":
            params.constant = true;
            params.stateMutability = "pure";
            break;

           case "view":
            params.constant = true;
            params.stateMutability = "view";
            break;

           case "external":
           case "public":
           case "":
            break;

           default:
            console.log("unknown modifier: " + modifier);
          }
        }));
      }
      function verifyState(value) {
        let result = {
          constant: false,
          payable: true,
          stateMutability: "payable"
        };
        if (value.stateMutability != null) {
          result.stateMutability = value.stateMutability;
          result.constant = result.stateMutability === "view" || result.stateMutability === "pure";
          if (value.constant != null) {
            if (!!value.constant !== result.constant) {
              logger.throwArgumentError("cannot have constant function with mutability " + result.stateMutability, "value", value);
            }
          }
          result.payable = result.stateMutability === "payable";
          if (value.payable != null) {
            if (!!value.payable !== result.payable) {
              logger.throwArgumentError("cannot have payable function with mutability " + result.stateMutability, "value", value);
            }
          }
        } else if (value.payable != null) {
          result.payable = !!value.payable;
          if (value.constant == null && !result.payable && value.type !== "constructor") {
            logger.throwArgumentError("unable to determine stateMutability", "value", value);
          }
          result.constant = !!value.constant;
          if (result.constant) {
            result.stateMutability = "view";
          } else {
            result.stateMutability = result.payable ? "payable" : "nonpayable";
          }
          if (result.payable && result.constant) {
            logger.throwArgumentError("cannot have constant payable function", "value", value);
          }
        } else if (value.constant != null) {
          result.constant = !!value.constant;
          result.payable = !result.constant;
          result.stateMutability = result.constant ? "view" : "payable";
        } else if (value.type !== "constructor") {
          logger.throwArgumentError("unable to determine stateMutability", "value", value);
        }
        return result;
      }
      class ConstructorFragment extends Fragment {
        format(format) {
          if (!format) {
            format = exports.FormatTypes.sighash;
          }
          if (!exports.FormatTypes[format]) {
            logger.throwArgumentError("invalid format type", "format", format);
          }
          if (format === exports.FormatTypes.json) {
            return JSON.stringify({
              type: "constructor",
              stateMutability: this.stateMutability !== "nonpayable" ? this.stateMutability : undefined,
              payable: this.payable,
              gas: this.gas ? this.gas.toNumber() : undefined,
              inputs: this.inputs.map((input => JSON.parse(input.format(format))))
            });
          }
          if (format === exports.FormatTypes.sighash) {
            logger.throwError("cannot format a constructor for sighash", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "format(sighash)"
            });
          }
          let result = "constructor(" + this.inputs.map((input => input.format(format))).join(format === exports.FormatTypes.full ? ", " : ",") + ") ";
          if (this.stateMutability && this.stateMutability !== "nonpayable") {
            result += this.stateMutability + " ";
          }
          return result.trim();
        }
        static from(value) {
          if (typeof value === "string") {
            return ConstructorFragment.fromString(value);
          }
          return ConstructorFragment.fromObject(value);
        }
        static fromObject(value) {
          if (ConstructorFragment.isConstructorFragment(value)) {
            return value;
          }
          if (value.type !== "constructor") {
            logger.throwArgumentError("invalid constructor object", "value", value);
          }
          let state = verifyState(value);
          if (state.constant) {
            logger.throwArgumentError("constructor cannot be constant", "value", value);
          }
          const params = {
            name: null,
            type: value.type,
            inputs: value.inputs ? value.inputs.map(ParamType.fromObject) : [],
            payable: state.payable,
            stateMutability: state.stateMutability,
            gas: value.gas ? bignumber_1.BigNumber.from(value.gas) : null
          };
          return new ConstructorFragment(_constructorGuard, params);
        }
        static fromString(value) {
          let params = {
            type: "constructor"
          };
          value = parseGas(value, params);
          let parens = value.match(regexParen);
          if (!parens || parens[1].trim() !== "constructor") {
            logger.throwArgumentError("invalid constructor string", "value", value);
          }
          params.inputs = parseParams(parens[2].trim(), false);
          parseModifiers(parens[3].trim(), params);
          return ConstructorFragment.fromObject(params);
        }
        static isConstructorFragment(value) {
          return value && value._isFragment && value.type === "constructor";
        }
      }
      exports.ConstructorFragment = ConstructorFragment;
      class FunctionFragment extends ConstructorFragment {
        format(format) {
          if (!format) {
            format = exports.FormatTypes.sighash;
          }
          if (!exports.FormatTypes[format]) {
            logger.throwArgumentError("invalid format type", "format", format);
          }
          if (format === exports.FormatTypes.json) {
            return JSON.stringify({
              type: "function",
              name: this.name,
              constant: this.constant,
              stateMutability: this.stateMutability !== "nonpayable" ? this.stateMutability : undefined,
              payable: this.payable,
              gas: this.gas ? this.gas.toNumber() : undefined,
              inputs: this.inputs.map((input => JSON.parse(input.format(format)))),
              outputs: this.outputs.map((output => JSON.parse(output.format(format))))
            });
          }
          let result = "";
          if (format !== exports.FormatTypes.sighash) {
            result += "function ";
          }
          result += this.name + "(" + this.inputs.map((input => input.format(format))).join(format === exports.FormatTypes.full ? ", " : ",") + ") ";
          if (format !== exports.FormatTypes.sighash) {
            if (this.stateMutability) {
              if (this.stateMutability !== "nonpayable") {
                result += this.stateMutability + " ";
              }
            } else if (this.constant) {
              result += "view ";
            }
            if (this.outputs && this.outputs.length) {
              result += "returns (" + this.outputs.map((output => output.format(format))).join(", ") + ") ";
            }
            if (this.gas != null) {
              result += "@" + this.gas.toString() + " ";
            }
          }
          return result.trim();
        }
        static from(value) {
          if (typeof value === "string") {
            return FunctionFragment.fromString(value);
          }
          return FunctionFragment.fromObject(value);
        }
        static fromObject(value) {
          if (FunctionFragment.isFunctionFragment(value)) {
            return value;
          }
          if (value.type !== "function") {
            logger.throwArgumentError("invalid function object", "value", value);
          }
          let state = verifyState(value);
          const params = {
            type: value.type,
            name: verifyIdentifier(value.name),
            constant: state.constant,
            inputs: value.inputs ? value.inputs.map(ParamType.fromObject) : [],
            outputs: value.outputs ? value.outputs.map(ParamType.fromObject) : [],
            payable: state.payable,
            stateMutability: state.stateMutability,
            gas: value.gas ? bignumber_1.BigNumber.from(value.gas) : null
          };
          return new FunctionFragment(_constructorGuard, params);
        }
        static fromString(value) {
          let params = {
            type: "function"
          };
          value = parseGas(value, params);
          let comps = value.split(" returns ");
          if (comps.length > 2) {
            logger.throwArgumentError("invalid function string", "value", value);
          }
          let parens = comps[0].match(regexParen);
          if (!parens) {
            logger.throwArgumentError("invalid function signature", "value", value);
          }
          params.name = parens[1].trim();
          if (params.name) {
            verifyIdentifier(params.name);
          }
          params.inputs = parseParams(parens[2], false);
          parseModifiers(parens[3].trim(), params);
          if (comps.length > 1) {
            let returns = comps[1].match(regexParen);
            if (returns[1].trim() != "" || returns[3].trim() != "") {
              logger.throwArgumentError("unexpected tokens", "value", value);
            }
            params.outputs = parseParams(returns[2], false);
          } else {
            params.outputs = [];
          }
          return FunctionFragment.fromObject(params);
        }
        static isFunctionFragment(value) {
          return value && value._isFragment && value.type === "function";
        }
      }
      exports.FunctionFragment = FunctionFragment;
      function checkForbidden(fragment) {
        const sig = fragment.format();
        if (sig === "Error(string)" || sig === "Panic(uint256)") {
          logger.throwArgumentError(`cannot specify user defined ${sig} error`, "fragment", fragment);
        }
        return fragment;
      }
      class ErrorFragment extends Fragment {
        format(format) {
          if (!format) {
            format = exports.FormatTypes.sighash;
          }
          if (!exports.FormatTypes[format]) {
            logger.throwArgumentError("invalid format type", "format", format);
          }
          if (format === exports.FormatTypes.json) {
            return JSON.stringify({
              type: "error",
              name: this.name,
              inputs: this.inputs.map((input => JSON.parse(input.format(format))))
            });
          }
          let result = "";
          if (format !== exports.FormatTypes.sighash) {
            result += "error ";
          }
          result += this.name + "(" + this.inputs.map((input => input.format(format))).join(format === exports.FormatTypes.full ? ", " : ",") + ") ";
          return result.trim();
        }
        static from(value) {
          if (typeof value === "string") {
            return ErrorFragment.fromString(value);
          }
          return ErrorFragment.fromObject(value);
        }
        static fromObject(value) {
          if (ErrorFragment.isErrorFragment(value)) {
            return value;
          }
          if (value.type !== "error") {
            logger.throwArgumentError("invalid error object", "value", value);
          }
          const params = {
            type: value.type,
            name: verifyIdentifier(value.name),
            inputs: value.inputs ? value.inputs.map(ParamType.fromObject) : []
          };
          return checkForbidden(new ErrorFragment(_constructorGuard, params));
        }
        static fromString(value) {
          let params = {
            type: "error"
          };
          let parens = value.match(regexParen);
          if (!parens) {
            logger.throwArgumentError("invalid error signature", "value", value);
          }
          params.name = parens[1].trim();
          if (params.name) {
            verifyIdentifier(params.name);
          }
          params.inputs = parseParams(parens[2], false);
          return checkForbidden(ErrorFragment.fromObject(params));
        }
        static isErrorFragment(value) {
          return value && value._isFragment && value.type === "error";
        }
      }
      exports.ErrorFragment = ErrorFragment;
      function verifyType(type) {
        if (type.match(/^uint($|[^1-9])/)) {
          type = "uint256" + type.substring(4);
        } else if (type.match(/^int($|[^1-9])/)) {
          type = "int256" + type.substring(3);
        }
        return type;
      }
      const regexIdentifier = new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");
      function verifyIdentifier(value) {
        if (!value || !value.match(regexIdentifier)) {
          logger.throwArgumentError(`invalid identifier "${value}"`, "value", value);
        }
        return value;
      }
      const regexParen = new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");
      function splitNesting(value) {
        value = value.trim();
        let result = [];
        let accum = "";
        let depth = 0;
        for (let offset = 0; offset < value.length; offset++) {
          let c = value[offset];
          if (c === "," && depth === 0) {
            result.push(accum);
            accum = "";
          } else {
            accum += c;
            if (c === "(") {
              depth++;
            } else if (c === ")") {
              depth--;
              if (depth === -1) {
                logger.throwArgumentError("unbalanced parenthesis", "value", value);
              }
            }
          }
        }
        if (accum) {
          result.push(accum);
        }
        return result;
      }
    },
    7989(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.TransactionDescription = exports.LogDescription = exports.checkResultErrors = exports.Indexed = exports.Interface = exports.defaultAbiCoder = exports.AbiCoder = exports.FormatTypes = exports.ParamType = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = void 0;
      const fragments_1 = __webpack_require__(5068);
      Object.defineProperty(exports, "ConstructorFragment", {
        enumerable: true,
        get: function() {
          return fragments_1.ConstructorFragment;
        }
      });
      Object.defineProperty(exports, "ErrorFragment", {
        enumerable: true,
        get: function() {
          return fragments_1.ErrorFragment;
        }
      });
      Object.defineProperty(exports, "EventFragment", {
        enumerable: true,
        get: function() {
          return fragments_1.EventFragment;
        }
      });
      Object.defineProperty(exports, "FormatTypes", {
        enumerable: true,
        get: function() {
          return fragments_1.FormatTypes;
        }
      });
      Object.defineProperty(exports, "Fragment", {
        enumerable: true,
        get: function() {
          return fragments_1.Fragment;
        }
      });
      Object.defineProperty(exports, "FunctionFragment", {
        enumerable: true,
        get: function() {
          return fragments_1.FunctionFragment;
        }
      });
      Object.defineProperty(exports, "ParamType", {
        enumerable: true,
        get: function() {
          return fragments_1.ParamType;
        }
      });
      const abi_coder_1 = __webpack_require__(2975);
      Object.defineProperty(exports, "AbiCoder", {
        enumerable: true,
        get: function() {
          return abi_coder_1.AbiCoder;
        }
      });
      Object.defineProperty(exports, "defaultAbiCoder", {
        enumerable: true,
        get: function() {
          return abi_coder_1.defaultAbiCoder;
        }
      });
      const interface_1 = __webpack_require__(1590);
      Object.defineProperty(exports, "checkResultErrors", {
        enumerable: true,
        get: function() {
          return interface_1.checkResultErrors;
        }
      });
      Object.defineProperty(exports, "Indexed", {
        enumerable: true,
        get: function() {
          return interface_1.Indexed;
        }
      });
      Object.defineProperty(exports, "Interface", {
        enumerable: true,
        get: function() {
          return interface_1.Interface;
        }
      });
      Object.defineProperty(exports, "LogDescription", {
        enumerable: true,
        get: function() {
          return interface_1.LogDescription;
        }
      });
      Object.defineProperty(exports, "TransactionDescription", {
        enumerable: true,
        get: function() {
          return interface_1.TransactionDescription;
        }
      });
    },
    1590(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Interface = exports.Indexed = exports.ErrorDescription = exports.TransactionDescription = exports.LogDescription = exports.checkResultErrors = void 0;
      const address_1 = __webpack_require__(171);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const hash_1 = __webpack_require__(413);
      const keccak256_1 = __webpack_require__(1136);
      const properties_1 = __webpack_require__(1476);
      const abi_coder_1 = __webpack_require__(2975);
      const abstract_coder_1 = __webpack_require__(7356);
      Object.defineProperty(exports, "checkResultErrors", {
        enumerable: true,
        get: function() {
          return abstract_coder_1.checkResultErrors;
        }
      });
      const fragments_1 = __webpack_require__(5068);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1446);
      const logger = new logger_1.Logger(_version_1.version);
      class LogDescription extends properties_1.Description {}
      exports.LogDescription = LogDescription;
      class TransactionDescription extends properties_1.Description {}
      exports.TransactionDescription = TransactionDescription;
      class ErrorDescription extends properties_1.Description {}
      exports.ErrorDescription = ErrorDescription;
      class Indexed extends properties_1.Description {
        static isIndexed(value) {
          return !!(value && value._isIndexed);
        }
      }
      exports.Indexed = Indexed;
      const BuiltinErrors = {
        "0x08c379a0": {
          signature: "Error(string)",
          name: "Error",
          inputs: [ "string" ],
          reason: true
        },
        "0x4e487b71": {
          signature: "Panic(uint256)",
          name: "Panic",
          inputs: [ "uint256" ]
        }
      };
      function wrapAccessError(property, error) {
        const wrap = new Error(`deferred error during ABI decoding triggered accessing ${property}`);
        wrap.error = error;
        return wrap;
      }
      class Interface {
        constructor(fragments) {
          let abi = [];
          if (typeof fragments === "string") {
            abi = JSON.parse(fragments);
          } else {
            abi = fragments;
          }
          (0, properties_1.defineReadOnly)(this, "fragments", abi.map((fragment => fragments_1.Fragment.from(fragment))).filter((fragment => fragment != null)));
          (0, properties_1.defineReadOnly)(this, "_abiCoder", (0, properties_1.getStatic)(new.target, "getAbiCoder")());
          (0, properties_1.defineReadOnly)(this, "functions", {});
          (0, properties_1.defineReadOnly)(this, "errors", {});
          (0, properties_1.defineReadOnly)(this, "events", {});
          (0, properties_1.defineReadOnly)(this, "structs", {});
          this.fragments.forEach((fragment => {
            let bucket = null;
            switch (fragment.type) {
             case "constructor":
              if (this.deploy) {
                logger.warn("duplicate definition - constructor");
                return;
              }
              (0, properties_1.defineReadOnly)(this, "deploy", fragment);
              return;

             case "function":
              bucket = this.functions;
              break;

             case "event":
              bucket = this.events;
              break;

             case "error":
              bucket = this.errors;
              break;

             default:
              return;
            }
            let signature = fragment.format();
            if (bucket[signature]) {
              logger.warn("duplicate definition - " + signature);
              return;
            }
            bucket[signature] = fragment;
          }));
          if (!this.deploy) {
            (0, properties_1.defineReadOnly)(this, "deploy", fragments_1.ConstructorFragment.from({
              payable: false,
              type: "constructor"
            }));
          }
          (0, properties_1.defineReadOnly)(this, "_isInterface", true);
        }
        format(format) {
          if (!format) {
            format = fragments_1.FormatTypes.full;
          }
          if (format === fragments_1.FormatTypes.sighash) {
            logger.throwArgumentError("interface does not support formatting sighash", "format", format);
          }
          const abi = this.fragments.map((fragment => fragment.format(format)));
          if (format === fragments_1.FormatTypes.json) {
            return JSON.stringify(abi.map((j => JSON.parse(j))));
          }
          return abi;
        }
        static getAbiCoder() {
          return abi_coder_1.defaultAbiCoder;
        }
        static getAddress(address) {
          return (0, address_1.getAddress)(address);
        }
        static getSighash(fragment) {
          return (0, bytes_1.hexDataSlice)((0, hash_1.id)(fragment.format()), 0, 4);
        }
        static getEventTopic(eventFragment) {
          return (0, hash_1.id)(eventFragment.format());
        }
        getFunction(nameOrSignatureOrSighash) {
          if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
            for (const name in this.functions) {
              if (nameOrSignatureOrSighash === this.getSighash(name)) {
                return this.functions[name];
              }
            }
            logger.throwArgumentError("no matching function", "sighash", nameOrSignatureOrSighash);
          }
          if (nameOrSignatureOrSighash.indexOf("(") === -1) {
            const name = nameOrSignatureOrSighash.trim();
            const matching = Object.keys(this.functions).filter((f => f.split("(")[0] === name));
            if (matching.length === 0) {
              logger.throwArgumentError("no matching function", "name", name);
            } else if (matching.length > 1) {
              logger.throwArgumentError("multiple matching functions", "name", name);
            }
            return this.functions[matching[0]];
          }
          const result = this.functions[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
          if (!result) {
            logger.throwArgumentError("no matching function", "signature", nameOrSignatureOrSighash);
          }
          return result;
        }
        getEvent(nameOrSignatureOrTopic) {
          if ((0, bytes_1.isHexString)(nameOrSignatureOrTopic)) {
            const topichash = nameOrSignatureOrTopic.toLowerCase();
            for (const name in this.events) {
              if (topichash === this.getEventTopic(name)) {
                return this.events[name];
              }
            }
            logger.throwArgumentError("no matching event", "topichash", topichash);
          }
          if (nameOrSignatureOrTopic.indexOf("(") === -1) {
            const name = nameOrSignatureOrTopic.trim();
            const matching = Object.keys(this.events).filter((f => f.split("(")[0] === name));
            if (matching.length === 0) {
              logger.throwArgumentError("no matching event", "name", name);
            } else if (matching.length > 1) {
              logger.throwArgumentError("multiple matching events", "name", name);
            }
            return this.events[matching[0]];
          }
          const result = this.events[fragments_1.EventFragment.fromString(nameOrSignatureOrTopic).format()];
          if (!result) {
            logger.throwArgumentError("no matching event", "signature", nameOrSignatureOrTopic);
          }
          return result;
        }
        getError(nameOrSignatureOrSighash) {
          if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
            const getSighash = (0, properties_1.getStatic)(this.constructor, "getSighash");
            for (const name in this.errors) {
              const error = this.errors[name];
              if (nameOrSignatureOrSighash === getSighash(error)) {
                return this.errors[name];
              }
            }
            logger.throwArgumentError("no matching error", "sighash", nameOrSignatureOrSighash);
          }
          if (nameOrSignatureOrSighash.indexOf("(") === -1) {
            const name = nameOrSignatureOrSighash.trim();
            const matching = Object.keys(this.errors).filter((f => f.split("(")[0] === name));
            if (matching.length === 0) {
              logger.throwArgumentError("no matching error", "name", name);
            } else if (matching.length > 1) {
              logger.throwArgumentError("multiple matching errors", "name", name);
            }
            return this.errors[matching[0]];
          }
          const result = this.errors[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
          if (!result) {
            logger.throwArgumentError("no matching error", "signature", nameOrSignatureOrSighash);
          }
          return result;
        }
        getSighash(fragment) {
          if (typeof fragment === "string") {
            try {
              fragment = this.getFunction(fragment);
            } catch (error) {
              try {
                fragment = this.getError(fragment);
              } catch (_) {
                throw error;
              }
            }
          }
          return (0, properties_1.getStatic)(this.constructor, "getSighash")(fragment);
        }
        getEventTopic(eventFragment) {
          if (typeof eventFragment === "string") {
            eventFragment = this.getEvent(eventFragment);
          }
          return (0, properties_1.getStatic)(this.constructor, "getEventTopic")(eventFragment);
        }
        _decodeParams(params, data) {
          return this._abiCoder.decode(params, data);
        }
        _encodeParams(params, values) {
          return this._abiCoder.encode(params, values);
        }
        encodeDeploy(values) {
          return this._encodeParams(this.deploy.inputs, values || []);
        }
        decodeErrorResult(fragment, data) {
          if (typeof fragment === "string") {
            fragment = this.getError(fragment);
          }
          const bytes = (0, bytes_1.arrayify)(data);
          if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(fragment)) {
            logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, "data", (0, 
            bytes_1.hexlify)(bytes));
          }
          return this._decodeParams(fragment.inputs, bytes.slice(4));
        }
        encodeErrorResult(fragment, values) {
          if (typeof fragment === "string") {
            fragment = this.getError(fragment);
          }
          return (0, bytes_1.hexlify)((0, bytes_1.concat)([ this.getSighash(fragment), this._encodeParams(fragment.inputs, values || []) ]));
        }
        decodeFunctionData(functionFragment, data) {
          if (typeof functionFragment === "string") {
            functionFragment = this.getFunction(functionFragment);
          }
          const bytes = (0, bytes_1.arrayify)(data);
          if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {
            logger.throwArgumentError(`data signature does not match function ${functionFragment.name}.`, "data", (0, 
            bytes_1.hexlify)(bytes));
          }
          return this._decodeParams(functionFragment.inputs, bytes.slice(4));
        }
        encodeFunctionData(functionFragment, values) {
          if (typeof functionFragment === "string") {
            functionFragment = this.getFunction(functionFragment);
          }
          return (0, bytes_1.hexlify)((0, bytes_1.concat)([ this.getSighash(functionFragment), this._encodeParams(functionFragment.inputs, values || []) ]));
        }
        decodeFunctionResult(functionFragment, data) {
          if (typeof functionFragment === "string") {
            functionFragment = this.getFunction(functionFragment);
          }
          let bytes = (0, bytes_1.arrayify)(data);
          let reason = null;
          let message = "";
          let errorArgs = null;
          let errorName = null;
          let errorSignature = null;
          switch (bytes.length % this._abiCoder._getWordSize()) {
           case 0:
            try {
              return this._abiCoder.decode(functionFragment.outputs, bytes);
            } catch (error) {}
            break;

           case 4:
            {
              const selector = (0, bytes_1.hexlify)(bytes.slice(0, 4));
              const builtin = BuiltinErrors[selector];
              if (builtin) {
                errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));
                errorName = builtin.name;
                errorSignature = builtin.signature;
                if (builtin.reason) {
                  reason = errorArgs[0];
                }
                if (errorName === "Error") {
                  message = `; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(errorArgs[0])}`;
                } else if (errorName === "Panic") {
                  message = `; VM Exception while processing transaction: reverted with panic code ${errorArgs[0]}`;
                }
              } else {
                try {
                  const error = this.getError(selector);
                  errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));
                  errorName = error.name;
                  errorSignature = error.format();
                } catch (error) {}
              }
              break;
            }
          }
          return logger.throwError("call revert exception" + message, logger_1.Logger.errors.CALL_EXCEPTION, {
            method: functionFragment.format(),
            data: (0, bytes_1.hexlify)(data),
            errorArgs,
            errorName,
            errorSignature,
            reason
          });
        }
        encodeFunctionResult(functionFragment, values) {
          if (typeof functionFragment === "string") {
            functionFragment = this.getFunction(functionFragment);
          }
          return (0, bytes_1.hexlify)(this._abiCoder.encode(functionFragment.outputs, values || []));
        }
        encodeFilterTopics(eventFragment, values) {
          if (typeof eventFragment === "string") {
            eventFragment = this.getEvent(eventFragment);
          }
          if (values.length > eventFragment.inputs.length) {
            logger.throwError("too many arguments for " + eventFragment.format(), logger_1.Logger.errors.UNEXPECTED_ARGUMENT, {
              argument: "values",
              value: values
            });
          }
          let topics = [];
          if (!eventFragment.anonymous) {
            topics.push(this.getEventTopic(eventFragment));
          }
          const encodeTopic = (param, value) => {
            if (param.type === "string") {
              return (0, hash_1.id)(value);
            } else if (param.type === "bytes") {
              return (0, keccak256_1.keccak256)((0, bytes_1.hexlify)(value));
            }
            if (param.type === "bool" && typeof value === "boolean") {
              value = value ? "0x01" : "0x00";
            }
            if (param.type.match(/^u?int/)) {
              value = bignumber_1.BigNumber.from(value).toHexString();
            }
            if (param.type === "address") {
              this._abiCoder.encode([ "address" ], [ value ]);
            }
            return (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)(value), 32);
          };
          values.forEach(((value, index) => {
            let param = eventFragment.inputs[index];
            if (!param.indexed) {
              if (value != null) {
                logger.throwArgumentError("cannot filter non-indexed parameters; must be null", "contract." + param.name, value);
              }
              return;
            }
            if (value == null) {
              topics.push(null);
            } else if (param.baseType === "array" || param.baseType === "tuple") {
              logger.throwArgumentError("filtering with tuples or arrays not supported", "contract." + param.name, value);
            } else if (Array.isArray(value)) {
              topics.push(value.map((value => encodeTopic(param, value))));
            } else {
              topics.push(encodeTopic(param, value));
            }
          }));
          while (topics.length && topics[topics.length - 1] === null) {
            topics.pop();
          }
          return topics;
        }
        encodeEventLog(eventFragment, values) {
          if (typeof eventFragment === "string") {
            eventFragment = this.getEvent(eventFragment);
          }
          const topics = [];
          const dataTypes = [];
          const dataValues = [];
          if (!eventFragment.anonymous) {
            topics.push(this.getEventTopic(eventFragment));
          }
          if (values.length !== eventFragment.inputs.length) {
            logger.throwArgumentError("event arguments/values mismatch", "values", values);
          }
          eventFragment.inputs.forEach(((param, index) => {
            const value = values[index];
            if (param.indexed) {
              if (param.type === "string") {
                topics.push((0, hash_1.id)(value));
              } else if (param.type === "bytes") {
                topics.push((0, keccak256_1.keccak256)(value));
              } else if (param.baseType === "tuple" || param.baseType === "array") {
                throw new Error("not implemented");
              } else {
                topics.push(this._abiCoder.encode([ param.type ], [ value ]));
              }
            } else {
              dataTypes.push(param);
              dataValues.push(value);
            }
          }));
          return {
            data: this._abiCoder.encode(dataTypes, dataValues),
            topics
          };
        }
        decodeEventLog(eventFragment, data, topics) {
          if (typeof eventFragment === "string") {
            eventFragment = this.getEvent(eventFragment);
          }
          if (topics != null && !eventFragment.anonymous) {
            let topicHash = this.getEventTopic(eventFragment);
            if (!(0, bytes_1.isHexString)(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {
              logger.throwError("fragment/topic mismatch", logger_1.Logger.errors.INVALID_ARGUMENT, {
                argument: "topics[0]",
                expected: topicHash,
                value: topics[0]
              });
            }
            topics = topics.slice(1);
          }
          let indexed = [];
          let nonIndexed = [];
          let dynamic = [];
          eventFragment.inputs.forEach(((param, index) => {
            if (param.indexed) {
              if (param.type === "string" || param.type === "bytes" || param.baseType === "tuple" || param.baseType === "array") {
                indexed.push(fragments_1.ParamType.fromObject({
                  type: "bytes32",
                  name: param.name
                }));
                dynamic.push(true);
              } else {
                indexed.push(param);
                dynamic.push(false);
              }
            } else {
              nonIndexed.push(param);
              dynamic.push(false);
            }
          }));
          let resultIndexed = topics != null ? this._abiCoder.decode(indexed, (0, bytes_1.concat)(topics)) : null;
          let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);
          let result = [];
          let nonIndexedIndex = 0, indexedIndex = 0;
          eventFragment.inputs.forEach(((param, index) => {
            if (param.indexed) {
              if (resultIndexed == null) {
                result[index] = new Indexed({
                  _isIndexed: true,
                  hash: null
                });
              } else if (dynamic[index]) {
                result[index] = new Indexed({
                  _isIndexed: true,
                  hash: resultIndexed[indexedIndex++]
                });
              } else {
                try {
                  result[index] = resultIndexed[indexedIndex++];
                } catch (error) {
                  result[index] = error;
                }
              }
            } else {
              try {
                result[index] = resultNonIndexed[nonIndexedIndex++];
              } catch (error) {
                result[index] = error;
              }
            }
            if (param.name && result[param.name] == null) {
              const value = result[index];
              if (value instanceof Error) {
                Object.defineProperty(result, param.name, {
                  enumerable: true,
                  get: () => {
                    throw wrapAccessError(`property ${JSON.stringify(param.name)}`, value);
                  }
                });
              } else {
                result[param.name] = value;
              }
            }
          }));
          for (let i = 0; i < result.length; i++) {
            const value = result[i];
            if (value instanceof Error) {
              Object.defineProperty(result, i, {
                enumerable: true,
                get: () => {
                  throw wrapAccessError(`index ${i}`, value);
                }
              });
            }
          }
          return Object.freeze(result);
        }
        parseTransaction(tx) {
          let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase());
          if (!fragment) {
            return null;
          }
          return new TransactionDescription({
            args: this._abiCoder.decode(fragment.inputs, "0x" + tx.data.substring(10)),
            functionFragment: fragment,
            name: fragment.name,
            signature: fragment.format(),
            sighash: this.getSighash(fragment),
            value: bignumber_1.BigNumber.from(tx.value || "0")
          });
        }
        parseLog(log) {
          let fragment = this.getEvent(log.topics[0]);
          if (!fragment || fragment.anonymous) {
            return null;
          }
          return new LogDescription({
            eventFragment: fragment,
            name: fragment.name,
            signature: fragment.format(),
            topic: this.getEventTopic(fragment),
            args: this.decodeEventLog(fragment, log.data, log.topics)
          });
        }
        parseError(data) {
          const hexData = (0, bytes_1.hexlify)(data);
          let fragment = this.getError(hexData.substring(0, 10).toLowerCase());
          if (!fragment) {
            return null;
          }
          return new ErrorDescription({
            args: this._abiCoder.decode(fragment.inputs, "0x" + hexData.substring(10)),
            errorFragment: fragment,
            name: fragment.name,
            signature: fragment.format(),
            sighash: this.getSighash(fragment)
          });
        }
        static isInterface(value) {
          return !!(value && value._isInterface);
        }
      }
      exports.Interface = Interface;
    },
    3280(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "abstract-provider/5.7.4";
    },
    103(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Provider = exports.TransactionOrderForkEvent = exports.TransactionForkEvent = exports.BlockForkEvent = exports.ForkEvent = void 0;
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(3280);
      const logger = new logger_1.Logger(_version_1.version);
      class ForkEvent extends properties_1.Description {
        static isForkEvent(value) {
          return !!(value && value._isForkEvent);
        }
      }
      exports.ForkEvent = ForkEvent;
      class BlockForkEvent extends ForkEvent {
        constructor(blockHash, expiry) {
          if (!(0, bytes_1.isHexString)(blockHash, 32)) {
            logger.throwArgumentError("invalid blockHash", "blockHash", blockHash);
          }
          super({
            _isForkEvent: true,
            _isBlockForkEvent: true,
            expiry: expiry || 0,
            blockHash
          });
        }
      }
      exports.BlockForkEvent = BlockForkEvent;
      class TransactionForkEvent extends ForkEvent {
        constructor(hash, expiry) {
          if (!(0, bytes_1.isHexString)(hash, 32)) {
            logger.throwArgumentError("invalid transaction hash", "hash", hash);
          }
          super({
            _isForkEvent: true,
            _isTransactionForkEvent: true,
            expiry: expiry || 0,
            hash
          });
        }
      }
      exports.TransactionForkEvent = TransactionForkEvent;
      class TransactionOrderForkEvent extends ForkEvent {
        constructor(beforeHash, afterHash, expiry) {
          if (!(0, bytes_1.isHexString)(beforeHash, 32)) {
            logger.throwArgumentError("invalid transaction hash", "beforeHash", beforeHash);
          }
          if (!(0, bytes_1.isHexString)(afterHash, 32)) {
            logger.throwArgumentError("invalid transaction hash", "afterHash", afterHash);
          }
          super({
            _isForkEvent: true,
            _isTransactionOrderForkEvent: true,
            expiry: expiry || 0,
            beforeHash,
            afterHash
          });
        }
      }
      exports.TransactionOrderForkEvent = TransactionOrderForkEvent;
      class Provider {
        async getFeeData() {
          const {block, gasPrice} = await (0, properties_1.resolveProperties)({
            block: this.getBlock("latest"),
            gasPrice: this.getGasPrice().catch((error => null))
          });
          let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;
          if (block && block.baseFeePerGas) {
            lastBaseFeePerGas = block.baseFeePerGas;
            maxPriorityFeePerGas = bignumber_1.BigNumber.from("1500000000");
            maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);
          }
          return {
            lastBaseFeePerGas,
            maxFeePerGas,
            maxPriorityFeePerGas,
            gasPrice
          };
        }
        addListener(eventName, listener) {
          return this.on(eventName, listener);
        }
        removeListener(eventName, listener) {
          return this.off(eventName, listener);
        }
        constructor() {
          logger.checkAbstract(new.target, Provider);
          (0, properties_1.defineReadOnly)(this, "_isProvider", true);
        }
        static isProvider(value) {
          return !!(value && value._isProvider);
        }
      }
      exports.Provider = Provider;
    },
    745(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "abstract-signer/5.7.3";
    },
    8788(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.VoidSigner = exports.Signer = void 0;
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(745);
      const logger = new logger_1.Logger(_version_1.version);
      const allowedTransactionKeys = [ "accessList", "ccipReadEnabled", "chainId", "customData", "data", "from", "gasLimit", "gasPrice", "maxFeePerGas", "maxPriorityFeePerGas", "nonce", "to", "type", "value" ];
      const forwardErrors = [ logger_1.Logger.errors.INSUFFICIENT_FUNDS, logger_1.Logger.errors.NONCE_EXPIRED, logger_1.Logger.errors.REPLACEMENT_UNDERPRICED ];
      class Signer {
        constructor() {
          logger.checkAbstract(new.target, Signer);
          (0, properties_1.defineReadOnly)(this, "_isSigner", true);
        }
        async getBalance(blockTag) {
          this._checkProvider("getBalance");
          return await this.provider.getBalance(this.getAddress(), blockTag);
        }
        async getTransactionCount(blockTag) {
          this._checkProvider("getTransactionCount");
          return await this.provider.getTransactionCount(this.getAddress(), blockTag);
        }
        async estimateGas(transaction) {
          this._checkProvider("estimateGas");
          const tx = await (0, properties_1.resolveProperties)(this.checkTransaction(transaction));
          return await this.provider.estimateGas(tx);
        }
        async call(transaction, blockTag) {
          this._checkProvider("call");
          const tx = await (0, properties_1.resolveProperties)(this.checkTransaction(transaction));
          return await this.provider.call(tx, blockTag);
        }
        async sendTransaction(transaction) {
          this._checkProvider("sendTransaction");
          const tx = await this.populateTransaction(transaction);
          const signedTx = await this.signTransaction(tx);
          return await this.provider.sendTransaction(signedTx);
        }
        async getChainId() {
          this._checkProvider("getChainId");
          const network = await this.provider.getNetwork();
          return network.chainId;
        }
        async getGasPrice() {
          this._checkProvider("getGasPrice");
          return await this.provider.getGasPrice();
        }
        async getFeeData() {
          this._checkProvider("getFeeData");
          return await this.provider.getFeeData();
        }
        async resolveName(name) {
          this._checkProvider("resolveName");
          return await this.provider.resolveName(name);
        }
        checkTransaction(transaction) {
          for (const key in transaction) {
            if (allowedTransactionKeys.indexOf(key) === -1) {
              logger.throwArgumentError("invalid transaction key: " + key, "transaction", transaction);
            }
          }
          const tx = (0, properties_1.shallowCopy)(transaction);
          if (tx.from == null) {
            tx.from = this.getAddress();
          } else {
            tx.from = Promise.all([ Promise.resolve(tx.from), this.getAddress() ]).then((result => {
              if (result[0].toLowerCase() !== result[1].toLowerCase()) {
                logger.throwArgumentError("from address mismatch", "transaction", transaction);
              }
              return result[0];
            }));
          }
          return tx;
        }
        async populateTransaction(transaction) {
          const tx = await (0, properties_1.resolveProperties)(this.checkTransaction(transaction));
          if (tx.to != null) {
            tx.to = Promise.resolve(tx.to).then((async to => {
              if (to == null) {
                return null;
              }
              const address = await this.resolveName(to);
              if (address == null) {
                logger.throwArgumentError("provided ENS name resolves to null", "tx.to", to);
              }
              return address;
            }));
            tx.to.catch((error => {}));
          }
          const hasEip1559 = tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null;
          if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {
            logger.throwArgumentError("eip-1559 transaction do not support gasPrice", "transaction", transaction);
          } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {
            logger.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas", "transaction", transaction);
          }
          if ((tx.type === 2 || tx.type == null) && tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null) {
            tx.type = 2;
          } else if (tx.type === 0 || tx.type === 1) {
            if (tx.gasPrice == null) {
              tx.gasPrice = this.getGasPrice();
            }
          } else {
            const feeData = await this.getFeeData();
            if (tx.type == null) {
              if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {
                tx.type = 2;
                if (tx.gasPrice != null) {
                  const gasPrice = tx.gasPrice;
                  delete tx.gasPrice;
                  tx.maxFeePerGas = gasPrice;
                  tx.maxPriorityFeePerGas = gasPrice;
                } else {
                  if (tx.maxFeePerGas == null) {
                    tx.maxFeePerGas = feeData.maxFeePerGas;
                  }
                  if (tx.maxPriorityFeePerGas == null) {
                    tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
                  }
                }
              } else if (feeData.gasPrice != null) {
                if (hasEip1559) {
                  logger.throwError("network does not support EIP-1559", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                    operation: "populateTransaction"
                  });
                }
                if (tx.gasPrice == null) {
                  tx.gasPrice = feeData.gasPrice;
                }
                tx.type = 0;
              } else {
                logger.throwError("failed to get consistent fee data", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                  operation: "signer.getFeeData"
                });
              }
            } else if (tx.type === 2) {
              if (tx.maxFeePerGas == null) {
                tx.maxFeePerGas = feeData.maxFeePerGas;
              }
              if (tx.maxPriorityFeePerGas == null) {
                tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
              }
            }
          }
          if (tx.nonce == null) {
            tx.nonce = this.getTransactionCount("pending");
          }
          if (tx.gasLimit == null) {
            tx.gasLimit = this.estimateGas(tx).catch((error => {
              if (forwardErrors.indexOf(error.code) >= 0) {
                throw error;
              }
              return logger.throwError("cannot estimate gas; transaction may fail or may require manual gas limit", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {
                error,
                tx
              });
            }));
          }
          if (tx.chainId == null) {
            tx.chainId = this.getChainId();
          } else {
            tx.chainId = Promise.all([ Promise.resolve(tx.chainId), this.getChainId() ]).then((results => {
              if (results[1] !== 0 && results[0] !== results[1]) {
                logger.throwArgumentError("chainId address mismatch", "transaction", transaction);
              }
              return results[0];
            }));
          }
          return await (0, properties_1.resolveProperties)(tx);
        }
        _checkProvider(operation) {
          if (!this.provider) {
            logger.throwError("missing provider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: operation || "_checkProvider"
            });
          }
        }
        static isSigner(value) {
          return !!(value && value._isSigner);
        }
      }
      exports.Signer = Signer;
      class VoidSigner extends Signer {
        constructor(address, provider) {
          super();
          (0, properties_1.defineReadOnly)(this, "address", address);
          (0, properties_1.defineReadOnly)(this, "provider", provider || null);
        }
        getAddress() {
          return Promise.resolve(this.address);
        }
        _fail(message, operation) {
          return Promise.resolve().then((() => {
            logger.throwError(message, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation
            });
          }));
        }
        signMessage(message) {
          return this._fail("VoidSigner cannot sign messages", "signMessage");
        }
        signTransaction(transaction) {
          return this._fail("VoidSigner cannot sign transactions", "signTransaction");
        }
        _signTypedData(domain, types, value) {
          return this._fail("VoidSigner cannot sign typed data", "signTypedData");
        }
        connect(provider) {
          return new VoidSigner(this.address, provider);
        }
      }
      exports.VoidSigner = VoidSigner;
    },
    2812(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "address/5.7.3";
    },
    171(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getAddress = getAddress;
      exports.isAddress = isAddress;
      exports.getIcapAddress = getIcapAddress;
      exports.getContractAddress = getContractAddress;
      exports.getCreate2Address = getCreate2Address;
      const bytes_1 = __webpack_require__(8380);
      const bignumber_1 = __webpack_require__(3804);
      const keccak256_1 = __webpack_require__(1136);
      const rlp_1 = __webpack_require__(589);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2812);
      const logger = new logger_1.Logger(_version_1.version);
      function getChecksumAddress(address) {
        if (!(0, bytes_1.isHexString)(address, 32)) {
          logger.throwArgumentError("invalid address", "address", address);
        }
        address = address.toLowerCase();
        const chars = address.substring(2).split("");
        const expanded = new Uint8Array(64);
        for (let i = 0; i < 64; i++) {
          expanded[i] = chars[i].charCodeAt(0);
        }
        const hashed = (0, bytes_1.arrayify)((0, keccak256_1.keccak256)(expanded));
        for (let i = 0; i < 64; i += 2) {
          if (hashed[i >> 1] >> 4 >= 8) {
            chars[i] = chars[i].toUpperCase();
          }
          if ((hashed[i >> 1] & 15) >= 8) {
            chars[i + 1] = chars[i + 1].toUpperCase();
          }
        }
        return "0x" + chars.join("");
      }
      const MAX_SAFE_INTEGER = 9007199254740991;
      function log10(x) {
        if (Math.log10) {
          return Math.log10(x);
        }
        return Math.log(x) / Math.LN10;
      }
      const ibanLookup = {};
      for (let i = 0; i < 10; i++) {
        ibanLookup[String(i)] = String(i);
      }
      for (let i = 0; i < 26; i++) {
        ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);
      }
      const safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));
      function ibanChecksum(address) {
        address = address.toUpperCase();
        address = address.substring(4) + address.substring(0, 2) + "00";
        let expanded = address.split("").map((c => ibanLookup[c])).join("");
        while (expanded.length >= safeDigits) {
          let block = expanded.substring(0, safeDigits);
          expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);
        }
        let checksum = String(98 - parseInt(expanded, 10) % 97);
        while (checksum.length < 2) {
          checksum = "0" + checksum;
        }
        return checksum;
      }
      function getAddress(address) {
        let result = null;
        if (typeof address !== "string") {
          logger.throwArgumentError("invalid address", "address", address);
        }
        if (address.match(/^(0x)?[0-9a-fA-F]{64}$/)) {
          if (address.substring(0, 2) !== "0x") {
            address = "0x" + address;
          }
          result = getChecksumAddress(address);
          if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {
            logger.throwArgumentError("bad address checksum", "address", address);
          }
        } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {
          if (address.substring(2, 4) !== ibanChecksum(address)) {
            logger.throwArgumentError("bad icap checksum", "address", address);
          }
          result = (0, bignumber_1._base36To16)(address.substring(4));
          while (result.length < 64) {
            result = "0" + result;
          }
          result = getChecksumAddress("0x" + result);
        } else {
          logger.throwArgumentError("invalid address", "address", address);
        }
        return result;
      }
      function isAddress(address) {
        try {
          getAddress(address);
          return true;
        } catch (error) {}
        return false;
      }
      function getIcapAddress(address) {
        let base36 = (0, bignumber_1._base16To36)(getAddress(address).substring(2)).toUpperCase();
        while (base36.length < 30) {
          base36 = "0" + base36;
        }
        return "XE" + ibanChecksum("XE00" + base36) + base36;
      }
      function getContractAddress(transaction) {
        let from = null;
        try {
          from = getAddress(transaction.from);
        } catch (error) {
          logger.throwArgumentError("missing from address", "transaction", transaction);
        }
        const nonce = (0, bytes_1.stripZeros)((0, bytes_1.arrayify)(bignumber_1.BigNumber.from(transaction.nonce).toHexString()));
        return getAddress((0, keccak256_1.keccak256)((0, rlp_1.encode)([ from, nonce ])));
      }
      function getCreate2Address(from, salt, initCodeHash) {
        if ((0, bytes_1.hexDataLength)(salt) !== 32) {
          logger.throwArgumentError("salt must be 32 bytes", "salt", salt);
        }
        if ((0, bytes_1.hexDataLength)(initCodeHash) !== 32) {
          logger.throwArgumentError("initCodeHash must be 32 bytes", "initCodeHash", initCodeHash);
        }
        return getAddress((0, keccak256_1.keccak256)((0, bytes_1.concat)([ "0xff", getAddress(from), salt, initCodeHash ])));
      }
    },
    1892(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.encode = exports.decode = void 0;
      const bytes_1 = __webpack_require__(8380);
      function decode(textData) {
        textData = atob(textData);
        const data = [];
        for (let i = 0; i < textData.length; i++) {
          data.push(textData.charCodeAt(i));
        }
        return (0, bytes_1.arrayify)(data);
      }
      exports.decode = decode;
      function encode(data) {
        data = (0, bytes_1.arrayify)(data);
        let textData = "";
        for (let i = 0; i < data.length; i++) {
          textData += String.fromCharCode(data[i]);
        }
        return btoa(textData);
      }
      exports.encode = encode;
    },
    8886(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.encode = exports.decode = void 0;
      var base64_1 = __webpack_require__(1892);
      Object.defineProperty(exports, "decode", {
        enumerable: true,
        get: function() {
          return base64_1.decode;
        }
      });
      Object.defineProperty(exports, "encode", {
        enumerable: true,
        get: function() {
          return base64_1.encode;
        }
      });
    },
    4160(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Base58 = exports.Base32 = exports.BaseX = void 0;
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      class BaseX {
        constructor(alphabet) {
          (0, properties_1.defineReadOnly)(this, "alphabet", alphabet);
          (0, properties_1.defineReadOnly)(this, "base", alphabet.length);
          (0, properties_1.defineReadOnly)(this, "_alphabetMap", {});
          (0, properties_1.defineReadOnly)(this, "_leader", alphabet.charAt(0));
          for (let i = 0; i < alphabet.length; i++) {
            this._alphabetMap[alphabet.charAt(i)] = i;
          }
        }
        encode(value) {
          let source = (0, bytes_1.arrayify)(value);
          if (source.length === 0) {
            return "";
          }
          let digits = [ 0 ];
          for (let i = 0; i < source.length; ++i) {
            let carry = source[i];
            for (let j = 0; j < digits.length; ++j) {
              carry += digits[j] << 8;
              digits[j] = carry % this.base;
              carry = carry / this.base | 0;
            }
            while (carry > 0) {
              digits.push(carry % this.base);
              carry = carry / this.base | 0;
            }
          }
          let string = "";
          for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {
            string += this._leader;
          }
          for (let q = digits.length - 1; q >= 0; --q) {
            string += this.alphabet[digits[q]];
          }
          return string;
        }
        decode(value) {
          if (typeof value !== "string") {
            throw new TypeError("Expected String");
          }
          let bytes = [];
          if (value.length === 0) {
            return new Uint8Array(bytes);
          }
          bytes.push(0);
          for (let i = 0; i < value.length; i++) {
            let byte = this._alphabetMap[value[i]];
            if (byte === undefined) {
              throw new Error("Non-base" + this.base + " character");
            }
            let carry = byte;
            for (let j = 0; j < bytes.length; ++j) {
              carry += bytes[j] * this.base;
              bytes[j] = carry & 255;
              carry >>= 8;
            }
            while (carry > 0) {
              bytes.push(carry & 255);
              carry >>= 8;
            }
          }
          for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {
            bytes.push(0);
          }
          return (0, bytes_1.arrayify)(new Uint8Array(bytes.reverse()));
        }
      }
      exports.BaseX = BaseX;
      const Base32 = new BaseX("abcdefghijklmnopqrstuvwxyz234567");
      exports.Base32 = Base32;
      const Base58 = new BaseX("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
      exports.Base58 = Base58;
    },
    3377(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "bignumber/5.7.1";
    },
    1079(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.BigNumber = void 0;
      exports.isBigNumberish = isBigNumberish;
      exports._base36To16 = _base36To16;
      exports._base16To36 = _base16To36;
      const bn_js_1 = __importDefault(__webpack_require__(9404));
      var BN = bn_js_1.default.BN;
      const bytes_1 = __webpack_require__(8380);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(3377);
      const logger = new logger_1.Logger(_version_1.version);
      const _constructorGuard = {};
      const MAX_SAFE = 9007199254740991;
      function isBigNumberish(value) {
        return value != null && (BigNumber.isBigNumber(value) || typeof value === "number" && value % 1 === 0 || typeof value === "string" && !!value.match(/^-?[0-9]+$/) || (0, 
        bytes_1.isHexString)(value) || typeof value === "bigint" || (0, bytes_1.isBytes)(value));
      }
      let _warnedToStringRadix = false;
      class BigNumber {
        constructor(constructorGuard, hex) {
          if (constructorGuard !== _constructorGuard) {
            logger.throwError("cannot call constructor directly; use BigNumber.from", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "new (BigNumber)"
            });
          }
          this._hex = hex;
          this._isBigNumber = true;
          Object.freeze(this);
        }
        fromTwos(value) {
          return toBigNumber(toBN(this).fromTwos(value));
        }
        toTwos(value) {
          return toBigNumber(toBN(this).toTwos(value));
        }
        abs() {
          if (this._hex[0] === "-") {
            return BigNumber.from(this._hex.substring(1));
          }
          return this;
        }
        add(other) {
          return toBigNumber(toBN(this).add(toBN(other)));
        }
        sub(other) {
          return toBigNumber(toBN(this).sub(toBN(other)));
        }
        div(other) {
          const o = BigNumber.from(other);
          if (o.isZero()) {
            throwFault("division-by-zero", "div");
          }
          return toBigNumber(toBN(this).div(toBN(other)));
        }
        mul(other) {
          return toBigNumber(toBN(this).mul(toBN(other)));
        }
        mod(other) {
          const value = toBN(other);
          if (value.isNeg()) {
            throwFault("division-by-zero", "mod");
          }
          return toBigNumber(toBN(this).umod(value));
        }
        pow(other) {
          const value = toBN(other);
          if (value.isNeg()) {
            throwFault("negative-power", "pow");
          }
          return toBigNumber(toBN(this).pow(value));
        }
        and(other) {
          const value = toBN(other);
          if (this.isNegative() || value.isNeg()) {
            throwFault("unbound-bitwise-result", "and");
          }
          return toBigNumber(toBN(this).and(value));
        }
        or(other) {
          const value = toBN(other);
          if (this.isNegative() || value.isNeg()) {
            throwFault("unbound-bitwise-result", "or");
          }
          return toBigNumber(toBN(this).or(value));
        }
        xor(other) {
          const value = toBN(other);
          if (this.isNegative() || value.isNeg()) {
            throwFault("unbound-bitwise-result", "xor");
          }
          return toBigNumber(toBN(this).xor(value));
        }
        mask(value) {
          if (this.isNegative() || value < 0) {
            throwFault("negative-width", "mask");
          }
          return toBigNumber(toBN(this).maskn(value));
        }
        shl(value) {
          if (this.isNegative() || value < 0) {
            throwFault("negative-width", "shl");
          }
          return toBigNumber(toBN(this).shln(value));
        }
        shr(value) {
          if (this.isNegative() || value < 0) {
            throwFault("negative-width", "shr");
          }
          return toBigNumber(toBN(this).shrn(value));
        }
        eq(other) {
          return toBN(this).eq(toBN(other));
        }
        lt(other) {
          return toBN(this).lt(toBN(other));
        }
        lte(other) {
          return toBN(this).lte(toBN(other));
        }
        gt(other) {
          return toBN(this).gt(toBN(other));
        }
        gte(other) {
          return toBN(this).gte(toBN(other));
        }
        isNegative() {
          return this._hex[0] === "-";
        }
        isZero() {
          return toBN(this).isZero();
        }
        toNumber() {
          try {
            return toBN(this).toNumber();
          } catch (error) {
            throwFault("overflow", "toNumber", this.toString());
          }
          return null;
        }
        toBigInt() {
          try {
            return BigInt(this.toString());
          } catch (e) {}
          return logger.throwError("this platform does not support BigInt", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            value: this.toString()
          });
        }
        toString() {
          if (arguments.length > 0) {
            if (arguments[0] === 10) {
              if (!_warnedToStringRadix) {
                _warnedToStringRadix = true;
                logger.warn("BigNumber.toString does not accept any parameters; base-10 is assumed");
              }
            } else if (arguments[0] === 16) {
              logger.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()", logger_1.Logger.errors.UNEXPECTED_ARGUMENT, {});
            } else {
              logger.throwError("BigNumber.toString does not accept parameters", logger_1.Logger.errors.UNEXPECTED_ARGUMENT, {});
            }
          }
          return toBN(this).toString(10);
        }
        toHexString() {
          return this._hex;
        }
        toJSON(key) {
          return {
            type: "BigNumber",
            hex: this.toHexString()
          };
        }
        static from(value) {
          if (value instanceof BigNumber) {
            return value;
          }
          if (typeof value === "string") {
            if (value.match(/^-?0x[0-9a-f]+$/i)) {
              return new BigNumber(_constructorGuard, toHex(value));
            }
            if (value.match(/^-?[0-9]+$/)) {
              return new BigNumber(_constructorGuard, toHex(new BN(value)));
            }
            return logger.throwArgumentError("invalid BigNumber string", "value", value);
          }
          if (typeof value === "number") {
            if (value % 1) {
              throwFault("underflow", "BigNumber.from", value);
            }
            if (value >= MAX_SAFE || value <= -MAX_SAFE) {
              throwFault("overflow", "BigNumber.from", value);
            }
            return BigNumber.from(String(value));
          }
          const anyValue = value;
          if (typeof anyValue === "bigint") {
            return BigNumber.from(anyValue.toString());
          }
          if ((0, bytes_1.isBytes)(anyValue)) {
            return BigNumber.from((0, bytes_1.hexlify)(anyValue));
          }
          if (anyValue) {
            if (anyValue.toHexString) {
              const hex = anyValue.toHexString();
              if (typeof hex === "string") {
                return BigNumber.from(hex);
              }
            } else {
              let hex = anyValue._hex;
              if (hex == null && anyValue.type === "BigNumber") {
                hex = anyValue.hex;
              }
              if (typeof hex === "string") {
                if ((0, bytes_1.isHexString)(hex) || hex[0] === "-" && (0, bytes_1.isHexString)(hex.substring(1))) {
                  return BigNumber.from(hex);
                }
              }
            }
          }
          return logger.throwArgumentError("invalid BigNumber value", "value", value);
        }
        static isBigNumber(value) {
          return !!(value && value._isBigNumber);
        }
      }
      exports.BigNumber = BigNumber;
      function toHex(value) {
        if (typeof value !== "string") {
          return toHex(value.toString(16));
        }
        if (value[0] === "-") {
          value = value.substring(1);
          if (value[0] === "-") {
            logger.throwArgumentError("invalid hex", "value", value);
          }
          value = toHex(value);
          if (value === "0x00") {
            return value;
          }
          return "-" + value;
        }
        if (value.substring(0, 2) !== "0x") {
          value = "0x" + value;
        }
        if (value === "0x") {
          return "0x00";
        }
        if (value.length % 2) {
          value = "0x0" + value.substring(2);
        }
        while (value.length > 4 && value.substring(0, 4) === "0x00") {
          value = "0x" + value.substring(4);
        }
        return value;
      }
      function toBigNumber(value) {
        return BigNumber.from(toHex(value));
      }
      function toBN(value) {
        const hex = BigNumber.from(value).toHexString();
        if (hex[0] === "-") {
          return new BN("-" + hex.substring(3), 16);
        }
        return new BN(hex.substring(2), 16);
      }
      function throwFault(fault, operation, value) {
        const params = {
          fault,
          operation
        };
        if (value != null) {
          params.value = value;
        }
        return logger.throwError(fault, logger_1.Logger.errors.NUMERIC_FAULT, params);
      }
      function _base36To16(value) {
        return new BN(value, 36).toString(16);
      }
      function _base16To36(value) {
        return new BN(value, 16).toString(36);
      }
    },
    1719(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.FixedNumber = exports.FixedFormat = void 0;
      exports.formatFixed = formatFixed;
      exports.parseFixed = parseFixed;
      const bytes_1 = __webpack_require__(8380);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(3377);
      const logger = new logger_1.Logger(_version_1.version);
      const bignumber_1 = __webpack_require__(1079);
      const _constructorGuard = {};
      const Zero = bignumber_1.BigNumber.from(0);
      const NegativeOne = bignumber_1.BigNumber.from(-1);
      function throwFault(message, fault, operation, value) {
        const params = {
          fault,
          operation
        };
        if (value !== undefined) {
          params.value = value;
        }
        return logger.throwError(message, logger_1.Logger.errors.NUMERIC_FAULT, params);
      }
      let zeros = "0";
      while (zeros.length < 256) {
        zeros += zeros;
      }
      function getMultiplier(decimals) {
        if (typeof decimals !== "number") {
          try {
            decimals = bignumber_1.BigNumber.from(decimals).toNumber();
          } catch (e) {}
        }
        if (typeof decimals === "number" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {
          return "1" + zeros.substring(0, decimals);
        }
        return logger.throwArgumentError("invalid decimal size", "decimals", decimals);
      }
      function formatFixed(value, decimals) {
        if (decimals == null) {
          decimals = 0;
        }
        const multiplier = getMultiplier(decimals);
        value = bignumber_1.BigNumber.from(value);
        const negative = value.lt(Zero);
        if (negative) {
          value = value.mul(NegativeOne);
        }
        let fraction = value.mod(multiplier).toString();
        while (fraction.length < multiplier.length - 1) {
          fraction = "0" + fraction;
        }
        fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];
        const whole = value.div(multiplier).toString();
        if (multiplier.length === 1) {
          value = whole;
        } else {
          value = whole + "." + fraction;
        }
        if (negative) {
          value = "-" + value;
        }
        return value;
      }
      function parseFixed(value, decimals) {
        if (decimals == null) {
          decimals = 0;
        }
        const multiplier = getMultiplier(decimals);
        if (typeof value !== "string" || !value.match(/^-?[0-9.]+$/)) {
          logger.throwArgumentError("invalid decimal value", "value", value);
        }
        const negative = value.substring(0, 1) === "-";
        if (negative) {
          value = value.substring(1);
        }
        if (value === ".") {
          logger.throwArgumentError("missing value", "value", value);
        }
        const comps = value.split(".");
        if (comps.length > 2) {
          logger.throwArgumentError("too many decimal points", "value", value);
        }
        let whole = comps[0], fraction = comps[1];
        if (!whole) {
          whole = "0";
        }
        if (!fraction) {
          fraction = "0";
        }
        while (fraction[fraction.length - 1] === "0") {
          fraction = fraction.substring(0, fraction.length - 1);
        }
        if (fraction.length > multiplier.length - 1) {
          throwFault("fractional component exceeds decimals", "underflow", "parseFixed");
        }
        if (fraction === "") {
          fraction = "0";
        }
        while (fraction.length < multiplier.length - 1) {
          fraction += "0";
        }
        const wholeValue = bignumber_1.BigNumber.from(whole);
        const fractionValue = bignumber_1.BigNumber.from(fraction);
        let wei = wholeValue.mul(multiplier).add(fractionValue);
        if (negative) {
          wei = wei.mul(NegativeOne);
        }
        return wei;
      }
      class FixedFormat {
        constructor(constructorGuard, signed, width, decimals) {
          if (constructorGuard !== _constructorGuard) {
            logger.throwError("cannot use FixedFormat constructor; use FixedFormat.from", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "new FixedFormat"
            });
          }
          this.signed = signed;
          this.width = width;
          this.decimals = decimals;
          this.name = (signed ? "" : "u") + "fixed" + String(width) + "x" + String(decimals);
          this._multiplier = getMultiplier(decimals);
          Object.freeze(this);
        }
        static from(value) {
          if (value instanceof FixedFormat) {
            return value;
          }
          if (typeof value === "number") {
            value = `fixed128x${value}`;
          }
          let signed = true;
          let width = 128;
          let decimals = 18;
          if (typeof value === "string") {
            if (value === "fixed") {} else if (value === "ufixed") {
              signed = false;
            } else {
              const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);
              if (!match) {
                logger.throwArgumentError("invalid fixed format", "format", value);
              }
              signed = match[1] !== "u";
              width = parseInt(match[2]);
              decimals = parseInt(match[3]);
            }
          } else if (value) {
            const check = (key, type, defaultValue) => {
              if (value[key] == null) {
                return defaultValue;
              }
              if (typeof value[key] !== type) {
                logger.throwArgumentError("invalid fixed format (" + key + " not " + type + ")", "format." + key, value[key]);
              }
              return value[key];
            };
            signed = check("signed", "boolean", signed);
            width = check("width", "number", width);
            decimals = check("decimals", "number", decimals);
          }
          if (width % 8) {
            logger.throwArgumentError("invalid fixed format width (not byte aligned)", "format.width", width);
          }
          if (decimals > 80) {
            logger.throwArgumentError("invalid fixed format (decimals too large)", "format.decimals", decimals);
          }
          return new FixedFormat(_constructorGuard, signed, width, decimals);
        }
      }
      exports.FixedFormat = FixedFormat;
      class FixedNumber {
        constructor(constructorGuard, hex, value, format) {
          if (constructorGuard !== _constructorGuard) {
            logger.throwError("cannot use FixedNumber constructor; use FixedNumber.from", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "new FixedFormat"
            });
          }
          this.format = format;
          this._hex = hex;
          this._value = value;
          this._isFixedNumber = true;
          Object.freeze(this);
        }
        _checkFormat(other) {
          if (this.format.name !== other.format.name) {
            logger.throwArgumentError("incompatible format; use fixedNumber.toFormat", "other", other);
          }
        }
        addUnsafe(other) {
          this._checkFormat(other);
          const a = parseFixed(this._value, this.format.decimals);
          const b = parseFixed(other._value, other.format.decimals);
          return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);
        }
        subUnsafe(other) {
          this._checkFormat(other);
          const a = parseFixed(this._value, this.format.decimals);
          const b = parseFixed(other._value, other.format.decimals);
          return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);
        }
        mulUnsafe(other) {
          this._checkFormat(other);
          const a = parseFixed(this._value, this.format.decimals);
          const b = parseFixed(other._value, other.format.decimals);
          return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);
        }
        divUnsafe(other) {
          this._checkFormat(other);
          const a = parseFixed(this._value, this.format.decimals);
          const b = parseFixed(other._value, other.format.decimals);
          return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);
        }
        floor() {
          const comps = this.toString().split(".");
          if (comps.length === 1) {
            comps.push("0");
          }
          let result = FixedNumber.from(comps[0], this.format);
          const hasFraction = !comps[1].match(/^(0*)$/);
          if (this.isNegative() && hasFraction) {
            result = result.subUnsafe(ONE.toFormat(result.format));
          }
          return result;
        }
        ceiling() {
          const comps = this.toString().split(".");
          if (comps.length === 1) {
            comps.push("0");
          }
          let result = FixedNumber.from(comps[0], this.format);
          const hasFraction = !comps[1].match(/^(0*)$/);
          if (!this.isNegative() && hasFraction) {
            result = result.addUnsafe(ONE.toFormat(result.format));
          }
          return result;
        }
        round(decimals) {
          if (decimals == null) {
            decimals = 0;
          }
          const comps = this.toString().split(".");
          if (comps.length === 1) {
            comps.push("0");
          }
          if (decimals < 0 || decimals > 80 || decimals % 1) {
            logger.throwArgumentError("invalid decimal count", "decimals", decimals);
          }
          if (comps[1].length <= decimals) {
            return this;
          }
          const factor = FixedNumber.from("1" + zeros.substring(0, decimals), this.format);
          const bump = BUMP.toFormat(this.format);
          return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);
        }
        isZero() {
          return this._value === "0.0" || this._value === "0";
        }
        isNegative() {
          return this._value[0] === "-";
        }
        toString() {
          return this._value;
        }
        toHexString(width) {
          if (width == null) {
            return this._hex;
          }
          if (width % 8) {
            logger.throwArgumentError("invalid byte width", "width", width);
          }
          const hex = bignumber_1.BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();
          return (0, bytes_1.hexZeroPad)(hex, width / 8);
        }
        toUnsafeFloat() {
          return parseFloat(this.toString());
        }
        toFormat(format) {
          return FixedNumber.fromString(this._value, format);
        }
        static fromValue(value, decimals, format) {
          if (format == null && decimals != null && !(0, bignumber_1.isBigNumberish)(decimals)) {
            format = decimals;
            decimals = null;
          }
          if (decimals == null) {
            decimals = 0;
          }
          if (format == null) {
            format = "fixed";
          }
          return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));
        }
        static fromString(value, format) {
          if (format == null) {
            format = "fixed";
          }
          const fixedFormat = FixedFormat.from(format);
          const numeric = parseFixed(value, fixedFormat.decimals);
          if (!fixedFormat.signed && numeric.lt(Zero)) {
            throwFault("unsigned value cannot be negative", "overflow", "value", value);
          }
          let hex = null;
          if (fixedFormat.signed) {
            hex = numeric.toTwos(fixedFormat.width).toHexString();
          } else {
            hex = numeric.toHexString();
            hex = (0, bytes_1.hexZeroPad)(hex, fixedFormat.width / 8);
          }
          const decimal = formatFixed(numeric, fixedFormat.decimals);
          return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);
        }
        static fromBytes(value, format) {
          if (format == null) {
            format = "fixed";
          }
          const fixedFormat = FixedFormat.from(format);
          if ((0, bytes_1.arrayify)(value).length > fixedFormat.width / 8) {
            throw new Error("overflow");
          }
          let numeric = bignumber_1.BigNumber.from(value);
          if (fixedFormat.signed) {
            numeric = numeric.fromTwos(fixedFormat.width);
          }
          const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();
          const decimal = formatFixed(numeric, fixedFormat.decimals);
          return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);
        }
        static from(value, format) {
          if (typeof value === "string") {
            return FixedNumber.fromString(value, format);
          }
          if ((0, bytes_1.isBytes)(value)) {
            return FixedNumber.fromBytes(value, format);
          }
          try {
            return FixedNumber.fromValue(value, 0, format);
          } catch (error) {
            if (error.code !== logger_1.Logger.errors.INVALID_ARGUMENT) {
              throw error;
            }
          }
          return logger.throwArgumentError("invalid FixedNumber value", "value", value);
        }
        static isFixedNumber(value) {
          return !!(value && value._isFixedNumber);
        }
      }
      exports.FixedNumber = FixedNumber;
      const ONE = FixedNumber.from(1);
      const BUMP = FixedNumber.from("0.5");
    },
    3804(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports._base36To16 = exports._base16To36 = exports.parseFixed = exports.FixedNumber = exports.FixedFormat = exports.formatFixed = exports.BigNumber = void 0;
      var bignumber_1 = __webpack_require__(1079);
      Object.defineProperty(exports, "BigNumber", {
        enumerable: true,
        get: function() {
          return bignumber_1.BigNumber;
        }
      });
      var fixednumber_1 = __webpack_require__(1719);
      Object.defineProperty(exports, "formatFixed", {
        enumerable: true,
        get: function() {
          return fixednumber_1.formatFixed;
        }
      });
      Object.defineProperty(exports, "FixedFormat", {
        enumerable: true,
        get: function() {
          return fixednumber_1.FixedFormat;
        }
      });
      Object.defineProperty(exports, "FixedNumber", {
        enumerable: true,
        get: function() {
          return fixednumber_1.FixedNumber;
        }
      });
      Object.defineProperty(exports, "parseFixed", {
        enumerable: true,
        get: function() {
          return fixednumber_1.parseFixed;
        }
      });
      var bignumber_2 = __webpack_require__(1079);
      Object.defineProperty(exports, "_base16To36", {
        enumerable: true,
        get: function() {
          return bignumber_2._base16To36;
        }
      });
      Object.defineProperty(exports, "_base36To16", {
        enumerable: true,
        get: function() {
          return bignumber_2._base36To16;
        }
      });
    },
    3041(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "bytes/5.8.2";
    },
    8380(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.joinSignature = exports.splitSignature = exports.hexZeroPad = exports.hexStripZeros = exports.hexValue = exports.hexConcat = exports.hexDataSlice = exports.hexDataLength = exports.hexlify = exports.isHexString = exports.zeroPad = exports.stripZeros = exports.concat = exports.arrayify = exports.isBytes = exports.isBytesLike = void 0;
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(3041);
      const logger = new logger_1.Logger(_version_1.version);
      const SIG_WIRE_HEADER_SIZE = 12;
      function isHexable(value) {
        return !!value.toHexString;
      }
      function addSlice(array) {
        if (array.slice) {
          return array;
        }
        array.slice = function() {
          const args = Array.prototype.slice.call(arguments);
          return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));
        };
        return array;
      }
      function isBytesLike(value) {
        return isHexString(value) && !(value.length % 2) || isBytes(value);
      }
      exports.isBytesLike = isBytesLike;
      function isInteger(value) {
        return typeof value === "number" && value == value && value % 1 === 0;
      }
      function isBytes(value) {
        if (value == null) {
          return false;
        }
        if (value.constructor === Uint8Array) {
          return true;
        }
        if (typeof value === "string") {
          return false;
        }
        if (!isInteger(value.length) || value.length < 0) {
          return false;
        }
        for (let i = 0; i < value.length; i++) {
          const v = value[i];
          if (!isInteger(v) || v < 0 || v >= 256) {
            return false;
          }
        }
        return true;
      }
      exports.isBytes = isBytes;
      function arrayify(value, options) {
        if (!options) {
          options = {};
        }
        if (typeof value === "number") {
          logger.checkSafeUint53(value, "invalid arrayify value");
          const result = [];
          while (value) {
            result.unshift(value & 255);
            value = parseInt(String(value / 256));
          }
          if (result.length === 0) {
            result.push(0);
          }
          return addSlice(new Uint8Array(result));
        }
        if (options.allowMissingPrefix && typeof value === "string" && value.substring(0, 2) !== "0x") {
          value = "0x" + value;
        }
        if (isHexable(value)) {
          value = value.toHexString();
        }
        if (isHexString(value)) {
          let hex = value.substring(2);
          if (hex.length % 2) {
            if (options.hexPad === "left") {
              hex = "0" + hex;
            } else if (options.hexPad === "right") {
              hex += "0";
            } else {
              logger.throwArgumentError("hex data is odd-length", "value", value);
            }
          }
          const result = [];
          for (let i = 0; i < hex.length; i += 2) {
            result.push(parseInt(hex.substring(i, i + 2), 16));
          }
          return addSlice(new Uint8Array(result));
        }
        if (isBytes(value)) {
          return addSlice(new Uint8Array(value));
        }
        return logger.throwArgumentError("invalid arrayify value", "value", value);
      }
      exports.arrayify = arrayify;
      function concat(items) {
        const objects = items.map((item => arrayify(item)));
        const length = objects.reduce(((accum, item) => accum + item.length), 0);
        const result = new Uint8Array(length);
        objects.reduce(((offset, object) => {
          result.set(object, offset);
          return offset + object.length;
        }), 0);
        return addSlice(result);
      }
      exports.concat = concat;
      function stripZeros(value) {
        let result = arrayify(value);
        if (result.length === 0) {
          return result;
        }
        let start = 0;
        while (start < result.length && result[start] === 0) {
          start++;
        }
        if (start) {
          result = result.slice(start);
        }
        return result;
      }
      exports.stripZeros = stripZeros;
      function zeroPad(value, length) {
        value = arrayify(value);
        if (value.length > length) {
          logger.throwArgumentError("value out of range", "value", arguments[0]);
        }
        const result = new Uint8Array(length);
        result.set(value, length - value.length);
        return addSlice(result);
      }
      exports.zeroPad = zeroPad;
      function isHexString(value, length) {
        if (typeof value !== "string" || !value.match(/^0x[0-9A-Fa-f]*$/)) {
          return false;
        }
        if (length && value.length !== 2 + 2 * length) {
          return false;
        }
        return true;
      }
      exports.isHexString = isHexString;
      const HexCharacters = "0123456789abcdef";
      function hexlify(value, options) {
        if (!options) {
          options = {};
        }
        if (typeof value === "number") {
          logger.checkSafeUint53(value, "invalid hexlify value");
          let hex = "";
          while (value) {
            hex = HexCharacters[value & 15] + hex;
            value = Math.floor(value / 16);
          }
          if (hex.length) {
            if (hex.length % 2) {
              hex = "0" + hex;
            }
            return "0x" + hex;
          }
          return "0x00";
        }
        if (typeof value === "bigint") {
          value = value.toString(16);
          if (value.length % 2) {
            return "0x0" + value;
          }
          return "0x" + value;
        }
        if (options.allowMissingPrefix && typeof value === "string" && value.substring(0, 2) !== "0x") {
          value = "0x" + value;
        }
        if (isHexable(value)) {
          return value.toHexString();
        }
        if (isHexString(value)) {
          if (value.length % 2) {
            if (options.hexPad === "left") {
              value = "0x0" + value.substring(2);
            } else if (options.hexPad === "right") {
              value += "0";
            } else {
              logger.throwArgumentError("hex data is odd-length", "value", value);
            }
          }
          return value.toLowerCase();
        }
        if (isBytes(value)) {
          let result = "0x";
          for (let i = 0; i < value.length; i++) {
            let v = value[i];
            result += HexCharacters[(v & 240) >> 4] + HexCharacters[v & 15];
          }
          return result;
        }
        return logger.throwArgumentError("invalid hexlify value", "value", value);
      }
      exports.hexlify = hexlify;
      function hexDataLength(data) {
        if (typeof data !== "string") {
          data = hexlify(data);
        } else if (!isHexString(data) || data.length % 2) {
          return null;
        }
        return (data.length - 2) / 2;
      }
      exports.hexDataLength = hexDataLength;
      function hexDataSlice(data, offset, endOffset) {
        if (typeof data !== "string") {
          data = hexlify(data);
        } else if (!isHexString(data) || data.length % 2) {
          logger.throwArgumentError("invalid hexData", "value", data);
        }
        offset = 2 + 2 * offset;
        if (endOffset != null) {
          return "0x" + data.substring(offset, 2 + 2 * endOffset);
        }
        return "0x" + data.substring(offset);
      }
      exports.hexDataSlice = hexDataSlice;
      function hexConcat(items) {
        let result = "0x";
        items.forEach((item => {
          result += hexlify(item).substring(2);
        }));
        return result;
      }
      exports.hexConcat = hexConcat;
      function hexValue(value) {
        const trimmed = hexStripZeros(hexlify(value, {
          hexPad: "left"
        }));
        if (trimmed === "0x") {
          return "0x0";
        }
        return trimmed;
      }
      exports.hexValue = hexValue;
      function hexStripZeros(value) {
        if (typeof value !== "string") {
          value = hexlify(value);
        }
        if (!isHexString(value)) {
          logger.throwArgumentError("invalid hex string", "value", value);
        }
        value = value.substring(2);
        let offset = 0;
        while (offset < value.length && value[offset] === "0") {
          offset++;
        }
        return "0x" + value.substring(offset);
      }
      exports.hexStripZeros = hexStripZeros;
      function hexZeroPad(value, length) {
        if (typeof value !== "string") {
          value = hexlify(value);
        } else if (!isHexString(value)) {
          logger.throwArgumentError("invalid hex string", "value", value);
        }
        if (value.length > 2 * length + 2) {
          logger.throwArgumentError("value out of range", "value", arguments[1]);
        }
        while (value.length < 2 * length + 2) {
          value = "0x0" + value.substring(2);
        }
        return value;
      }
      exports.hexZeroPad = hexZeroPad;
      function splitSignature(signature) {
        const result = {
          signature: "",
          publicKey: ""
        };
        if (isBytesLike(signature)) {
          const bytes = arrayify(signature);
          if (bytes.length < SIG_WIRE_HEADER_SIZE) {
            throw new Error("splitSignature: blob too small to contain wire header");
          }
          const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
          const pubkeySize = view.getUint32(4, true);
          const sigSize = view.getUint32(8, true);
          const expectedLen = SIG_WIRE_HEADER_SIZE + pubkeySize + sigSize;
          if (bytes.length !== expectedLen) {
            throw new Error(`splitSignature: blob length ${bytes.length} does not match header (expected ${expectedLen})`);
          }
          result.publicKey = hexlify(bytes.slice(SIG_WIRE_HEADER_SIZE, SIG_WIRE_HEADER_SIZE + pubkeySize));
          result.signature = hexlify(bytes.slice(SIG_WIRE_HEADER_SIZE + pubkeySize));
        } else {
          result.publicKey = signature.publicKey;
          result.signature = signature.signature;
        }
        return result;
      }
      exports.splitSignature = splitSignature;
      function joinSignature(signature, sigType = 258) {
        const sig = splitSignature(signature);
        const pubkeyBytes = arrayify(sig.publicKey);
        const sigBytes = arrayify(sig.signature);
        const header = new Uint8Array(SIG_WIRE_HEADER_SIZE);
        const view = new DataView(header.buffer);
        view.setUint32(0, sigType, true);
        view.setUint32(4, pubkeyBytes.length, true);
        view.setUint32(8, sigBytes.length, true);
        return hexlify(concat([ header, pubkeyBytes, sigBytes ]));
      }
      exports.joinSignature = joinSignature;
    },
    4426(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.AddressZero = void 0;
      exports.AddressZero = "0x0000000000000000000000000000000000000000000000000000000000000000";
    },
    2396(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.MaxInt256 = exports.MinInt256 = exports.MaxUint256 = exports.WeiPerEther = exports.Two = exports.One = exports.Zero = exports.NegativeOne = void 0;
      const bignumber_1 = __webpack_require__(3804);
      const NegativeOne = bignumber_1.BigNumber.from(-1);
      exports.NegativeOne = NegativeOne;
      const Zero = bignumber_1.BigNumber.from(0);
      exports.Zero = Zero;
      const One = bignumber_1.BigNumber.from(1);
      exports.One = One;
      const Two = bignumber_1.BigNumber.from(2);
      exports.Two = Two;
      const WeiPerEther = bignumber_1.BigNumber.from("1000000000000000000");
      exports.WeiPerEther = WeiPerEther;
      const MaxUint256 = bignumber_1.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
      exports.MaxUint256 = MaxUint256;
      const MinInt256 = bignumber_1.BigNumber.from("-0x8000000000000000000000000000000000000000000000000000000000000000");
      exports.MinInt256 = MinInt256;
      const MaxInt256 = bignumber_1.BigNumber.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
      exports.MaxInt256 = MaxInt256;
    },
    3652(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.HashZero = void 0;
      exports.HashZero = "0x0000000000000000000000000000000000000000000000000000000000000000";
    },
    846(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.EtherSymbol = exports.HashZero = exports.MaxInt256 = exports.MinInt256 = exports.MaxUint256 = exports.WeiPerEther = exports.Two = exports.One = exports.Zero = exports.NegativeOne = exports.AddressZero = void 0;
      var addresses_1 = __webpack_require__(4426);
      Object.defineProperty(exports, "AddressZero", {
        enumerable: true,
        get: function() {
          return addresses_1.AddressZero;
        }
      });
      var bignumbers_1 = __webpack_require__(2396);
      Object.defineProperty(exports, "NegativeOne", {
        enumerable: true,
        get: function() {
          return bignumbers_1.NegativeOne;
        }
      });
      Object.defineProperty(exports, "Zero", {
        enumerable: true,
        get: function() {
          return bignumbers_1.Zero;
        }
      });
      Object.defineProperty(exports, "One", {
        enumerable: true,
        get: function() {
          return bignumbers_1.One;
        }
      });
      Object.defineProperty(exports, "Two", {
        enumerable: true,
        get: function() {
          return bignumbers_1.Two;
        }
      });
      Object.defineProperty(exports, "WeiPerEther", {
        enumerable: true,
        get: function() {
          return bignumbers_1.WeiPerEther;
        }
      });
      Object.defineProperty(exports, "MaxUint256", {
        enumerable: true,
        get: function() {
          return bignumbers_1.MaxUint256;
        }
      });
      Object.defineProperty(exports, "MinInt256", {
        enumerable: true,
        get: function() {
          return bignumbers_1.MinInt256;
        }
      });
      Object.defineProperty(exports, "MaxInt256", {
        enumerable: true,
        get: function() {
          return bignumbers_1.MaxInt256;
        }
      });
      var hashes_1 = __webpack_require__(3652);
      Object.defineProperty(exports, "HashZero", {
        enumerable: true,
        get: function() {
          return hashes_1.HashZero;
        }
      });
      var strings_1 = __webpack_require__(8664);
      Object.defineProperty(exports, "EtherSymbol", {
        enumerable: true,
        get: function() {
          return strings_1.EtherSymbol;
        }
      });
    },
    8664(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.EtherSymbol = void 0;
      exports.EtherSymbol = "Ξ";
    },
    7261(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "contracts/5.7.3";
    },
    3008(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.ContractFactory = exports.Contract = exports.BaseContract = void 0;
      const abi_1 = __webpack_require__(7989);
      const abstract_provider_1 = __webpack_require__(103);
      const abstract_signer_1 = __webpack_require__(8788);
      const address_1 = __webpack_require__(171);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const transactions_1 = __webpack_require__(3776);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(7261);
      const logger = new logger_1.Logger(_version_1.version);
      const allowedTransactionKeys = {
        chainId: true,
        data: true,
        from: true,
        gasLimit: true,
        gasPrice: true,
        nonce: true,
        to: true,
        value: true,
        type: true,
        accessList: true,
        maxFeePerGas: true,
        maxPriorityFeePerGas: true,
        customData: true,
        ccipReadEnabled: true
      };
      async function resolveName(resolver, nameOrPromise) {
        const name = await nameOrPromise;
        if (typeof name !== "string") {
          logger.throwArgumentError("invalid address or ENS name", "name", name);
        }
        try {
          return (0, address_1.getAddress)(name);
        } catch (error) {}
        if (!resolver) {
          logger.throwError("a provider or signer is needed to resolve ENS names", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "resolveName"
          });
        }
        const address = await resolver.resolveName(name);
        if (address == null) {
          logger.throwArgumentError("resolver or addr is not configured for ENS name", "name", name);
        }
        return address;
      }
      async function resolveAddresses(resolver, value, paramType) {
        if (Array.isArray(paramType)) {
          return await Promise.all(paramType.map(((paramType, index) => resolveAddresses(resolver, Array.isArray(value) ? value[index] : value[paramType.name], paramType))));
        }
        if (paramType.type === "address") {
          return await resolveName(resolver, value);
        }
        if (paramType.type === "tuple") {
          return await resolveAddresses(resolver, value, paramType.components);
        }
        if (paramType.baseType === "array") {
          if (!Array.isArray(value)) {
            return Promise.reject(logger.makeError("invalid value for array", logger_1.Logger.errors.INVALID_ARGUMENT, {
              argument: "value",
              value
            }));
          }
          return await Promise.all(value.map((v => resolveAddresses(resolver, v, paramType.arrayChildren))));
        }
        return value;
      }
      async function populateTransaction(contract, fragment, args) {
        let overrides = {};
        if (args.length === fragment.inputs.length + 1 && typeof args[args.length - 1] === "object") {
          overrides = (0, properties_1.shallowCopy)(args.pop());
        }
        logger.checkArgumentCount(args.length, fragment.inputs.length, "passed to contract");
        if (contract.signer) {
          if (overrides.from) {
            overrides.from = (0, properties_1.resolveProperties)({
              override: resolveName(contract.signer, overrides.from),
              signer: contract.signer.getAddress()
            }).then((async check => {
              if ((0, address_1.getAddress)(check.signer) !== check.override) {
                logger.throwError("Contract with a Signer cannot override from", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                  operation: "overrides.from"
                });
              }
              return check.override;
            }));
          } else {
            overrides.from = contract.signer.getAddress();
          }
        } else if (overrides.from) {
          overrides.from = resolveName(contract.provider, overrides.from);
        }
        const resolved = await (0, properties_1.resolveProperties)({
          args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),
          address: contract.resolvedAddress,
          overrides: (0, properties_1.resolveProperties)(overrides) || {}
        });
        const data = contract.interface.encodeFunctionData(fragment, resolved.args);
        const tx = {
          data,
          to: resolved.address
        };
        const ro = resolved.overrides;
        if (ro.nonce != null) {
          tx.nonce = bignumber_1.BigNumber.from(ro.nonce).toNumber();
        }
        if (ro.gasLimit != null) {
          tx.gasLimit = bignumber_1.BigNumber.from(ro.gasLimit);
        }
        if (ro.gasPrice != null) {
          tx.gasPrice = bignumber_1.BigNumber.from(ro.gasPrice);
        }
        if (ro.maxFeePerGas != null) {
          tx.maxFeePerGas = bignumber_1.BigNumber.from(ro.maxFeePerGas);
        }
        if (ro.maxPriorityFeePerGas != null) {
          tx.maxPriorityFeePerGas = bignumber_1.BigNumber.from(ro.maxPriorityFeePerGas);
        }
        if (ro.from != null) {
          tx.from = ro.from;
        }
        if (ro.type != null) {
          tx.type = ro.type;
        }
        if (ro.accessList != null) {
          tx.accessList = (0, transactions_1.accessListify)(ro.accessList);
        }
        if (tx.gasLimit == null && fragment.gas != null) {
          let intrinsic = 21e3;
          const bytes = (0, bytes_1.arrayify)(data);
          for (let i = 0; i < bytes.length; i++) {
            intrinsic += 4;
            if (bytes[i]) {
              intrinsic += 64;
            }
          }
          tx.gasLimit = bignumber_1.BigNumber.from(fragment.gas).add(intrinsic);
        }
        if (ro.value) {
          const roValue = bignumber_1.BigNumber.from(ro.value);
          if (!roValue.isZero() && !fragment.payable) {
            logger.throwError("non-payable method cannot override value", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "overrides.value",
              value: overrides.value
            });
          }
          tx.value = roValue;
        }
        if (ro.customData) {
          tx.customData = (0, properties_1.shallowCopy)(ro.customData);
        }
        if (ro.ccipReadEnabled) {
          tx.ccipReadEnabled = !!ro.ccipReadEnabled;
        }
        delete overrides.nonce;
        delete overrides.gasLimit;
        delete overrides.gasPrice;
        delete overrides.from;
        delete overrides.value;
        delete overrides.type;
        delete overrides.accessList;
        delete overrides.maxFeePerGas;
        delete overrides.maxPriorityFeePerGas;
        delete overrides.customData;
        delete overrides.ccipReadEnabled;
        const leftovers = Object.keys(overrides).filter((key => overrides[key] != null));
        if (leftovers.length) {
          logger.throwError(`cannot override ${leftovers.map((l => JSON.stringify(l))).join(",")}`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "overrides",
            overrides: leftovers
          });
        }
        return tx;
      }
      function buildPopulate(contract, fragment) {
        return function(...args) {
          return populateTransaction(contract, fragment, args);
        };
      }
      function buildEstimate(contract, fragment) {
        const signerOrProvider = contract.signer || contract.provider;
        return async function(...args) {
          if (!signerOrProvider) {
            logger.throwError("estimate require a provider or signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "estimateGas"
            });
          }
          const tx = await populateTransaction(contract, fragment, args);
          return await signerOrProvider.estimateGas(tx);
        };
      }
      function addContractWait(contract, tx) {
        const wait = tx.wait.bind(tx);
        tx.wait = confirmations => wait(confirmations).then((receipt => {
          receipt.events = receipt.logs.map((log => {
            let event = (0, properties_1.deepCopy)(log);
            let parsed = null;
            try {
              parsed = contract.interface.parseLog(log);
            } catch (e) {}
            if (parsed) {
              event.args = parsed.args;
              event.decode = (data, topics) => contract.interface.decodeEventLog(parsed.eventFragment, data, topics);
              event.event = parsed.name;
              event.eventSignature = parsed.signature;
            }
            event.removeListener = () => contract.provider;
            event.getBlock = () => contract.provider.getBlock(receipt.blockHash);
            event.getTransaction = () => contract.provider.getTransaction(receipt.transactionHash);
            event.getTransactionReceipt = () => Promise.resolve(receipt);
            return event;
          }));
          return receipt;
        }));
      }
      function buildCall(contract, fragment, collapseSimple) {
        const signerOrProvider = contract.signer || contract.provider;
        return async function(...args) {
          let blockTag = undefined;
          if (args.length === fragment.inputs.length + 1 && typeof args[args.length - 1] === "object") {
            const overrides = (0, properties_1.shallowCopy)(args.pop());
            if (overrides.blockTag != null) {
              blockTag = await overrides.blockTag;
            }
            delete overrides.blockTag;
            args.push(overrides);
          }
          if (contract.deployTransaction != null) {
            await contract._deployed(blockTag);
          }
          const tx = await populateTransaction(contract, fragment, args);
          const result = await signerOrProvider.call(tx, blockTag);
          try {
            let value = contract.interface.decodeFunctionResult(fragment, result);
            if (collapseSimple && fragment.outputs.length === 1) {
              value = value[0];
            }
            return value;
          } catch (error) {
            if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
              error.address = contract.address;
              error.args = args;
              error.transaction = tx;
            }
            throw error;
          }
        };
      }
      function buildSend(contract, fragment) {
        return async function(...args) {
          if (!contract.signer) {
            logger.throwError("sending a transaction requires a signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "sendTransaction"
            });
          }
          if (contract.deployTransaction != null) {
            await contract._deployed();
          }
          const txRequest = await populateTransaction(contract, fragment, args);
          const tx = await contract.signer.sendTransaction(txRequest);
          addContractWait(contract, tx);
          return tx;
        };
      }
      function buildDefault(contract, fragment, collapseSimple) {
        if (fragment.constant) {
          return buildCall(contract, fragment, collapseSimple);
        }
        return buildSend(contract, fragment);
      }
      function getEventTag(filter) {
        if (filter.address && (filter.topics == null || filter.topics.length === 0)) {
          return "*";
        }
        return (filter.address || "*") + "@" + (filter.topics ? filter.topics.map((topic => {
          if (Array.isArray(topic)) {
            return topic.join("|");
          }
          return topic;
        })).join(":") : "");
      }
      class RunningEvent {
        constructor(tag, filter) {
          (0, properties_1.defineReadOnly)(this, "tag", tag);
          (0, properties_1.defineReadOnly)(this, "filter", filter);
          this._listeners = [];
        }
        addListener(listener, once) {
          this._listeners.push({
            listener,
            once
          });
        }
        removeListener(listener) {
          let done = false;
          this._listeners = this._listeners.filter((item => {
            if (done || item.listener !== listener) {
              return true;
            }
            done = true;
            return false;
          }));
        }
        removeAllListeners() {
          this._listeners = [];
        }
        listeners() {
          return this._listeners.map((i => i.listener));
        }
        listenerCount() {
          return this._listeners.length;
        }
        run(args) {
          const listenerCount = this.listenerCount();
          this._listeners = this._listeners.filter((item => {
            const argsCopy = args.slice();
            setTimeout((() => {
              item.listener.apply(this, argsCopy);
            }), 0);
            return !item.once;
          }));
          return listenerCount;
        }
        prepareEvent(event) {}
        getEmit(event) {
          return [ event ];
        }
      }
      class ErrorRunningEvent extends RunningEvent {
        constructor() {
          super("error", null);
        }
      }
      class FragmentRunningEvent extends RunningEvent {
        constructor(address, contractInterface, fragment, topics) {
          const filter = {
            address
          };
          let topic = contractInterface.getEventTopic(fragment);
          if (topics) {
            if (topic !== topics[0]) {
              logger.throwArgumentError("topic mismatch", "topics", topics);
            }
            filter.topics = topics.slice();
          } else {
            filter.topics = [ topic ];
          }
          super(getEventTag(filter), filter);
          (0, properties_1.defineReadOnly)(this, "address", address);
          (0, properties_1.defineReadOnly)(this, "interface", contractInterface);
          (0, properties_1.defineReadOnly)(this, "fragment", fragment);
        }
        prepareEvent(event) {
          super.prepareEvent(event);
          event.event = this.fragment.name;
          event.eventSignature = this.fragment.format();
          event.decode = (data, topics) => this.interface.decodeEventLog(this.fragment, data, topics);
          try {
            event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);
          } catch (error) {
            event.args = null;
            event.decodeError = error;
          }
        }
        getEmit(event) {
          const errors = (0, abi_1.checkResultErrors)(event.args);
          if (errors.length) {
            throw errors[0].error;
          }
          const args = (event.args || []).slice();
          args.push(event);
          return args;
        }
      }
      class WildcardRunningEvent extends RunningEvent {
        constructor(address, contractInterface) {
          super("*", {
            address
          });
          (0, properties_1.defineReadOnly)(this, "address", address);
          (0, properties_1.defineReadOnly)(this, "interface", contractInterface);
        }
        prepareEvent(event) {
          super.prepareEvent(event);
          try {
            const parsed = this.interface.parseLog(event);
            event.event = parsed.name;
            event.eventSignature = parsed.signature;
            event.decode = (data, topics) => this.interface.decodeEventLog(parsed.eventFragment, data, topics);
            event.args = parsed.args;
          } catch (error) {}
        }
      }
      class BaseContract {
        constructor(addressOrName, contractInterface, signerOrProvider) {
          (0, properties_1.defineReadOnly)(this, "interface", (0, properties_1.getStatic)(new.target, "getInterface")(contractInterface));
          if (signerOrProvider == null) {
            (0, properties_1.defineReadOnly)(this, "provider", null);
            (0, properties_1.defineReadOnly)(this, "signer", null);
          } else if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {
            (0, properties_1.defineReadOnly)(this, "provider", signerOrProvider.provider || null);
            (0, properties_1.defineReadOnly)(this, "signer", signerOrProvider);
          } else if (abstract_provider_1.Provider.isProvider(signerOrProvider)) {
            (0, properties_1.defineReadOnly)(this, "provider", signerOrProvider);
            (0, properties_1.defineReadOnly)(this, "signer", null);
          } else {
            logger.throwArgumentError("invalid signer or provider", "signerOrProvider", signerOrProvider);
          }
          (0, properties_1.defineReadOnly)(this, "callStatic", {});
          (0, properties_1.defineReadOnly)(this, "estimateGas", {});
          (0, properties_1.defineReadOnly)(this, "functions", {});
          (0, properties_1.defineReadOnly)(this, "populateTransaction", {});
          (0, properties_1.defineReadOnly)(this, "filters", {});
          {
            const uniqueFilters = {};
            Object.keys(this.interface.events).forEach((eventSignature => {
              const event = this.interface.events[eventSignature];
              (0, properties_1.defineReadOnly)(this.filters, eventSignature, ((...args) => ({
                address: this.address,
                topics: this.interface.encodeFilterTopics(event, args)
              })));
              if (!uniqueFilters[event.name]) {
                uniqueFilters[event.name] = [];
              }
              uniqueFilters[event.name].push(eventSignature);
            }));
            Object.keys(uniqueFilters).forEach((name => {
              const filters = uniqueFilters[name];
              if (filters.length === 1) {
                (0, properties_1.defineReadOnly)(this.filters, name, this.filters[filters[0]]);
              } else {
                logger.warn(`Duplicate definition of ${name} (${filters.join(", ")})`);
              }
            }));
          }
          (0, properties_1.defineReadOnly)(this, "_runningEvents", {});
          (0, properties_1.defineReadOnly)(this, "_wrappedEmits", {});
          if (addressOrName == null) {
            logger.throwArgumentError("invalid contract address or ENS name", "addressOrName", addressOrName);
          }
          (0, properties_1.defineReadOnly)(this, "address", addressOrName);
          if (this.provider) {
            (0, properties_1.defineReadOnly)(this, "resolvedAddress", resolveName(this.provider, addressOrName));
          } else {
            try {
              (0, properties_1.defineReadOnly)(this, "resolvedAddress", Promise.resolve((0, address_1.getAddress)(addressOrName)));
            } catch (error) {
              logger.throwError("provider is required to use ENS name as contract address", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                operation: "new Contract"
              });
            }
          }
          this.resolvedAddress.catch((e => {}));
          const uniqueNames = {};
          const uniqueSignatures = {};
          Object.keys(this.interface.functions).forEach((signature => {
            const fragment = this.interface.functions[signature];
            if (uniqueSignatures[signature]) {
              logger.warn(`Duplicate ABI entry for ${JSON.stringify(signature)}`);
              return;
            }
            uniqueSignatures[signature] = true;
            {
              const name = fragment.name;
              if (!uniqueNames[`%${name}`]) {
                uniqueNames[`%${name}`] = [];
              }
              uniqueNames[`%${name}`].push(signature);
            }
            if (this[signature] == null) {
              (0, properties_1.defineReadOnly)(this, signature, buildDefault(this, fragment, true));
            }
            if (this.functions[signature] == null) {
              (0, properties_1.defineReadOnly)(this.functions, signature, buildDefault(this, fragment, false));
            }
            if (this.callStatic[signature] == null) {
              (0, properties_1.defineReadOnly)(this.callStatic, signature, buildCall(this, fragment, true));
            }
            if (this.populateTransaction[signature] == null) {
              (0, properties_1.defineReadOnly)(this.populateTransaction, signature, buildPopulate(this, fragment));
            }
            if (this.estimateGas[signature] == null) {
              (0, properties_1.defineReadOnly)(this.estimateGas, signature, buildEstimate(this, fragment));
            }
          }));
          Object.keys(uniqueNames).forEach((name => {
            const signatures = uniqueNames[name];
            if (signatures.length > 1) {
              return;
            }
            name = name.substring(1);
            const signature = signatures[0];
            try {
              if (this[name] == null) {
                (0, properties_1.defineReadOnly)(this, name, this[signature]);
              }
            } catch (e) {}
            if (this.functions[name] == null) {
              (0, properties_1.defineReadOnly)(this.functions, name, this.functions[signature]);
            }
            if (this.callStatic[name] == null) {
              (0, properties_1.defineReadOnly)(this.callStatic, name, this.callStatic[signature]);
            }
            if (this.populateTransaction[name] == null) {
              (0, properties_1.defineReadOnly)(this.populateTransaction, name, this.populateTransaction[signature]);
            }
            if (this.estimateGas[name] == null) {
              (0, properties_1.defineReadOnly)(this.estimateGas, name, this.estimateGas[signature]);
            }
          }));
        }
        static getContractAddress(transaction) {
          return (0, address_1.getContractAddress)(transaction);
        }
        static getInterface(contractInterface) {
          if (abi_1.Interface.isInterface(contractInterface)) {
            return contractInterface;
          }
          return new abi_1.Interface(contractInterface);
        }
        deployed() {
          return this._deployed();
        }
        _deployed(blockTag) {
          if (!this._deployedPromise) {
            if (this.deployTransaction) {
              this._deployedPromise = this.deployTransaction.wait().then((() => this));
            } else {
              this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code => {
                if (code === "0x") {
                  logger.throwError("contract not deployed", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                    contractAddress: this.address,
                    operation: "getDeployed"
                  });
                }
                return this;
              }));
            }
          }
          return this._deployedPromise;
        }
        fallback(overrides) {
          if (!this.signer) {
            logger.throwError("sending a transactions require a signer", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "sendTransaction(fallback)"
            });
          }
          const tx = (0, properties_1.shallowCopy)(overrides || {});
          [ "from", "to" ].forEach((function(key) {
            if (tx[key] == null) {
              return;
            }
            logger.throwError("cannot override " + key, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: key
            });
          }));
          tx.to = this.resolvedAddress;
          return this.deployed().then((() => this.signer.sendTransaction(tx)));
        }
        connect(signerOrProvider) {
          if (typeof signerOrProvider === "string") {
            signerOrProvider = new abstract_signer_1.VoidSigner(signerOrProvider, this.provider);
          }
          const contract = new this.constructor(this.address, this.interface, signerOrProvider);
          if (this.deployTransaction) {
            (0, properties_1.defineReadOnly)(contract, "deployTransaction", this.deployTransaction);
          }
          return contract;
        }
        attach(addressOrName) {
          return new this.constructor(addressOrName, this.interface, this.signer || this.provider);
        }
        static isIndexed(value) {
          return abi_1.Indexed.isIndexed(value);
        }
        _normalizeRunningEvent(runningEvent) {
          if (this._runningEvents[runningEvent.tag]) {
            return this._runningEvents[runningEvent.tag];
          }
          return runningEvent;
        }
        _getRunningEvent(eventName) {
          if (typeof eventName === "string") {
            if (eventName === "error") {
              return this._normalizeRunningEvent(new ErrorRunningEvent);
            }
            if (eventName === "event") {
              return this._normalizeRunningEvent(new RunningEvent("event", null));
            }
            if (eventName === "*") {
              return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));
            }
            const fragment = this.interface.getEvent(eventName);
            return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));
          }
          if (eventName.topics && eventName.topics.length > 0) {
            try {
              const topic = eventName.topics[0];
              if (typeof topic !== "string") {
                throw new Error("invalid topic");
              }
              const fragment = this.interface.getEvent(topic);
              return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));
            } catch (error) {}
            const filter = {
              address: this.address,
              topics: eventName.topics
            };
            return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));
          }
          return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));
        }
        _checkRunningEvents(runningEvent) {
          if (runningEvent.listenerCount() === 0) {
            delete this._runningEvents[runningEvent.tag];
            const emit = this._wrappedEmits[runningEvent.tag];
            if (emit && runningEvent.filter) {
              this.provider.off(runningEvent.filter, emit);
              delete this._wrappedEmits[runningEvent.tag];
            }
          }
        }
        _wrapEvent(runningEvent, log, listener) {
          const event = (0, properties_1.deepCopy)(log);
          event.removeListener = () => {
            if (!listener) {
              return;
            }
            runningEvent.removeListener(listener);
            this._checkRunningEvents(runningEvent);
          };
          event.getBlock = () => this.provider.getBlock(log.blockHash);
          event.getTransaction = () => this.provider.getTransaction(log.transactionHash);
          event.getTransactionReceipt = () => this.provider.getTransactionReceipt(log.transactionHash);
          runningEvent.prepareEvent(event);
          return event;
        }
        _addEventListener(runningEvent, listener, once) {
          if (!this.provider) {
            logger.throwError("events require a provider or a signer with a provider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "once"
            });
          }
          runningEvent.addListener(listener, once);
          this._runningEvents[runningEvent.tag] = runningEvent;
          if (!this._wrappedEmits[runningEvent.tag]) {
            const wrappedEmit = log => {
              let event = this._wrapEvent(runningEvent, log, listener);
              if (event.decodeError == null) {
                try {
                  const args = runningEvent.getEmit(event);
                  this.emit(runningEvent.filter, ...args);
                } catch (error) {
                  event.decodeError = error.error;
                }
              }
              if (runningEvent.filter != null) {
                this.emit("event", event);
              }
              if (event.decodeError != null) {
                this.emit("error", event.decodeError, event);
              }
            };
            this._wrappedEmits[runningEvent.tag] = wrappedEmit;
            if (runningEvent.filter != null) {
              this.provider.on(runningEvent.filter, wrappedEmit);
            }
          }
        }
        queryFilter(event, fromBlockOrBlockhash, toBlock) {
          const runningEvent = this._getRunningEvent(event);
          const filter = (0, properties_1.shallowCopy)(runningEvent.filter);
          if (typeof fromBlockOrBlockhash === "string" && (0, bytes_1.isHexString)(fromBlockOrBlockhash, 32)) {
            if (toBlock != null) {
              logger.throwArgumentError("cannot specify toBlock with blockhash", "toBlock", toBlock);
            }
            filter.blockHash = fromBlockOrBlockhash;
          } else {
            filter.fromBlock = fromBlockOrBlockhash != null ? fromBlockOrBlockhash : 0;
            filter.toBlock = toBlock != null ? toBlock : "latest";
          }
          return this.provider.getLogs(filter).then((logs => logs.map((log => this._wrapEvent(runningEvent, log, null)))));
        }
        on(event, listener) {
          this._addEventListener(this._getRunningEvent(event), listener, false);
          return this;
        }
        once(event, listener) {
          this._addEventListener(this._getRunningEvent(event), listener, true);
          return this;
        }
        emit(eventName, ...args) {
          if (!this.provider) {
            return false;
          }
          const runningEvent = this._getRunningEvent(eventName);
          const result = runningEvent.run(args) > 0;
          this._checkRunningEvents(runningEvent);
          return result;
        }
        listenerCount(eventName) {
          if (!this.provider) {
            return 0;
          }
          if (eventName == null) {
            return Object.keys(this._runningEvents).reduce(((accum, key) => accum + this._runningEvents[key].listenerCount()), 0);
          }
          return this._getRunningEvent(eventName).listenerCount();
        }
        listeners(eventName) {
          if (!this.provider) {
            return [];
          }
          if (eventName == null) {
            const result = [];
            for (let tag in this._runningEvents) {
              this._runningEvents[tag].listeners().forEach((listener => {
                result.push(listener);
              }));
            }
            return result;
          }
          return this._getRunningEvent(eventName).listeners();
        }
        removeAllListeners(eventName) {
          if (!this.provider) {
            return this;
          }
          if (eventName == null) {
            for (const tag in this._runningEvents) {
              const runningEvent = this._runningEvents[tag];
              runningEvent.removeAllListeners();
              this._checkRunningEvents(runningEvent);
            }
            return this;
          }
          const runningEvent = this._getRunningEvent(eventName);
          runningEvent.removeAllListeners();
          this._checkRunningEvents(runningEvent);
          return this;
        }
        off(eventName, listener) {
          if (!this.provider) {
            return this;
          }
          const runningEvent = this._getRunningEvent(eventName);
          runningEvent.removeListener(listener);
          this._checkRunningEvents(runningEvent);
          return this;
        }
        removeListener(eventName, listener) {
          return this.off(eventName, listener);
        }
      }
      exports.BaseContract = BaseContract;
      class Contract extends BaseContract {}
      exports.Contract = Contract;
      class ContractFactory {
        constructor(contractInterface, bytecode, signer) {
          let bytecodeHex = null;
          if (typeof bytecode === "string") {
            bytecodeHex = bytecode;
          } else if ((0, bytes_1.isBytes)(bytecode)) {
            bytecodeHex = (0, bytes_1.hexlify)(bytecode);
          } else if (bytecode && typeof bytecode.object === "string") {
            bytecodeHex = bytecode.object;
          } else {
            bytecodeHex = "!";
          }
          if (bytecodeHex.substring(0, 2) !== "0x") {
            bytecodeHex = "0x" + bytecodeHex;
          }
          if (!(0, bytes_1.isHexString)(bytecodeHex) || bytecodeHex.length % 2) {
            logger.throwArgumentError("invalid bytecode", "bytecode", bytecode);
          }
          if (signer && !abstract_signer_1.Signer.isSigner(signer)) {
            logger.throwArgumentError("invalid signer", "signer", signer);
          }
          (0, properties_1.defineReadOnly)(this, "bytecode", bytecodeHex);
          (0, properties_1.defineReadOnly)(this, "interface", (0, properties_1.getStatic)(new.target, "getInterface")(contractInterface));
          (0, properties_1.defineReadOnly)(this, "signer", signer || null);
        }
        getDeployTransaction(...args) {
          let tx = {};
          if (args.length === this.interface.deploy.inputs.length + 1 && typeof args[args.length - 1] === "object") {
            tx = (0, properties_1.shallowCopy)(args.pop());
            for (const key in tx) {
              if (!allowedTransactionKeys[key]) {
                throw new Error("unknown transaction override " + key);
              }
            }
          }
          [ "data", "from", "to" ].forEach((key => {
            if (tx[key] == null) {
              return;
            }
            logger.throwError("cannot override " + key, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: key
            });
          }));
          if (tx.value) {
            const value = bignumber_1.BigNumber.from(tx.value);
            if (!value.isZero() && !this.interface.deploy.payable) {
              logger.throwError("non-payable constructor cannot override value", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                operation: "overrides.value",
                value: tx.value
              });
            }
          }
          logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, " in Contract constructor");
          tx.data = (0, bytes_1.hexlify)((0, bytes_1.concat)([ this.bytecode, this.interface.encodeDeploy(args) ]));
          return tx;
        }
        async deploy(...args) {
          let overrides = {};
          if (args.length === this.interface.deploy.inputs.length + 1) {
            overrides = args.pop();
          }
          logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, " in Contract constructor");
          const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);
          params.push(overrides);
          const unsignedTx = this.getDeployTransaction(...params);
          const tx = await this.signer.sendTransaction(unsignedTx);
          const address = (0, properties_1.getStatic)(this.constructor, "getContractAddress")(tx);
          const contract = (0, properties_1.getStatic)(this.constructor, "getContract")(address, this.interface, this.signer);
          addContractWait(contract, tx);
          (0, properties_1.defineReadOnly)(contract, "deployTransaction", tx);
          return contract;
        }
        attach(address) {
          return this.constructor.getContract(address, this.interface, this.signer);
        }
        connect(signer) {
          return new this.constructor(this.interface, this.bytecode, signer);
        }
        static fromPurity(compilerOutput, signer) {
          if (compilerOutput == null) {
            logger.throwError("missing compiler output", logger_1.Logger.errors.MISSING_ARGUMENT, {
              argument: "compilerOutput"
            });
          }
          if (typeof compilerOutput === "string") {
            compilerOutput = JSON.parse(compilerOutput);
          }
          const abi = compilerOutput.abi;
          let bytecode = null;
          if (compilerOutput.bytecode) {
            bytecode = compilerOutput.bytecode;
          } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {
            bytecode = compilerOutput.evm.bytecode;
          }
          return new this(abi, bytecode, signer);
        }
        static getInterface(contractInterface) {
          return Contract.getInterface(contractInterface);
        }
        static getContractAddress(tx) {
          return (0, address_1.getContractAddress)(tx);
        }
        static getContract(address, contractInterface, signer) {
          return new Contract(address, contractInterface, signer);
        }
      }
      exports.ContractFactory = ContractFactory;
    },
    334(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "hash/5.7.4";
    },
    9680(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.decode_arithmetic = decode_arithmetic;
      exports.read_payload = read_payload;
      exports.read_compressed_payload = read_compressed_payload;
      exports.signed = signed;
      exports.read_member_array = read_member_array;
      exports.read_mapped_map = read_mapped_map;
      exports.read_zero_terminated_array = read_zero_terminated_array;
      exports.read_emoji_trie = read_emoji_trie;
      function flat(array, depth) {
        if (depth == null) {
          depth = 1;
        }
        const result = [];
        const forEach = result.forEach;
        const flatDeep = function(arr, depth) {
          forEach.call(arr, (function(val) {
            if (depth > 0 && Array.isArray(val)) {
              flatDeep(val, depth - 1);
            } else {
              result.push(val);
            }
          }));
        };
        flatDeep(array, depth);
        return result;
      }
      function fromEntries(array) {
        const result = {};
        for (let i = 0; i < array.length; i++) {
          const value = array[i];
          result[value[0]] = value[1];
        }
        return result;
      }
      function decode_arithmetic(bytes) {
        let pos = 0;
        function u16() {
          return bytes[pos++] << 8 | bytes[pos++];
        }
        let symbol_count = u16();
        let total = 1;
        let acc = [ 0, 1 ];
        for (let i = 1; i < symbol_count; i++) {
          acc.push(total += u16());
        }
        let skip = u16();
        let pos_payload = pos;
        pos += skip;
        let read_width = 0;
        let read_buffer = 0;
        function read_bit() {
          if (read_width == 0) {
            read_buffer = read_buffer << 8 | bytes[pos++];
            read_width = 8;
          }
          return read_buffer >> --read_width & 1;
        }
        const N = 31;
        const FULL = 2 ** N;
        const HALF = FULL >>> 1;
        const QRTR = HALF >> 1;
        const MASK = FULL - 1;
        let register = 0;
        for (let i = 0; i < N; i++) register = register << 1 | read_bit();
        let symbols = [];
        let low = 0;
        let range = FULL;
        while (true) {
          let value = Math.floor(((register - low + 1) * total - 1) / range);
          let start = 0;
          let end = symbol_count;
          while (end - start > 1) {
            let mid = start + end >>> 1;
            if (value < acc[mid]) {
              end = mid;
            } else {
              start = mid;
            }
          }
          if (start == 0) break;
          symbols.push(start);
          let a = low + Math.floor(range * acc[start] / total);
          let b = low + Math.floor(range * acc[start + 1] / total) - 1;
          while (((a ^ b) & HALF) == 0) {
            register = register << 1 & MASK | read_bit();
            a = a << 1 & MASK;
            b = b << 1 & MASK | 1;
          }
          while (a & ~b & QRTR) {
            register = register & HALF | register << 1 & MASK >>> 1 | read_bit();
            a = a << 1 ^ HALF;
            b = (b ^ HALF) << 1 | HALF | 1;
          }
          low = a;
          range = 1 + b - a;
        }
        let offset = symbol_count - 4;
        return symbols.map((x => {
          switch (x - offset) {
           case 3:
            return offset + 65792 + (bytes[pos_payload++] << 16 | bytes[pos_payload++] << 8 | bytes[pos_payload++]);

           case 2:
            return offset + 256 + (bytes[pos_payload++] << 8 | bytes[pos_payload++]);

           case 1:
            return offset + bytes[pos_payload++];

           default:
            return x - 1;
          }
        }));
      }
      function read_payload(v) {
        let pos = 0;
        return () => v[pos++];
      }
      function read_compressed_payload(bytes) {
        return read_payload(decode_arithmetic(bytes));
      }
      function signed(i) {
        return i & 1 ? ~i >> 1 : i >> 1;
      }
      function read_counts(n, next) {
        let v = Array(n);
        for (let i = 0; i < n; i++) v[i] = 1 + next();
        return v;
      }
      function read_ascending(n, next) {
        let v = Array(n);
        for (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();
        return v;
      }
      function read_deltas(n, next) {
        let v = Array(n);
        for (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());
        return v;
      }
      function read_member_array(next, lookup) {
        let v = read_ascending(next(), next);
        let n = next();
        let vX = read_ascending(n, next);
        let vN = read_counts(n, next);
        for (let i = 0; i < n; i++) {
          for (let j = 0; j < vN[i]; j++) {
            v.push(vX[i] + j);
          }
        }
        return lookup ? v.map((x => lookup[x])) : v;
      }
      function read_mapped_map(next) {
        let ret = [];
        while (true) {
          let w = next();
          if (w == 0) break;
          ret.push(read_linear_table(w, next));
        }
        while (true) {
          let w = next() - 1;
          if (w < 0) break;
          ret.push(read_replacement_table(w, next));
        }
        return fromEntries(flat(ret));
      }
      function read_zero_terminated_array(next) {
        let v = [];
        while (true) {
          let i = next();
          if (i == 0) break;
          v.push(i);
        }
        return v;
      }
      function read_transposed(n, w, next) {
        let m = Array(n).fill(undefined).map((() => []));
        for (let i = 0; i < w; i++) {
          read_deltas(n, next).forEach(((x, j) => m[j].push(x)));
        }
        return m;
      }
      function read_linear_table(w, next) {
        let dx = 1 + next();
        let dy = next();
        let vN = read_zero_terminated_array(next);
        let m = read_transposed(vN.length, 1 + w, next);
        return flat(m.map(((v, i) => {
          const x = v[0], ys = v.slice(1);
          return Array(vN[i]).fill(undefined).map(((_, j) => {
            let j_dy = j * dy;
            return [ x + j * dx, ys.map((y => y + j_dy)) ];
          }));
        })));
      }
      function read_replacement_table(w, next) {
        let n = 1 + next();
        let m = read_transposed(n, 1 + w, next);
        return m.map((v => [ v[0], v.slice(1) ]));
      }
      function read_emoji_trie(next) {
        let sorted = read_member_array(next).sort(((a, b) => a - b));
        return read();
        function read() {
          let branches = [];
          while (true) {
            let keys = read_member_array(next, sorted);
            if (keys.length == 0) break;
            branches.push({
              set: new Set(keys),
              node: read()
            });
          }
          branches.sort(((a, b) => b.set.size - a.set.size));
          let temp = next();
          let valid = temp % 3;
          temp = temp / 3 | 0;
          let fe0f = !!(temp & 1);
          temp >>= 1;
          let save = temp == 1;
          let check = temp == 2;
          return {
            branches,
            valid,
            fe0f,
            save,
            check
          };
        }
      }
    },
    1600(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getData = getData;
      const base64_1 = __webpack_require__(8886);
      const decoder_js_1 = __webpack_require__(9680);
      function getData() {
        return (0, decoder_js_1.read_compressed_payload)((0, base64_1.decode)(" "));
      }
    },
    2351(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.ens_normalize_post_check = ens_normalize_post_check;
      exports.ens_normalize = ens_normalize;
      const strings_1 = __webpack_require__(2509);
      const include_js_1 = __webpack_require__(1600);
      const r = (0, include_js_1.getData)();
      const decoder_js_1 = __webpack_require__(9680);
      const VALID = new Set((0, decoder_js_1.read_member_array)(r));
      const IGNORED = new Set((0, decoder_js_1.read_member_array)(r));
      const MAPPED = (0, decoder_js_1.read_mapped_map)(r);
      const EMOJI_ROOT = (0, decoder_js_1.read_emoji_trie)(r);
      const HYPHEN = 45;
      const UNDERSCORE = 95;
      function explode_cp(name) {
        return (0, strings_1.toUtf8CodePoints)(name);
      }
      function filter_fe0f(cps) {
        return cps.filter((cp => cp != 65039));
      }
      function ens_normalize_post_check(name) {
        for (let label of name.split(".")) {
          let cps = explode_cp(label);
          try {
            for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {
              if (cps[i] !== UNDERSCORE) {
                throw new Error(`underscore only allowed at start`);
              }
            }
            if (cps.length >= 4 && cps.every((cp => cp < 128)) && cps[2] === HYPHEN && cps[3] === HYPHEN) {
              throw new Error(`invalid label extension`);
            }
          } catch (err) {
            throw new Error(`Invalid label "${label}": ${err.message}`);
          }
        }
        return name;
      }
      function ens_normalize(name) {
        return ens_normalize_post_check(normalize(name, filter_fe0f));
      }
      function normalize(name, emoji_filter) {
        let input = explode_cp(name).reverse();
        let output = [];
        while (input.length) {
          let emoji = consume_emoji_reversed(input);
          if (emoji) {
            output.push(...emoji_filter(emoji));
            continue;
          }
          let cp = input.pop();
          if (VALID.has(cp)) {
            output.push(cp);
            continue;
          }
          if (IGNORED.has(cp)) {
            continue;
          }
          let cps = MAPPED[cp];
          if (cps) {
            output.push(...cps);
            continue;
          }
          throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);
        }
        return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));
      }
      function nfc(s) {
        return s.normalize("NFC");
      }
      function consume_emoji_reversed(cps, eaten) {
        let node = EMOJI_ROOT;
        let emoji;
        let saved;
        let stack = [];
        let pos = cps.length;
        if (eaten) eaten.length = 0;
        while (pos) {
          let cp = cps[--pos];
          node = node.branches.find((x => x.set.has(cp)))?.node;
          if (!node) break;
          if (node.save) {
            saved = cp;
          } else if (node.check) {
            if (cp === saved) break;
          }
          stack.push(cp);
          if (node.fe0f) {
            stack.push(65039);
            if (pos > 0 && cps[pos - 1] == 65039) pos--;
          }
          if (node.valid) {
            emoji = stack.slice();
            if (node.valid == 2) emoji.splice(1, 1);
            if (eaten) eaten.push(...cps.slice(pos).reverse());
            cps.length = pos;
          }
        }
        return emoji;
      }
    },
    6584(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.id = id;
      const keccak256_1 = __webpack_require__(1136);
      const strings_1 = __webpack_require__(2509);
      function id(text) {
        return (0, keccak256_1.keccak256)((0, strings_1.toUtf8Bytes)(text));
      }
    },
    413(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports._TypedDataEncoder = exports.hashMessage = exports.messagePrefix = exports.ensNormalize = exports.isValidName = exports.namehash = exports.dnsEncode = exports.id = void 0;
      const id_1 = __webpack_require__(6584);
      Object.defineProperty(exports, "id", {
        enumerable: true,
        get: function() {
          return id_1.id;
        }
      });
      const namehash_1 = __webpack_require__(8850);
      Object.defineProperty(exports, "dnsEncode", {
        enumerable: true,
        get: function() {
          return namehash_1.dnsEncode;
        }
      });
      Object.defineProperty(exports, "isValidName", {
        enumerable: true,
        get: function() {
          return namehash_1.isValidName;
        }
      });
      Object.defineProperty(exports, "namehash", {
        enumerable: true,
        get: function() {
          return namehash_1.namehash;
        }
      });
      const message_1 = __webpack_require__(238);
      Object.defineProperty(exports, "hashMessage", {
        enumerable: true,
        get: function() {
          return message_1.hashMessage;
        }
      });
      Object.defineProperty(exports, "messagePrefix", {
        enumerable: true,
        get: function() {
          return message_1.messagePrefix;
        }
      });
      const namehash_2 = __webpack_require__(8850);
      Object.defineProperty(exports, "ensNormalize", {
        enumerable: true,
        get: function() {
          return namehash_2.ensNormalize;
        }
      });
      const typed_data_1 = __webpack_require__(8362);
      Object.defineProperty(exports, "_TypedDataEncoder", {
        enumerable: true,
        get: function() {
          return typed_data_1.TypedDataEncoder;
        }
      });
    },
    238(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.messagePrefix = void 0;
      exports.hashMessage = hashMessage;
      const bytes_1 = __webpack_require__(8380);
      const keccak256_1 = __webpack_require__(1136);
      const strings_1 = __webpack_require__(2509);
      exports.messagePrefix = "QuantumEVM Signed Message\n";
      function hashMessage(message) {
        if (typeof message === "string") {
          message = (0, strings_1.toUtf8Bytes)(message);
        }
        return (0, keccak256_1.keccak256)((0, bytes_1.concat)([ (0, strings_1.toUtf8Bytes)(exports.messagePrefix), (0, 
        strings_1.toUtf8Bytes)(String(message.length)), message ]));
      }
    },
    8850(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.ensNormalize = ensNormalize;
      exports.isValidName = isValidName;
      exports.namehash = namehash;
      exports.dnsEncode = dnsEncode;
      const bytes_1 = __webpack_require__(8380);
      const strings_1 = __webpack_require__(2509);
      const keccak256_1 = __webpack_require__(1136);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(334);
      const logger = new logger_1.Logger(_version_1.version);
      const lib_1 = __webpack_require__(2351);
      const Zeros = new Uint8Array(32);
      Zeros.fill(0);
      function checkComponent(comp) {
        if (comp.length === 0) {
          throw new Error("invalid ENS name; empty component");
        }
        return comp;
      }
      function ensNameSplit(name) {
        const bytes = (0, strings_1.toUtf8Bytes)((0, lib_1.ens_normalize)(name));
        const comps = [];
        if (name.length === 0) {
          return comps;
        }
        let last = 0;
        for (let i = 0; i < bytes.length; i++) {
          const d = bytes[i];
          if (d === 46) {
            comps.push(checkComponent(bytes.slice(last, i)));
            last = i + 1;
          }
        }
        if (last >= bytes.length) {
          throw new Error("invalid ENS name; empty component");
        }
        comps.push(checkComponent(bytes.slice(last)));
        return comps;
      }
      function ensNormalize(name) {
        return ensNameSplit(name).map((comp => (0, strings_1.toUtf8String)(comp))).join(".");
      }
      function isValidName(name) {
        try {
          return ensNameSplit(name).length !== 0;
        } catch (error) {}
        return false;
      }
      function namehash(name) {
        if (typeof name !== "string") {
          logger.throwArgumentError("invalid ENS name; not a string", "name", name);
        }
        let result = Zeros;
        const comps = ensNameSplit(name);
        while (comps.length) {
          result = (0, keccak256_1.keccak256)((0, bytes_1.concat)([ result, (0, keccak256_1.keccak256)(comps.pop()) ]));
        }
        return (0, bytes_1.hexlify)(result);
      }
      function dnsEncode(name) {
        return (0, bytes_1.hexlify)((0, bytes_1.concat)(ensNameSplit(name).map((comp => {
          if (comp.length > 63) {
            throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");
          }
          const bytes = new Uint8Array(comp.length + 1);
          bytes.set(comp, 1);
          bytes[0] = bytes.length - 1;
          return bytes;
        })))) + "00";
      }
    },
    8362(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.TypedDataEncoder = void 0;
      const address_1 = __webpack_require__(171);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const keccak256_1 = __webpack_require__(1136);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(334);
      const logger = new logger_1.Logger(_version_1.version);
      const id_1 = __webpack_require__(6584);
      const padding = new Uint8Array(32);
      padding.fill(0);
      const NegativeOne = bignumber_1.BigNumber.from(-1);
      const Zero = bignumber_1.BigNumber.from(0);
      const One = bignumber_1.BigNumber.from(1);
      const MaxUint256 = bignumber_1.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
      function hexPadRight(value) {
        const bytes = (0, bytes_1.arrayify)(value);
        const padOffset = bytes.length % 32;
        if (padOffset) {
          return (0, bytes_1.hexConcat)([ bytes, padding.slice(padOffset) ]);
        }
        return (0, bytes_1.hexlify)(bytes);
      }
      const hexTrue = (0, bytes_1.hexZeroPad)(One.toHexString(), 32);
      const hexFalse = (0, bytes_1.hexZeroPad)(Zero.toHexString(), 32);
      const domainFieldTypes = {
        name: "string",
        version: "string",
        chainId: "uint256",
        verifyingContract: "address",
        salt: "bytes32"
      };
      const domainFieldNames = [ "name", "version", "chainId", "verifyingContract", "salt" ];
      function checkString(key) {
        return function(value) {
          if (typeof value !== "string") {
            logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);
          }
          return value;
        };
      }
      const domainChecks = {
        name: checkString("name"),
        version: checkString("version"),
        chainId: function(value) {
          try {
            return bignumber_1.BigNumber.from(value).toString();
          } catch (error) {}
          return logger.throwArgumentError(`invalid domain value for "chainId"`, "domain.chainId", value);
        },
        verifyingContract: function(value) {
          try {
            return (0, address_1.getAddress)(value).toLowerCase();
          } catch (error) {}
          return logger.throwArgumentError(`invalid domain value "verifyingContract"`, "domain.verifyingContract", value);
        },
        salt: function(value) {
          try {
            const bytes = (0, bytes_1.arrayify)(value);
            if (bytes.length !== 32) {
              throw new Error("bad length");
            }
            return (0, bytes_1.hexlify)(bytes);
          } catch (error) {}
          return logger.throwArgumentError(`invalid domain value "salt"`, "domain.salt", value);
        }
      };
      function getBaseEncoder(type) {
        {
          const match = type.match(/^(u?)int(\d*)$/);
          if (match) {
            const signed = match[1] === "";
            const width = parseInt(match[2] || "256");
            if (width % 8 !== 0 || width > 256 || match[2] && match[2] !== String(width)) {
              logger.throwArgumentError("invalid numeric width", "type", type);
            }
            const boundsUpper = MaxUint256.mask(signed ? width - 1 : width);
            const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;
            return function(value) {
              const v = bignumber_1.BigNumber.from(value);
              if (v.lt(boundsLower) || v.gt(boundsUpper)) {
                logger.throwArgumentError(`value out-of-bounds for ${type}`, "value", value);
              }
              return (0, bytes_1.hexZeroPad)(v.toTwos(256).toHexString(), 32);
            };
          }
        }
        {
          const match = type.match(/^bytes(\d+)$/);
          if (match) {
            const width = parseInt(match[1]);
            if (width === 0 || width > 32 || match[1] !== String(width)) {
              logger.throwArgumentError("invalid bytes width", "type", type);
            }
            return function(value) {
              const bytes = (0, bytes_1.arrayify)(value);
              if (bytes.length !== width) {
                logger.throwArgumentError(`invalid length for ${type}`, "value", value);
              }
              return hexPadRight(value);
            };
          }
        }
        switch (type) {
         case "address":
          return function(value) {
            return (0, bytes_1.hexZeroPad)((0, address_1.getAddress)(value), 32);
          };

         case "bool":
          return function(value) {
            return !value ? hexFalse : hexTrue;
          };

         case "bytes":
          return function(value) {
            return (0, keccak256_1.keccak256)(value);
          };

         case "string":
          return function(value) {
            return (0, id_1.id)(value);
          };
        }
        return null;
      }
      function encodeType(name, fields) {
        return `${name}(${fields.map((({name, type}) => type + " " + name)).join(",")})`;
      }
      class TypedDataEncoder {
        constructor(types) {
          (0, properties_1.defineReadOnly)(this, "types", Object.freeze((0, properties_1.deepCopy)(types)));
          (0, properties_1.defineReadOnly)(this, "_encoderCache", {});
          (0, properties_1.defineReadOnly)(this, "_types", {});
          const links = {};
          const parents = {};
          const subtypes = {};
          Object.keys(types).forEach((type => {
            links[type] = {};
            parents[type] = [];
            subtypes[type] = {};
          }));
          for (const name in types) {
            const uniqueNames = {};
            types[name].forEach((field => {
              if (uniqueNames[field.name]) {
                logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, "types", types);
              }
              uniqueNames[field.name] = true;
              const baseType = field.type.match(/^([^\x5b]*)(\x5b|$)/)[1];
              if (baseType === name) {
                logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, "types", types);
              }
              const encoder = getBaseEncoder(baseType);
              if (encoder) {
                return;
              }
              if (!parents[baseType]) {
                logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, "types", types);
              }
              parents[baseType].push(name);
              links[name][baseType] = true;
            }));
          }
          const primaryTypes = Object.keys(parents).filter((n => parents[n].length === 0));
          if (primaryTypes.length === 0) {
            logger.throwArgumentError("missing primary type", "types", types);
          } else if (primaryTypes.length > 1) {
            logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t => JSON.stringify(t))).join(", ")}`, "types", types);
          }
          (0, properties_1.defineReadOnly)(this, "primaryType", primaryTypes[0]);
          function checkCircular(type, found) {
            if (found[type]) {
              logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, "types", types);
            }
            found[type] = true;
            Object.keys(links[type]).forEach((child => {
              if (!parents[child]) {
                return;
              }
              checkCircular(child, found);
              Object.keys(found).forEach((subtype => {
                subtypes[subtype][child] = true;
              }));
            }));
            delete found[type];
          }
          checkCircular(this.primaryType, {});
          for (const name in subtypes) {
            const st = Object.keys(subtypes[name]);
            st.sort();
            this._types[name] = encodeType(name, types[name]) + st.map((t => encodeType(t, types[t]))).join("");
          }
        }
        getEncoder(type) {
          let encoder = this._encoderCache[type];
          if (!encoder) {
            encoder = this._encoderCache[type] = this._getEncoder(type);
          }
          return encoder;
        }
        _getEncoder(type) {
          {
            const encoder = getBaseEncoder(type);
            if (encoder) {
              return encoder;
            }
          }
          const match = type.match(/^(.*)(\x5b(\d*)\x5d)$/);
          if (match) {
            const subtype = match[1];
            const subEncoder = this.getEncoder(subtype);
            const length = parseInt(match[3]);
            return value => {
              if (length >= 0 && value.length !== length) {
                logger.throwArgumentError("array length mismatch; expected length ${ arrayLength }", "value", value);
              }
              let result = value.map(subEncoder);
              if (this._types[subtype]) {
                result = result.map(keccak256_1.keccak256);
              }
              return (0, keccak256_1.keccak256)((0, bytes_1.hexConcat)(result));
            };
          }
          const fields = this.types[type];
          if (fields) {
            const encodedType = (0, id_1.id)(this._types[type]);
            return value => {
              const values = fields.map((({name, type}) => {
                const result = this.getEncoder(type)(value[name]);
                if (this._types[type]) {
                  return (0, keccak256_1.keccak256)(result);
                }
                return result;
              }));
              values.unshift(encodedType);
              return (0, bytes_1.hexConcat)(values);
            };
          }
          return logger.throwArgumentError(`unknown type: ${type}`, "type", type);
        }
        encodeType(name) {
          const result = this._types[name];
          if (!result) {
            logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, "name", name);
          }
          return result;
        }
        encodeData(type, value) {
          return this.getEncoder(type)(value);
        }
        hashStruct(name, value) {
          return (0, keccak256_1.keccak256)(this.encodeData(name, value));
        }
        encode(value) {
          return this.encodeData(this.primaryType, value);
        }
        hash(value) {
          return this.hashStruct(this.primaryType, value);
        }
        _visit(type, value, callback) {
          {
            const encoder = getBaseEncoder(type);
            if (encoder) {
              return callback(type, value);
            }
          }
          const match = type.match(/^(.*)(\x5b(\d*)\x5d)$/);
          if (match) {
            const subtype = match[1];
            const length = parseInt(match[3]);
            if (length >= 0 && value.length !== length) {
              logger.throwArgumentError("array length mismatch; expected length ${ arrayLength }", "value", value);
            }
            return value.map((v => this._visit(subtype, v, callback)));
          }
          const fields = this.types[type];
          if (fields) {
            return fields.reduce(((accum, {name, type}) => {
              accum[name] = this._visit(type, value[name], callback);
              return accum;
            }), {});
          }
          return logger.throwArgumentError(`unknown type: ${type}`, "type", type);
        }
        visit(value, callback) {
          return this._visit(this.primaryType, value, callback);
        }
        static from(types) {
          return new TypedDataEncoder(types);
        }
        static getPrimaryType(types) {
          return TypedDataEncoder.from(types).primaryType;
        }
        static hashStruct(name, types, value) {
          return TypedDataEncoder.from(types).hashStruct(name, value);
        }
        static hashDomain(domain) {
          const domainFields = [];
          for (const name in domain) {
            const type = domainFieldTypes[name];
            if (!type) {
              logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, "domain", domain);
            }
            domainFields.push({
              name,
              type
            });
          }
          domainFields.sort(((a, b) => domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name)));
          return TypedDataEncoder.hashStruct("EIP712Domain", {
            EIP712Domain: domainFields
          }, domain);
        }
        static encode(domain, types, value) {
          return (0, bytes_1.hexConcat)([ "0x1901", TypedDataEncoder.hashDomain(domain), TypedDataEncoder.from(types).hash(value) ]);
        }
        static hash(domain, types, value) {
          return (0, keccak256_1.keccak256)(TypedDataEncoder.encode(domain, types, value));
        }
        static async resolveNames(domain, types, value, resolveName) {
          domain = (0, properties_1.shallowCopy)(domain);
          const ensCache = {};
          if (domain.verifyingContract && !(0, bytes_1.isHexString)(domain.verifyingContract, 32)) {
            ensCache[domain.verifyingContract] = "0x";
          }
          const encoder = TypedDataEncoder.from(types);
          encoder.visit(value, ((type, value) => {
            if (type === "address" && !(0, bytes_1.isHexString)(value, 32)) {
              ensCache[value] = "0x";
            }
            return value;
          }));
          for (const name in ensCache) {
            ensCache[name] = await resolveName(name);
          }
          if (domain.verifyingContract && ensCache[domain.verifyingContract]) {
            domain.verifyingContract = ensCache[domain.verifyingContract];
          }
          value = encoder.visit(value, ((type, value) => {
            if (type === "address" && ensCache[value]) {
              return ensCache[value];
            }
            return value;
          }));
          return {
            domain,
            value
          };
        }
        static getPayload(domain, types, value) {
          TypedDataEncoder.hashDomain(domain);
          const domainValues = {};
          const domainTypes = [];
          domainFieldNames.forEach((name => {
            const value = domain[name];
            if (value == null) {
              return;
            }
            domainValues[name] = domainChecks[name](value);
            domainTypes.push({
              name,
              type: domainFieldTypes[name]
            });
          }));
          const encoder = TypedDataEncoder.from(types);
          const typesWithDomain = (0, properties_1.shallowCopy)(types);
          if (typesWithDomain.EIP712Domain) {
            logger.throwArgumentError("types must not contain EIP712Domain type", "types.EIP712Domain", types);
          } else {
            typesWithDomain.EIP712Domain = domainTypes;
          }
          encoder.encode(value);
          return {
            types: typesWithDomain,
            domain: domainValues,
            primaryType: encoder.primaryType,
            message: encoder.visit(value, ((type, value) => {
              if (type.match(/^bytes(\d*)/)) {
                return (0, bytes_1.hexlify)((0, bytes_1.arrayify)(value));
              }
              if (type.match(/^u?int/)) {
                return bignumber_1.BigNumber.from(value).toString();
              }
              switch (type) {
               case "address":
                return value.toLowerCase();

               case "bool":
                return !!value;

               case "string":
                if (typeof value !== "string") {
                  logger.throwArgumentError(`invalid string`, "value", value);
                }
                return value;
              }
              return logger.throwArgumentError("unsupported type", "type", type);
            }))
          };
        }
      }
      exports.TypedDataEncoder = TypedDataEncoder;
    },
    1613(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "json-wallets/5.7.4";
    },
    3550(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.CrowdsaleAccount = void 0;
      exports.decrypt = decrypt;
      const aes_js_1 = __importDefault(__webpack_require__(3836));
      const address_1 = __webpack_require__(171);
      const bytes_1 = __webpack_require__(8380);
      const keccak256_1 = __webpack_require__(1136);
      const pbkdf2_1 = __webpack_require__(1504);
      const strings_1 = __webpack_require__(2509);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1613);
      const logger = new logger_1.Logger(_version_1.version);
      const utils_1 = __webpack_require__(1577);
      class CrowdsaleAccount extends properties_1.Description {
        isCrowdsaleAccount(value) {
          return !!(value && value._isCrowdsaleAccount);
        }
      }
      exports.CrowdsaleAccount = CrowdsaleAccount;
      function decrypt(json, password) {
        throw new Error("Decryption of crowdsale account not yet implemented");
      }
    },
    3120(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getJsonWalletAddress = exports.isKeystoreWallet = exports.isCrowdsaleWallet = exports.encryptKeystore = exports.decryptKeystoreSync = exports.decryptKeystore = exports.decryptCrowdsale = void 0;
      exports.decryptJsonWallet = decryptJsonWallet;
      exports.decryptJsonWalletSync = decryptJsonWalletSync;
      const crowdsale_1 = __webpack_require__(3550);
      Object.defineProperty(exports, "decryptCrowdsale", {
        enumerable: true,
        get: function() {
          return crowdsale_1.decrypt;
        }
      });
      const inspect_1 = __webpack_require__(6788);
      Object.defineProperty(exports, "getJsonWalletAddress", {
        enumerable: true,
        get: function() {
          return inspect_1.getJsonWalletAddress;
        }
      });
      Object.defineProperty(exports, "isCrowdsaleWallet", {
        enumerable: true,
        get: function() {
          return inspect_1.isCrowdsaleWallet;
        }
      });
      Object.defineProperty(exports, "isKeystoreWallet", {
        enumerable: true,
        get: function() {
          return inspect_1.isKeystoreWallet;
        }
      });
      const keystore_1 = __webpack_require__(7102);
      Object.defineProperty(exports, "decryptKeystore", {
        enumerable: true,
        get: function() {
          return keystore_1.decrypt;
        }
      });
      Object.defineProperty(exports, "decryptKeystoreSync", {
        enumerable: true,
        get: function() {
          return keystore_1.decryptSync;
        }
      });
      Object.defineProperty(exports, "encryptKeystore", {
        enumerable: true,
        get: function() {
          return keystore_1.encrypt;
        }
      });
      function decryptJsonWallet(json, password, progressCallback) {
        if ((0, inspect_1.isCrowdsaleWallet)(json)) {
          if (progressCallback) {
            progressCallback(0);
          }
          const account = (0, crowdsale_1.decrypt)(json, password);
          if (progressCallback) {
            progressCallback(1);
          }
          return Promise.resolve(account);
        }
        if ((0, inspect_1.isKeystoreWallet)(json)) {
          return (0, keystore_1.decrypt)(json, password, progressCallback);
        }
        return Promise.reject(new Error("invalid JSON wallet"));
      }
      function decryptJsonWalletSync(json, password) {
        if ((0, inspect_1.isCrowdsaleWallet)(json)) {
          return (0, crowdsale_1.decrypt)(json, password);
        }
        if ((0, inspect_1.isKeystoreWallet)(json)) {
          return (0, keystore_1.decryptSync)(json, password);
        }
        throw new Error("invalid JSON wallet");
      }
    },
    6788(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.isCrowdsaleWallet = isCrowdsaleWallet;
      exports.isKeystoreWallet = isKeystoreWallet;
      exports.getJsonWalletAddress = getJsonWalletAddress;
      const address_1 = __webpack_require__(171);
      function isCrowdsaleWallet(json) {
        let data = null;
        try {
          data = JSON.parse(json);
        } catch (error) {
          return false;
        }
        return data.encseed && data.ethaddr;
      }
      function isKeystoreWallet(json) {
        let data = null;
        try {
          data = JSON.parse(json);
        } catch (error) {
          return false;
        }
        if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {
          return false;
        }
        return true;
      }
      function getJsonWalletAddress(json) {
        if (isCrowdsaleWallet(json)) {
          try {
            return (0, address_1.getAddress)(JSON.parse(json).ethaddr);
          } catch (error) {
            return null;
          }
        }
        if (isKeystoreWallet(json)) {
          try {
            return (0, address_1.getAddress)(JSON.parse(json).address);
          } catch (error) {
            return null;
          }
        }
        return null;
      }
    },
    7102(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.KeystoreAccount = void 0;
      exports.decryptSync = decryptSync;
      exports.decrypt = decrypt;
      exports.encrypt = encrypt;
      const aes_js_1 = __importDefault(__webpack_require__(3836));
      const scrypt_js_1 = __importDefault(__webpack_require__(9983));
      const address_1 = __webpack_require__(171);
      const bytes_1 = __webpack_require__(8380);
      const keccak256_1 = __webpack_require__(1136);
      const strings_1 = __webpack_require__(2509);
      const pbkdf2_1 = __webpack_require__(1504);
      const random_1 = __webpack_require__(590);
      const properties_1 = __webpack_require__(1476);
      const transactions_1 = __webpack_require__(3776);
      const signing_key_1 = __webpack_require__(2494);
      const utils_1 = __webpack_require__(1577);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1613);
      const logger = new logger_1.Logger(_version_1.version);
      class KeystoreAccount extends properties_1.Description {
        isKeystoreAccount(value) {
          return !!(value && value._isKeystoreAccount);
        }
      }
      exports.KeystoreAccount = KeystoreAccount;
      function hasMnemonic(value) {
        const mnemonic = value.mnemonic;
        return mnemonic;
      }
      function _decrypt(data, key, ciphertext) {
        const cipher = (0, utils_1.searchPath)(data, "crypto/cipher");
        if (cipher === "aes-128-ctr") {
          const iv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/cipherparams/iv"));
          const counter = new aes_js_1.default.Counter(iv);
          const aesCtr = new aes_js_1.default.ModeOfOperation.ctr(key, counter);
          return (0, bytes_1.arrayify)(aesCtr.decrypt(ciphertext));
        }
        return null;
      }
      function _getAccount(data, key) {
        const ciphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/ciphertext"));
        const computedMAC = (0, bytes_1.hexlify)((0, keccak256_1.keccak256)((0, bytes_1.concat)([ key.slice(16, 32), ciphertext ]))).substring(2);
        if (computedMAC !== (0, utils_1.searchPath)(data, "crypto/mac").toLowerCase()) {
          throw new Error("invalid password");
        }
        const keysArray = _decrypt(data, key.slice(0, 16), ciphertext);
        if (!keysArray) {
          logger.throwError("unsupported cipher", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "decrypt"
          });
        }
        const privateKey = (0, bytes_1.hexlify)(keysArray.slice(0, 2800));
        const publickey = (0, bytes_1.hexlify)(keysArray.slice(2800));
        const mnemonicKey = key.slice(32, 64);
        const address = (0, address_1.getAddress)((0, transactions_1.computeAddress)(publickey));
        const account = {
          _isKeystoreAccount: true,
          address,
          privateKey,
          publicKey: publickey
        };
        if ((0, utils_1.searchPath)(data, "x-qethers/version") === "0.1") {
          const mnemonicCiphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-qethers/mnemonicCiphertext"));
          const mnemonicIv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-qethers/mnemonicCounter"));
          const mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv);
          const mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);
          const mnemonic = (0, strings_1.toUtf8String)(mnemonicAesCtr.decrypt(mnemonicCiphertext));
          account.mnemonic = mnemonic;
        }
        return new KeystoreAccount(account);
      }
      function pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc) {
        return (0, bytes_1.arrayify)((0, pbkdf2_1.pbkdf2)(passwordBytes, salt, count, dkLen, prfFunc));
      }
      function pbkdf2(passwordBytes, salt, count, dkLen, prfFunc) {
        return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));
      }
      function _computeKdfKey(data, password, pbkdf2Func, scryptFunc, progressCallback) {
        const passwordBytes = (0, utils_1.getPassword)(password);
        const kdf = (0, utils_1.searchPath)(data, "crypto/kdf");
        if (kdf && typeof kdf === "string") {
          const throwError = function(name, value) {
            return logger.throwArgumentError("invalid key-derivation function parameters", name, value);
          };
          if (kdf.toLowerCase() === "scrypt") {
            const salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt"));
            const N = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/n"));
            const r = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/r"));
            const p = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/p"));
            if (!N || !r || !p) {
              throwError("kdf", kdf);
            }
            if ((N & N - 1) !== 0) {
              throwError("N", N);
            }
            const dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen"));
            if (dkLen !== 32) {
              throwError("dklen", dkLen);
            }
            return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);
          } else if (kdf.toLowerCase() === "pbkdf2") {
            const salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt"));
            let prfFunc = null;
            const prf = (0, utils_1.searchPath)(data, "crypto/kdfparams/prf");
            if (prf === "hmac-sha256") {
              prfFunc = "sha256";
            } else if (prf === "hmac-sha512") {
              prfFunc = "sha512";
            } else {
              throwError("prf", prf);
            }
            const count = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/c"));
            const dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen"));
            if (dkLen !== 32) {
              throwError("dklen", dkLen);
            }
            return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);
          }
        }
        return logger.throwArgumentError("unsupported key-derivation function", "kdf", kdf);
      }
      function decryptSync(json, password) {
        const data = JSON.parse(json);
        const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt_js_1.default.syncScrypt);
        return _getAccount(data, key);
      }
      async function decrypt(json, password, progressCallback) {
        const data = JSON.parse(json);
        const key = await _computeKdfKey(data, password, pbkdf2, scrypt_js_1.default.scrypt, progressCallback);
        return _getAccount(data, key);
      }
      async function encrypt(account, password, options, progressCallback) {
        try {
          if (account.address !== (0, address_1.getAddress)((0, transactions_1.computeAddress)(account.publicKey))) {
            throw new Error("address/publicKey mismatch");
          }
          if (hasMnemonic(account)) {
            const key = await signing_key_1.SigningKey.generateFromMnemonics(account.mnemonic);
            if (account.privateKey !== key.privateKey) {
              throw new Error("mnemonic/privateKey mismatch");
            }
            if (account.publicKey !== key.publicKey) {
              throw new Error("mnemonic/publicKey mismatch");
            }
          }
        } catch (e) {
          return Promise.reject(e);
        }
        if (typeof options === "function" && !progressCallback) {
          options = {};
        }
        if (!options) {
          options = {};
        }
        const privateKey = (0, bytes_1.arrayify)(account.privateKey);
        const publicKey = (0, bytes_1.arrayify)(account.publicKey);
        const keysArray = new Uint8Array(privateKey.length + publicKey.length);
        keysArray.set(privateKey, 0);
        keysArray.set(publicKey, privateKey.length);
        const passwordBytes = (0, utils_1.getPassword)(password);
        let client = options.client;
        if (!client) {
          client = "qethers.js";
        }
        let salt = null;
        if (options.salt) {
          salt = (0, bytes_1.arrayify)(options.salt);
        } else {
          salt = (0, random_1.randomBytes)(32);
        }
        let iv = null;
        if (options.iv) {
          iv = (0, bytes_1.arrayify)(options.iv);
          if (iv.length !== 16) {
            throw new Error("invalid iv");
          }
        } else {
          iv = (0, random_1.randomBytes)(16);
        }
        let uuidRandom = null;
        if (options.uuid) {
          uuidRandom = (0, bytes_1.arrayify)(options.uuid);
          if (uuidRandom.length !== 16) {
            throw new Error("invalid uuid");
          }
        } else {
          uuidRandom = (0, random_1.randomBytes)(16);
        }
        let N = 1 << 17, r = 8, p = 1;
        if (options.scrypt) {
          if (options.scrypt.N) {
            N = options.scrypt.N;
          }
          if (options.scrypt.r) {
            r = options.scrypt.r;
          }
          if (options.scrypt.p) {
            p = options.scrypt.p;
          }
        }
        return scrypt_js_1.default.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key => {
          key = (0, bytes_1.arrayify)(key);
          const derivedKey = key.slice(0, 16);
          const macPrefix = key.slice(16, 32);
          const mnemonicKey = key.slice(32, 64);
          const counter = new aes_js_1.default.Counter(iv);
          const aesCtr = new aes_js_1.default.ModeOfOperation.ctr(derivedKey, counter);
          const ciphertext = (0, bytes_1.arrayify)(aesCtr.encrypt(keysArray));
          const mac = (0, keccak256_1.keccak256)((0, bytes_1.concat)([ macPrefix, ciphertext ]));
          const data = {
            id: (0, utils_1.uuidV4)(uuidRandom),
            version: 3,
            crypto: {
              cipher: "aes-128-ctr",
              cipherparams: {
                iv: (0, bytes_1.hexlify)(iv).substring(2)
              },
              ciphertext: (0, bytes_1.hexlify)(ciphertext).substring(2),
              kdf: "scrypt",
              kdfparams: {
                salt: (0, bytes_1.hexlify)(salt).substring(2),
                n: N,
                dklen: 32,
                p,
                r
              },
              mac: mac.substring(2)
            }
          };
          if (hasMnemonic(account)) {
            const mnemonicIv = (0, random_1.randomBytes)(16);
            const mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv);
            const mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);
            const mnemonicCiphertext = (0, bytes_1.arrayify)(mnemonicAesCtr.encrypt((0, strings_1.toUtf8Bytes)(account.mnemonic)));
            const now = new Date;
            const timestamp = now.getUTCFullYear() + "-" + (0, utils_1.zpad)(now.getUTCMonth() + 1, 2) + "-" + (0, 
            utils_1.zpad)(now.getUTCDate(), 2) + "T" + (0, utils_1.zpad)(now.getUTCHours(), 2) + "-" + (0, 
            utils_1.zpad)(now.getUTCMinutes(), 2) + "-" + (0, utils_1.zpad)(now.getUTCSeconds(), 2) + ".0Z";
            data["x-qethers"] = {
              client,
              gethFilename: "UTC--" + timestamp + "--" + data.address,
              mnemonicCounter: (0, bytes_1.hexlify)(mnemonicIv).substring(2),
              mnemonicCiphertext: (0, bytes_1.hexlify)(mnemonicCiphertext).substring(2),
              version: "0.1"
            };
          }
          return JSON.stringify(data);
        }));
      }
    },
    1577(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.looseArrayify = looseArrayify;
      exports.zpad = zpad;
      exports.getPassword = getPassword;
      exports.searchPath = searchPath;
      exports.uuidV4 = uuidV4;
      const bytes_1 = __webpack_require__(8380);
      const strings_1 = __webpack_require__(2509);
      function looseArrayify(hexString) {
        if (typeof hexString === "string" && hexString.substring(0, 2) !== "0x") {
          hexString = "0x" + hexString;
        }
        return (0, bytes_1.arrayify)(hexString);
      }
      function zpad(value, length) {
        value = String(value);
        while (value.length < length) {
          value = "0" + value;
        }
        return value;
      }
      function getPassword(password) {
        if (typeof password === "string") {
          return (0, strings_1.toUtf8Bytes)(password, strings_1.UnicodeNormalizationForm.NFKC);
        }
        return (0, bytes_1.arrayify)(password);
      }
      function searchPath(object, path) {
        let currentChild = object;
        const comps = path.toLowerCase().split("/");
        for (let i = 0; i < comps.length; i++) {
          let matchingChild = null;
          for (const key in currentChild) {
            if (key.toLowerCase() === comps[i]) {
              matchingChild = currentChild[key];
              break;
            }
          }
          if (matchingChild === null) {
            return null;
          }
          currentChild = matchingChild;
        }
        return currentChild;
      }
      function uuidV4(randomBytes) {
        const bytes = (0, bytes_1.arrayify)(randomBytes);
        bytes[6] = bytes[6] & 15 | 64;
        bytes[8] = bytes[8] & 63 | 128;
        const value = (0, bytes_1.hexlify)(bytes);
        return [ value.substring(2, 10), value.substring(10, 14), value.substring(14, 18), value.substring(18, 22), value.substring(22, 34) ].join("-");
      }
    },
    1136(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.keccak256 = keccak256;
      const js_sha3_1 = __importDefault(__webpack_require__(1176));
      const bytes_1 = __webpack_require__(8380);
      function keccak256(data) {
        return "0x" + js_sha3_1.default.keccak_256((0, bytes_1.arrayify)(data));
      }
    },
    4146(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "logger/5.7.1";
    },
    5289(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Logger = exports.ErrorCode = exports.LogLevel = void 0;
      let _permanentCensorErrors = false;
      let _censorErrors = false;
      const LogLevels = {
        debug: 1,
        default: 2,
        info: 2,
        warning: 3,
        error: 4,
        off: 5
      };
      let _logLevel = LogLevels["default"];
      const _version_1 = __webpack_require__(4146);
      let _globalLogger = null;
      function _checkNormalize() {
        try {
          const missing = [];
          [ "NFD", "NFC", "NFKD", "NFKC" ].forEach((form => {
            try {
              if ("test".normalize(form) !== "test") {
                throw new Error("bad normalize");
              }
            } catch (error) {
              missing.push(form);
            }
          }));
          if (missing.length) {
            throw new Error("missing " + missing.join(", "));
          }
          if (String.fromCharCode(233).normalize("NFD") !== String.fromCharCode(101, 769)) {
            throw new Error("broken implementation");
          }
        } catch (error) {
          return error.message;
        }
        return null;
      }
      const _normalizeError = _checkNormalize();
      var LogLevel;
      (function(LogLevel) {
        LogLevel["DEBUG"] = "DEBUG";
        LogLevel["INFO"] = "INFO";
        LogLevel["WARNING"] = "WARNING";
        LogLevel["ERROR"] = "ERROR";
        LogLevel["OFF"] = "OFF";
      })(LogLevel || (exports.LogLevel = LogLevel = {}));
      var ErrorCode;
      (function(ErrorCode) {
        ErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
        ErrorCode["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
        ErrorCode["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
        ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
        ErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
        ErrorCode["TIMEOUT"] = "TIMEOUT";
        ErrorCode["BUFFER_OVERRUN"] = "BUFFER_OVERRUN";
        ErrorCode["NUMERIC_FAULT"] = "NUMERIC_FAULT";
        ErrorCode["MISSING_NEW"] = "MISSING_NEW";
        ErrorCode["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
        ErrorCode["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
        ErrorCode["UNEXPECTED_ARGUMENT"] = "UNEXPECTED_ARGUMENT";
        ErrorCode["CALL_EXCEPTION"] = "CALL_EXCEPTION";
        ErrorCode["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
        ErrorCode["NONCE_EXPIRED"] = "NONCE_EXPIRED";
        ErrorCode["REPLACEMENT_UNDERPRICED"] = "REPLACEMENT_UNDERPRICED";
        ErrorCode["UNPREDICTABLE_GAS_LIMIT"] = "UNPREDICTABLE_GAS_LIMIT";
        ErrorCode["TRANSACTION_REPLACED"] = "TRANSACTION_REPLACED";
        ErrorCode["ACTION_REJECTED"] = "ACTION_REJECTED";
      })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
      const HEX = "0123456789abcdef";
      class Logger {
        constructor(version) {
          Object.defineProperty(this, "version", {
            enumerable: true,
            value: version,
            writable: false
          });
        }
        _log(logLevel, args) {
          const level = logLevel.toLowerCase();
          if (LogLevels[level] == null) {
            this.throwArgumentError("invalid log level name", "logLevel", logLevel);
          }
          if (_logLevel > LogLevels[level]) {
            return;
          }
          console.log.apply(console, args);
        }
        debug(...args) {
          this._log(Logger.levels.DEBUG, args);
        }
        info(...args) {
          this._log(Logger.levels.INFO, args);
        }
        warn(...args) {
          this._log(Logger.levels.WARNING, args);
        }
        makeError(message, code, params) {
          if (_censorErrors) {
            return this.makeError("censored error", code, {});
          }
          if (!code) {
            code = Logger.errors.UNKNOWN_ERROR;
          }
          if (!params) {
            params = {};
          }
          const messageDetails = [];
          Object.keys(params).forEach((key => {
            const value = params[key];
            try {
              if (value instanceof Uint8Array) {
                let hex = "";
                for (let i = 0; i < value.length; i++) {
                  hex += HEX[value[i] >> 4];
                  hex += HEX[value[i] & 15];
                }
                messageDetails.push(key + "=Uint8Array(0x" + hex + ")");
              } else {
                messageDetails.push(key + "=" + JSON.stringify(value));
              }
            } catch (error) {
              messageDetails.push(key + "=" + JSON.stringify(params[key].toString()));
            }
          }));
          messageDetails.push(`code=${code}`);
          messageDetails.push(`version=${this.version}`);
          const reason = message;
          let url = "";
          switch (code) {
           case ErrorCode.NUMERIC_FAULT:
            {
              url = "NUMERIC_FAULT";
              const fault = message;
              switch (fault) {
               case "overflow":
               case "underflow":
               case "division-by-zero":
                url += "-" + fault;
                break;

               case "negative-power":
               case "negative-width":
                url += "-unsupported";
                break;

               case "unbound-bitwise-result":
                url += "-unbound-result";
                break;
              }
              break;
            }

           case ErrorCode.CALL_EXCEPTION:
           case ErrorCode.INSUFFICIENT_FUNDS:
           case ErrorCode.MISSING_NEW:
           case ErrorCode.NONCE_EXPIRED:
           case ErrorCode.REPLACEMENT_UNDERPRICED:
           case ErrorCode.TRANSACTION_REPLACED:
           case ErrorCode.UNPREDICTABLE_GAS_LIMIT:
            url = code;
            break;
          }
          if (url) {
            message += " [ See: https://links.ethers.org/v5-errors-" + url + " ]";
          }
          if (messageDetails.length) {
            message += " (" + messageDetails.join(", ") + ")";
          }
          const error = new Error(message);
          error.reason = reason;
          error.code = code;
          Object.keys(params).forEach((function(key) {
            error[key] = params[key];
          }));
          return error;
        }
        throwError(message, code, params) {
          throw this.makeError(message, code, params);
        }
        throwArgumentError(message, name, value) {
          return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {
            argument: name,
            value
          });
        }
        assert(condition, message, code, params) {
          if (!!condition) {
            return;
          }
          this.throwError(message, code, params);
        }
        assertArgument(condition, message, name, value) {
          if (!!condition) {
            return;
          }
          this.throwArgumentError(message, name, value);
        }
        checkNormalize(message) {
          if (message == null) {
            message = "platform missing String.prototype.normalize";
          }
          if (_normalizeError) {
            this.throwError("platform missing String.prototype.normalize", Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "String.prototype.normalize",
              form: _normalizeError
            });
          }
        }
        checkSafeUint53(value, message) {
          if (typeof value !== "number") {
            return;
          }
          if (message == null) {
            message = "value not safe";
          }
          if (value < 0 || value >= 9007199254740991) {
            this.throwError(message, Logger.errors.NUMERIC_FAULT, {
              operation: "checkSafeInteger",
              fault: "out-of-safe-range",
              value
            });
          }
          if (value % 1) {
            this.throwError(message, Logger.errors.NUMERIC_FAULT, {
              operation: "checkSafeInteger",
              fault: "non-integer",
              value
            });
          }
        }
        checkArgumentCount(count, expectedCount, message) {
          if (message) {
            message = ": " + message;
          } else {
            message = "";
          }
          if (count < expectedCount) {
            this.throwError("missing argument" + message, Logger.errors.MISSING_ARGUMENT, {
              count,
              expectedCount
            });
          }
          if (count > expectedCount) {
            this.throwError("too many arguments" + message, Logger.errors.UNEXPECTED_ARGUMENT, {
              count,
              expectedCount
            });
          }
        }
        checkNew(target, kind) {
          if (target === Object || target == null) {
            this.throwError("missing new", Logger.errors.MISSING_NEW, {
              name: kind.name
            });
          }
        }
        checkAbstract(target, kind) {
          if (target === kind) {
            this.throwError("cannot instantiate abstract class " + JSON.stringify(kind.name) + " directly; use a sub-class", Logger.errors.UNSUPPORTED_OPERATION, {
              name: target.name,
              operation: "new"
            });
          } else if (target === Object || target == null) {
            this.throwError("missing new", Logger.errors.MISSING_NEW, {
              name: kind.name
            });
          }
        }
        static globalLogger() {
          if (!_globalLogger) {
            _globalLogger = new Logger(_version_1.version);
          }
          return _globalLogger;
        }
        static setCensorship(censorship, permanent) {
          if (!censorship && permanent) {
            this.globalLogger().throwError("cannot permanently disable censorship", Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "setCensorship"
            });
          }
          if (_permanentCensorErrors) {
            if (!censorship) {
              return;
            }
            this.globalLogger().throwError("error censorship permanent", Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "setCensorship"
            });
          }
          _censorErrors = !!censorship;
          _permanentCensorErrors = !!permanent;
        }
        static setLogLevel(logLevel) {
          const level = LogLevels[logLevel.toLowerCase()];
          if (level == null) {
            Logger.globalLogger().warn("invalid log level - " + logLevel);
            return;
          }
          _logLevel = level;
        }
        static from(version) {
          return new Logger(version);
        }
      }
      exports.Logger = Logger;
      Logger.errors = ErrorCode;
      Logger.levels = LogLevel;
    },
    3763(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "networks/5.8.0";
    },
    2510(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getNetwork = void 0;
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(3763);
      const logger = new logger_1.Logger(_version_1.version);
      function isRenetworkable(value) {
        return value && typeof value.renetwork === "function";
      }
      const defaultRpcUrls = {
        zeus: "https://zeus.rpc.quantumevm.com/",
        poseidon: "https://poseidon.rpc.quantumevm.com/"
      };
      function qevmDefaultProvider(network) {
        const func = function(providers, options) {
          if (options == null) {
            options = {};
          }
          const providerList = [];
          if (providers.BlockscoutProvider && options.blockscout !== "-") {
            try {
              providerList.push(new providers.BlockscoutProvider(network, options.blockscout));
            } catch (error) {}
          }
          if (providerList.length === 0 && providers.JsonRpcProvider) {
            const networkName = typeof network === "string" ? network : network.name;
            const rpcUrl = options && options.rpc || defaultRpcUrls[networkName] || "http://localhost:8545";
            try {
              providerList.push(new providers.JsonRpcProvider(rpcUrl));
            } catch (error) {}
          }
          if (providerList.length === 0) {
            return null;
          }
          if (providers.FallbackProvider) {
            let quorum = 1;
            if (options.quorum != null) {
              quorum = options.quorum;
            } else if (network === "mainnet") {
              quorum = 1;
            }
            return new providers.FallbackProvider(providerList, quorum);
          }
          return providerList[0];
        };
        func.renetwork = function(network) {
          return qevmDefaultProvider(network);
        };
        return func;
      }
      const zeus = {
        chainId: 256,
        ensAddress: "0x0000000000000000000000000000000000000000000000000000000000000000",
        name: "zeus",
        _defaultProvider: qevmDefaultProvider("zeus")
      };
      const poseidon = {
        chainId: 257,
        ensAddress: "0x0000000000000000000000000000000000000000000000000000000000000000",
        name: "poseidon",
        _defaultProvider: qevmDefaultProvider("poseidon")
      };
      const networks = {
        unspecified: {
          chainId: 0,
          name: "unspecified"
        },
        zeus,
        mainnet: zeus,
        poseidon,
        testnet: poseidon
      };
      function getNetwork(network) {
        if (network == null) {
          return null;
        }
        if (typeof network === "number") {
          for (const name in networks) {
            const standard = networks[name];
            if (standard.chainId === network) {
              return {
                name: standard.name,
                chainId: standard.chainId,
                ensAddress: standard.ensAddress || null,
                _defaultProvider: standard._defaultProvider || null
              };
            }
          }
          return {
            chainId: network,
            name: "unknown"
          };
        }
        if (typeof network === "string") {
          const standard = networks[network];
          if (standard == null) {
            return null;
          }
          return {
            name: standard.name,
            chainId: standard.chainId,
            ensAddress: standard.ensAddress,
            _defaultProvider: standard._defaultProvider || null
          };
        }
        const standard = networks[network.name];
        if (!standard) {
          if (typeof network.chainId !== "number") {
            logger.throwArgumentError("invalid network chainId", "network", network);
          }
          return network;
        }
        if (network.chainId !== 0 && network.chainId !== standard.chainId) {
          logger.throwArgumentError("network chainId mismatch", "network", network);
        }
        let defaultProvider = network._defaultProvider || null;
        if (defaultProvider == null && standard._defaultProvider) {
          if (isRenetworkable(standard._defaultProvider)) {
            defaultProvider = standard._defaultProvider.renetwork(network);
          } else {
            defaultProvider = standard._defaultProvider;
          }
        }
        return {
          name: network.name,
          chainId: standard.chainId,
          ensAddress: network.ensAddress || standard.ensAddress || null,
          _defaultProvider: defaultProvider
        };
      }
      exports.getNetwork = getNetwork;
    },
    7232(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.pbkdf2 = void 0;
      const bytes_1 = __webpack_require__(8380);
      const sha2_1 = __webpack_require__(8417);
      function pbkdf2(password, salt, iterations, keylen, hashAlgorithm) {
        password = (0, bytes_1.arrayify)(password);
        salt = (0, bytes_1.arrayify)(salt);
        let hLen;
        let l = 1;
        const DK = new Uint8Array(keylen);
        const block1 = new Uint8Array(salt.length + 4);
        block1.set(salt);
        let r;
        let T;
        for (let i = 1; i <= l; i++) {
          block1[salt.length] = i >> 24 & 255;
          block1[salt.length + 1] = i >> 16 & 255;
          block1[salt.length + 2] = i >> 8 & 255;
          block1[salt.length + 3] = i & 255;
          let U = (0, bytes_1.arrayify)((0, sha2_1.computeHmac)(hashAlgorithm, password, block1));
          if (!hLen) {
            hLen = U.length;
            T = new Uint8Array(hLen);
            l = Math.ceil(keylen / hLen);
            r = keylen - (l - 1) * hLen;
          }
          T.set(U);
          for (let j = 1; j < iterations; j++) {
            U = (0, bytes_1.arrayify)((0, sha2_1.computeHmac)(hashAlgorithm, password, U));
            for (let k = 0; k < hLen; k++) T[k] ^= U[k];
          }
          const destPos = (i - 1) * hLen;
          const len = i === l ? r : hLen;
          DK.set((0, bytes_1.arrayify)(T).slice(0, len), destPos);
        }
        return (0, bytes_1.hexlify)(DK);
      }
      exports.pbkdf2 = pbkdf2;
    },
    1504(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.pbkdf2 = void 0;
      var pbkdf2_1 = __webpack_require__(7232);
      Object.defineProperty(exports, "pbkdf2", {
        enumerable: true,
        get: function() {
          return pbkdf2_1.pbkdf2;
        }
      });
    },
    6121(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "properties/5.7.1";
    },
    1476(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Description = void 0;
      exports.defineReadOnly = defineReadOnly;
      exports.getStatic = getStatic;
      exports.resolveProperties = resolveProperties;
      exports.checkProperties = checkProperties;
      exports.shallowCopy = shallowCopy;
      exports.deepCopy = deepCopy;
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(6121);
      const logger = new logger_1.Logger(_version_1.version);
      function defineReadOnly(object, name, value) {
        Object.defineProperty(object, name, {
          enumerable: true,
          value,
          writable: false
        });
      }
      function getStatic(ctor, key) {
        for (let i = 0; i < 32; i++) {
          if (ctor[key]) {
            return ctor[key];
          }
          if (!ctor.prototype || typeof ctor.prototype !== "object") {
            break;
          }
          ctor = Object.getPrototypeOf(ctor.prototype).constructor;
        }
        return null;
      }
      async function resolveProperties(object) {
        const promises = Object.keys(object).map((key => {
          const value = object[key];
          return Promise.resolve(value).then((v => ({
            key,
            value: v
          })));
        }));
        const results = await Promise.all(promises);
        return results.reduce(((accum, result) => {
          accum[result.key] = result.value;
          return accum;
        }), {});
      }
      function checkProperties(object, properties) {
        if (!object || typeof object !== "object") {
          logger.throwArgumentError("invalid object", "object", object);
        }
        Object.keys(object).forEach((key => {
          if (!properties[key]) {
            logger.throwArgumentError("invalid object key - " + key, "transaction:" + key, object);
          }
        }));
      }
      function shallowCopy(object) {
        const result = {};
        for (const key in object) {
          result[key] = object[key];
        }
        return result;
      }
      const opaque = {
        bigint: true,
        boolean: true,
        function: true,
        number: true,
        string: true
      };
      function _isFrozen(object) {
        if (object === undefined || object === null || opaque[typeof object]) {
          return true;
        }
        if (Array.isArray(object) || typeof object === "object") {
          if (!Object.isFrozen(object)) {
            return false;
          }
          const keys = Object.keys(object);
          for (let i = 0; i < keys.length; i++) {
            let value = null;
            try {
              value = object[keys[i]];
            } catch (error) {
              continue;
            }
            if (!_isFrozen(value)) {
              return false;
            }
          }
          return true;
        }
        return logger.throwArgumentError(`Cannot deepCopy ${typeof object}`, "object", object);
      }
      function _deepCopy(object) {
        if (_isFrozen(object)) {
          return object;
        }
        if (Array.isArray(object)) {
          return Object.freeze(object.map((item => deepCopy(item))));
        }
        if (typeof object === "object") {
          const result = {};
          for (const key in object) {
            const value = object[key];
            if (value === undefined) {
              continue;
            }
            defineReadOnly(result, key, deepCopy(value));
          }
          return result;
        }
        return logger.throwArgumentError(`Cannot deepCopy ${typeof object}`, "object", object);
      }
      function deepCopy(object) {
        return _deepCopy(object);
      }
      class Description {
        constructor(info) {
          for (const key in info) {
            this[key] = deepCopy(info[key]);
          }
        }
      }
      exports.Description = Description;
    },
    2394(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "providers/1.1.0";
    },
    7408(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.BaseProvider = exports.Resolver = exports.Event = void 0;
      const abstract_provider_1 = __webpack_require__(103);
      const base64_1 = __webpack_require__(8886);
      const basex_1 = __webpack_require__(4160);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const constants_1 = __webpack_require__(846);
      const hash_1 = __webpack_require__(413);
      const networks_1 = __webpack_require__(2510);
      const properties_1 = __webpack_require__(1476);
      const sha2_1 = __webpack_require__(8417);
      const strings_1 = __webpack_require__(2509);
      const web_1 = __webpack_require__(6637);
      const bech32_1 = __importDefault(__webpack_require__(9674));
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      const formatter_1 = __webpack_require__(4915);
      const MAX_CCIP_REDIRECTS = 10;
      function checkTopic(topic) {
        if (topic == null) {
          return "null";
        }
        if ((0, bytes_1.hexDataLength)(topic) !== 32) {
          logger.throwArgumentError("invalid topic", "topic", topic);
        }
        return topic.toLowerCase();
      }
      function serializeTopics(topics) {
        topics = topics.slice();
        while (topics.length > 0 && topics[topics.length - 1] == null) {
          topics.pop();
        }
        return topics.map((topic => {
          if (Array.isArray(topic)) {
            const unique = {};
            topic.forEach((topic => {
              unique[checkTopic(topic)] = true;
            }));
            const sorted = Object.keys(unique);
            sorted.sort();
            return sorted.join("|");
          } else {
            return checkTopic(topic);
          }
        })).join("&");
      }
      function deserializeTopics(data) {
        if (data === "") {
          return [];
        }
        return data.split(/&/g).map((topic => {
          if (topic === "") {
            return [];
          }
          const comps = topic.split("|").map((topic => topic === "null" ? null : topic));
          return comps.length === 1 ? comps[0] : comps;
        }));
      }
      function getEventTag(eventName) {
        if (typeof eventName === "string") {
          eventName = eventName.toLowerCase();
          if ((0, bytes_1.hexDataLength)(eventName) === 32) {
            return "tx:" + eventName;
          }
          if (eventName.indexOf(":") === -1) {
            return eventName;
          }
        } else if (Array.isArray(eventName)) {
          return "filter:*:" + serializeTopics(eventName);
        } else if (abstract_provider_1.ForkEvent.isForkEvent(eventName)) {
          logger.warn("not implemented");
          throw new Error("not implemented");
        } else if (eventName && typeof eventName === "object") {
          return "filter:" + (eventName.address || "*") + ":" + serializeTopics(eventName.topics || []);
        }
        throw new Error("invalid event - " + eventName);
      }
      function getTime() {
        return (new Date).getTime();
      }
      function stall(duration) {
        return new Promise((resolve => {
          setTimeout(resolve, duration);
        }));
      }
      const PollableEvents = [ "block", "network", "pending", "poll" ];
      class Event {
        constructor(tag, listener, once) {
          (0, properties_1.defineReadOnly)(this, "tag", tag);
          (0, properties_1.defineReadOnly)(this, "listener", listener);
          (0, properties_1.defineReadOnly)(this, "once", once);
          this._lastBlockNumber = -2;
          this._inflight = false;
        }
        get event() {
          switch (this.type) {
           case "tx":
            return this.hash;

           case "filter":
            return this.filter;
          }
          return this.tag;
        }
        get type() {
          return this.tag.split(":")[0];
        }
        get hash() {
          const comps = this.tag.split(":");
          if (comps[0] !== "tx") {
            return null;
          }
          return comps[1];
        }
        get filter() {
          const comps = this.tag.split(":");
          if (comps[0] !== "filter") {
            return null;
          }
          const address = comps[1];
          const topics = deserializeTopics(comps[2]);
          const filter = {};
          if (topics.length > 0) {
            filter.topics = topics;
          }
          if (address && address !== "*") {
            filter.address = address;
          }
          return filter;
        }
        pollable() {
          return this.tag.indexOf(":") >= 0 || PollableEvents.indexOf(this.tag) >= 0;
        }
      }
      exports.Event = Event;
      const coinInfos = {
        0: {
          symbol: "btc",
          p2pkh: 0,
          p2sh: 5,
          prefix: "bc"
        },
        2: {
          symbol: "ltc",
          p2pkh: 48,
          p2sh: 50,
          prefix: "ltc"
        },
        3: {
          symbol: "doge",
          p2pkh: 30,
          p2sh: 22
        },
        60: {
          symbol: "eth",
          ilk: "eth"
        },
        61: {
          symbol: "etc",
          ilk: "eth"
        },
        700: {
          symbol: "xdai",
          ilk: "eth"
        }
      };
      function bytes32ify(value) {
        return (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(value).toHexString(), 32);
      }
      function base58Encode(data) {
        return basex_1.Base58.encode((0, bytes_1.concat)([ data, (0, bytes_1.hexDataSlice)((0, 
        sha2_1.sha256)((0, sha2_1.sha256)(data)), 0, 4) ]));
      }
      const matcherIpfs = new RegExp("^(ipfs)://(.*)$", "i");
      const matchers = [ new RegExp("^(https)://(.*)$", "i"), new RegExp("^(data):(.*)$", "i"), matcherIpfs, new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$", "i") ];
      function _parseString(result, start) {
        try {
          return (0, strings_1.toUtf8String)(_parseBytes(result, start));
        } catch (error) {}
        return null;
      }
      function _parseBytes(result, start) {
        if (result === "0x") {
          return null;
        }
        const offset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, start, start + 32)).toNumber();
        const length = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(result, offset, offset + 32)).toNumber();
        return (0, bytes_1.hexDataSlice)(result, offset + 32, offset + 32 + length);
      }
      function getIpfsLink(link) {
        if (link.match(/^ipfs:\/\/ipfs\//i)) {
          link = link.substring(12);
        } else if (link.match(/^ipfs:\/\//i)) {
          link = link.substring(7);
        } else {
          logger.throwArgumentError("unsupported IPFS format", "link", link);
        }
        return `https://gateway.ipfs.io/ipfs/${link}`;
      }
      function numPad(value) {
        const result = (0, bytes_1.arrayify)(value);
        if (result.length > 32) {
          throw new Error("internal; should not happen");
        }
        const padded = new Uint8Array(32);
        padded.set(result, 32 - result.length);
        return padded;
      }
      function bytesPad(value) {
        if (value.length % 32 === 0) {
          return value;
        }
        const result = new Uint8Array(Math.ceil(value.length / 32) * 32);
        result.set(value);
        return result;
      }
      function encodeBytes(datas) {
        const result = [];
        let byteCount = 0;
        for (let i = 0; i < datas.length; i++) {
          result.push(null);
          byteCount += 32;
        }
        for (let i = 0; i < datas.length; i++) {
          const data = (0, bytes_1.arrayify)(datas[i]);
          result[i] = numPad(byteCount);
          result.push(numPad(data.length));
          result.push(bytesPad(data));
          byteCount += 32 + Math.ceil(data.length / 32) * 32;
        }
        return (0, bytes_1.hexConcat)(result);
      }
      class Resolver {
        constructor(provider, address, name, resolvedAddress) {
          (0, properties_1.defineReadOnly)(this, "provider", provider);
          (0, properties_1.defineReadOnly)(this, "name", name);
          (0, properties_1.defineReadOnly)(this, "address", provider.formatter.address(address));
          (0, properties_1.defineReadOnly)(this, "_resolvedAddress", resolvedAddress);
        }
        supportsWildcard() {
          if (!this._supportsEip2544) {
            this._supportsEip2544 = this.provider.call({
              to: this.address,
              data: "0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"
            }).then((result => bignumber_1.BigNumber.from(result).eq(1))).catch((error => {
              if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
                return false;
              }
              this._supportsEip2544 = null;
              throw error;
            }));
          }
          return this._supportsEip2544;
        }
        async _fetch(selector, parameters) {
          const tx = {
            to: this.address,
            ccipReadEnabled: true,
            data: (0, bytes_1.hexConcat)([ selector, (0, hash_1.namehash)(this.name), parameters || "0x" ])
          };
          let parseBytes = false;
          if (await this.supportsWildcard()) {
            parseBytes = true;
            tx.data = (0, bytes_1.hexConcat)([ "0x9061b923", encodeBytes([ (0, hash_1.dnsEncode)(this.name), tx.data ]) ]);
          }
          try {
            let result = await this.provider.call(tx);
            if ((0, bytes_1.arrayify)(result).length % 32 === 4) {
              logger.throwError("resolver threw error", logger_1.Logger.errors.CALL_EXCEPTION, {
                transaction: tx,
                data: result
              });
            }
            if (parseBytes) {
              result = _parseBytes(result, 0);
            }
            return result;
          } catch (error) {
            if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
              return null;
            }
            throw error;
          }
        }
        async _fetchBytes(selector, parameters) {
          const result = await this._fetch(selector, parameters);
          if (result != null) {
            return _parseBytes(result, 0);
          }
          return null;
        }
        _getAddress(coinType, hexBytes) {
          const coinInfo = coinInfos[String(coinType)];
          if (coinInfo == null) {
            logger.throwError(`unsupported coin type: ${coinType}`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: `getAddress(${coinType})`
            });
          }
          if (coinInfo.ilk === "eth") {
            return this.provider.formatter.address(hexBytes);
          }
          const bytes = (0, bytes_1.arrayify)(hexBytes);
          if (coinInfo.p2pkh != null) {
            const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);
            if (p2pkh) {
              const length = parseInt(p2pkh[1], 16);
              if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {
                return base58Encode((0, bytes_1.concat)([ [ coinInfo.p2pkh ], "0x" + p2pkh[2] ]));
              }
            }
          }
          if (coinInfo.p2sh != null) {
            const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);
            if (p2sh) {
              const length = parseInt(p2sh[1], 16);
              if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {
                return base58Encode((0, bytes_1.concat)([ [ coinInfo.p2sh ], "0x" + p2sh[2] ]));
              }
            }
          }
          if (coinInfo.prefix != null) {
            const length = bytes[1];
            let version = bytes[0];
            if (version === 0) {
              if (length !== 20 && length !== 32) {
                version = -1;
              }
            } else {
              version = -1;
            }
            if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {
              const words = bech32_1.default.toWords(bytes.slice(2));
              words.unshift(version);
              return bech32_1.default.encode(coinInfo.prefix, words);
            }
          }
          return null;
        }
        async getAddress(coinType) {
          if (coinType == null) {
            coinType = 60;
          }
          if (coinType === 60) {
            try {
              const result = await this._fetch("0x3b3b57de");
              if (result === "0x" || result === constants_1.HashZero) {
                return null;
              }
              return this.provider.formatter.callAddress(result);
            } catch (error) {
              if (error.code === logger_1.Logger.errors.CALL_EXCEPTION) {
                return null;
              }
              throw error;
            }
          }
          const hexBytes = await this._fetchBytes("0xf1cb7e06", bytes32ify(coinType));
          if (hexBytes == null || hexBytes === "0x") {
            return null;
          }
          const address = this._getAddress(coinType, hexBytes);
          if (address == null) {
            logger.throwError(`invalid or unsupported coin data`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: `getAddress(${coinType})`,
              coinType,
              data: hexBytes
            });
          }
          return address;
        }
        async getAvatar() {
          const linkage = [ {
            type: "name",
            content: this.name
          } ];
          try {
            const avatar = await this.getText("avatar");
            if (avatar == null) {
              return null;
            }
            for (let i = 0; i < matchers.length; i++) {
              const match = avatar.match(matchers[i]);
              if (match == null) {
                continue;
              }
              const scheme = match[1].toLowerCase();
              switch (scheme) {
               case "https":
                linkage.push({
                  type: "url",
                  content: avatar
                });
                return {
                  linkage,
                  url: avatar
                };

               case "data":
                linkage.push({
                  type: "data",
                  content: avatar
                });
                return {
                  linkage,
                  url: avatar
                };

               case "ipfs":
                linkage.push({
                  type: "ipfs",
                  content: avatar
                });
                return {
                  linkage,
                  url: getIpfsLink(avatar)
                };

               case "erc721":
               case "erc1155":
                {
                  const selector = scheme === "erc721" ? "0xc87b56dd" : "0x0e89341c";
                  linkage.push({
                    type: scheme,
                    content: avatar
                  });
                  const owner = this._resolvedAddress || await this.getAddress();
                  const comps = (match[2] || "").split("/");
                  if (comps.length !== 2) {
                    return null;
                  }
                  const addr = await this.provider.formatter.address(comps[0]);
                  const tokenId = (0, bytes_1.hexZeroPad)(bignumber_1.BigNumber.from(comps[1]).toHexString(), 32);
                  if (scheme === "erc721") {
                    const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({
                      to: addr,
                      data: (0, bytes_1.hexConcat)([ "0x6352211e", tokenId ])
                    }));
                    if (owner !== tokenOwner) {
                      return null;
                    }
                    linkage.push({
                      type: "owner",
                      content: tokenOwner
                    });
                  } else if (scheme === "erc1155") {
                    const balance = bignumber_1.BigNumber.from(await this.provider.call({
                      to: addr,
                      data: (0, bytes_1.hexConcat)([ "0x00fdd58e", (0, bytes_1.hexZeroPad)(owner, 32), tokenId ])
                    }));
                    if (balance.isZero()) {
                      return null;
                    }
                    linkage.push({
                      type: "balance",
                      content: balance.toString()
                    });
                  }
                  const tx = {
                    to: this.provider.formatter.address(comps[0]),
                    data: (0, bytes_1.hexConcat)([ selector, tokenId ])
                  };
                  let metadataUrl = _parseString(await this.provider.call(tx), 0);
                  if (metadataUrl == null) {
                    return null;
                  }
                  linkage.push({
                    type: "metadata-url-base",
                    content: metadataUrl
                  });
                  if (scheme === "erc1155") {
                    metadataUrl = metadataUrl.replace("{id}", tokenId.substring(2));
                    linkage.push({
                      type: "metadata-url-expanded",
                      content: metadataUrl
                    });
                  }
                  if (metadataUrl.match(/^ipfs:/i)) {
                    metadataUrl = getIpfsLink(metadataUrl);
                  }
                  linkage.push({
                    type: "metadata-url",
                    content: metadataUrl
                  });
                  const metadata = await (0, web_1.fetchJson)(metadataUrl);
                  if (!metadata) {
                    return null;
                  }
                  linkage.push({
                    type: "metadata",
                    content: JSON.stringify(metadata)
                  });
                  let imageUrl = metadata.image;
                  if (typeof imageUrl !== "string") {
                    return null;
                  }
                  if (imageUrl.match(/^(https:\/\/|data:)/i)) {} else {
                    const ipfs = imageUrl.match(matcherIpfs);
                    if (ipfs == null) {
                      return null;
                    }
                    linkage.push({
                      type: "url-ipfs",
                      content: imageUrl
                    });
                    imageUrl = getIpfsLink(imageUrl);
                  }
                  linkage.push({
                    type: "url",
                    content: imageUrl
                  });
                  return {
                    linkage,
                    url: imageUrl
                  };
                }
              }
            }
          } catch (error) {}
          return null;
        }
        async getContentHash() {
          const hexBytes = await this._fetchBytes("0xbc1c58d1");
          if (hexBytes == null || hexBytes === "0x") {
            return null;
          }
          const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);
          if (ipfs) {
            const length = parseInt(ipfs[3], 16);
            if (ipfs[4].length === length * 2) {
              return "ipfs://" + basex_1.Base58.encode("0x" + ipfs[1]);
            }
          }
          const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);
          if (ipns) {
            const length = parseInt(ipns[3], 16);
            if (ipns[4].length === length * 2) {
              return "ipns://" + basex_1.Base58.encode("0x" + ipns[1]);
            }
          }
          const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/);
          if (swarm) {
            if (swarm[1].length === 32 * 2) {
              return "bzz://" + swarm[1];
            }
          }
          const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);
          if (skynet) {
            if (skynet[1].length === 34 * 2) {
              const urlSafe = {
                "=": "",
                "+": "-",
                "/": "_"
              };
              const hash = (0, base64_1.encode)("0x" + skynet[1]).replace(/[=+\/]/g, (a => urlSafe[a]));
              return "sia://" + hash;
            }
          }
          return logger.throwError(`invalid or unsupported content hash data`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "getContentHash()",
            data: hexBytes
          });
        }
        async getText(key) {
          let keyBytes = (0, strings_1.toUtf8Bytes)(key);
          keyBytes = (0, bytes_1.concat)([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);
          if (keyBytes.length % 32 !== 0) {
            keyBytes = (0, bytes_1.concat)([ keyBytes, (0, bytes_1.hexZeroPad)("0x", 32 - key.length % 32) ]);
          }
          const hexBytes = await this._fetchBytes("0x59d1d43c", (0, bytes_1.hexlify)(keyBytes));
          if (hexBytes == null || hexBytes === "0x") {
            return null;
          }
          return (0, strings_1.toUtf8String)(hexBytes);
        }
      }
      exports.Resolver = Resolver;
      let defaultFormatter = null;
      let nextPollId = 1;
      class BaseProvider extends abstract_provider_1.Provider {
        constructor(network) {
          super();
          this._events = [];
          this._emitted = {
            block: -2
          };
          this.disableCcipRead = false;
          this.formatter = new.target.getFormatter();
          (0, properties_1.defineReadOnly)(this, "anyNetwork", network === "any");
          if (this.anyNetwork) {
            network = this.detectNetwork();
          }
          if (network instanceof Promise) {
            this._networkPromise = network;
            network.catch((error => {}));
            this._ready().catch((error => {}));
          } else {
            const knownNetwork = (0, properties_1.getStatic)(new.target, "getNetwork")(network);
            if (knownNetwork) {
              (0, properties_1.defineReadOnly)(this, "_network", knownNetwork);
              this.emit("network", knownNetwork, null);
            } else {
              logger.throwArgumentError("invalid network", "network", network);
            }
          }
          this._maxInternalBlockNumber = -1024;
          this._lastBlockNumber = -2;
          this._maxFilterBlockRange = 10;
          this._pollingInterval = 4e3;
          this._fastQueryDate = 0;
        }
        async _ready() {
          if (this._network == null) {
            let network = null;
            if (this._networkPromise) {
              try {
                network = await this._networkPromise;
              } catch (error) {}
            }
            if (network == null) {
              network = await this.detectNetwork();
            }
            if (!network) {
              logger.throwError("no network detected", logger_1.Logger.errors.UNKNOWN_ERROR, {});
            }
            if (this._network == null) {
              if (this.anyNetwork) {
                this._network = network;
              } else {
                (0, properties_1.defineReadOnly)(this, "_network", network);
              }
              this.emit("network", network, null);
            }
          }
          return this._network;
        }
        get ready() {
          return (0, web_1.poll)((() => this._ready().then((network => network), (error => {
            if (error.code === logger_1.Logger.errors.NETWORK_ERROR && error.event === "noNetwork") {
              return undefined;
            }
            throw error;
          }))));
        }
        static getFormatter() {
          if (defaultFormatter == null) {
            defaultFormatter = new formatter_1.Formatter;
          }
          return defaultFormatter;
        }
        static getNetwork(network) {
          return (0, networks_1.getNetwork)(network == null ? "zeus" : network);
        }
        async ccipReadFetch(tx, calldata, urls) {
          if (this.disableCcipRead || urls.length === 0) {
            return null;
          }
          const sender = tx.to.toLowerCase();
          const data = calldata.toLowerCase();
          const errorMessages = [];
          for (let i = 0; i < urls.length; i++) {
            const url = urls[i];
            const href = url.replace("{sender}", sender).replace("{data}", data);
            const json = url.indexOf("{data}") >= 0 ? null : JSON.stringify({
              data,
              sender
            });
            const result = await (0, web_1.fetchJson)({
              url: href,
              errorPassThrough: true
            }, json, ((value, response) => {
              value.status = response.statusCode;
              return value;
            }));
            if (result.data) {
              return result.data;
            }
            const errorMessage = result.message || "unknown error";
            if (result.status >= 400 && result.status < 500) {
              return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, logger_1.Logger.errors.SERVER_ERROR, {
                url,
                errorMessage
              });
            }
            errorMessages.push(errorMessage);
          }
          return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m => JSON.stringify(m))).join(", ")}`, logger_1.Logger.errors.SERVER_ERROR, {
            urls,
            errorMessages
          });
        }
        async _getInternalBlockNumber(maxAge) {
          await this._ready();
          if (maxAge > 0) {
            while (this._internalBlockNumber) {
              const internalBlockNumber = this._internalBlockNumber;
              try {
                const result = await internalBlockNumber;
                if (getTime() - result.respTime <= maxAge) {
                  return result.blockNumber;
                }
                break;
              } catch (error) {
                if (this._internalBlockNumber === internalBlockNumber) {
                  break;
                }
              }
            }
          }
          const reqTime = getTime();
          const checkInternalBlockNumber = (0, properties_1.resolveProperties)({
            blockNumber: this.perform("getBlockNumber", {}),
            networkError: this.getNetwork().then((network => null), (error => error))
          }).then((({blockNumber, networkError}) => {
            if (networkError) {
              if (this._internalBlockNumber === checkInternalBlockNumber) {
                this._internalBlockNumber = null;
              }
              throw networkError;
            }
            const respTime = getTime();
            blockNumber = bignumber_1.BigNumber.from(blockNumber).toNumber();
            if (blockNumber < this._maxInternalBlockNumber) {
              blockNumber = this._maxInternalBlockNumber;
            }
            this._maxInternalBlockNumber = blockNumber;
            this._setFastBlockNumber(blockNumber);
            return {
              blockNumber,
              reqTime,
              respTime
            };
          }));
          this._internalBlockNumber = checkInternalBlockNumber;
          checkInternalBlockNumber.catch((error => {
            if (this._internalBlockNumber === checkInternalBlockNumber) {
              this._internalBlockNumber = null;
            }
          }));
          return (await checkInternalBlockNumber).blockNumber;
        }
        async poll() {
          const pollId = nextPollId++;
          const runners = [];
          let blockNumber = null;
          try {
            blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);
          } catch (error) {
            this.emit("error", error);
            return;
          }
          this._setFastBlockNumber(blockNumber);
          this.emit("poll", pollId, blockNumber);
          if (blockNumber === this._lastBlockNumber) {
            this.emit("didPoll", pollId);
            return;
          }
          if (this._emitted.block === -2) {
            this._emitted.block = blockNumber - 1;
          }
          if (Math.abs(this._emitted.block - blockNumber) > 1e3) {
            logger.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${blockNumber})`);
            this.emit("error", logger.makeError("network block skew detected", logger_1.Logger.errors.NETWORK_ERROR, {
              blockNumber,
              event: "blockSkew",
              previousBlockNumber: this._emitted.block
            }));
            this.emit("block", blockNumber);
          } else {
            for (let i = this._emitted.block + 1; i <= blockNumber; i++) {
              this.emit("block", i);
            }
          }
          if (this._emitted.block !== blockNumber) {
            this._emitted.block = blockNumber;
            Object.keys(this._emitted).forEach((key => {
              if (key === "block") {
                return;
              }
              const eventBlockNumber = this._emitted[key];
              if (eventBlockNumber === "pending") {
                return;
              }
              if (blockNumber - eventBlockNumber > 12) {
                delete this._emitted[key];
              }
            }));
          }
          if (this._lastBlockNumber === -2) {
            this._lastBlockNumber = blockNumber - 1;
          }
          this._events.forEach((event => {
            switch (event.type) {
             case "tx":
              {
                const hash = event.hash;
                let runner = this.getTransactionReceipt(hash).then((receipt => {
                  if (!receipt || receipt.blockNumber == null) {
                    return null;
                  }
                  this._emitted["t:" + hash] = receipt.blockNumber;
                  this.emit(hash, receipt);
                  return null;
                })).catch((error => {
                  this.emit("error", error);
                }));
                runners.push(runner);
                break;
              }

             case "filter":
              {
                if (!event._inflight) {
                  event._inflight = true;
                  if (event._lastBlockNumber === -2) {
                    event._lastBlockNumber = blockNumber - 1;
                  }
                  const filter = event.filter;
                  filter.fromBlock = event._lastBlockNumber + 1;
                  filter.toBlock = blockNumber;
                  const minFromBlock = filter.toBlock - this._maxFilterBlockRange;
                  if (minFromBlock > filter.fromBlock) {
                    filter.fromBlock = minFromBlock;
                  }
                  if (filter.fromBlock < 0) {
                    filter.fromBlock = 0;
                  }
                  const runner = this.getLogs(filter).then((logs => {
                    event._inflight = false;
                    if (logs.length === 0) {
                      return;
                    }
                    logs.forEach((log => {
                      if (log.blockNumber > event._lastBlockNumber) {
                        event._lastBlockNumber = log.blockNumber;
                      }
                      this._emitted["b:" + log.blockHash] = log.blockNumber;
                      this._emitted["t:" + log.transactionHash] = log.blockNumber;
                      this.emit(filter, log);
                    }));
                  })).catch((error => {
                    this.emit("error", error);
                    event._inflight = false;
                  }));
                  runners.push(runner);
                }
                break;
              }
            }
          }));
          this._lastBlockNumber = blockNumber;
          Promise.all(runners).then((() => {
            this.emit("didPoll", pollId);
          })).catch((error => {
            this.emit("error", error);
          }));
          return;
        }
        resetEventsBlock(blockNumber) {
          this._lastBlockNumber = blockNumber - 1;
          if (this.polling) {
            this.poll();
          }
        }
        get network() {
          return this._network;
        }
        async detectNetwork() {
          return logger.throwError("provider does not support network detection", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "provider.detectNetwork"
          });
        }
        async getNetwork() {
          const network = await this._ready();
          const currentNetwork = await this.detectNetwork();
          if (network.chainId !== currentNetwork.chainId) {
            if (this.anyNetwork) {
              this._network = currentNetwork;
              this._lastBlockNumber = -2;
              this._fastBlockNumber = null;
              this._fastBlockNumberPromise = null;
              this._fastQueryDate = 0;
              this._emitted.block = -2;
              this._maxInternalBlockNumber = -1024;
              this._internalBlockNumber = null;
              this.emit("network", currentNetwork, network);
              await stall(0);
              return this._network;
            }
            const error = logger.makeError("underlying network changed", logger_1.Logger.errors.NETWORK_ERROR, {
              event: "changed",
              network,
              detectedNetwork: currentNetwork
            });
            this.emit("error", error);
            throw error;
          }
          return network;
        }
        get blockNumber() {
          this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber => {
            this._setFastBlockNumber(blockNumber);
          }), (error => {}));
          return this._fastBlockNumber != null ? this._fastBlockNumber : -1;
        }
        get polling() {
          return this._poller != null;
        }
        set polling(value) {
          if (value && !this._poller) {
            this._poller = setInterval((() => {
              this.poll();
            }), this.pollingInterval);
            if (!this._bootstrapPoll) {
              this._bootstrapPoll = setTimeout((() => {
                this.poll();
                this._bootstrapPoll = setTimeout((() => {
                  if (!this._poller) {
                    this.poll();
                  }
                  this._bootstrapPoll = null;
                }), this.pollingInterval);
              }), 0);
            }
          } else if (!value && this._poller) {
            clearInterval(this._poller);
            this._poller = null;
          }
        }
        get pollingInterval() {
          return this._pollingInterval;
        }
        set pollingInterval(value) {
          if (typeof value !== "number" || value <= 0 || parseInt(String(value)) != value) {
            throw new Error("invalid polling interval");
          }
          this._pollingInterval = value;
          if (this._poller) {
            clearInterval(this._poller);
            this._poller = setInterval((() => {
              this.poll();
            }), this._pollingInterval);
          }
        }
        _getFastBlockNumber() {
          const now = getTime();
          if (now - this._fastQueryDate > 2 * this._pollingInterval) {
            this._fastQueryDate = now;
            this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber => {
              if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {
                this._fastBlockNumber = blockNumber;
              }
              return this._fastBlockNumber;
            }));
          }
          return this._fastBlockNumberPromise;
        }
        _setFastBlockNumber(blockNumber) {
          if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) {
            return;
          }
          this._fastQueryDate = getTime();
          if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {
            this._fastBlockNumber = blockNumber;
            this._fastBlockNumberPromise = Promise.resolve(blockNumber);
          }
        }
        async waitForTransaction(transactionHash, confirmations, timeout) {
          return this._waitForTransaction(transactionHash, confirmations == null ? 1 : confirmations, timeout || 0, null);
        }
        async _waitForTransaction(transactionHash, confirmations, timeout, replaceable) {
          const receipt = await this.getTransactionReceipt(transactionHash);
          if ((receipt ? receipt.confirmations : 0) >= confirmations) {
            return receipt;
          }
          return new Promise(((resolve, reject) => {
            const cancelFuncs = [];
            let done = false;
            const alreadyDone = function() {
              if (done) {
                return true;
              }
              done = true;
              cancelFuncs.forEach((func => {
                func();
              }));
              return false;
            };
            const minedHandler = receipt => {
              if (receipt.confirmations < confirmations) {
                return;
              }
              if (alreadyDone()) {
                return;
              }
              resolve(receipt);
            };
            this.on(transactionHash, minedHandler);
            cancelFuncs.push((() => {
              this.removeListener(transactionHash, minedHandler);
            }));
            if (replaceable) {
              let lastBlockNumber = replaceable.startBlock;
              let scannedBlock = null;
              const replaceHandler = async blockNumber => {
                if (done) {
                  return;
                }
                await stall(1e3);
                this.getTransactionCount(replaceable.from).then((async nonce => {
                  if (done) {
                    return;
                  }
                  if (nonce <= replaceable.nonce) {
                    lastBlockNumber = blockNumber;
                  } else {
                    {
                      const mined = await this.getTransaction(transactionHash);
                      if (mined && mined.blockNumber != null) {
                        return;
                      }
                    }
                    if (scannedBlock == null) {
                      scannedBlock = lastBlockNumber - 3;
                      if (scannedBlock < replaceable.startBlock) {
                        scannedBlock = replaceable.startBlock;
                      }
                    }
                    while (scannedBlock <= blockNumber) {
                      if (done) {
                        return;
                      }
                      const block = await this.getBlockWithTransactions(scannedBlock);
                      for (let ti = 0; ti < block.transactions.length; ti++) {
                        const tx = block.transactions[ti];
                        if (tx.hash === transactionHash) {
                          return;
                        }
                        if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {
                          if (done) {
                            return;
                          }
                          const receipt = await this.waitForTransaction(tx.hash, confirmations);
                          if (alreadyDone()) {
                            return;
                          }
                          let reason = "replaced";
                          if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {
                            reason = "repriced";
                          } else if (tx.data === "0x" && tx.from === tx.to && tx.value.isZero()) {
                            reason = "cancelled";
                          }
                          reject(logger.makeError("transaction was replaced", logger_1.Logger.errors.TRANSACTION_REPLACED, {
                            cancelled: reason === "replaced" || reason === "cancelled",
                            reason,
                            replacement: this._wrapTransaction(tx),
                            hash: transactionHash,
                            receipt
                          }));
                          return;
                        }
                      }
                      scannedBlock++;
                    }
                  }
                  if (done) {
                    return;
                  }
                  this.once("block", replaceHandler);
                }), (error => {
                  if (done) {
                    return;
                  }
                  this.once("block", replaceHandler);
                }));
              };
              if (done) {
                return;
              }
              this.once("block", replaceHandler);
              cancelFuncs.push((() => {
                this.removeListener("block", replaceHandler);
              }));
            }
            if (typeof timeout === "number" && timeout > 0) {
              const timer = setTimeout((() => {
                if (alreadyDone()) {
                  return;
                }
                reject(logger.makeError("timeout exceeded", logger_1.Logger.errors.TIMEOUT, {
                  timeout
                }));
              }), timeout);
              if (timer.unref) {
                timer.unref();
              }
              cancelFuncs.push((() => {
                clearTimeout(timer);
              }));
            }
          }));
        }
        async getBlockNumber() {
          return this._getInternalBlockNumber(0);
        }
        async getGasPrice() {
          await this.getNetwork();
          const result = await this.perform("getGasPrice", {});
          try {
            return bignumber_1.BigNumber.from(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "getGasPrice",
              result,
              error
            });
          }
        }
        async getBalance(addressOrName, blockTag) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            address: this._getAddress(addressOrName),
            blockTag: this._getBlockTag(blockTag)
          });
          const result = await this.perform("getBalance", params);
          try {
            return bignumber_1.BigNumber.from(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "getBalance",
              params,
              result,
              error
            });
          }
        }
        async getTransactionCount(addressOrName, blockTag) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            address: this._getAddress(addressOrName),
            blockTag: this._getBlockTag(blockTag)
          });
          const result = await this.perform("getTransactionCount", params);
          try {
            return bignumber_1.BigNumber.from(result).toNumber();
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "getTransactionCount",
              params,
              result,
              error
            });
          }
        }
        async getCode(addressOrName, blockTag) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            address: this._getAddress(addressOrName),
            blockTag: this._getBlockTag(blockTag)
          });
          const result = await this.perform("getCode", params);
          try {
            return (0, bytes_1.hexlify)(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "getCode",
              params,
              result,
              error
            });
          }
        }
        async getStorageAt(addressOrName, position, blockTag) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            address: this._getAddress(addressOrName),
            blockTag: this._getBlockTag(blockTag),
            position: Promise.resolve(position).then((p => (0, bytes_1.hexValue)(p)))
          });
          const result = await this.perform("getStorageAt", params);
          try {
            return (0, bytes_1.hexlify)(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "getStorageAt",
              params,
              result,
              error
            });
          }
        }
        _wrapTransaction(tx, hash, startBlock) {
          if (hash != null && (0, bytes_1.hexDataLength)(hash) !== 32) {
            throw new Error("invalid response - sendTransaction");
          }
          const result = tx;
          if (hash != null && tx.hash !== hash) {
            logger.throwError("Transaction hash mismatch from Provider.sendTransaction.", logger_1.Logger.errors.UNKNOWN_ERROR, {
              expectedHash: tx.hash,
              returnedHash: hash
            });
          }
          result.wait = async (confirms, timeout) => {
            if (confirms == null) {
              confirms = 1;
            }
            if (timeout == null) {
              timeout = 0;
            }
            let replacement = undefined;
            if (confirms !== 0 && startBlock != null) {
              replacement = {
                data: tx.data,
                from: tx.from,
                nonce: tx.nonce,
                to: tx.to,
                value: tx.value,
                startBlock
              };
            }
            const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);
            if (receipt == null && confirms === 0) {
              return null;
            }
            this._emitted["t:" + tx.hash] = receipt.blockNumber;
            if (receipt.status === 0) {
              logger.throwError("transaction failed", logger_1.Logger.errors.CALL_EXCEPTION, {
                transactionHash: tx.hash,
                transaction: tx,
                receipt
              });
            }
            return receipt;
          };
          return result;
        }
        async sendTransaction(signedTransaction) {
          await this.getNetwork();
          const hexTx = await Promise.resolve(signedTransaction).then((t => (0, bytes_1.hexlify)(t)));
          const tx = this.formatter.transaction(signedTransaction);
          if (tx.confirmations == null) {
            tx.confirmations = 0;
          }
          const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);
          try {
            const hash = await this.perform("sendTransaction", {
              signedTransaction: hexTx
            });
            return this._wrapTransaction(tx, hash, blockNumber);
          } catch (error) {
            error.transaction = tx;
            error.transactionHash = tx.hash;
            throw error;
          }
        }
        async _getTransactionRequest(transaction) {
          const values = await transaction;
          const tx = {};
          [ "from", "to" ].forEach((key => {
            if (values[key] == null) {
              return;
            }
            tx[key] = Promise.resolve(values[key]).then((v => v ? this._getAddress(v) : null));
          }));
          [ "gasLimit", "gasPrice", "maxFeePerGas", "maxPriorityFeePerGas", "value" ].forEach((key => {
            if (values[key] == null) {
              return;
            }
            tx[key] = Promise.resolve(values[key]).then((v => v ? bignumber_1.BigNumber.from(v) : null));
          }));
          [ "type" ].forEach((key => {
            if (values[key] == null) {
              return;
            }
            tx[key] = Promise.resolve(values[key]).then((v => v != null ? v : null));
          }));
          if (values.accessList) {
            tx.accessList = this.formatter.accessList(values.accessList);
          }
          [ "data" ].forEach((key => {
            if (values[key] == null) {
              return;
            }
            tx[key] = Promise.resolve(values[key]).then((v => v ? (0, bytes_1.hexlify)(v) : null));
          }));
          return this.formatter.transactionRequest(await (0, properties_1.resolveProperties)(tx));
        }
        async _getFilter(filter) {
          filter = await filter;
          const result = {};
          if (filter.address != null) {
            result.address = this._getAddress(filter.address);
          }
          [ "blockHash", "topics" ].forEach((key => {
            if (filter[key] == null) {
              return;
            }
            result[key] = filter[key];
          }));
          [ "fromBlock", "toBlock" ].forEach((key => {
            if (filter[key] == null) {
              return;
            }
            result[key] = this._getBlockTag(filter[key]);
          }));
          return this.formatter.filter(await (0, properties_1.resolveProperties)(result));
        }
        async _call(transaction, blockTag, attempt) {
          if (attempt >= MAX_CCIP_REDIRECTS) {
            logger.throwError("CCIP read exceeded maximum redirections", logger_1.Logger.errors.SERVER_ERROR, {
              redirects: attempt,
              transaction
            });
          }
          const txSender = transaction.to;
          const result = await this.perform("call", {
            transaction,
            blockTag
          });
          if (attempt >= 0 && blockTag === "latest" && txSender != null && result.substring(0, 10) === "0x556f1830" && (0, 
          bytes_1.hexDataLength)(result) % 32 === 4) {
            try {
              const data = (0, bytes_1.hexDataSlice)(result, 4);
              const sender = (0, bytes_1.hexDataSlice)(data, 0, 32);
              if (!bignumber_1.BigNumber.from(sender).eq(txSender)) {
                logger.throwError("CCIP Read sender did not match", logger_1.Logger.errors.CALL_EXCEPTION, {
                  name: "OffchainLookup",
                  signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
                  transaction,
                  data: result
                });
              }
              const urls = [];
              const urlsOffset = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 32, 64)).toNumber();
              const urlsLength = bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, urlsOffset, urlsOffset + 32)).toNumber();
              const urlsData = (0, bytes_1.hexDataSlice)(data, urlsOffset + 32);
              for (let u = 0; u < urlsLength; u++) {
                const url = _parseString(urlsData, u * 32);
                if (url == null) {
                  logger.throwError("CCIP Read contained corrupt URL string", logger_1.Logger.errors.CALL_EXCEPTION, {
                    name: "OffchainLookup",
                    signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
                    transaction,
                    data: result
                  });
                }
                urls.push(url);
              }
              const calldata = _parseBytes(data, 64);
              if (!bignumber_1.BigNumber.from((0, bytes_1.hexDataSlice)(data, 100, 128)).isZero()) {
                logger.throwError("CCIP Read callback selector included junk", logger_1.Logger.errors.CALL_EXCEPTION, {
                  name: "OffchainLookup",
                  signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
                  transaction,
                  data: result
                });
              }
              const callbackSelector = (0, bytes_1.hexDataSlice)(data, 96, 100);
              const extraData = _parseBytes(data, 128);
              const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);
              if (ccipResult == null) {
                logger.throwError("CCIP Read disabled or provided no URLs", logger_1.Logger.errors.CALL_EXCEPTION, {
                  name: "OffchainLookup",
                  signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
                  transaction,
                  data: result
                });
              }
              const tx = {
                to: txSender,
                data: (0, bytes_1.hexConcat)([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])
              };
              return this._call(tx, blockTag, attempt + 1);
            } catch (error) {
              if (error.code === logger_1.Logger.errors.SERVER_ERROR) {
                throw error;
              }
            }
          }
          try {
            return (0, bytes_1.hexlify)(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "call",
              params: {
                transaction,
                blockTag
              },
              result,
              error
            });
          }
        }
        async call(transaction, blockTag) {
          await this.getNetwork();
          const resolved = await (0, properties_1.resolveProperties)({
            transaction: this._getTransactionRequest(transaction),
            blockTag: this._getBlockTag(blockTag),
            ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)
          });
          return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0 : -1);
        }
        async estimateGas(transaction) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            transaction: this._getTransactionRequest(transaction)
          });
          const result = await this.perform("estimateGas", params);
          try {
            return bignumber_1.BigNumber.from(result);
          } catch (error) {
            return logger.throwError("bad result from backend", logger_1.Logger.errors.SERVER_ERROR, {
              method: "estimateGas",
              params,
              result,
              error
            });
          }
        }
        async _getAddress(addressOrName) {
          addressOrName = await addressOrName;
          if (typeof addressOrName !== "string") {
            logger.throwArgumentError("invalid address or ENS name", "name", addressOrName);
          }
          const address = await this.resolveName(addressOrName);
          if (address == null) {
            logger.throwError("ENS name not configured", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: `resolveName(${JSON.stringify(addressOrName)})`
            });
          }
          return address;
        }
        async _getBlock(blockHashOrBlockTag, includeTransactions) {
          await this.getNetwork();
          blockHashOrBlockTag = await blockHashOrBlockTag;
          let blockNumber = -128;
          const params = {
            includeTransactions: !!includeTransactions
          };
          if ((0, bytes_1.isHexString)(blockHashOrBlockTag, 32)) {
            params.blockHash = blockHashOrBlockTag;
          } else {
            try {
              params.blockTag = await this._getBlockTag(blockHashOrBlockTag);
              if ((0, bytes_1.isHexString)(params.blockTag)) {
                blockNumber = parseInt(params.blockTag.substring(2), 16);
              }
            } catch (error) {
              logger.throwArgumentError("invalid block hash or block tag", "blockHashOrBlockTag", blockHashOrBlockTag);
            }
          }
          return (0, web_1.poll)((async () => {
            const block = await this.perform("getBlock", params);
            if (block == null) {
              if (params.blockHash != null) {
                if (this._emitted["b:" + params.blockHash] == null) {
                  return null;
                }
              }
              if (params.blockTag != null) {
                if (blockNumber > this._emitted.block) {
                  return null;
                }
              }
              return undefined;
            }
            if (includeTransactions) {
              let blockNumber = null;
              for (let i = 0; i < block.transactions.length; i++) {
                const tx = block.transactions[i];
                if (tx.blockNumber == null) {
                  tx.confirmations = 0;
                } else if (tx.confirmations == null) {
                  if (blockNumber == null) {
                    blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);
                  }
                  let confirmations = blockNumber - tx.blockNumber + 1;
                  if (confirmations <= 0) {
                    confirmations = 1;
                  }
                  tx.confirmations = confirmations;
                }
              }
              const blockWithTxs = this.formatter.blockWithTransactions(block);
              blockWithTxs.transactions = blockWithTxs.transactions.map((tx => this._wrapTransaction(tx)));
              return blockWithTxs;
            }
            return this.formatter.block(block);
          }), {
            oncePoll: this
          });
        }
        getBlock(blockHashOrBlockTag) {
          return this._getBlock(blockHashOrBlockTag, false);
        }
        getBlockWithTransactions(blockHashOrBlockTag) {
          return this._getBlock(blockHashOrBlockTag, true);
        }
        async getTransaction(transactionHash) {
          await this.getNetwork();
          transactionHash = await transactionHash;
          const params = {
            transactionHash: this.formatter.hash(transactionHash, true)
          };
          return (0, web_1.poll)((async () => {
            const result = await this.perform("getTransaction", params);
            if (result == null) {
              if (this._emitted["t:" + transactionHash] == null) {
                return null;
              }
              return undefined;
            }
            const tx = this.formatter.transactionResponse(result);
            if (tx.blockNumber == null) {
              tx.confirmations = 0;
            } else if (tx.confirmations == null) {
              const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);
              let confirmations = blockNumber - tx.blockNumber + 1;
              if (confirmations <= 0) {
                confirmations = 1;
              }
              tx.confirmations = confirmations;
            }
            return this._wrapTransaction(tx);
          }), {
            oncePoll: this
          });
        }
        async getTransactionReceipt(transactionHash) {
          await this.getNetwork();
          transactionHash = await transactionHash;
          const params = {
            transactionHash: this.formatter.hash(transactionHash, true)
          };
          return (0, web_1.poll)((async () => {
            const result = await this.perform("getTransactionReceipt", params);
            if (result == null) {
              if (this._emitted["t:" + transactionHash] == null) {
                return null;
              }
              return undefined;
            }
            if (result.blockHash == null) {
              return undefined;
            }
            const receipt = this.formatter.receipt(result);
            if (receipt.blockNumber == null) {
              receipt.confirmations = 0;
            } else if (receipt.confirmations == null) {
              const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);
              let confirmations = blockNumber - receipt.blockNumber + 1;
              if (confirmations <= 0) {
                confirmations = 1;
              }
              receipt.confirmations = confirmations;
            }
            return receipt;
          }), {
            oncePoll: this
          });
        }
        async getLogs(filter) {
          await this.getNetwork();
          const params = await (0, properties_1.resolveProperties)({
            filter: this._getFilter(filter)
          });
          const logs = await this.perform("getLogs", params);
          logs.forEach((log => {
            if (log.removed == null) {
              log.removed = false;
            }
          }));
          return formatter_1.Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);
        }
        async getEtherPrice() {
          await this.getNetwork();
          return this.perform("getEtherPrice", {});
        }
        async _getBlockTag(blockTag) {
          blockTag = await blockTag;
          if (typeof blockTag === "number" && blockTag < 0) {
            if (blockTag % 1) {
              logger.throwArgumentError("invalid BlockTag", "blockTag", blockTag);
            }
            let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);
            blockNumber += blockTag;
            if (blockNumber < 0) {
              blockNumber = 0;
            }
            return this.formatter.blockTag(blockNumber);
          }
          return this.formatter.blockTag(blockTag);
        }
        async getResolver(name) {
          let currentName = name;
          while (true) {
            if (currentName === "" || currentName === ".") {
              return null;
            }
            if (name !== "eth" && currentName === "eth") {
              return null;
            }
            const addr = await this._getResolver(currentName, "getResolver");
            if (addr != null) {
              const resolver = new Resolver(this, addr, name);
              if (currentName !== name && !await resolver.supportsWildcard()) {
                return null;
              }
              return resolver;
            }
            currentName = currentName.split(".").slice(1).join(".");
          }
        }
        async _getResolver(name, operation) {
          if (operation == null) {
            operation = "ENS";
          }
          const network = await this.getNetwork();
          if (!network.ensAddress) {
            logger.throwError("network does not support ENS", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation,
              network: network.name
            });
          }
          try {
            const addrData = await this.call({
              to: network.ensAddress,
              data: "0x0178b8bf" + (0, hash_1.namehash)(name).substring(2)
            });
            return this.formatter.callAddress(addrData);
          } catch (error) {}
          return null;
        }
        async resolveName(name) {
          name = await name;
          try {
            return Promise.resolve(this.formatter.address(name));
          } catch (error) {
            if ((0, bytes_1.isHexString)(name)) {
              throw error;
            }
          }
          if (typeof name !== "string") {
            logger.throwArgumentError("invalid ENS name", "name", name);
          }
          const resolver = await this.getResolver(name);
          if (!resolver) {
            return null;
          }
          return await resolver.getAddress();
        }
        async lookupAddress(address) {
          address = await address;
          address = this.formatter.address(address);
          const node = address.substring(2).toLowerCase() + ".addr.reverse";
          const resolverAddr = await this._getResolver(node, "lookupAddress");
          if (resolverAddr == null) {
            return null;
          }
          const name = _parseString(await this.call({
            to: resolverAddr,
            data: "0x691f3431" + (0, hash_1.namehash)(node).substring(2)
          }), 0);
          const addr = await this.resolveName(name);
          if (addr != address) {
            return null;
          }
          return name;
        }
        async getAvatar(nameOrAddress) {
          let resolver = null;
          if ((0, bytes_1.isHexString)(nameOrAddress)) {
            const address = this.formatter.address(nameOrAddress);
            const node = address.substring(2).toLowerCase() + ".addr.reverse";
            const resolverAddress = await this._getResolver(node, "getAvatar");
            if (!resolverAddress) {
              return null;
            }
            resolver = new Resolver(this, resolverAddress, node);
            try {
              const avatar = await resolver.getAvatar();
              if (avatar) {
                return avatar.url;
              }
            } catch (error) {
              if (error.code !== logger_1.Logger.errors.CALL_EXCEPTION) {
                throw error;
              }
            }
            try {
              const name = _parseString(await this.call({
                to: resolverAddress,
                data: "0x691f3431" + (0, hash_1.namehash)(node).substring(2)
              }), 0);
              resolver = await this.getResolver(name);
            } catch (error) {
              if (error.code !== logger_1.Logger.errors.CALL_EXCEPTION) {
                throw error;
              }
              return null;
            }
          } else {
            resolver = await this.getResolver(nameOrAddress);
            if (!resolver) {
              return null;
            }
          }
          const avatar = await resolver.getAvatar();
          if (avatar == null) {
            return null;
          }
          return avatar.url;
        }
        perform(method, params) {
          return logger.throwError(method + " not implemented", logger_1.Logger.errors.NOT_IMPLEMENTED, {
            operation: method
          });
        }
        _startEvent(event) {
          this.polling = this._events.filter((e => e.pollable())).length > 0;
        }
        _stopEvent(event) {
          this.polling = this._events.filter((e => e.pollable())).length > 0;
        }
        _addEventListener(eventName, listener, once) {
          const event = new Event(getEventTag(eventName), listener, once);
          this._events.push(event);
          this._startEvent(event);
          return this;
        }
        on(eventName, listener) {
          return this._addEventListener(eventName, listener, false);
        }
        once(eventName, listener) {
          return this._addEventListener(eventName, listener, true);
        }
        emit(eventName, ...args) {
          let result = false;
          let stopped = [];
          let eventTag = getEventTag(eventName);
          this._events = this._events.filter((event => {
            if (event.tag !== eventTag) {
              return true;
            }
            setTimeout((() => {
              event.listener.apply(this, args);
            }), 0);
            result = true;
            if (event.once) {
              stopped.push(event);
              return false;
            }
            return true;
          }));
          stopped.forEach((event => {
            this._stopEvent(event);
          }));
          return result;
        }
        listenerCount(eventName) {
          if (!eventName) {
            return this._events.length;
          }
          let eventTag = getEventTag(eventName);
          return this._events.filter((event => event.tag === eventTag)).length;
        }
        listeners(eventName) {
          if (eventName == null) {
            return this._events.map((event => event.listener));
          }
          let eventTag = getEventTag(eventName);
          return this._events.filter((event => event.tag === eventTag)).map((event => event.listener));
        }
        off(eventName, listener) {
          if (listener == null) {
            return this.removeAllListeners(eventName);
          }
          const stopped = [];
          let found = false;
          let eventTag = getEventTag(eventName);
          this._events = this._events.filter((event => {
            if (event.tag !== eventTag || event.listener != listener) {
              return true;
            }
            if (found) {
              return true;
            }
            found = true;
            stopped.push(event);
            return false;
          }));
          stopped.forEach((event => {
            this._stopEvent(event);
          }));
          return this;
        }
        removeAllListeners(eventName) {
          let stopped = [];
          if (eventName == null) {
            stopped = this._events;
            this._events = [];
          } else {
            const eventTag = getEventTag(eventName);
            this._events = this._events.filter((event => {
              if (event.tag !== eventTag) {
                return true;
              }
              stopped.push(event);
              return false;
            }));
          }
          stopped.forEach((event => {
            this._stopEvent(event);
          }));
          return this;
        }
      }
      exports.BaseProvider = BaseProvider;
    },
    1426(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.IpcProvider = void 0;
      const IpcProvider = null;
      exports.IpcProvider = IpcProvider;
    },
    7008(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.WebSocket = void 0;
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      let WS = null;
      exports.WebSocket = WS;
      try {
        exports.WebSocket = WS = WebSocket;
        if (WS == null) {
          throw new Error("inject please");
        }
      } catch (error) {
        const logger = new logger_1.Logger(_version_1.version);
        exports.WebSocket = WS = function() {
          logger.throwError("WebSockets not supported in this environment", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "new WebSocket()"
          });
        };
      }
    },
    2649(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.FallbackProvider = void 0;
      const abstract_provider_1 = __webpack_require__(103);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const random_1 = __webpack_require__(590);
      const web_1 = __webpack_require__(6637);
      const base_provider_1 = __webpack_require__(7408);
      const formatter_1 = __webpack_require__(4915);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      function now() {
        return (new Date).getTime();
      }
      function checkNetworks(networks) {
        let result = null;
        for (let i = 0; i < networks.length; i++) {
          const network = networks[i];
          if (network == null) {
            return null;
          }
          if (result) {
            if (!(result.name === network.name && result.chainId === network.chainId && (result.ensAddress === network.ensAddress || result.ensAddress == null && network.ensAddress == null))) {
              logger.throwArgumentError("provider mismatch", "networks", networks);
            }
          } else {
            result = network;
          }
        }
        return result;
      }
      function median(values, maxDelta) {
        values = values.slice().sort();
        const middle = Math.floor(values.length / 2);
        if (values.length % 2) {
          return values[middle];
        }
        const a = values[middle - 1], b = values[middle];
        if (maxDelta != null && Math.abs(a - b) > maxDelta) {
          return null;
        }
        return (a + b) / 2;
      }
      function serialize(value) {
        if (value === null) {
          return "null";
        } else if (typeof value === "number" || typeof value === "boolean") {
          return JSON.stringify(value);
        } else if (typeof value === "string") {
          return value;
        } else if (bignumber_1.BigNumber.isBigNumber(value)) {
          return value.toString();
        } else if (Array.isArray(value)) {
          return JSON.stringify(value.map((i => serialize(i))));
        } else if (typeof value === "object") {
          const keys = Object.keys(value);
          keys.sort();
          return "{" + keys.map((key => {
            let v = value[key];
            if (typeof v === "function") {
              v = "[function]";
            } else {
              v = serialize(v);
            }
            return JSON.stringify(key) + ":" + v;
          })).join(",") + "}";
        }
        throw new Error("unknown value type: " + typeof value);
      }
      let nextRid = 1;
      function stall(duration) {
        let cancel = null;
        let timer = null;
        let promise = new Promise((resolve => {
          cancel = function() {
            if (timer) {
              clearTimeout(timer);
              timer = null;
            }
            resolve();
          };
          timer = setTimeout(cancel, duration);
        }));
        const wait = func => {
          promise = promise.then(func);
          return promise;
        };
        function getPromise() {
          return promise;
        }
        return {
          cancel,
          getPromise,
          wait
        };
      }
      const ForwardErrors = [ logger_1.Logger.errors.CALL_EXCEPTION, logger_1.Logger.errors.INSUFFICIENT_FUNDS, logger_1.Logger.errors.NONCE_EXPIRED, logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT ];
      const ForwardProperties = [ "address", "args", "errorArgs", "errorSignature", "method", "transaction" ];
      function exposeDebugConfig(config, now) {
        const result = {
          weight: config.weight
        };
        Object.defineProperty(result, "provider", {
          get: () => config.provider
        });
        if (config.start) {
          result.start = config.start;
        }
        if (now) {
          result.duration = now - config.start;
        }
        if (config.done) {
          if (config.error) {
            result.error = config.error;
          } else {
            result.result = config.result || null;
          }
        }
        return result;
      }
      function normalizedTally(normalize, quorum) {
        return function(configs) {
          const tally = {};
          configs.forEach((c => {
            const value = normalize(c.result);
            if (!tally[value]) {
              tally[value] = {
                count: 0,
                result: c.result
              };
            }
            tally[value].count++;
          }));
          const keys = Object.keys(tally);
          for (let i = 0; i < keys.length; i++) {
            const check = tally[keys[i]];
            if (check.count >= quorum) {
              return check.result;
            }
          }
          return undefined;
        };
      }
      function getProcessFunc(provider, method, params) {
        let normalize = serialize;
        switch (method) {
         case "getBlockNumber":
          return function(configs) {
            const values = configs.map((c => c.result));
            let blockNumber = median(configs.map((c => c.result)), 2);
            if (blockNumber == null) {
              return undefined;
            }
            blockNumber = Math.ceil(blockNumber);
            if (values.indexOf(blockNumber + 1) >= 0) {
              blockNumber++;
            }
            if (blockNumber >= provider._highestBlockNumber) {
              provider._highestBlockNumber = blockNumber;
            }
            return provider._highestBlockNumber;
          };

         case "getGasPrice":
          return function(configs) {
            const values = configs.map((c => c.result));
            values.sort();
            return values[Math.floor(values.length / 2)];
          };

         case "getEtherPrice":
          return function(configs) {
            return median(configs.map((c => c.result)));
          };

         case "getBalance":
         case "getTransactionCount":
         case "getCode":
         case "getStorageAt":
         case "call":
         case "estimateGas":
         case "getLogs":
          break;

         case "getTransaction":
         case "getTransactionReceipt":
          normalize = function(tx) {
            if (tx == null) {
              return null;
            }
            tx = (0, properties_1.shallowCopy)(tx);
            tx.confirmations = -1;
            return serialize(tx);
          };
          break;

         case "getBlock":
          if (params.includeTransactions) {
            normalize = function(block) {
              if (block == null) {
                return null;
              }
              block = (0, properties_1.shallowCopy)(block);
              block.transactions = block.transactions.map((tx => {
                tx = (0, properties_1.shallowCopy)(tx);
                tx.confirmations = -1;
                return tx;
              }));
              return serialize(block);
            };
          } else {
            normalize = function(block) {
              if (block == null) {
                return null;
              }
              return serialize(block);
            };
          }
          break;

         default:
          throw new Error("unknown method: " + method);
        }
        return normalizedTally(normalize, provider.quorum);
      }
      async function waitForSync(config, blockNumber) {
        const provider = config.provider;
        if (provider.blockNumber != null && provider.blockNumber >= blockNumber || blockNumber === -1) {
          return provider;
        }
        return (0, web_1.poll)((() => new Promise(((resolve, reject) => {
          setTimeout((function() {
            if (provider.blockNumber >= blockNumber) {
              return resolve(provider);
            }
            if (config.cancelled) {
              return resolve(null);
            }
            return resolve(undefined);
          }), 0);
        }))), {
          oncePoll: provider
        });
      }
      async function getRunner(config, currentBlockNumber, method, params) {
        let provider = config.provider;
        switch (method) {
         case "getBlockNumber":
         case "getGasPrice":
          return provider[method]();

         case "getEtherPrice":
          if (provider.getEtherPrice) {
            return provider.getEtherPrice();
          }
          break;

         case "getBalance":
         case "getTransactionCount":
         case "getCode":
          if (params.blockTag && (0, bytes_1.isHexString)(params.blockTag)) {
            provider = await waitForSync(config, currentBlockNumber);
          }
          return provider[method](params.address, params.blockTag || "latest");

         case "getStorageAt":
          if (params.blockTag && (0, bytes_1.isHexString)(params.blockTag)) {
            provider = await waitForSync(config, currentBlockNumber);
          }
          return provider.getStorageAt(params.address, params.position, params.blockTag || "latest");

         case "getBlock":
          if (params.blockTag && (0, bytes_1.isHexString)(params.blockTag)) {
            provider = await waitForSync(config, currentBlockNumber);
          }
          return provider[params.includeTransactions ? "getBlockWithTransactions" : "getBlock"](params.blockTag || params.blockHash);

         case "call":
         case "estimateGas":
          if (params.blockTag && (0, bytes_1.isHexString)(params.blockTag)) {
            provider = await waitForSync(config, currentBlockNumber);
          }
          if (method === "call" && params.blockTag) {
            return provider[method](params.transaction, params.blockTag);
          }
          return provider[method](params.transaction);

         case "getTransaction":
         case "getTransactionReceipt":
          return provider[method](params.transactionHash);

         case "getLogs":
          {
            let filter = params.filter;
            if (filter.fromBlock && (0, bytes_1.isHexString)(filter.fromBlock) || filter.toBlock && (0, 
            bytes_1.isHexString)(filter.toBlock)) {
              provider = await waitForSync(config, currentBlockNumber);
            }
            return provider.getLogs(filter);
          }
        }
        return logger.throwError("unknown method error", logger_1.Logger.errors.UNKNOWN_ERROR, {
          method,
          params
        });
      }
      class FallbackProvider extends base_provider_1.BaseProvider {
        constructor(providers, quorum) {
          if (providers.length === 0) {
            logger.throwArgumentError("missing providers", "providers", providers);
          }
          const providerConfigs = providers.map(((configOrProvider, index) => {
            if (abstract_provider_1.Provider.isProvider(configOrProvider)) {
              const stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2e3 : 750;
              const priority = 1;
              return Object.freeze({
                provider: configOrProvider,
                weight: 1,
                stallTimeout,
                priority
              });
            }
            const config = (0, properties_1.shallowCopy)(configOrProvider);
            if (config.priority == null) {
              config.priority = 1;
            }
            if (config.stallTimeout == null) {
              config.stallTimeout = (0, formatter_1.isCommunityResource)(configOrProvider) ? 2e3 : 750;
            }
            if (config.weight == null) {
              config.weight = 1;
            }
            const weight = config.weight;
            if (weight % 1 || weight > 512 || weight < 1) {
              logger.throwArgumentError("invalid weight; must be integer in [1, 512]", `providers[${index}].weight`, weight);
            }
            return Object.freeze(config);
          }));
          const total = providerConfigs.reduce(((accum, c) => accum + c.weight), 0);
          if (quorum == null) {
            quorum = total / 2;
          } else if (quorum > total) {
            logger.throwArgumentError("quorum will always fail; larger than total weight", "quorum", quorum);
          }
          let networkOrReady = checkNetworks(providerConfigs.map((c => c.provider.network)));
          if (networkOrReady == null) {
            networkOrReady = new Promise(((resolve, reject) => {
              setTimeout((() => {
                this.detectNetwork().then(resolve, reject);
              }), 0);
            }));
          }
          super(networkOrReady);
          (0, properties_1.defineReadOnly)(this, "providerConfigs", Object.freeze(providerConfigs));
          (0, properties_1.defineReadOnly)(this, "quorum", quorum);
          this._highestBlockNumber = -1;
        }
        async detectNetwork() {
          const networks = await Promise.all(this.providerConfigs.map((c => c.provider.getNetwork())));
          return checkNetworks(networks);
        }
        async perform(method, params) {
          if (method === "sendTransaction") {
            const results = await Promise.all(this.providerConfigs.map((c => c.provider.sendTransaction(params.signedTransaction).then((result => result.hash), (error => error)))));
            for (let i = 0; i < results.length; i++) {
              const result = results[i];
              if (typeof result === "string") {
                return result;
              }
            }
            throw results[0];
          }
          if (this._highestBlockNumber === -1 && method !== "getBlockNumber") {
            await this.getBlockNumber();
          }
          const processFunc = getProcessFunc(this, method, params);
          const configs = (0, random_1.shuffled)(this.providerConfigs.map(properties_1.shallowCopy));
          configs.sort(((a, b) => a.priority - b.priority));
          const currentBlockNumber = this._highestBlockNumber;
          let i = 0;
          let first = true;
          while (true) {
            const t0 = now();
            let inflightWeight = configs.filter((c => c.runner && t0 - c.start < c.stallTimeout)).reduce(((accum, c) => accum + c.weight), 0);
            while (inflightWeight < this.quorum && i < configs.length) {
              const config = configs[i++];
              const rid = nextRid++;
              config.start = now();
              config.staller = stall(config.stallTimeout);
              config.staller.wait((() => {
                config.staller = null;
              }));
              config.runner = getRunner(config, currentBlockNumber, method, params).then((result => {
                config.done = true;
                config.result = result;
                if (this.listenerCount("debug")) {
                  this.emit("debug", {
                    action: "request",
                    rid,
                    backend: exposeDebugConfig(config, now()),
                    request: {
                      method,
                      params: (0, properties_1.deepCopy)(params)
                    },
                    provider: this
                  });
                }
              }), (error => {
                config.done = true;
                config.error = error;
                if (this.listenerCount("debug")) {
                  this.emit("debug", {
                    action: "request",
                    rid,
                    backend: exposeDebugConfig(config, now()),
                    request: {
                      method,
                      params: (0, properties_1.deepCopy)(params)
                    },
                    provider: this
                  });
                }
              }));
              if (this.listenerCount("debug")) {
                this.emit("debug", {
                  action: "request",
                  rid,
                  backend: exposeDebugConfig(config, null),
                  request: {
                    method,
                    params: (0, properties_1.deepCopy)(params)
                  },
                  provider: this
                });
              }
              inflightWeight += config.weight;
            }
            const waiting = [];
            configs.forEach((c => {
              if (c.done || !c.runner) {
                return;
              }
              waiting.push(c.runner);
              if (c.staller) {
                waiting.push(c.staller.getPromise());
              }
            }));
            if (waiting.length) {
              await Promise.race(waiting);
            }
            const results = configs.filter((c => c.done && c.error == null));
            if (results.length >= this.quorum) {
              const result = processFunc(results);
              if (result !== undefined) {
                configs.forEach((c => {
                  if (c.staller) {
                    c.staller.cancel();
                  }
                  c.cancelled = true;
                }));
                return result;
              }
              if (!first) {
                await stall(100).getPromise();
              }
              first = false;
            }
            const errors = configs.reduce(((accum, c) => {
              if (!c.done || c.error == null) {
                return accum;
              }
              const code = c.error.code;
              if (ForwardErrors.indexOf(code) >= 0) {
                if (!accum[code]) {
                  accum[code] = {
                    error: c.error,
                    weight: 0
                  };
                }
                accum[code].weight += c.weight;
              }
              return accum;
            }), {});
            Object.keys(errors).forEach((errorCode => {
              const tally = errors[errorCode];
              if (tally.weight < this.quorum) {
                return;
              }
              configs.forEach((c => {
                if (c.staller) {
                  c.staller.cancel();
                }
                c.cancelled = true;
              }));
              const e = tally.error;
              const props = {};
              ForwardProperties.forEach((name => {
                if (e[name] == null) {
                  return;
                }
                props[name] = e[name];
              }));
              logger.throwError(e.reason || e.message, errorCode, props);
            }));
            if (configs.filter((c => !c.done)).length === 0) {
              break;
            }
          }
          configs.forEach((c => {
            if (c.staller) {
              c.staller.cancel();
            }
            c.cancelled = true;
          }));
          return logger.throwError("failed to meet quorum", logger_1.Logger.errors.SERVER_ERROR, {
            method,
            params,
            results: configs.map((c => exposeDebugConfig(c))),
            provider: this
          });
        }
      }
      exports.FallbackProvider = FallbackProvider;
    },
    4915(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.showThrottleMessage = exports.isCommunityResource = exports.isCommunityResourcable = exports.Formatter = void 0;
      const address_1 = __webpack_require__(171);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const constants_1 = __webpack_require__(846);
      const properties_1 = __webpack_require__(1476);
      const transactions_1 = __webpack_require__(3776);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      class Formatter {
        constructor() {
          this.formats = this.getDefaultFormats();
        }
        getDefaultFormats() {
          const formats = {};
          const address = this.address.bind(this);
          const bigNumber = this.bigNumber.bind(this);
          const blockTag = this.blockTag.bind(this);
          const data = this.data.bind(this);
          const hash = this.hash.bind(this);
          const hex = this.hex.bind(this);
          const number = this.number.bind(this);
          const type = this.type.bind(this);
          const strictData = v => this.data(v, true);
          formats.transaction = {
            hash,
            type,
            accessList: Formatter.allowNull(this.accessList.bind(this), null),
            blockHash: Formatter.allowNull(hash, null),
            blockNumber: Formatter.allowNull(number, null),
            transactionIndex: Formatter.allowNull(number, null),
            confirmations: Formatter.allowNull(number, null),
            from: address,
            gasPrice: Formatter.allowNull(bigNumber),
            maxPriorityFeePerGas: Formatter.allowNull(bigNumber),
            maxFeePerGas: Formatter.allowNull(bigNumber),
            gasLimit: bigNumber,
            to: Formatter.allowNull(address, null),
            value: bigNumber,
            nonce: number,
            data,
            signature: Formatter.allowNull(data),
            publicKey: Formatter.allowNull(data),
            creates: Formatter.allowNull(address, null),
            raw: Formatter.allowNull(data)
          };
          formats.transactionRequest = {
            from: Formatter.allowNull(address),
            nonce: Formatter.allowNull(number),
            gasLimit: Formatter.allowNull(bigNumber),
            gasPrice: Formatter.allowNull(bigNumber),
            maxPriorityFeePerGas: Formatter.allowNull(bigNumber),
            maxFeePerGas: Formatter.allowNull(bigNumber),
            to: Formatter.allowNull(address),
            value: Formatter.allowNull(bigNumber),
            data: Formatter.allowNull(strictData),
            type: Formatter.allowNull(number),
            accessList: Formatter.allowNull(this.accessList.bind(this), null)
          };
          formats.receiptLog = {
            transactionIndex: number,
            blockNumber: number,
            transactionHash: hash,
            address,
            topics: Formatter.arrayOf(hash),
            data,
            logIndex: number,
            blockHash: hash
          };
          formats.receipt = {
            to: Formatter.allowNull(this.address, null),
            from: Formatter.allowNull(this.address, null),
            contractAddress: Formatter.allowNull(address, null),
            transactionIndex: number,
            root: Formatter.allowNull(hex),
            gasUsed: bigNumber,
            logsBloom: Formatter.allowNull(data),
            blockHash: hash,
            transactionHash: hash,
            logs: Formatter.arrayOf(this.receiptLog.bind(this)),
            blockNumber: number,
            confirmations: Formatter.allowNull(number, null),
            cumulativeGasUsed: bigNumber,
            effectiveGasPrice: Formatter.allowNull(bigNumber),
            status: Formatter.allowNull(number),
            type
          };
          formats.block = {
            hash: Formatter.allowNull(hash),
            parentHash: hash,
            number,
            timestamp: number,
            nonce: Formatter.allowNull(hex),
            difficulty: this.difficulty.bind(this),
            gasLimit: bigNumber,
            gasUsed: bigNumber,
            miner: Formatter.allowNull(address),
            extraData: data,
            transactions: Formatter.allowNull(Formatter.arrayOf(hash)),
            baseFeePerGas: Formatter.allowNull(bigNumber)
          };
          formats.blockWithTransactions = (0, properties_1.shallowCopy)(formats.block);
          formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));
          formats.filter = {
            fromBlock: Formatter.allowNull(blockTag, undefined),
            toBlock: Formatter.allowNull(blockTag, undefined),
            blockHash: Formatter.allowNull(hash, undefined),
            address: Formatter.allowNull(address, undefined),
            topics: Formatter.allowNull(this.topics.bind(this), undefined)
          };
          formats.filterLog = {
            blockNumber: Formatter.allowNull(number),
            blockHash: Formatter.allowNull(hash),
            transactionIndex: number,
            removed: Formatter.allowNull(this.boolean.bind(this)),
            address,
            data: Formatter.allowFalsish(data, "0x"),
            topics: Formatter.arrayOf(hash),
            transactionHash: hash,
            logIndex: number
          };
          return formats;
        }
        accessList(accessList) {
          return (0, transactions_1.accessListify)(accessList || []);
        }
        number(number) {
          if (number === "0x") {
            return 0;
          }
          return bignumber_1.BigNumber.from(number).toNumber();
        }
        type(number) {
          if (number === "0x" || number == null) {
            return 0;
          }
          return bignumber_1.BigNumber.from(number).toNumber();
        }
        bigNumber(value) {
          return bignumber_1.BigNumber.from(value);
        }
        boolean(value) {
          if (typeof value === "boolean") {
            return value;
          }
          if (typeof value === "string") {
            value = value.toLowerCase();
            if (value === "true") {
              return true;
            }
            if (value === "false") {
              return false;
            }
          }
          throw new Error("invalid boolean - " + value);
        }
        hex(value, strict) {
          if (typeof value === "string") {
            if (!strict && value.substring(0, 2) !== "0x") {
              value = "0x" + value;
            }
            if ((0, bytes_1.isHexString)(value)) {
              return value.toLowerCase();
            }
          }
          return logger.throwArgumentError("invalid hash", "value", value);
        }
        data(value, strict) {
          const result = this.hex(value, strict);
          if (result.length % 2 !== 0) {
            throw new Error("invalid data; odd-length - " + value);
          }
          return result;
        }
        address(value) {
          return (0, address_1.getAddress)(value);
        }
        callAddress(value) {
          if (!(0, bytes_1.isHexString)(value, 32)) {
            return null;
          }
          const address = (0, address_1.getAddress)(value);
          return address === constants_1.AddressZero ? null : address;
        }
        contractAddress(value) {
          return (0, address_1.getContractAddress)(value);
        }
        blockTag(blockTag) {
          if (blockTag == null) {
            return "latest";
          }
          if (blockTag === "earliest") {
            return "0x0";
          }
          switch (blockTag) {
           case "earliest":
            return "0x0";

           case "latest":
           case "pending":
           case "safe":
           case "finalized":
            return blockTag;
          }
          if (typeof blockTag === "number" || (0, bytes_1.isHexString)(blockTag)) {
            return (0, bytes_1.hexValue)(blockTag);
          }
          throw new Error("invalid blockTag");
        }
        hash(value, strict) {
          const result = this.hex(value, strict);
          if ((0, bytes_1.hexDataLength)(result) !== 32) {
            return logger.throwArgumentError("invalid hash", "value", value);
          }
          return result;
        }
        difficulty(value) {
          if (value == null) {
            return null;
          }
          const v = bignumber_1.BigNumber.from(value);
          try {
            return v.toNumber();
          } catch (error) {}
          return null;
        }
        uint256(value) {
          if (!(0, bytes_1.isHexString)(value)) {
            throw new Error("invalid uint256");
          }
          return (0, bytes_1.hexZeroPad)(value, 32);
        }
        _block(value, format) {
          if (value.author != null && value.miner == null) {
            value.miner = value.author;
          }
          const difficulty = value._difficulty != null ? value._difficulty : value.difficulty;
          const result = Formatter.check(format, value);
          result._difficulty = difficulty == null ? null : bignumber_1.BigNumber.from(difficulty);
          return result;
        }
        block(value) {
          return this._block(value, this.formats.block);
        }
        blockWithTransactions(value) {
          return this._block(value, this.formats.blockWithTransactions);
        }
        transactionRequest(value) {
          return Formatter.check(this.formats.transactionRequest, value);
        }
        transactionResponse(transaction) {
          if (transaction.gas != null && transaction.gasLimit == null) {
            transaction.gasLimit = transaction.gas;
          }
          if (transaction.to && bignumber_1.BigNumber.from(transaction.to).isZero()) {
            transaction.to = "0x0000000000000000000000000000000000000000000000000000000000000000";
          }
          if (transaction.input != null && transaction.data == null) {
            transaction.data = transaction.input;
          }
          if (transaction.to == null && transaction.creates == null) {
            transaction.creates = this.contractAddress(transaction);
          }
          if ((transaction.type === 1 || transaction.type === 2) && transaction.accessList == null) {
            transaction.accessList = [];
          }
          const result = Formatter.check(this.formats.transaction, transaction);
          if (transaction.chainId != null) {
            let chainId = transaction.chainId;
            if ((0, bytes_1.isHexString)(chainId)) {
              chainId = bignumber_1.BigNumber.from(chainId).toNumber();
            }
            result.chainId = chainId;
          } else {
            let chainId = transaction.networkId;
            if (chainId == null) {
              chainId = transaction.chainId;
            }
            if ((0, bytes_1.isHexString)(chainId)) {
              chainId = bignumber_1.BigNumber.from(chainId).toNumber();
            }
            if (typeof chainId !== "number") {
              chainId = 0;
            }
            if (typeof chainId !== "number") {
              chainId = 0;
            }
            result.chainId = chainId;
          }
          if (result.blockHash && result.blockHash.replace(/0/g, "") === "x") {
            result.blockHash = null;
          }
          return result;
        }
        transaction(value) {
          return (0, transactions_1.parse)(value);
        }
        receiptLog(value) {
          return Formatter.check(this.formats.receiptLog, value);
        }
        receipt(value) {
          const result = Formatter.check(this.formats.receipt, value);
          if (result.root != null) {
            if (result.root.length <= 4) {
              const value = bignumber_1.BigNumber.from(result.root).toNumber();
              if (value === 0 || value === 1) {
                if (result.status != null && result.status !== value) {
                  logger.throwArgumentError("alt-root-status/status mismatch", "value", {
                    root: result.root,
                    status: result.status
                  });
                }
                result.status = value;
                delete result.root;
              } else {
                logger.throwArgumentError("invalid alt-root-status", "value.root", result.root);
              }
            } else if (result.root.length !== 66) {
              logger.throwArgumentError("invalid root hash", "value.root", result.root);
            }
          }
          if (result.status != null) {
            result.byzantium = true;
          }
          return result;
        }
        topics(value) {
          if (Array.isArray(value)) {
            return value.map((v => this.topics(v)));
          } else if (value != null) {
            return this.hash(value, true);
          }
          return null;
        }
        filter(value) {
          return Formatter.check(this.formats.filter, value);
        }
        filterLog(value) {
          return Formatter.check(this.formats.filterLog, value);
        }
        static check(format, object) {
          const result = {};
          for (const key in format) {
            try {
              const value = format[key](object[key]);
              if (value !== undefined) {
                result[key] = value;
              }
            } catch (error) {
              error.checkKey = key;
              error.checkValue = object[key];
              throw error;
            }
          }
          return result;
        }
        static allowNull(format, nullValue) {
          return function(value) {
            if (value == null) {
              return nullValue;
            }
            return format(value);
          };
        }
        static allowFalsish(format, replaceValue) {
          return function(value) {
            if (!value) {
              return replaceValue;
            }
            return format(value);
          };
        }
        static arrayOf(format) {
          return function(array) {
            if (!Array.isArray(array)) {
              throw new Error("not an array");
            }
            const result = [];
            array.forEach((function(value) {
              result.push(format(value));
            }));
            return result;
          };
        }
      }
      exports.Formatter = Formatter;
      function isCommunityResourcable(value) {
        return value && typeof value.isCommunityResource === "function";
      }
      exports.isCommunityResourcable = isCommunityResourcable;
      function isCommunityResource(value) {
        return isCommunityResourcable(value) && value.isCommunityResource();
      }
      exports.isCommunityResource = isCommunityResource;
      let throttleMessage = false;
      function showThrottleMessage() {
        if (throttleMessage) {
          return;
        }
        throttleMessage = true;
        console.log("========= NOTICE =========");
        console.log("Request-Rate Exceeded  (this message will not be repeated)");
        console.log("");
        console.log("The default API keys for each service are provided as a highly-throttled,");
        console.log("community resource for low-traffic projects and early prototyping.");
        console.log("");
        console.log("While your application will continue to function, we highly recommended");
        console.log("signing up for your own API keys to improve performance, increase your");
        console.log("request rate/limit and enable other perks, such as metrics and advanced APIs.");
        console.log("");
        console.log("For more details: https://docs.ethers.io/api-keys/");
        console.log("==========================");
      }
      exports.showThrottleMessage = showThrottleMessage;
    },
    7649(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Formatter = exports.showThrottleMessage = exports.isCommunityResourcable = exports.isCommunityResource = exports.getNetwork = exports.getDefaultProvider = exports.JsonRpcSigner = exports.IpcProvider = exports.WebSocketProvider = exports.Web3Provider = exports.StaticJsonRpcProvider = exports.JsonRpcBatchProvider = exports.JsonRpcProvider = exports.FallbackProvider = exports.UrlJsonRpcProvider = exports.Resolver = exports.BaseProvider = exports.Provider = void 0;
      const abstract_provider_1 = __webpack_require__(103);
      Object.defineProperty(exports, "Provider", {
        enumerable: true,
        get: function() {
          return abstract_provider_1.Provider;
        }
      });
      const networks_1 = __webpack_require__(2510);
      Object.defineProperty(exports, "getNetwork", {
        enumerable: true,
        get: function() {
          return networks_1.getNetwork;
        }
      });
      const base_provider_1 = __webpack_require__(7408);
      Object.defineProperty(exports, "BaseProvider", {
        enumerable: true,
        get: function() {
          return base_provider_1.BaseProvider;
        }
      });
      Object.defineProperty(exports, "Resolver", {
        enumerable: true,
        get: function() {
          return base_provider_1.Resolver;
        }
      });
      const fallback_provider_1 = __webpack_require__(2649);
      Object.defineProperty(exports, "FallbackProvider", {
        enumerable: true,
        get: function() {
          return fallback_provider_1.FallbackProvider;
        }
      });
      const ipc_provider_1 = __webpack_require__(1426);
      Object.defineProperty(exports, "IpcProvider", {
        enumerable: true,
        get: function() {
          return ipc_provider_1.IpcProvider;
        }
      });
      const json_rpc_provider_1 = __webpack_require__(535);
      Object.defineProperty(exports, "JsonRpcProvider", {
        enumerable: true,
        get: function() {
          return json_rpc_provider_1.JsonRpcProvider;
        }
      });
      Object.defineProperty(exports, "JsonRpcSigner", {
        enumerable: true,
        get: function() {
          return json_rpc_provider_1.JsonRpcSigner;
        }
      });
      const json_rpc_batch_provider_1 = __webpack_require__(9904);
      Object.defineProperty(exports, "JsonRpcBatchProvider", {
        enumerable: true,
        get: function() {
          return json_rpc_batch_provider_1.JsonRpcBatchProvider;
        }
      });
      const url_json_rpc_provider_1 = __webpack_require__(3839);
      Object.defineProperty(exports, "StaticJsonRpcProvider", {
        enumerable: true,
        get: function() {
          return url_json_rpc_provider_1.StaticJsonRpcProvider;
        }
      });
      Object.defineProperty(exports, "UrlJsonRpcProvider", {
        enumerable: true,
        get: function() {
          return url_json_rpc_provider_1.UrlJsonRpcProvider;
        }
      });
      const web3_provider_1 = __webpack_require__(7254);
      Object.defineProperty(exports, "Web3Provider", {
        enumerable: true,
        get: function() {
          return web3_provider_1.Web3Provider;
        }
      });
      const websocket_provider_1 = __webpack_require__(4518);
      Object.defineProperty(exports, "WebSocketProvider", {
        enumerable: true,
        get: function() {
          return websocket_provider_1.WebSocketProvider;
        }
      });
      const formatter_1 = __webpack_require__(4915);
      Object.defineProperty(exports, "Formatter", {
        enumerable: true,
        get: function() {
          return formatter_1.Formatter;
        }
      });
      Object.defineProperty(exports, "isCommunityResourcable", {
        enumerable: true,
        get: function() {
          return formatter_1.isCommunityResourcable;
        }
      });
      Object.defineProperty(exports, "isCommunityResource", {
        enumerable: true,
        get: function() {
          return formatter_1.isCommunityResource;
        }
      });
      Object.defineProperty(exports, "showThrottleMessage", {
        enumerable: true,
        get: function() {
          return formatter_1.showThrottleMessage;
        }
      });
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      function getDefaultProvider(network, options) {
        if (network == null) {
          network = "zeus";
        }
        if (typeof network === "string") {
          const match = network.match(/^(ws|http)s?:/i);
          if (match) {
            switch (match[1].toLowerCase()) {
             case "http":
             case "https":
              return new json_rpc_provider_1.JsonRpcProvider(network);

             case "ws":
             case "wss":
              return new websocket_provider_1.WebSocketProvider(network);

             default:
              logger.throwArgumentError("unsupported URL scheme", "network", network);
            }
          }
        }
        const n = (0, networks_1.getNetwork)(network);
        if (!n || !n._defaultProvider) {
          logger.throwError("unsupported getDefaultProvider network", logger_1.Logger.errors.NETWORK_ERROR, {
            operation: "getDefaultProvider",
            network
          });
        }
        return n._defaultProvider({
          FallbackProvider: fallback_provider_1.FallbackProvider,
          JsonRpcProvider: json_rpc_provider_1.JsonRpcProvider,
          Web3Provider: web3_provider_1.Web3Provider,
          IpcProvider: ipc_provider_1.IpcProvider
        }, options);
      }
      exports.getDefaultProvider = getDefaultProvider;
    },
    9904(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.JsonRpcBatchProvider = void 0;
      const properties_1 = __webpack_require__(1476);
      const web_1 = __webpack_require__(6637);
      const json_rpc_provider_1 = __webpack_require__(535);
      class JsonRpcBatchProvider extends json_rpc_provider_1.JsonRpcProvider {
        send(method, params) {
          const request = {
            method,
            params,
            id: this._nextId++,
            jsonrpc: "2.0"
          };
          if (this._pendingBatch == null) {
            this._pendingBatch = [];
          }
          const inflightRequest = {
            request,
            resolve: null,
            reject: null
          };
          const promise = new Promise(((resolve, reject) => {
            inflightRequest.resolve = resolve;
            inflightRequest.reject = reject;
          }));
          this._pendingBatch.push(inflightRequest);
          if (!this._pendingBatchAggregator) {
            this._pendingBatchAggregator = setTimeout((() => {
              const batch = this._pendingBatch;
              this._pendingBatch = null;
              this._pendingBatchAggregator = null;
              const request = batch.map((inflight => inflight.request));
              this.emit("debug", {
                action: "requestBatch",
                request: (0, properties_1.deepCopy)(request),
                provider: this
              });
              return (0, web_1.fetchJson)(this.connection, JSON.stringify(request)).then((result => {
                this.emit("debug", {
                  action: "response",
                  request,
                  response: result,
                  provider: this
                });
                batch.forEach(((inflightRequest, index) => {
                  const payload = result[index];
                  if (payload.error) {
                    const error = new Error(payload.error.message);
                    error.code = payload.error.code;
                    error.data = payload.error.data;
                    inflightRequest.reject(error);
                  } else {
                    inflightRequest.resolve(payload.result);
                  }
                }));
              }), (error => {
                this.emit("debug", {
                  action: "response",
                  error,
                  request,
                  provider: this
                });
                batch.forEach((inflightRequest => {
                  inflightRequest.reject(error);
                }));
              }));
            }), 10);
          }
          return promise;
        }
      }
      exports.JsonRpcBatchProvider = JsonRpcBatchProvider;
    },
    535(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.JsonRpcProvider = exports.JsonRpcSigner = void 0;
      const abstract_signer_1 = __webpack_require__(8788);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const hash_1 = __webpack_require__(413);
      const properties_1 = __webpack_require__(1476);
      const strings_1 = __webpack_require__(2509);
      const transactions_1 = __webpack_require__(3776);
      const web_1 = __webpack_require__(6637);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      const base_provider_1 = __webpack_require__(7408);
      const errorGas = [ "call", "estimateGas" ];
      function spelunk(value, requireData) {
        if (value == null) {
          return null;
        }
        if (typeof value.message === "string" && value.message.match("reverted")) {
          const data = (0, bytes_1.isHexString)(value.data) ? value.data : null;
          if (!requireData || data) {
            return {
              message: value.message,
              data
            };
          }
        }
        if (typeof value === "object") {
          for (const key in value) {
            const result = spelunk(value[key], requireData);
            if (result) {
              return result;
            }
          }
          return null;
        }
        if (typeof value === "string") {
          try {
            return spelunk(JSON.parse(value), requireData);
          } catch (error) {}
        }
        return null;
      }
      function checkError(method, error, params) {
        const transaction = params.transaction || params.signedTransaction;
        if (method === "call") {
          const result = spelunk(error, true);
          if (result) {
            return result.data;
          }
          logger.throwError("missing revert data in call exception; Transaction reverted without a reason string", logger_1.Logger.errors.CALL_EXCEPTION, {
            data: "0x",
            transaction,
            error
          });
        }
        if (method === "estimateGas") {
          let result = spelunk(error.body, false);
          if (result == null) {
            result = spelunk(error, false);
          }
          if (result) {
            logger.throwError("cannot estimate gas; transaction may fail or may require manual gas limit", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {
              reason: result.message,
              method,
              transaction,
              error
            });
          }
        }
        let message = error.message;
        if (error.code === logger_1.Logger.errors.SERVER_ERROR && error.error && typeof error.error.message === "string") {
          message = error.error.message;
        } else if (typeof error.body === "string") {
          message = error.body;
        } else if (typeof error.responseText === "string") {
          message = error.responseText;
        }
        message = (message || "").toLowerCase();
        if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {
          logger.throwError("insufficient funds for intrinsic transaction cost", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {
            error,
            method,
            transaction
          });
        }
        if (message.match(/nonce (is )?too low/i)) {
          logger.throwError("nonce has already been used", logger_1.Logger.errors.NONCE_EXPIRED, {
            error,
            method,
            transaction
          });
        }
        if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {
          logger.throwError("replacement fee too low", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {
            error,
            method,
            transaction
          });
        }
        if (message.match(/only replay-protected/i)) {
          logger.throwError("legacy pre-eip-155 transactions not supported", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            error,
            method,
            transaction
          });
        }
        if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {
          logger.throwError("cannot estimate gas; transaction may fail or may require manual gas limit", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {
            error,
            method,
            transaction
          });
        }
        throw error;
      }
      function timer(timeout) {
        return new Promise((function(resolve) {
          setTimeout(resolve, timeout);
        }));
      }
      function getResult(payload) {
        if (payload.error) {
          const error = new Error(payload.error.message);
          error.code = payload.error.code;
          error.data = payload.error.data;
          throw error;
        }
        return payload.result;
      }
      function getLowerCase(value) {
        if (value) {
          return value.toLowerCase();
        }
        return value;
      }
      const _constructorGuard = {};
      class JsonRpcSigner extends abstract_signer_1.Signer {
        constructor(constructorGuard, provider, addressOrIndex) {
          super();
          if (constructorGuard !== _constructorGuard) {
            throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");
          }
          (0, properties_1.defineReadOnly)(this, "provider", provider);
          if (addressOrIndex == null) {
            addressOrIndex = 0;
          }
          if (typeof addressOrIndex === "string") {
            (0, properties_1.defineReadOnly)(this, "_address", this.provider.formatter.address(addressOrIndex));
            (0, properties_1.defineReadOnly)(this, "_index", null);
          } else if (typeof addressOrIndex === "number") {
            (0, properties_1.defineReadOnly)(this, "_index", addressOrIndex);
            (0, properties_1.defineReadOnly)(this, "_address", null);
          } else {
            logger.throwArgumentError("invalid address or index", "addressOrIndex", addressOrIndex);
          }
        }
        connect(provider) {
          return logger.throwError("cannot alter JSON-RPC Signer connection", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "connect"
          });
        }
        connectUnchecked() {
          return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);
        }
        getAddress() {
          if (this._address) {
            return Promise.resolve(this._address);
          }
          return this.provider.send("eth_accounts", []).then((accounts => {
            if (accounts.length <= this._index) {
              logger.throwError("unknown account #" + this._index, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                operation: "getAddress"
              });
            }
            return this.provider.formatter.address(accounts[this._index]);
          }));
        }
        sendUncheckedTransaction(transaction) {
          transaction = (0, properties_1.shallowCopy)(transaction);
          const fromAddress = this.getAddress().then((address => {
            if (address) {
              address = address.toLowerCase();
            }
            return address;
          }));
          if (transaction.gasLimit == null) {
            const estimate = (0, properties_1.shallowCopy)(transaction);
            estimate.from = fromAddress;
            transaction.gasLimit = this.provider.estimateGas(estimate);
          }
          if (transaction.to != null) {
            transaction.to = Promise.resolve(transaction.to).then((async to => {
              if (to == null) {
                return null;
              }
              const address = await this.provider.resolveName(to);
              if (address == null) {
                logger.throwArgumentError("provided ENS name resolves to null", "tx.to", to);
              }
              return address;
            }));
          }
          return (0, properties_1.resolveProperties)({
            tx: (0, properties_1.resolveProperties)(transaction),
            sender: fromAddress
          }).then((({tx, sender}) => {
            if (tx.from != null) {
              if (tx.from.toLowerCase() !== sender) {
                logger.throwArgumentError("from address mismatch", "transaction", transaction);
              }
            } else {
              tx.from = sender;
            }
            const hexTx = this.provider.constructor.hexlifyTransaction(tx, {
              from: true
            });
            return this.provider.send("eth_sendTransaction", [ hexTx ]).then((hash => hash), (error => {
              if (typeof error.message === "string" && error.message.match(/user denied/i)) {
                logger.throwError("user rejected transaction", logger_1.Logger.errors.ACTION_REJECTED, {
                  action: "sendTransaction",
                  transaction: tx
                });
              }
              return checkError("sendTransaction", error, hexTx);
            }));
          }));
        }
        signTransaction(transaction) {
          return logger.throwError("signing transactions is unsupported", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "signTransaction"
          });
        }
        async sendTransaction(transaction) {
          const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);
          const hash = await this.sendUncheckedTransaction(transaction);
          try {
            return await (0, web_1.poll)((async () => {
              const tx = await this.provider.getTransaction(hash);
              if (tx === null) {
                return undefined;
              }
              return this.provider._wrapTransaction(tx, hash, blockNumber);
            }), {
              oncePoll: this.provider
            });
          } catch (error) {
            error.transactionHash = hash;
            throw error;
          }
        }
        async signMessage(message) {
          const data = typeof message === "string" ? (0, strings_1.toUtf8Bytes)(message) : message;
          const address = await this.getAddress();
          try {
            return await this.provider.send("personal_sign", [ (0, bytes_1.hexlify)(data), address.toLowerCase() ]);
          } catch (error) {
            if (typeof error.message === "string" && error.message.match(/user denied/i)) {
              logger.throwError("user rejected signing", logger_1.Logger.errors.ACTION_REJECTED, {
                action: "signMessage",
                from: address,
                messageData: message
              });
            }
            throw error;
          }
        }
        async _legacySignMessage(message) {
          const data = typeof message === "string" ? (0, strings_1.toUtf8Bytes)(message) : message;
          const address = await this.getAddress();
          try {
            return await this.provider.send("eth_sign", [ address.toLowerCase(), (0, bytes_1.hexlify)(data) ]);
          } catch (error) {
            if (typeof error.message === "string" && error.message.match(/user denied/i)) {
              logger.throwError("user rejected signing", logger_1.Logger.errors.ACTION_REJECTED, {
                action: "_legacySignMessage",
                from: address,
                messageData: message
              });
            }
            throw error;
          }
        }
        async _signTypedData(domain, types, value) {
          const populated = await hash_1._TypedDataEncoder.resolveNames(domain, types, value, (name => this.provider.resolveName(name)));
          const address = await this.getAddress();
          try {
            return await this.provider.send("eth_signTypedData_v4", [ address.toLowerCase(), JSON.stringify(hash_1._TypedDataEncoder.getPayload(populated.domain, types, populated.value)) ]);
          } catch (error) {
            if (typeof error.message === "string" && error.message.match(/user denied/i)) {
              logger.throwError("user rejected signing", logger_1.Logger.errors.ACTION_REJECTED, {
                action: "_signTypedData",
                from: address,
                messageData: {
                  domain: populated.domain,
                  types,
                  value: populated.value
                }
              });
            }
            throw error;
          }
        }
        async unlock(password) {
          const provider = this.provider;
          const address = await this.getAddress();
          return provider.send("personal_unlockAccount", [ address.toLowerCase(), password, null ]);
        }
      }
      exports.JsonRpcSigner = JsonRpcSigner;
      class UncheckedJsonRpcSigner extends JsonRpcSigner {
        sendTransaction(transaction) {
          return this.sendUncheckedTransaction(transaction).then((hash => ({
            hash,
            nonce: null,
            gasLimit: null,
            gasPrice: null,
            data: null,
            value: null,
            chainId: null,
            confirmations: 0,
            from: null,
            wait: confirmations => this.provider.waitForTransaction(hash, confirmations)
          })));
        }
      }
      const allowedTransactionKeys = {
        chainId: true,
        data: true,
        gasLimit: true,
        gasPrice: true,
        nonce: true,
        to: true,
        value: true,
        type: true,
        accessList: true,
        maxFeePerGas: true,
        maxPriorityFeePerGas: true
      };
      class JsonRpcProvider extends base_provider_1.BaseProvider {
        constructor(url, network) {
          let networkOrReady = network;
          if (networkOrReady == null) {
            networkOrReady = new Promise(((resolve, reject) => {
              setTimeout((() => {
                this.detectNetwork().then((network => {
                  resolve(network);
                }), (error => {
                  reject(error);
                }));
              }), 0);
            }));
          }
          super(networkOrReady);
          if (!url) {
            url = (0, properties_1.getStatic)(this.constructor, "defaultUrl")();
          }
          if (typeof url === "string") {
            (0, properties_1.defineReadOnly)(this, "connection", Object.freeze({
              url
            }));
          } else {
            (0, properties_1.defineReadOnly)(this, "connection", Object.freeze((0, properties_1.shallowCopy)(url)));
          }
          this._nextId = 42;
        }
        get _cache() {
          if (this._eventLoopCache == null) {
            this._eventLoopCache = {};
          }
          return this._eventLoopCache;
        }
        static defaultUrl() {
          return "http://localhost:8545";
        }
        detectNetwork() {
          if (!this._cache["detectNetwork"]) {
            this._cache["detectNetwork"] = this._uncachedDetectNetwork();
            setTimeout((() => {
              this._cache["detectNetwork"] = null;
            }), 0);
          }
          return this._cache["detectNetwork"];
        }
        async _uncachedDetectNetwork() {
          await timer(0);
          let chainId = null;
          try {
            chainId = await this.send("eth_chainId", []);
          } catch (error) {
            try {
              chainId = await this.send("net_version", []);
            } catch (error) {}
          }
          if (chainId != null) {
            const getNetwork = (0, properties_1.getStatic)(this.constructor, "getNetwork");
            try {
              return getNetwork(bignumber_1.BigNumber.from(chainId).toNumber());
            } catch (error) {
              return logger.throwError("could not detect network", logger_1.Logger.errors.NETWORK_ERROR, {
                chainId,
                event: "invalidNetwork",
                serverError: error
              });
            }
          }
          return logger.throwError("could not detect network", logger_1.Logger.errors.NETWORK_ERROR, {
            event: "noNetwork"
          });
        }
        getSigner(addressOrIndex) {
          return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);
        }
        getUncheckedSigner(addressOrIndex) {
          return this.getSigner(addressOrIndex).connectUnchecked();
        }
        listAccounts() {
          return this.send("eth_accounts", []).then((accounts => accounts.map((a => this.formatter.address(a)))));
        }
        send(method, params) {
          const request = {
            method,
            params,
            id: this._nextId++,
            jsonrpc: "2.0"
          };
          this.emit("debug", {
            action: "request",
            request: (0, properties_1.deepCopy)(request),
            provider: this
          });
          const cache = [ "eth_chainId", "eth_blockNumber" ].indexOf(method) >= 0;
          if (cache && this._cache[method]) {
            return this._cache[method];
          }
          const result = (0, web_1.fetchJson)(this.connection, JSON.stringify(request), getResult).then((result => {
            this.emit("debug", {
              action: "response",
              request,
              response: result,
              provider: this
            });
            return result;
          }), (error => {
            this.emit("debug", {
              action: "response",
              error,
              request,
              provider: this
            });
            throw error;
          }));
          if (cache) {
            this._cache[method] = result;
            setTimeout((() => {
              this._cache[method] = null;
            }), 0);
          }
          return result;
        }
        prepareRequest(method, params) {
          switch (method) {
           case "getBlockNumber":
            return [ "eth_blockNumber", [] ];

           case "getGasPrice":
            return [ "eth_gasPrice", [] ];

           case "getBalance":
            return [ "eth_getBalance", [ getLowerCase(params.address), params.blockTag ] ];

           case "getTransactionCount":
            return [ "eth_getTransactionCount", [ getLowerCase(params.address), params.blockTag ] ];

           case "getCode":
            return [ "eth_getCode", [ getLowerCase(params.address), params.blockTag ] ];

           case "getStorageAt":
            return [ "eth_getStorageAt", [ getLowerCase(params.address), (0, bytes_1.hexZeroPad)(params.position, 32), params.blockTag ] ];

           case "sendTransaction":
            return [ "eth_sendRawTransaction", [ params.signedTransaction ] ];

           case "getBlock":
            if (params.blockTag) {
              return [ "eth_getBlockByNumber", [ params.blockTag, !!params.includeTransactions ] ];
            } else if (params.blockHash) {
              return [ "eth_getBlockByHash", [ params.blockHash, !!params.includeTransactions ] ];
            }
            return null;

           case "getTransaction":
            return [ "eth_getTransactionByHash", [ params.transactionHash ] ];

           case "getTransactionReceipt":
            return [ "eth_getTransactionReceipt", [ params.transactionHash ] ];

           case "call":
            {
              const hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, "hexlifyTransaction");
              return [ "eth_call", [ hexlifyTransaction(params.transaction, {
                from: true
              }), params.blockTag ] ];
            }

           case "estimateGas":
            {
              const hexlifyTransaction = (0, properties_1.getStatic)(this.constructor, "hexlifyTransaction");
              return [ "eth_estimateGas", [ hexlifyTransaction(params.transaction, {
                from: true
              }) ] ];
            }

           case "getLogs":
            if (params.filter && params.filter.address != null) {
              params.filter.address = getLowerCase(params.filter.address);
            }
            return [ "eth_getLogs", [ params.filter ] ];

           default:
            break;
          }
          return null;
        }
        async perform(method, params) {
          if (method === "call" || method === "estimateGas") {
            const tx = params.transaction;
            if (tx && tx.type != null && bignumber_1.BigNumber.from(tx.type).isZero()) {
              if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {
                const feeData = await this.getFeeData();
                if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {
                  params = (0, properties_1.shallowCopy)(params);
                  params.transaction = (0, properties_1.shallowCopy)(tx);
                  delete params.transaction.type;
                }
              }
            }
          }
          const args = this.prepareRequest(method, params);
          if (args == null) {
            logger.throwError(method + " not implemented", logger_1.Logger.errors.NOT_IMPLEMENTED, {
              operation: method
            });
          }
          try {
            return await this.send(args[0], args[1]);
          } catch (error) {
            return checkError(method, error, params);
          }
        }
        _startEvent(event) {
          if (event.tag === "pending") {
            this._startPending();
          }
          super._startEvent(event);
        }
        _startPending() {
          if (this._pendingFilter != null) {
            return;
          }
          const self = this;
          const pendingFilter = this.send("eth_newPendingTransactionFilter", []);
          this._pendingFilter = pendingFilter;
          pendingFilter.then((function(filterId) {
            function poll() {
              self.send("eth_getFilterChanges", [ filterId ]).then((function(hashes) {
                if (self._pendingFilter != pendingFilter) {
                  return null;
                }
                let seq = Promise.resolve();
                hashes.forEach((function(hash) {
                  self._emitted["t:" + hash.toLowerCase()] = "pending";
                  seq = seq.then((function() {
                    return self.getTransaction(hash).then((function(tx) {
                      self.emit("pending", tx);
                      return null;
                    }));
                  }));
                }));
                return seq.then((function() {
                  return timer(1e3);
                }));
              })).then((function() {
                if (self._pendingFilter != pendingFilter) {
                  self.send("eth_uninstallFilter", [ filterId ]);
                  return;
                }
                setTimeout((function() {
                  poll();
                }), 0);
                return null;
              })).catch((error => {}));
            }
            poll();
            return filterId;
          })).catch((error => {}));
        }
        _stopEvent(event) {
          if (event.tag === "pending" && this.listenerCount("pending") === 0) {
            this._pendingFilter = null;
          }
          super._stopEvent(event);
        }
        static hexlifyTransaction(transaction, allowExtra) {
          const allowed = (0, properties_1.shallowCopy)(allowedTransactionKeys);
          if (allowExtra) {
            for (const key in allowExtra) {
              if (allowExtra[key]) {
                allowed[key] = true;
              }
            }
          }
          (0, properties_1.checkProperties)(transaction, allowed);
          const result = {};
          [ "chainId", "gasLimit", "gasPrice", "type", "maxFeePerGas", "maxPriorityFeePerGas", "nonce", "value" ].forEach((function(key) {
            if (transaction[key] == null) {
              return;
            }
            const value = (0, bytes_1.hexValue)(bignumber_1.BigNumber.from(transaction[key]));
            if (key === "gasLimit") {
              key = "gas";
            }
            result[key] = value;
          }));
          [ "from", "to", "data" ].forEach((function(key) {
            if (transaction[key] == null) {
              return;
            }
            result[key] = (0, bytes_1.hexlify)(transaction[key]);
          }));
          if (transaction.accessList) {
            result["accessList"] = (0, transactions_1.accessListify)(transaction.accessList);
          }
          return result;
        }
      }
      exports.JsonRpcProvider = JsonRpcProvider;
    },
    3839(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.UrlJsonRpcProvider = exports.StaticJsonRpcProvider = void 0;
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      const json_rpc_provider_1 = __webpack_require__(535);
      class StaticJsonRpcProvider extends json_rpc_provider_1.JsonRpcProvider {
        async detectNetwork() {
          let network = this.network;
          if (network == null) {
            network = await super.detectNetwork();
            if (!network) {
              logger.throwError("no network detected", logger_1.Logger.errors.UNKNOWN_ERROR, {});
            }
            if (this._network == null) {
              (0, properties_1.defineReadOnly)(this, "_network", network);
              this.emit("network", network, null);
            }
          }
          return network;
        }
      }
      exports.StaticJsonRpcProvider = StaticJsonRpcProvider;
      class UrlJsonRpcProvider extends StaticJsonRpcProvider {
        constructor(network, apiKey) {
          logger.checkAbstract(new.target, UrlJsonRpcProvider);
          network = (0, properties_1.getStatic)(new.target, "getNetwork")(network);
          apiKey = (0, properties_1.getStatic)(new.target, "getApiKey")(apiKey);
          const connection = (0, properties_1.getStatic)(new.target, "getUrl")(network, apiKey);
          super(connection, network);
          if (typeof apiKey === "string") {
            (0, properties_1.defineReadOnly)(this, "apiKey", apiKey);
          } else if (apiKey != null) {
            Object.keys(apiKey).forEach((key => {
              (0, properties_1.defineReadOnly)(this, key, apiKey[key]);
            }));
          }
        }
        _startPending() {
          logger.warn("WARNING: API provider does not support pending filters");
        }
        isCommunityResource() {
          return false;
        }
        getSigner(address) {
          return logger.throwError("API provider does not support signing", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "getSigner"
          });
        }
        listAccounts() {
          return Promise.resolve([]);
        }
        static getApiKey(apiKey) {
          return apiKey;
        }
        static getUrl(network, apiKey) {
          return logger.throwError("not implemented; sub-classes must override getUrl", logger_1.Logger.errors.NOT_IMPLEMENTED, {
            operation: "getUrl"
          });
        }
      }
      exports.UrlJsonRpcProvider = UrlJsonRpcProvider;
    },
    7254(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Web3Provider = void 0;
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      const json_rpc_provider_1 = __webpack_require__(535);
      let _nextId = 1;
      function buildWeb3LegacyFetcher(provider, sendFunc) {
        const fetcher = "Web3LegacyFetcher";
        return function(method, params) {
          const request = {
            method,
            params,
            id: _nextId++,
            jsonrpc: "2.0"
          };
          return new Promise(((resolve, reject) => {
            this.emit("debug", {
              action: "request",
              fetcher,
              request: (0, properties_1.deepCopy)(request),
              provider: this
            });
            sendFunc(request, ((error, response) => {
              if (error) {
                this.emit("debug", {
                  action: "response",
                  fetcher,
                  error,
                  request,
                  provider: this
                });
                return reject(error);
              }
              this.emit("debug", {
                action: "response",
                fetcher,
                request,
                response,
                provider: this
              });
              if (response.error) {
                const error = new Error(response.error.message);
                error.code = response.error.code;
                error.data = response.error.data;
                return reject(error);
              }
              resolve(response.result);
            }));
          }));
        };
      }
      function buildEip1193Fetcher(provider) {
        return function(method, params) {
          if (params == null) {
            params = [];
          }
          const request = {
            method,
            params
          };
          this.emit("debug", {
            action: "request",
            fetcher: "Eip1193Fetcher",
            request: (0, properties_1.deepCopy)(request),
            provider: this
          });
          return provider.request(request).then((response => {
            this.emit("debug", {
              action: "response",
              fetcher: "Eip1193Fetcher",
              request,
              response,
              provider: this
            });
            return response;
          }), (error => {
            this.emit("debug", {
              action: "response",
              fetcher: "Eip1193Fetcher",
              request,
              error,
              provider: this
            });
            throw error;
          }));
        };
      }
      class Web3Provider extends json_rpc_provider_1.JsonRpcProvider {
        constructor(provider, network) {
          if (provider == null) {
            logger.throwArgumentError("missing provider", "provider", provider);
          }
          let path = null;
          let jsonRpcFetchFunc = null;
          let subprovider = null;
          if (typeof provider === "function") {
            path = "unknown:";
            jsonRpcFetchFunc = provider;
          } else {
            path = provider.host || provider.path || "";
            subprovider = provider;
            if (provider.request) {
              if (path === "") {
                path = "eip-1193:";
              }
              jsonRpcFetchFunc = buildEip1193Fetcher(provider);
            } else if (provider.sendAsync) {
              jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));
            } else if (provider.send) {
              jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));
            } else {
              logger.throwArgumentError("unsupported provider", "provider", provider);
            }
            if (!path) {
              path = "unknown:";
            }
          }
          super(path, network);
          (0, properties_1.defineReadOnly)(this, "jsonRpcFetchFunc", jsonRpcFetchFunc);
          (0, properties_1.defineReadOnly)(this, "provider", subprovider);
        }
        send(method, params) {
          return this.jsonRpcFetchFunc(method, params);
        }
      }
      exports.Web3Provider = Web3Provider;
    },
    4518(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.WebSocketProvider = void 0;
      const bignumber_1 = __webpack_require__(3804);
      const properties_1 = __webpack_require__(1476);
      const json_rpc_provider_1 = __webpack_require__(535);
      const ws_1 = __webpack_require__(7008);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2394);
      const logger = new logger_1.Logger(_version_1.version);
      let NextId = 1;
      class WebSocketProvider extends json_rpc_provider_1.JsonRpcProvider {
        constructor(url, network) {
          if (network === "any") {
            logger.throwError("WebSocketProvider does not support 'any' network yet", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "network:any"
            });
          }
          if (typeof url === "string") {
            super(url, network);
          } else {
            super("_websocket", network);
          }
          this._pollingInterval = -1;
          this._wsReady = false;
          if (typeof url === "string") {
            (0, properties_1.defineReadOnly)(this, "_websocket", new ws_1.WebSocket(this.connection.url));
          } else {
            (0, properties_1.defineReadOnly)(this, "_websocket", url);
          }
          (0, properties_1.defineReadOnly)(this, "_requests", {});
          (0, properties_1.defineReadOnly)(this, "_subs", {});
          (0, properties_1.defineReadOnly)(this, "_subIds", {});
          (0, properties_1.defineReadOnly)(this, "_detectNetwork", super.detectNetwork());
          this.websocket.onopen = () => {
            this._wsReady = true;
            Object.keys(this._requests).forEach((id => {
              this.websocket.send(this._requests[id].payload);
            }));
          };
          this.websocket.onmessage = messageEvent => {
            const data = messageEvent.data;
            const result = JSON.parse(data);
            if (result.id != null) {
              const id = String(result.id);
              const request = this._requests[id];
              delete this._requests[id];
              if (result.result !== undefined) {
                request.callback(null, result.result);
                this.emit("debug", {
                  action: "response",
                  request: JSON.parse(request.payload),
                  response: result.result,
                  provider: this
                });
              } else {
                let error = null;
                if (result.error) {
                  error = new Error(result.error.message || "unknown error");
                  (0, properties_1.defineReadOnly)(error, "code", result.error.code || null);
                  (0, properties_1.defineReadOnly)(error, "response", data);
                } else {
                  error = new Error("unknown error");
                }
                request.callback(error, undefined);
                this.emit("debug", {
                  action: "response",
                  error,
                  request: JSON.parse(request.payload),
                  provider: this
                });
              }
            } else if (result.method === "eth_subscription") {
              const sub = this._subs[result.params.subscription];
              if (sub) {
                sub.processFunc(result.params.result);
              }
            } else {
              console.warn("this should not happen");
            }
          };
          const fauxPoll = setInterval((() => {
            this.emit("poll");
          }), 1e3);
          if (fauxPoll.unref) {
            fauxPoll.unref();
          }
        }
        get websocket() {
          return this._websocket;
        }
        detectNetwork() {
          return this._detectNetwork;
        }
        get pollingInterval() {
          return 0;
        }
        resetEventsBlock(blockNumber) {
          logger.throwError("cannot reset events block on WebSocketProvider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "resetEventBlock"
          });
        }
        set pollingInterval(value) {
          logger.throwError("cannot set polling interval on WebSocketProvider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "setPollingInterval"
          });
        }
        async poll() {
          return null;
        }
        set polling(value) {
          if (!value) {
            return;
          }
          logger.throwError("cannot set polling on WebSocketProvider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "setPolling"
          });
        }
        send(method, params) {
          const rid = NextId++;
          return new Promise(((resolve, reject) => {
            function callback(error, result) {
              if (error) {
                return reject(error);
              }
              return resolve(result);
            }
            const payload = JSON.stringify({
              method,
              params,
              id: rid,
              jsonrpc: "2.0"
            });
            this.emit("debug", {
              action: "request",
              request: JSON.parse(payload),
              provider: this
            });
            this._requests[String(rid)] = {
              callback,
              payload
            };
            if (this._wsReady) {
              this.websocket.send(payload);
            }
          }));
        }
        static defaultUrl() {
          return "ws://localhost:8546";
        }
        async _subscribe(tag, param, processFunc) {
          let subIdPromise = this._subIds[tag];
          if (subIdPromise == null) {
            subIdPromise = Promise.all(param).then((param => this.send("eth_subscribe", param)));
            this._subIds[tag] = subIdPromise;
          }
          const subId = await subIdPromise;
          this._subs[subId] = {
            tag,
            processFunc
          };
        }
        _startEvent(event) {
          switch (event.type) {
           case "block":
            this._subscribe("block", [ "newHeads" ], (result => {
              const blockNumber = bignumber_1.BigNumber.from(result.number).toNumber();
              this._emitted.block = blockNumber;
              this.emit("block", blockNumber);
            }));
            break;

           case "pending":
            this._subscribe("pending", [ "newPendingTransactions" ], (result => {
              this.emit("pending", result);
            }));
            break;

           case "filter":
            this._subscribe(event.tag, [ "logs", this._getFilter(event.filter) ], (result => {
              if (result.removed == null) {
                result.removed = false;
              }
              this.emit(event.filter, this.formatter.filterLog(result));
            }));
            break;

           case "tx":
            {
              const emitReceipt = event => {
                const hash = event.hash;
                this.getTransactionReceipt(hash).then((receipt => {
                  if (!receipt) {
                    return;
                  }
                  this.emit(hash, receipt);
                }));
              };
              emitReceipt(event);
              this._subscribe("tx", [ "newHeads" ], (result => {
                this._events.filter((e => e.type === "tx")).forEach(emitReceipt);
              }));
              break;
            }

           case "debug":
           case "poll":
           case "willPoll":
           case "didPoll":
           case "error":
            break;

           default:
            console.log("unhandled:", event);
            break;
          }
        }
        _stopEvent(event) {
          let tag = event.tag;
          if (event.type === "tx") {
            if (this._events.filter((e => e.type === "tx")).length) {
              return;
            }
            tag = "tx";
          } else if (this.listenerCount(event.event)) {
            return;
          }
          const subId = this._subIds[tag];
          if (!subId) {
            return;
          }
          delete this._subIds[tag];
          subId.then((subId => {
            if (!this._subs[subId]) {
              return;
            }
            delete this._subs[subId];
            this.send("eth_unsubscribe", [ subId ]);
          }));
        }
        async destroy() {
          if (this.websocket.readyState === ws_1.WebSocket.CONNECTING) {
            await new Promise((resolve => {
              this.websocket.onopen = function() {
                resolve(true);
              };
              this.websocket.onerror = function() {
                resolve(false);
              };
            }));
          }
          this.websocket.close(1e3);
        }
      }
      exports.WebSocketProvider = WebSocketProvider;
    },
    7869(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "purity/5.7.2";
    },
    3184(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.pack = pack;
      exports.keccak256 = keccak256;
      exports.sha256 = sha256;
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const keccak256_1 = __webpack_require__(1136);
      const sha2_1 = __webpack_require__(8417);
      const strings_1 = __webpack_require__(2509);
      const regexBytes = new RegExp("^bytes([0-9]+)$");
      const regexNumber = new RegExp("^(u?int)([0-9]*)$");
      const regexArray = new RegExp("^(.*)\\[([0-9]*)\\]$");
      const Zeros = "0000000000000000000000000000000000000000000000000000000000000000";
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(7869);
      const logger = new logger_1.Logger(_version_1.version);
      function _pack(type, value, isArray) {
        switch (type) {
         case "address":
          if (isArray) {
            return (0, bytes_1.zeroPad)(value, 32);
          }
          return (0, bytes_1.arrayify)(value);

         case "string":
          return (0, strings_1.toUtf8Bytes)(value);

         case "bytes":
          return (0, bytes_1.arrayify)(value);

         case "bool":
          value = value ? "0x01" : "0x00";
          if (isArray) {
            return (0, bytes_1.zeroPad)(value, 32);
          }
          return (0, bytes_1.arrayify)(value);
        }
        let match = type.match(regexNumber);
        if (match) {
          let size = parseInt(match[2] || "256");
          if (match[2] && String(size) !== match[2] || size % 8 !== 0 || size === 0 || size > 256) {
            logger.throwArgumentError("invalid number type", "type", type);
          }
          if (isArray) {
            size = 256;
          }
          value = bignumber_1.BigNumber.from(value).toTwos(size);
          return (0, bytes_1.zeroPad)(value, size / 8);
        }
        match = type.match(regexBytes);
        if (match) {
          const size = parseInt(match[1]);
          if (String(size) !== match[1] || size === 0 || size > 32) {
            logger.throwArgumentError("invalid bytes type", "type", type);
          }
          if ((0, bytes_1.arrayify)(value).byteLength !== size) {
            logger.throwArgumentError(`invalid value for ${type}`, "value", value);
          }
          if (isArray) {
            return (0, bytes_1.arrayify)((value + Zeros).substring(0, 66));
          }
          return value;
        }
        match = type.match(regexArray);
        if (match && Array.isArray(value)) {
          const baseType = match[1];
          const count = parseInt(match[2] || String(value.length));
          if (count != value.length) {
            logger.throwArgumentError(`invalid array length for ${type}`, "value", value);
          }
          const result = [];
          value.forEach((function(value) {
            result.push(_pack(baseType, value, true));
          }));
          return (0, bytes_1.concat)(result);
        }
        return logger.throwArgumentError("invalid type", "type", type);
      }
      function pack(types, values) {
        if (types.length != values.length) {
          logger.throwArgumentError("wrong number of values; expected ${ types.length }", "values", values);
        }
        const tight = [];
        types.forEach((function(type, index) {
          tight.push(_pack(type, values[index]));
        }));
        return (0, bytes_1.hexlify)((0, bytes_1.concat)(tight));
      }
      function keccak256(types, values) {
        return (0, keccak256_1.keccak256)(pack(types, values));
      }
      function sha256(types, values) {
        return (0, sha2_1.sha256)(pack(types, values));
      }
    },
    850(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "qethers/1.0.13";
    },
    7785(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        Object.defineProperty(o, k2, {
          enumerable: true,
          get: function() {
            return m[k];
          }
        });
      } : function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", {
          enumerable: true,
          value: v
        });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = this && this.__importStar || function(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Wordlist = exports.version = exports.wordlists = exports.utils = exports.logger = exports.errors = exports.constants = exports.FixedNumber = exports.BigNumber = exports.ContractFactory = exports.Contract = exports.BaseContract = exports.providers = exports.getDefaultProvider = exports.VoidSigner = exports.Wallet = exports.Signer = exports.qethers = void 0;
      const qethers = __importStar(__webpack_require__(5235));
      exports.qethers = qethers;
      try {
        const anyGlobal = window;
        if (anyGlobal._ethers == null) {
          anyGlobal._ethers = qethers;
        }
      } catch (error) {}
      var qethers_1 = __webpack_require__(5235);
      Object.defineProperty(exports, "Signer", {
        enumerable: true,
        get: function() {
          return qethers_1.Signer;
        }
      });
      Object.defineProperty(exports, "Wallet", {
        enumerable: true,
        get: function() {
          return qethers_1.Wallet;
        }
      });
      Object.defineProperty(exports, "VoidSigner", {
        enumerable: true,
        get: function() {
          return qethers_1.VoidSigner;
        }
      });
      Object.defineProperty(exports, "getDefaultProvider", {
        enumerable: true,
        get: function() {
          return qethers_1.getDefaultProvider;
        }
      });
      Object.defineProperty(exports, "providers", {
        enumerable: true,
        get: function() {
          return qethers_1.providers;
        }
      });
      Object.defineProperty(exports, "BaseContract", {
        enumerable: true,
        get: function() {
          return qethers_1.BaseContract;
        }
      });
      Object.defineProperty(exports, "Contract", {
        enumerable: true,
        get: function() {
          return qethers_1.Contract;
        }
      });
      Object.defineProperty(exports, "ContractFactory", {
        enumerable: true,
        get: function() {
          return qethers_1.ContractFactory;
        }
      });
      Object.defineProperty(exports, "BigNumber", {
        enumerable: true,
        get: function() {
          return qethers_1.BigNumber;
        }
      });
      Object.defineProperty(exports, "FixedNumber", {
        enumerable: true,
        get: function() {
          return qethers_1.FixedNumber;
        }
      });
      Object.defineProperty(exports, "constants", {
        enumerable: true,
        get: function() {
          return qethers_1.constants;
        }
      });
      Object.defineProperty(exports, "errors", {
        enumerable: true,
        get: function() {
          return qethers_1.errors;
        }
      });
      Object.defineProperty(exports, "logger", {
        enumerable: true,
        get: function() {
          return qethers_1.logger;
        }
      });
      Object.defineProperty(exports, "utils", {
        enumerable: true,
        get: function() {
          return qethers_1.utils;
        }
      });
      Object.defineProperty(exports, "wordlists", {
        enumerable: true,
        get: function() {
          return qethers_1.wordlists;
        }
      });
      Object.defineProperty(exports, "version", {
        enumerable: true,
        get: function() {
          return qethers_1.version;
        }
      });
      Object.defineProperty(exports, "Wordlist", {
        enumerable: true,
        get: function() {
          return qethers_1.Wordlist;
        }
      });
    },
    5235(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        Object.defineProperty(o, k2, {
          enumerable: true,
          get: function() {
            return m[k];
          }
        });
      } : function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", {
          enumerable: true,
          value: v
        });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = this && this.__importStar || function(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Wordlist = exports.version = exports.wordlists = exports.utils = exports.logger = exports.errors = exports.constants = exports.FixedNumber = exports.BigNumber = exports.ContractFactory = exports.Contract = exports.BaseContract = exports.providers = exports.getDefaultProvider = exports.VoidSigner = exports.Wallet = exports.Signer = void 0;
      const contracts_1 = __webpack_require__(3008);
      Object.defineProperty(exports, "BaseContract", {
        enumerable: true,
        get: function() {
          return contracts_1.BaseContract;
        }
      });
      Object.defineProperty(exports, "Contract", {
        enumerable: true,
        get: function() {
          return contracts_1.Contract;
        }
      });
      Object.defineProperty(exports, "ContractFactory", {
        enumerable: true,
        get: function() {
          return contracts_1.ContractFactory;
        }
      });
      const bignumber_1 = __webpack_require__(3804);
      Object.defineProperty(exports, "BigNumber", {
        enumerable: true,
        get: function() {
          return bignumber_1.BigNumber;
        }
      });
      Object.defineProperty(exports, "FixedNumber", {
        enumerable: true,
        get: function() {
          return bignumber_1.FixedNumber;
        }
      });
      const abstract_signer_1 = __webpack_require__(8788);
      Object.defineProperty(exports, "Signer", {
        enumerable: true,
        get: function() {
          return abstract_signer_1.Signer;
        }
      });
      Object.defineProperty(exports, "VoidSigner", {
        enumerable: true,
        get: function() {
          return abstract_signer_1.VoidSigner;
        }
      });
      const wallet_1 = __webpack_require__(1348);
      Object.defineProperty(exports, "Wallet", {
        enumerable: true,
        get: function() {
          return wallet_1.Wallet;
        }
      });
      const constants = __importStar(__webpack_require__(846));
      exports.constants = constants;
      const providers = __importStar(__webpack_require__(7649));
      exports.providers = providers;
      const providers_1 = __webpack_require__(7649);
      Object.defineProperty(exports, "getDefaultProvider", {
        enumerable: true,
        get: function() {
          return providers_1.getDefaultProvider;
        }
      });
      const wordlists_1 = __webpack_require__(6261);
      Object.defineProperty(exports, "Wordlist", {
        enumerable: true,
        get: function() {
          return wordlists_1.Wordlist;
        }
      });
      Object.defineProperty(exports, "wordlists", {
        enumerable: true,
        get: function() {
          return wordlists_1.wordlists;
        }
      });
      const utils = __importStar(__webpack_require__(6884));
      exports.utils = utils;
      const logger_1 = __webpack_require__(5289);
      Object.defineProperty(exports, "errors", {
        enumerable: true,
        get: function() {
          return logger_1.ErrorCode;
        }
      });
      const _version_1 = __webpack_require__(850);
      Object.defineProperty(exports, "version", {
        enumerable: true,
        get: function() {
          return _version_1.version;
        }
      });
      const logger = new logger_1.Logger(_version_1.version);
      exports.logger = logger;
    },
    6884(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        Object.defineProperty(o, k2, {
          enumerable: true,
          get: function() {
            return m[k];
          }
        });
      } : function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", {
          enumerable: true,
          value: v
        });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = this && this.__importStar || function(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
        __setModuleDefault(result, mod);
        return result;
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.dnsEncode = exports.parseBytes32String = exports.formatBytes32String = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = exports.nameprep = exports.hexDataSlice = exports.hexDataLength = exports.hexZeroPad = exports.hexValue = exports.hexStripZeros = exports.hexConcat = exports.isHexString = exports.hexlify = exports.base64 = exports.base58 = exports.TransactionDescription = exports.LogDescription = exports.Interface = exports.SigningKey = exports.isBytesLike = exports.isBytes = exports.zeroPad = exports.stripZeros = exports.concat = exports.arrayify = exports.shallowCopy = exports.resolveProperties = exports.getStatic = exports.defineReadOnly = exports.deepCopy = exports.checkProperties = exports.poll = exports.fetchJson = exports._fetchData = exports.RLP = exports.Logger = exports.checkResultErrors = exports.FormatTypes = exports.ParamType = exports.FunctionFragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.Fragment = exports.defaultAbiCoder = exports.AbiCoder = void 0;
      exports.Indexed = exports.Utf8ErrorReason = exports.UnicodeNormalizationForm = exports.SupportedAlgorithm = exports.verifyTypedData = exports.verifyMessage = exports.recoverPublicKey = exports.recoverAddress = exports.computeAddress = exports.getJsonWalletAddress = exports.TransactionTypes = exports.serializeTransaction = exports.parseTransaction = exports.accessListify = exports.joinSignature = exports.splitSignature = exports.puritySha256 = exports.purityKeccak256 = exports.purityPack = exports.shuffled = exports.randomBytes = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.keccak256 = exports.computeHmac = exports.commify = exports.parseUnits = exports.formatUnits = exports.parseEther = exports.formatEther = exports.isAddress = exports.getCreate2Address = exports.getContractAddress = exports.getIcapAddress = exports.getAddress = exports._TypedDataEncoder = exports.id = exports.isValidName = exports.namehash = exports.hashMessage = void 0;
      const abi_1 = __webpack_require__(7989);
      Object.defineProperty(exports, "AbiCoder", {
        enumerable: true,
        get: function() {
          return abi_1.AbiCoder;
        }
      });
      Object.defineProperty(exports, "checkResultErrors", {
        enumerable: true,
        get: function() {
          return abi_1.checkResultErrors;
        }
      });
      Object.defineProperty(exports, "ConstructorFragment", {
        enumerable: true,
        get: function() {
          return abi_1.ConstructorFragment;
        }
      });
      Object.defineProperty(exports, "defaultAbiCoder", {
        enumerable: true,
        get: function() {
          return abi_1.defaultAbiCoder;
        }
      });
      Object.defineProperty(exports, "ErrorFragment", {
        enumerable: true,
        get: function() {
          return abi_1.ErrorFragment;
        }
      });
      Object.defineProperty(exports, "EventFragment", {
        enumerable: true,
        get: function() {
          return abi_1.EventFragment;
        }
      });
      Object.defineProperty(exports, "FormatTypes", {
        enumerable: true,
        get: function() {
          return abi_1.FormatTypes;
        }
      });
      Object.defineProperty(exports, "Fragment", {
        enumerable: true,
        get: function() {
          return abi_1.Fragment;
        }
      });
      Object.defineProperty(exports, "FunctionFragment", {
        enumerable: true,
        get: function() {
          return abi_1.FunctionFragment;
        }
      });
      Object.defineProperty(exports, "Indexed", {
        enumerable: true,
        get: function() {
          return abi_1.Indexed;
        }
      });
      Object.defineProperty(exports, "Interface", {
        enumerable: true,
        get: function() {
          return abi_1.Interface;
        }
      });
      Object.defineProperty(exports, "LogDescription", {
        enumerable: true,
        get: function() {
          return abi_1.LogDescription;
        }
      });
      Object.defineProperty(exports, "ParamType", {
        enumerable: true,
        get: function() {
          return abi_1.ParamType;
        }
      });
      Object.defineProperty(exports, "TransactionDescription", {
        enumerable: true,
        get: function() {
          return abi_1.TransactionDescription;
        }
      });
      const address_1 = __webpack_require__(171);
      Object.defineProperty(exports, "getAddress", {
        enumerable: true,
        get: function() {
          return address_1.getAddress;
        }
      });
      Object.defineProperty(exports, "getCreate2Address", {
        enumerable: true,
        get: function() {
          return address_1.getCreate2Address;
        }
      });
      Object.defineProperty(exports, "getContractAddress", {
        enumerable: true,
        get: function() {
          return address_1.getContractAddress;
        }
      });
      Object.defineProperty(exports, "getIcapAddress", {
        enumerable: true,
        get: function() {
          return address_1.getIcapAddress;
        }
      });
      Object.defineProperty(exports, "isAddress", {
        enumerable: true,
        get: function() {
          return address_1.isAddress;
        }
      });
      const base64 = __importStar(__webpack_require__(8886));
      exports.base64 = base64;
      const basex_1 = __webpack_require__(4160);
      Object.defineProperty(exports, "base58", {
        enumerable: true,
        get: function() {
          return basex_1.Base58;
        }
      });
      const bytes_1 = __webpack_require__(8380);
      Object.defineProperty(exports, "arrayify", {
        enumerable: true,
        get: function() {
          return bytes_1.arrayify;
        }
      });
      Object.defineProperty(exports, "concat", {
        enumerable: true,
        get: function() {
          return bytes_1.concat;
        }
      });
      Object.defineProperty(exports, "hexConcat", {
        enumerable: true,
        get: function() {
          return bytes_1.hexConcat;
        }
      });
      Object.defineProperty(exports, "hexDataSlice", {
        enumerable: true,
        get: function() {
          return bytes_1.hexDataSlice;
        }
      });
      Object.defineProperty(exports, "hexDataLength", {
        enumerable: true,
        get: function() {
          return bytes_1.hexDataLength;
        }
      });
      Object.defineProperty(exports, "hexlify", {
        enumerable: true,
        get: function() {
          return bytes_1.hexlify;
        }
      });
      Object.defineProperty(exports, "hexStripZeros", {
        enumerable: true,
        get: function() {
          return bytes_1.hexStripZeros;
        }
      });
      Object.defineProperty(exports, "hexValue", {
        enumerable: true,
        get: function() {
          return bytes_1.hexValue;
        }
      });
      Object.defineProperty(exports, "hexZeroPad", {
        enumerable: true,
        get: function() {
          return bytes_1.hexZeroPad;
        }
      });
      Object.defineProperty(exports, "isBytes", {
        enumerable: true,
        get: function() {
          return bytes_1.isBytes;
        }
      });
      Object.defineProperty(exports, "isBytesLike", {
        enumerable: true,
        get: function() {
          return bytes_1.isBytesLike;
        }
      });
      Object.defineProperty(exports, "isHexString", {
        enumerable: true,
        get: function() {
          return bytes_1.isHexString;
        }
      });
      Object.defineProperty(exports, "joinSignature", {
        enumerable: true,
        get: function() {
          return bytes_1.joinSignature;
        }
      });
      Object.defineProperty(exports, "zeroPad", {
        enumerable: true,
        get: function() {
          return bytes_1.zeroPad;
        }
      });
      Object.defineProperty(exports, "splitSignature", {
        enumerable: true,
        get: function() {
          return bytes_1.splitSignature;
        }
      });
      Object.defineProperty(exports, "stripZeros", {
        enumerable: true,
        get: function() {
          return bytes_1.stripZeros;
        }
      });
      const hash_1 = __webpack_require__(413);
      Object.defineProperty(exports, "_TypedDataEncoder", {
        enumerable: true,
        get: function() {
          return hash_1._TypedDataEncoder;
        }
      });
      Object.defineProperty(exports, "dnsEncode", {
        enumerable: true,
        get: function() {
          return hash_1.dnsEncode;
        }
      });
      Object.defineProperty(exports, "hashMessage", {
        enumerable: true,
        get: function() {
          return hash_1.hashMessage;
        }
      });
      Object.defineProperty(exports, "id", {
        enumerable: true,
        get: function() {
          return hash_1.id;
        }
      });
      Object.defineProperty(exports, "isValidName", {
        enumerable: true,
        get: function() {
          return hash_1.isValidName;
        }
      });
      Object.defineProperty(exports, "namehash", {
        enumerable: true,
        get: function() {
          return hash_1.namehash;
        }
      });
      const json_wallets_1 = __webpack_require__(3120);
      Object.defineProperty(exports, "getJsonWalletAddress", {
        enumerable: true,
        get: function() {
          return json_wallets_1.getJsonWalletAddress;
        }
      });
      const keccak256_1 = __webpack_require__(1136);
      Object.defineProperty(exports, "keccak256", {
        enumerable: true,
        get: function() {
          return keccak256_1.keccak256;
        }
      });
      const logger_1 = __webpack_require__(5289);
      Object.defineProperty(exports, "Logger", {
        enumerable: true,
        get: function() {
          return logger_1.Logger;
        }
      });
      const sha2_1 = __webpack_require__(8417);
      Object.defineProperty(exports, "computeHmac", {
        enumerable: true,
        get: function() {
          return sha2_1.computeHmac;
        }
      });
      Object.defineProperty(exports, "ripemd160", {
        enumerable: true,
        get: function() {
          return sha2_1.ripemd160;
        }
      });
      Object.defineProperty(exports, "sha256", {
        enumerable: true,
        get: function() {
          return sha2_1.sha256;
        }
      });
      Object.defineProperty(exports, "sha512", {
        enumerable: true,
        get: function() {
          return sha2_1.sha512;
        }
      });
      const purity_1 = __webpack_require__(3184);
      Object.defineProperty(exports, "purityKeccak256", {
        enumerable: true,
        get: function() {
          return purity_1.keccak256;
        }
      });
      Object.defineProperty(exports, "purityPack", {
        enumerable: true,
        get: function() {
          return purity_1.pack;
        }
      });
      Object.defineProperty(exports, "puritySha256", {
        enumerable: true,
        get: function() {
          return purity_1.sha256;
        }
      });
      const random_1 = __webpack_require__(590);
      Object.defineProperty(exports, "randomBytes", {
        enumerable: true,
        get: function() {
          return random_1.randomBytes;
        }
      });
      Object.defineProperty(exports, "shuffled", {
        enumerable: true,
        get: function() {
          return random_1.shuffled;
        }
      });
      const properties_1 = __webpack_require__(1476);
      Object.defineProperty(exports, "checkProperties", {
        enumerable: true,
        get: function() {
          return properties_1.checkProperties;
        }
      });
      Object.defineProperty(exports, "deepCopy", {
        enumerable: true,
        get: function() {
          return properties_1.deepCopy;
        }
      });
      Object.defineProperty(exports, "defineReadOnly", {
        enumerable: true,
        get: function() {
          return properties_1.defineReadOnly;
        }
      });
      Object.defineProperty(exports, "getStatic", {
        enumerable: true,
        get: function() {
          return properties_1.getStatic;
        }
      });
      Object.defineProperty(exports, "resolveProperties", {
        enumerable: true,
        get: function() {
          return properties_1.resolveProperties;
        }
      });
      Object.defineProperty(exports, "shallowCopy", {
        enumerable: true,
        get: function() {
          return properties_1.shallowCopy;
        }
      });
      const RLP = __importStar(__webpack_require__(589));
      exports.RLP = RLP;
      const signing_key_1 = __webpack_require__(2494);
      Object.defineProperty(exports, "recoverPublicKey", {
        enumerable: true,
        get: function() {
          return signing_key_1.recoverPublicKey;
        }
      });
      Object.defineProperty(exports, "SigningKey", {
        enumerable: true,
        get: function() {
          return signing_key_1.SigningKey;
        }
      });
      const strings_1 = __webpack_require__(2509);
      Object.defineProperty(exports, "formatBytes32String", {
        enumerable: true,
        get: function() {
          return strings_1.formatBytes32String;
        }
      });
      Object.defineProperty(exports, "nameprep", {
        enumerable: true,
        get: function() {
          return strings_1.nameprep;
        }
      });
      Object.defineProperty(exports, "parseBytes32String", {
        enumerable: true,
        get: function() {
          return strings_1.parseBytes32String;
        }
      });
      Object.defineProperty(exports, "_toEscapedUtf8String", {
        enumerable: true,
        get: function() {
          return strings_1._toEscapedUtf8String;
        }
      });
      Object.defineProperty(exports, "toUtf8Bytes", {
        enumerable: true,
        get: function() {
          return strings_1.toUtf8Bytes;
        }
      });
      Object.defineProperty(exports, "toUtf8CodePoints", {
        enumerable: true,
        get: function() {
          return strings_1.toUtf8CodePoints;
        }
      });
      Object.defineProperty(exports, "toUtf8String", {
        enumerable: true,
        get: function() {
          return strings_1.toUtf8String;
        }
      });
      Object.defineProperty(exports, "Utf8ErrorFuncs", {
        enumerable: true,
        get: function() {
          return strings_1.Utf8ErrorFuncs;
        }
      });
      const transactions_1 = __webpack_require__(3776);
      Object.defineProperty(exports, "accessListify", {
        enumerable: true,
        get: function() {
          return transactions_1.accessListify;
        }
      });
      Object.defineProperty(exports, "computeAddress", {
        enumerable: true,
        get: function() {
          return transactions_1.computeAddress;
        }
      });
      Object.defineProperty(exports, "parseTransaction", {
        enumerable: true,
        get: function() {
          return transactions_1.parse;
        }
      });
      Object.defineProperty(exports, "recoverAddress", {
        enumerable: true,
        get: function() {
          return transactions_1.recoverAddress;
        }
      });
      Object.defineProperty(exports, "serializeTransaction", {
        enumerable: true,
        get: function() {
          return transactions_1.serialize;
        }
      });
      Object.defineProperty(exports, "TransactionTypes", {
        enumerable: true,
        get: function() {
          return transactions_1.TransactionTypes;
        }
      });
      const units_1 = __webpack_require__(5700);
      Object.defineProperty(exports, "commify", {
        enumerable: true,
        get: function() {
          return units_1.commify;
        }
      });
      Object.defineProperty(exports, "formatEther", {
        enumerable: true,
        get: function() {
          return units_1.formatEther;
        }
      });
      Object.defineProperty(exports, "parseEther", {
        enumerable: true,
        get: function() {
          return units_1.parseEther;
        }
      });
      Object.defineProperty(exports, "formatUnits", {
        enumerable: true,
        get: function() {
          return units_1.formatUnits;
        }
      });
      Object.defineProperty(exports, "parseUnits", {
        enumerable: true,
        get: function() {
          return units_1.parseUnits;
        }
      });
      const wallet_1 = __webpack_require__(1348);
      Object.defineProperty(exports, "verifyMessage", {
        enumerable: true,
        get: function() {
          return wallet_1.verifyMessage;
        }
      });
      Object.defineProperty(exports, "verifyTypedData", {
        enumerable: true,
        get: function() {
          return wallet_1.verifyTypedData;
        }
      });
      const web_1 = __webpack_require__(6637);
      Object.defineProperty(exports, "_fetchData", {
        enumerable: true,
        get: function() {
          return web_1._fetchData;
        }
      });
      Object.defineProperty(exports, "fetchJson", {
        enumerable: true,
        get: function() {
          return web_1.fetchJson;
        }
      });
      Object.defineProperty(exports, "poll", {
        enumerable: true,
        get: function() {
          return web_1.poll;
        }
      });
      const sha2_2 = __webpack_require__(8417);
      Object.defineProperty(exports, "SupportedAlgorithm", {
        enumerable: true,
        get: function() {
          return sha2_2.SupportedAlgorithm;
        }
      });
      const strings_2 = __webpack_require__(2509);
      Object.defineProperty(exports, "UnicodeNormalizationForm", {
        enumerable: true,
        get: function() {
          return strings_2.UnicodeNormalizationForm;
        }
      });
      Object.defineProperty(exports, "Utf8ErrorReason", {
        enumerable: true,
        get: function() {
          return strings_2.Utf8ErrorReason;
        }
      });
    },
    1331(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "random/5.7.2";
    },
    7959(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.randomBytes = void 0;
      const bytes_1 = __webpack_require__(8380);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1331);
      const logger = new logger_1.Logger(_version_1.version);
      function getGlobal() {
        if (typeof self !== "undefined") {
          return self;
        }
        if (typeof window !== "undefined") {
          return window;
        }
        if (typeof __webpack_require__.g !== "undefined") {
          return __webpack_require__.g;
        }
        throw new Error("unable to locate global object");
      }
      const anyGlobal = getGlobal();
      let crypto = anyGlobal.crypto || anyGlobal.msCrypto;
      if (!crypto || !crypto.getRandomValues) {
        logger.warn("WARNING: Missing strong random number source");
        crypto = {
          getRandomValues: function(buffer) {
            return logger.throwError("no secure random source avaialble", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
              operation: "crypto.getRandomValues"
            });
          }
        };
      }
      function randomBytes(length) {
        if (length <= 0 || length > 1024 || length % 1 || length != length) {
          logger.throwArgumentError("invalid length", "length", length);
        }
        const result = new Uint8Array(length);
        crypto.getRandomValues(result);
        return (0, bytes_1.arrayify)(result);
      }
      exports.randomBytes = randomBytes;
    },
    590(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.shuffled = exports.randomBytes = void 0;
      var random_1 = __webpack_require__(7959);
      Object.defineProperty(exports, "randomBytes", {
        enumerable: true,
        get: function() {
          return random_1.randomBytes;
        }
      });
      var shuffle_1 = __webpack_require__(5655);
      Object.defineProperty(exports, "shuffled", {
        enumerable: true,
        get: function() {
          return shuffle_1.shuffled;
        }
      });
    },
    5655(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.shuffled = void 0;
      function shuffled(array) {
        array = array.slice();
        for (let i = array.length - 1; i > 0; i--) {
          const j = Math.floor(Math.random() * (i + 1));
          const tmp = array[i];
          array[i] = array[j];
          array[j] = tmp;
        }
        return array;
      }
      exports.shuffled = shuffled;
    },
    5150(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "rlp/5.7.1";
    },
    589(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.encode = encode;
      exports.decode = decode;
      const bytes_1 = __webpack_require__(8380);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(5150);
      const logger = new logger_1.Logger(_version_1.version);
      function arrayifyInteger(value) {
        const result = [];
        while (value) {
          result.unshift(value & 255);
          value >>= 8;
        }
        return result;
      }
      function unarrayifyInteger(data, offset, length) {
        let result = 0;
        for (let i = 0; i < length; i++) {
          result = result * 256 + data[offset + i];
        }
        return result;
      }
      function _encode(object) {
        if (Array.isArray(object)) {
          let payload = [];
          object.forEach((function(child) {
            payload = payload.concat(_encode(child));
          }));
          if (payload.length <= 55) {
            payload.unshift(192 + payload.length);
            return payload;
          }
          const length = arrayifyInteger(payload.length);
          length.unshift(247 + length.length);
          return length.concat(payload);
        }
        if (!(0, bytes_1.isBytesLike)(object)) {
          logger.throwArgumentError("RLP object must be BytesLike", "object", object);
        }
        const data = Array.prototype.slice.call((0, bytes_1.arrayify)(object));
        if (data.length === 1 && data[0] <= 127) {
          return data;
        } else if (data.length <= 55) {
          data.unshift(128 + data.length);
          return data;
        }
        const length = arrayifyInteger(data.length);
        length.unshift(183 + length.length);
        return length.concat(data);
      }
      function encode(object) {
        return (0, bytes_1.hexlify)(_encode(object));
      }
      function _decodeChildren(data, offset, childOffset, length) {
        const result = [];
        while (childOffset < offset + 1 + length) {
          const decoded = _decode(data, childOffset);
          result.push(decoded.result);
          childOffset += decoded.consumed;
          if (childOffset > offset + 1 + length) {
            logger.throwError("child data too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
        }
        return {
          consumed: 1 + length,
          result
        };
      }
      function _decode(data, offset) {
        if (data.length === 0) {
          logger.throwError("data too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
        }
        if (data[offset] >= 248) {
          const lengthLength = data[offset] - 247;
          if (offset + 1 + lengthLength > data.length) {
            logger.throwError("data short segment too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          const length = unarrayifyInteger(data, offset + 1, lengthLength);
          if (offset + 1 + lengthLength + length > data.length) {
            logger.throwError("data long segment too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);
        } else if (data[offset] >= 192) {
          const length = data[offset] - 192;
          if (offset + 1 + length > data.length) {
            logger.throwError("data array too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          return _decodeChildren(data, offset, offset + 1, length);
        } else if (data[offset] >= 184) {
          const lengthLength = data[offset] - 183;
          if (offset + 1 + lengthLength > data.length) {
            logger.throwError("data array too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          const length = unarrayifyInteger(data, offset + 1, lengthLength);
          if (offset + 1 + lengthLength + length > data.length) {
            logger.throwError("data array too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          const result = (0, bytes_1.hexlify)(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));
          return {
            consumed: 1 + lengthLength + length,
            result
          };
        } else if (data[offset] >= 128) {
          const length = data[offset] - 128;
          if (offset + 1 + length > data.length) {
            logger.throwError("data too short", logger_1.Logger.errors.BUFFER_OVERRUN, {});
          }
          const result = (0, bytes_1.hexlify)(data.slice(offset + 1, offset + 1 + length));
          return {
            consumed: 1 + length,
            result
          };
        }
        return {
          consumed: 1,
          result: (0, bytes_1.hexlify)(data[offset])
        };
      }
      function decode(data) {
        const bytes = (0, bytes_1.arrayify)(data);
        const decoded = _decode(bytes, 0);
        if (decoded.consumed !== bytes.length) {
          logger.throwArgumentError("invalid rlp data", "data", data);
        }
        return decoded.result;
      }
    },
    7530(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "sha2/5.7.2";
    },
    3138(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.computeHmac = exports.sha512 = exports.sha256 = exports.ripemd160 = void 0;
      const hash_js_1 = __importDefault(__webpack_require__(7952));
      const bytes_1 = __webpack_require__(8380);
      const types_1 = __webpack_require__(1248);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(7530);
      const logger = new logger_1.Logger(_version_1.version);
      function ripemd160(data) {
        return "0x" + hash_js_1.default.ripemd160().update((0, bytes_1.arrayify)(data)).digest("hex");
      }
      exports.ripemd160 = ripemd160;
      function sha256(data) {
        return "0x" + hash_js_1.default.sha256().update((0, bytes_1.arrayify)(data)).digest("hex");
      }
      exports.sha256 = sha256;
      function sha512(data) {
        return "0x" + hash_js_1.default.sha512().update((0, bytes_1.arrayify)(data)).digest("hex");
      }
      exports.sha512 = sha512;
      function computeHmac(algorithm, key, data) {
        if (!types_1.SupportedAlgorithm[algorithm]) {
          logger.throwError("unsupported algorithm " + algorithm, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
            operation: "hmac",
            algorithm
          });
        }
        return "0x" + hash_js_1.default.hmac(hash_js_1.default[algorithm], (0, bytes_1.arrayify)(key)).update((0, 
        bytes_1.arrayify)(data)).digest("hex");
      }
      exports.computeHmac = computeHmac;
    },
    8417(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.SupportedAlgorithm = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.computeHmac = void 0;
      const sha2_1 = __webpack_require__(3138);
      Object.defineProperty(exports, "computeHmac", {
        enumerable: true,
        get: function() {
          return sha2_1.computeHmac;
        }
      });
      Object.defineProperty(exports, "ripemd160", {
        enumerable: true,
        get: function() {
          return sha2_1.ripemd160;
        }
      });
      Object.defineProperty(exports, "sha256", {
        enumerable: true,
        get: function() {
          return sha2_1.sha256;
        }
      });
      Object.defineProperty(exports, "sha512", {
        enumerable: true,
        get: function() {
          return sha2_1.sha512;
        }
      });
      const types_1 = __webpack_require__(1248);
      Object.defineProperty(exports, "SupportedAlgorithm", {
        enumerable: true,
        get: function() {
          return types_1.SupportedAlgorithm;
        }
      });
    },
    1248(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.SupportedAlgorithm = void 0;
      var SupportedAlgorithm;
      (function(SupportedAlgorithm) {
        SupportedAlgorithm["sha256"] = "sha256";
        SupportedAlgorithm["sha512"] = "sha512";
      })(SupportedAlgorithm = exports.SupportedAlgorithm || (exports.SupportedAlgorithm = {}));
    },
    483(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "signing-key/5.7.12";
    },
    2494(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var Buffer = __webpack_require__(8287)["Buffer"];
      var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        Object.defineProperty(o, k2, {
          enumerable: true,
          get: function() {
            return m[k];
          }
        });
      } : function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", {
          enumerable: true,
          value: v
        });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = this && this.__importStar || function(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
        __setModuleDefault(result, mod);
        return result;
      };
      var __importDefault = this && this.__importDefault || function(mod) {
        return mod && mod.__esModule ? mod : {
          default: mod
        };
      };
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.recoverPublicKey = exports.SigningKey = void 0;
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const crypto_1 = __importDefault(__webpack_require__(1565));
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(483);
      const logger = new logger_1.Logger(_version_1.version);
      async function loadDilithium() {
        const isNode = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
        if (isNode) {
          const dilithiumPromise = __webpack_require__(6052);
          return await dilithiumPromise;
        } else {
          const mod = await Promise.resolve().then((() => __importStar(__webpack_require__(6052))));
          return await mod.createDilithium();
        }
      }
      class SigningKey {
        constructor(privateKey, publicKey) {
          if ((0, bytes_1.isHexString)(privateKey, 2800)) {
            (0, properties_1.defineReadOnly)(this, "privateKey", privateKey);
          } else {
            (0, properties_1.defineReadOnly)(this, "privateKey", (0, bytes_1.hexlify)(privateKey));
          }
          if ((0, bytes_1.hexDataLength)(this.privateKey) !== 2800) {
            logger.throwArgumentError("invalid private key", "privateKey", "[[ REDACTED ]]");
          }
          if ((0, bytes_1.isHexString)(privateKey, 1184)) {
            (0, properties_1.defineReadOnly)(this, "publicKey", publicKey);
          } else {
            (0, properties_1.defineReadOnly)(this, "publicKey", (0, bytes_1.hexlify)(publicKey));
          }
          if ((0, bytes_1.hexDataLength)(this.publicKey) !== 1184) {
            logger.throwArgumentError("invalid public key", "publicKey", "[[ REDACTED ]]");
          }
          (0, properties_1.defineReadOnly)(this, "_isSigningKey", true);
        }
        static async ensureInitialized() {
          if (SigningKey.dilithiumInstance) return;
          if (!SigningKey.dilithiumReady) {
            SigningKey.dilithiumReady = (async () => {
              SigningKey.dilithiumInstance = await loadDilithium();
            })();
          }
          return SigningKey.dilithiumReady;
        }
        static async create(privateKey, publicKey) {
          await SigningKey.ensureInitialized();
          return new SigningKey(privateKey, publicKey);
        }
        static createSync(privateKey, publicKey) {
          if (!SigningKey.dilithiumInstance) {
            throw new Error("Dilithium WASM is not initialized. Call SigningKey.initialize() first.");
          }
          return new SigningKey(privateKey, publicKey);
        }
        async signDigest(digest, kind = 1) {
          await SigningKey.ensureInitialized();
          const digestBytes = (0, bytes_1.arrayify)(digest);
          if (digestBytes.length !== 32) {
            logger.throwArgumentError("bad digest length", "digest", digest);
          }
          const sign = SigningKey.dilithiumInstance.sign(digestBytes, (0, bytes_1.arrayify)(this.privateKey), kind);
          return {
            signature: (0, bytes_1.hexlify)(sign.signature),
            publicKey: this.publicKey
          };
        }
        static async generateFromMnemonics(mnemonics) {
          await SigningKey.ensureInitialized();
          const words = mnemonics.split(" ");
          const hash_temp = crypto_1.default.createHash("sha256");
          for (const word of words) {
            hash_temp.update(Buffer.from(word, "utf-8"));
          }
          const hash = hash_temp.digest("hex");
          const seedBuffer = Buffer.from(hash, "hex");
          const seedBufferSerialized = seedBuffer.subarray(0, Math.floor(seedBuffer.length / 2));
          const {publicKey, privateKey} = SigningKey.dilithiumInstance.generateKeys(1, seedBufferSerialized);
          return new SigningKey(privateKey, publicKey);
        }
        static isSigningKey(value) {
          return !!(value && value._isSigningKey);
        }
        static async initialize() {
          if (SigningKey.dilithiumInstance == undefined) {
            SigningKey.dilithiumInstance = await loadDilithium();
          }
        }
      }
      exports.SigningKey = SigningKey;
      SigningKey.dilithiumInstance = null;
      SigningKey.dilithiumReady = null;
      function recoverPublicKey(digest, signature) {
        const sig = (0, bytes_1.splitSignature)(signature);
        return "0x" + sig.publicKey;
      }
      exports.recoverPublicKey = recoverPublicKey;
    },
    2798(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "strings/5.7.2";
    },
    4255(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.formatBytes32String = formatBytes32String;
      exports.parseBytes32String = parseBytes32String;
      const constants_1 = __webpack_require__(846);
      const bytes_1 = __webpack_require__(8380);
      const utf8_1 = __webpack_require__(3410);
      function formatBytes32String(text) {
        const bytes = (0, utf8_1.toUtf8Bytes)(text);
        if (bytes.length > 31) {
          throw new Error("bytes32 string must be less than 32 bytes");
        }
        return (0, bytes_1.hexlify)((0, bytes_1.concat)([ bytes, constants_1.HashZero ]).slice(0, 32));
      }
      function parseBytes32String(bytes) {
        const data = (0, bytes_1.arrayify)(bytes);
        if (data.length !== 32) {
          throw new Error("invalid bytes32 - not 32 bytes long");
        }
        if (data[31] !== 0) {
          throw new Error("invalid bytes32 string - no null terminator");
        }
        let length = 31;
        while (data[length - 1] === 0) {
          length--;
        }
        return (0, utf8_1.toUtf8String)(data.slice(0, length));
      }
    },
    4541(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports._nameprepTableA1 = _nameprepTableA1;
      exports._nameprepTableB2 = _nameprepTableB2;
      exports._nameprepTableC = _nameprepTableC;
      exports.nameprep = nameprep;
      const utf8_1 = __webpack_require__(3410);
      function bytes2(data) {
        if (data.length % 4 !== 0) {
          throw new Error("bad data");
        }
        let result = [];
        for (let i = 0; i < data.length; i += 4) {
          result.push(parseInt(data.substring(i, i + 4), 16));
        }
        return result;
      }
      function createTable(data, func) {
        if (!func) {
          func = function(value) {
            return [ parseInt(value, 16) ];
          };
        }
        let lo = 0;
        let result = {};
        data.split(",").forEach((pair => {
          let comps = pair.split(":");
          lo += parseInt(comps[0], 16);
          result[lo] = func(comps[1]);
        }));
        return result;
      }
      function createRangeTable(data) {
        let hi = 0;
        return data.split(",").map((v => {
          let comps = v.split("-");
          if (comps.length === 1) {
            comps[1] = "0";
          } else if (comps[1] === "") {
            comps[1] = "1";
          }
          let lo = hi + parseInt(comps[0], 16);
          hi = parseInt(comps[1], 16);
          return {
            l: lo,
            h: hi
          };
        }));
      }
      function matchMap(value, ranges) {
        let lo = 0;
        for (let i = 0; i < ranges.length; i++) {
          let range = ranges[i];
          lo += range.l;
          if (value >= lo && value <= lo + range.h && (value - lo) % (range.d || 1) === 0) {
            if (range.e && range.e.indexOf(value - lo) !== -1) {
              continue;
            }
            return range;
          }
        }
        return null;
      }
      const Table_A_1_ranges = createRangeTable("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d");
      const Table_B_1_flags = "ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map((v => parseInt(v, 16)));
      const Table_B_2_ranges = [ {
        h: 25,
        s: 32,
        l: 65
      }, {
        h: 30,
        s: 32,
        e: [ 23 ],
        l: 127
      }, {
        h: 54,
        s: 1,
        e: [ 48 ],
        l: 64,
        d: 2
      }, {
        h: 14,
        s: 1,
        l: 57,
        d: 2
      }, {
        h: 44,
        s: 1,
        l: 17,
        d: 2
      }, {
        h: 10,
        s: 1,
        e: [ 2, 6, 8 ],
        l: 61,
        d: 2
      }, {
        h: 16,
        s: 1,
        l: 68,
        d: 2
      }, {
        h: 84,
        s: 1,
        e: [ 18, 24, 66 ],
        l: 19,
        d: 2
      }, {
        h: 26,
        s: 32,
        e: [ 17 ],
        l: 435
      }, {
        h: 22,
        s: 1,
        l: 71,
        d: 2
      }, {
        h: 15,
        s: 80,
        l: 40
      }, {
        h: 31,
        s: 32,
        l: 16
      }, {
        h: 32,
        s: 1,
        l: 80,
        d: 2
      }, {
        h: 52,
        s: 1,
        l: 42,
        d: 2
      }, {
        h: 12,
        s: 1,
        l: 55,
        d: 2
      }, {
        h: 40,
        s: 1,
        e: [ 38 ],
        l: 15,
        d: 2
      }, {
        h: 14,
        s: 1,
        l: 48,
        d: 2
      }, {
        h: 37,
        s: 48,
        l: 49
      }, {
        h: 148,
        s: 1,
        l: 6351,
        d: 2
      }, {
        h: 88,
        s: 1,
        l: 160,
        d: 2
      }, {
        h: 15,
        s: 16,
        l: 704
      }, {
        h: 25,
        s: 26,
        l: 854
      }, {
        h: 25,
        s: 32,
        l: 55915
      }, {
        h: 37,
        s: 40,
        l: 1247
      }, {
        h: 25,
        s: -119711,
        l: 53248
      }, {
        h: 25,
        s: -119763,
        l: 52
      }, {
        h: 25,
        s: -119815,
        l: 52
      }, {
        h: 25,
        s: -119867,
        e: [ 1, 4, 5, 7, 8, 11, 12, 17 ],
        l: 52
      }, {
        h: 25,
        s: -119919,
        l: 52
      }, {
        h: 24,
        s: -119971,
        e: [ 2, 7, 8, 17 ],
        l: 52
      }, {
        h: 24,
        s: -120023,
        e: [ 2, 7, 13, 15, 16, 17 ],
        l: 52
      }, {
        h: 25,
        s: -120075,
        l: 52
      }, {
        h: 25,
        s: -120127,
        l: 52
      }, {
        h: 25,
        s: -120179,
        l: 52
      }, {
        h: 25,
        s: -120231,
        l: 52
      }, {
        h: 25,
        s: -120283,
        l: 52
      }, {
        h: 25,
        s: -120335,
        l: 52
      }, {
        h: 24,
        s: -119543,
        e: [ 17 ],
        l: 56
      }, {
        h: 24,
        s: -119601,
        e: [ 17 ],
        l: 58
      }, {
        h: 24,
        s: -119659,
        e: [ 17 ],
        l: 58
      }, {
        h: 24,
        s: -119717,
        e: [ 17 ],
        l: 58
      }, {
        h: 24,
        s: -119775,
        e: [ 17 ],
        l: 58
      } ];
      const Table_B_2_lut_abs = createTable("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3");
      const Table_B_2_lut_rel = createTable("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7");
      const Table_B_2_complex = createTable("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D", bytes2);
      const Table_C_ranges = createRangeTable("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");
      function flatten(values) {
        return values.reduce(((accum, value) => {
          value.forEach((value => {
            accum.push(value);
          }));
          return accum;
        }), []);
      }
      function _nameprepTableA1(codepoint) {
        return !!matchMap(codepoint, Table_A_1_ranges);
      }
      function _nameprepTableB2(codepoint) {
        let range = matchMap(codepoint, Table_B_2_ranges);
        if (range) {
          return [ codepoint + range.s ];
        }
        let codes = Table_B_2_lut_abs[codepoint];
        if (codes) {
          return codes;
        }
        let shift = Table_B_2_lut_rel[codepoint];
        if (shift) {
          return [ codepoint + shift[0] ];
        }
        let complex = Table_B_2_complex[codepoint];
        if (complex) {
          return complex;
        }
        return null;
      }
      function _nameprepTableC(codepoint) {
        return !!matchMap(codepoint, Table_C_ranges);
      }
      function nameprep(value) {
        if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {
          return value.toLowerCase();
        }
        let codes = (0, utf8_1.toUtf8CodePoints)(value);
        codes = flatten(codes.map((code => {
          if (Table_B_1_flags.indexOf(code) >= 0) {
            return [];
          }
          if (code >= 65024 && code <= 65039) {
            return [];
          }
          let codesTableB2 = _nameprepTableB2(code);
          if (codesTableB2) {
            return codesTableB2;
          }
          return [ code ];
        })));
        codes = (0, utf8_1.toUtf8CodePoints)((0, utf8_1._toUtf8String)(codes), utf8_1.UnicodeNormalizationForm.NFKC);
        codes.forEach((code => {
          if (_nameprepTableC(code)) {
            throw new Error("STRINGPREP_CONTAINS_PROHIBITED");
          }
        }));
        codes.forEach((code => {
          if (_nameprepTableA1(code)) {
            throw new Error("STRINGPREP_CONTAINS_UNASSIGNED");
          }
        }));
        let name = (0, utf8_1._toUtf8String)(codes);
        if (name.substring(0, 1) === "-" || name.substring(2, 4) === "--" || name.substring(name.length - 1) === "-") {
          throw new Error("invalid hyphen");
        }
        return name;
      }
    },
    2509(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.nameprep = exports.parseBytes32String = exports.formatBytes32String = exports.UnicodeNormalizationForm = exports.Utf8ErrorReason = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = void 0;
      const bytes32_1 = __webpack_require__(4255);
      Object.defineProperty(exports, "formatBytes32String", {
        enumerable: true,
        get: function() {
          return bytes32_1.formatBytes32String;
        }
      });
      Object.defineProperty(exports, "parseBytes32String", {
        enumerable: true,
        get: function() {
          return bytes32_1.parseBytes32String;
        }
      });
      const idna_1 = __webpack_require__(4541);
      Object.defineProperty(exports, "nameprep", {
        enumerable: true,
        get: function() {
          return idna_1.nameprep;
        }
      });
      const utf8_1 = __webpack_require__(3410);
      Object.defineProperty(exports, "_toEscapedUtf8String", {
        enumerable: true,
        get: function() {
          return utf8_1._toEscapedUtf8String;
        }
      });
      Object.defineProperty(exports, "toUtf8Bytes", {
        enumerable: true,
        get: function() {
          return utf8_1.toUtf8Bytes;
        }
      });
      Object.defineProperty(exports, "toUtf8CodePoints", {
        enumerable: true,
        get: function() {
          return utf8_1.toUtf8CodePoints;
        }
      });
      Object.defineProperty(exports, "toUtf8String", {
        enumerable: true,
        get: function() {
          return utf8_1.toUtf8String;
        }
      });
      Object.defineProperty(exports, "UnicodeNormalizationForm", {
        enumerable: true,
        get: function() {
          return utf8_1.UnicodeNormalizationForm;
        }
      });
      Object.defineProperty(exports, "Utf8ErrorFuncs", {
        enumerable: true,
        get: function() {
          return utf8_1.Utf8ErrorFuncs;
        }
      });
      Object.defineProperty(exports, "Utf8ErrorReason", {
        enumerable: true,
        get: function() {
          return utf8_1.Utf8ErrorReason;
        }
      });
    },
    3410(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Utf8ErrorFuncs = exports.Utf8ErrorReason = exports.UnicodeNormalizationForm = void 0;
      exports.toUtf8Bytes = toUtf8Bytes;
      exports._toEscapedUtf8String = _toEscapedUtf8String;
      exports._toUtf8String = _toUtf8String;
      exports.toUtf8String = toUtf8String;
      exports.toUtf8CodePoints = toUtf8CodePoints;
      const bytes_1 = __webpack_require__(8380);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(2798);
      const logger = new logger_1.Logger(_version_1.version);
      var UnicodeNormalizationForm;
      (function(UnicodeNormalizationForm) {
        UnicodeNormalizationForm["current"] = "";
        UnicodeNormalizationForm["NFC"] = "NFC";
        UnicodeNormalizationForm["NFD"] = "NFD";
        UnicodeNormalizationForm["NFKC"] = "NFKC";
        UnicodeNormalizationForm["NFKD"] = "NFKD";
      })(UnicodeNormalizationForm || (exports.UnicodeNormalizationForm = UnicodeNormalizationForm = {}));
      var Utf8ErrorReason;
      (function(Utf8ErrorReason) {
        Utf8ErrorReason["UNEXPECTED_CONTINUE"] = "unexpected continuation byte";
        Utf8ErrorReason["BAD_PREFIX"] = "bad codepoint prefix";
        Utf8ErrorReason["OVERRUN"] = "string overrun";
        Utf8ErrorReason["MISSING_CONTINUE"] = "missing continuation byte";
        Utf8ErrorReason["OUT_OF_RANGE"] = "out of UTF-8 range";
        Utf8ErrorReason["UTF16_SURROGATE"] = "UTF-16 surrogate";
        Utf8ErrorReason["OVERLONG"] = "overlong representation";
      })(Utf8ErrorReason || (exports.Utf8ErrorReason = Utf8ErrorReason = {}));
      function errorFunc(reason, offset, bytes, output, badCodepoint) {
        return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, "bytes", bytes);
      }
      function ignoreFunc(reason, offset, bytes, output, badCodepoint) {
        if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {
          let i = 0;
          for (let o = offset + 1; o < bytes.length; o++) {
            if (bytes[o] >> 6 !== 2) {
              break;
            }
            i++;
          }
          return i;
        }
        if (reason === Utf8ErrorReason.OVERRUN) {
          return bytes.length - offset - 1;
        }
        return 0;
      }
      function replaceFunc(reason, offset, bytes, output, badCodepoint) {
        if (reason === Utf8ErrorReason.OVERLONG) {
          output.push(badCodepoint);
          return 0;
        }
        output.push(65533);
        return ignoreFunc(reason, offset, bytes, output, badCodepoint);
      }
      exports.Utf8ErrorFuncs = Object.freeze({
        error: errorFunc,
        ignore: ignoreFunc,
        replace: replaceFunc
      });
      function getUtf8CodePoints(bytes, onError) {
        if (onError == null) {
          onError = exports.Utf8ErrorFuncs.error;
        }
        bytes = (0, bytes_1.arrayify)(bytes);
        const result = [];
        let i = 0;
        while (i < bytes.length) {
          const c = bytes[i++];
          if (c >> 7 === 0) {
            result.push(c);
            continue;
          }
          let extraLength = null;
          let overlongMask = null;
          if ((c & 224) === 192) {
            extraLength = 1;
            overlongMask = 127;
          } else if ((c & 240) === 224) {
            extraLength = 2;
            overlongMask = 2047;
          } else if ((c & 248) === 240) {
            extraLength = 3;
            overlongMask = 65535;
          } else {
            if ((c & 192) === 128) {
              i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);
            } else {
              i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);
            }
            continue;
          }
          if (i - 1 + extraLength >= bytes.length) {
            i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);
            continue;
          }
          let res = c & (1 << 8 - extraLength - 1) - 1;
          for (let j = 0; j < extraLength; j++) {
            let nextChar = bytes[i];
            if ((nextChar & 192) != 128) {
              i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);
              res = null;
              break;
            }
            res = res << 6 | nextChar & 63;
            i++;
          }
          if (res === null) {
            continue;
          }
          if (res > 1114111) {
            i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);
            continue;
          }
          if (res >= 55296 && res <= 57343) {
            i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);
            continue;
          }
          if (res <= overlongMask) {
            i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);
            continue;
          }
          result.push(res);
        }
        return result;
      }
      function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {
        if (form != UnicodeNormalizationForm.current) {
          logger.checkNormalize();
          str = str.normalize(form);
        }
        let result = [];
        for (let i = 0; i < str.length; i++) {
          const c = str.charCodeAt(i);
          if (c < 128) {
            result.push(c);
          } else if (c < 2048) {
            result.push(c >> 6 | 192);
            result.push(c & 63 | 128);
          } else if ((c & 64512) == 55296) {
            i++;
            const c2 = str.charCodeAt(i);
            if (i >= str.length || (c2 & 64512) !== 56320) {
              throw new Error("invalid utf-8 string");
            }
            const pair = 65536 + ((c & 1023) << 10) + (c2 & 1023);
            result.push(pair >> 18 | 240);
            result.push(pair >> 12 & 63 | 128);
            result.push(pair >> 6 & 63 | 128);
            result.push(pair & 63 | 128);
          } else {
            result.push(c >> 12 | 224);
            result.push(c >> 6 & 63 | 128);
            result.push(c & 63 | 128);
          }
        }
        return (0, bytes_1.arrayify)(result);
      }
      function escapeChar(value) {
        const hex = "0000" + value.toString(16);
        return "\\u" + hex.substring(hex.length - 4);
      }
      function _toEscapedUtf8String(bytes, onError) {
        return '"' + getUtf8CodePoints(bytes, onError).map((codePoint => {
          if (codePoint < 256) {
            switch (codePoint) {
             case 8:
              return "\\b";

             case 9:
              return "\\t";

             case 10:
              return "\\n";

             case 13:
              return "\\r";

             case 34:
              return '\\"';

             case 92:
              return "\\\\";
            }
            if (codePoint >= 32 && codePoint < 127) {
              return String.fromCharCode(codePoint);
            }
          }
          if (codePoint <= 65535) {
            return escapeChar(codePoint);
          }
          codePoint -= 65536;
          return escapeChar((codePoint >> 10 & 1023) + 55296) + escapeChar((codePoint & 1023) + 56320);
        })).join("") + '"';
      }
      function _toUtf8String(codePoints) {
        return codePoints.map((codePoint => {
          if (codePoint <= 65535) {
            return String.fromCharCode(codePoint);
          }
          codePoint -= 65536;
          return String.fromCharCode((codePoint >> 10 & 1023) + 55296, (codePoint & 1023) + 56320);
        })).join("");
      }
      function toUtf8String(bytes, onError) {
        return _toUtf8String(getUtf8CodePoints(bytes, onError));
      }
      function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {
        return getUtf8CodePoints(toUtf8Bytes(str, form));
      }
    },
    4861(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "transactions/5.7.3";
    },
    3776(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = {
            enumerable: true,
            get: function() {
              return m[k];
            }
          };
        }
        Object.defineProperty(o, k2, desc);
      } : function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
      var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(o, v) {
        Object.defineProperty(o, "default", {
          enumerable: true,
          value: v
        });
      } : function(o, v) {
        o["default"] = v;
      });
      var __importStar = this && this.__importStar || function() {
        var ownKeys = function(o) {
          ownKeys = Object.getOwnPropertyNames || function(o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
          };
          return ownKeys(o);
        };
        return function(mod) {
          if (mod && mod.__esModule) return mod;
          var result = {};
          if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
          __setModuleDefault(result, mod);
          return result;
        };
      }();
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.TransactionTypes = void 0;
      exports.computeAddress = computeAddress;
      exports.recoverAddress = recoverAddress;
      exports.accessListify = accessListify;
      exports.serialize = serialize;
      exports.parse = parse;
      const address_1 = __webpack_require__(171);
      const bignumber_1 = __webpack_require__(3804);
      const bytes_1 = __webpack_require__(8380);
      const constants_1 = __webpack_require__(846);
      const keccak256_1 = __webpack_require__(1136);
      const properties_1 = __webpack_require__(1476);
      const RLP = __importStar(__webpack_require__(589));
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(4861);
      const logger = new logger_1.Logger(_version_1.version);
      var TransactionTypes;
      (function(TransactionTypes) {
        TransactionTypes[TransactionTypes["legacy"] = 0] = "legacy";
        TransactionTypes[TransactionTypes["eip2930"] = 1] = "eip2930";
        TransactionTypes[TransactionTypes["eip1559"] = 2] = "eip1559";
      })(TransactionTypes || (exports.TransactionTypes = TransactionTypes = {}));
      function handleAddress(value) {
        if (value === "0x") {
          return null;
        }
        return (0, address_1.getAddress)(value);
      }
      function handleNumber(value) {
        if (value === "0x") {
          return constants_1.Zero;
        }
        return bignumber_1.BigNumber.from(value);
      }
      const transactionFields = [ {
        name: "nonce",
        maxLength: 32,
        numeric: true
      }, {
        name: "gasPrice",
        maxLength: 32,
        numeric: true
      }, {
        name: "gasLimit",
        maxLength: 32,
        numeric: true
      }, {
        name: "to",
        length: 32
      }, {
        name: "value",
        maxLength: 32,
        numeric: true
      }, {
        name: "data"
      } ];
      const allowedTransactionKeys = {
        chainId: true,
        data: true,
        gasLimit: true,
        gasPrice: true,
        nonce: true,
        to: true,
        type: true,
        value: true
      };
      function computeAddress(publicKey) {
        return (0, keccak256_1.keccak256)(publicKey);
      }
      function recoverAddress(signature) {
        let sig = (0, bytes_1.splitSignature)(signature);
        return (0, keccak256_1.keccak256)(sig.publicKey);
      }
      function formatNumber(value, name) {
        const result = (0, bytes_1.stripZeros)(bignumber_1.BigNumber.from(value).toHexString());
        if (result.length > 32) {
          logger.throwArgumentError("invalid length for " + name, "transaction:" + name, value);
        }
        return result;
      }
      function accessSetify(addr, storageKeys) {
        return {
          address: (0, address_1.getAddress)(addr),
          storageKeys: (storageKeys || []).map(((storageKey, index) => {
            if ((0, bytes_1.hexDataLength)(storageKey) !== 32) {
              logger.throwArgumentError("invalid access list storageKey", `accessList[${addr}:${index}]`, storageKey);
            }
            return storageKey.toLowerCase();
          }))
        };
      }
      function accessListify(value) {
        if (Array.isArray(value)) {
          return value.map(((set, index) => {
            if (Array.isArray(set)) {
              if (set.length > 2) {
                logger.throwArgumentError("access list expected to be [ address, storageKeys[] ]", `value[${index}]`, set);
              }
              return accessSetify(set[0], set[1]);
            }
            return accessSetify(set.address, set.storageKeys);
          }));
        }
        const result = Object.keys(value).map((addr => {
          const storageKeys = value[addr].reduce(((accum, storageKey) => {
            accum[storageKey] = true;
            return accum;
          }), {});
          return accessSetify(addr, Object.keys(storageKeys).sort());
        }));
        result.sort(((a, b) => a.address.localeCompare(b.address)));
        return result;
      }
      function formatAccessList(value) {
        return accessListify(value).map((set => [ set.address, set.storageKeys ]));
      }
      function _serializeEip1559(transaction, signature) {
        if (transaction.gasPrice != null) {
          const gasPrice = bignumber_1.BigNumber.from(transaction.gasPrice);
          const maxFeePerGas = bignumber_1.BigNumber.from(transaction.maxFeePerGas || 0);
          if (!gasPrice.eq(maxFeePerGas)) {
            logger.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas", "tx", {
              gasPrice,
              maxFeePerGas
            });
          }
        }
        const fields = [ formatNumber(transaction.chainId || 0, "chainId"), formatNumber(transaction.nonce || 0, "nonce"), formatNumber(transaction.maxPriorityFeePerGas || 0, "maxPriorityFeePerGas"), formatNumber(transaction.maxFeePerGas || 0, "maxFeePerGas"), formatNumber(transaction.gasLimit || 0, "gasLimit"), transaction.to != null ? (0, 
        address_1.getAddress)(transaction.to) : "0x", formatNumber(transaction.value || 0, "value"), transaction.data || "0x", formatAccessList(transaction.accessList || []) ];
        if (signature) {
          fields.push((0, bytes_1.joinSignature)(signature));
        }
        return (0, bytes_1.hexConcat)([ "0x02", RLP.encode(fields) ]);
      }
      function _serializeEip2930(transaction, signature) {
        const fields = [ formatNumber(transaction.chainId || 0, "chainId"), formatNumber(transaction.nonce || 0, "nonce"), formatNumber(transaction.gasPrice || 0, "gasPrice"), formatNumber(transaction.gasLimit || 0, "gasLimit"), transaction.to != null ? (0, 
        address_1.getAddress)(transaction.to) : "0x", formatNumber(transaction.value || 0, "value"), transaction.data || "0x", formatAccessList(transaction.accessList || []) ];
        if (signature) {
          fields.push((0, bytes_1.joinSignature)(signature));
        }
        return (0, bytes_1.hexConcat)([ "0x01", RLP.encode(fields) ]);
      }
      function _serialize(transaction, signature) {
        (0, properties_1.checkProperties)(transaction, allowedTransactionKeys);
        const raw = [];
        transactionFields.forEach((function(fieldInfo) {
          let value = transaction[fieldInfo.name] || [];
          const options = {};
          if (fieldInfo.numeric) {
            options.hexPad = "left";
          }
          value = (0, bytes_1.arrayify)((0, bytes_1.hexlify)(value, options));
          if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {
            logger.throwArgumentError("invalid length for " + fieldInfo.name, "transaction:" + fieldInfo.name, value);
          }
          if (fieldInfo.maxLength) {
            value = (0, bytes_1.stripZeros)(value);
            if (value.length > fieldInfo.maxLength) {
              logger.throwArgumentError("invalid length for " + fieldInfo.name, "transaction:" + fieldInfo.name, value);
            }
          }
          raw.push((0, bytes_1.hexlify)(value));
        }));
        let chainId = 0;
        if (transaction.chainId != null) {
          chainId = transaction.chainId;
          if (typeof chainId !== "number") {
            logger.throwArgumentError("invalid transaction.chainId", "transaction", transaction);
          }
        }
        if (chainId !== 0) {
          raw.push((0, bytes_1.hexlify)(chainId));
        }
        if (signature) {
          raw.push((0, bytes_1.joinSignature)(signature));
        }
        return RLP.encode(raw);
      }
      function serialize(transaction, signature) {
        if (transaction.type == null || transaction.type === 0) {
          if (transaction.accessList != null) {
            logger.throwArgumentError("untyped transactions do not support accessList; include type: 1", "transaction", transaction);
          }
          return _serialize(transaction, signature);
        }
        switch (transaction.type) {
         case 1:
          return _serializeEip2930(transaction, signature);

         case 2:
          return _serializeEip1559(transaction, signature);

         default:
          break;
        }
        return logger.throwError(`unsupported transaction type: ${transaction.type}`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
          operation: "serializeTransaction",
          transactionType: transaction.type
        });
      }
      function _parseEip1559(payload) {
        const transaction = RLP.decode(payload.slice(1));
        if (transaction.length !== 9 && transaction.length !== 10) {
          logger.throwArgumentError("invalid component count for transaction type: 2", "payload", (0, 
          bytes_1.hexlify)(payload));
        }
        const maxPriorityFeePerGas = handleNumber(transaction[2]);
        const maxFeePerGas = handleNumber(transaction[3]);
        const tx = {
          type: 2,
          chainId: handleNumber(transaction[0]).toNumber(),
          nonce: handleNumber(transaction[1]).toNumber(),
          maxPriorityFeePerGas,
          maxFeePerGas,
          gasPrice: null,
          gasLimit: handleNumber(transaction[4]),
          to: handleAddress(transaction[5]),
          value: handleNumber(transaction[6]),
          data: transaction[7],
          accessList: accessListify(transaction[8])
        };
        if (transaction.length === 9) {
          return tx;
        }
        tx.hash = (0, keccak256_1.keccak256)(payload);
        tx.signature = (0, bytes_1.splitSignature)(transaction.slice(9)[0]);
        tx.from = computeAddress(tx.signature.publicKey);
        return tx;
      }
      function _parseEip2930(payload) {
        const transaction = RLP.decode(payload.slice(1));
        if (transaction.length !== 8 && transaction.length !== 9) {
          logger.throwArgumentError("invalid component count for transaction type: 1", "payload", (0, 
          bytes_1.hexlify)(payload));
        }
        const tx = {
          type: 1,
          chainId: handleNumber(transaction[0]).toNumber(),
          nonce: handleNumber(transaction[1]).toNumber(),
          gasPrice: handleNumber(transaction[2]),
          gasLimit: handleNumber(transaction[3]),
          to: handleAddress(transaction[4]),
          value: handleNumber(transaction[5]),
          data: transaction[6],
          accessList: accessListify(transaction[7]),
          signature: ""
        };
        if (transaction.length === 8) {
          return tx;
        }
        tx.hash = (0, keccak256_1.keccak256)(payload);
        tx.signature = (0, bytes_1.splitSignature)(transaction.slice(8)[0]);
        tx.from = computeAddress(tx.signature.publicKey);
        return tx;
      }
      function _parseLegacyAndEIP_155(rawTransaction) {
        const transaction = RLP.decode(rawTransaction);
        if (transaction.length !== 8 && transaction.length !== 7 && transaction.length !== 6) {
          logger.throwArgumentError("invalid raw transaction", "rawTransaction", rawTransaction);
        }
        const tx = {
          nonce: handleNumber(transaction[0]).toNumber(),
          gasPrice: handleNumber(transaction[1]),
          gasLimit: handleNumber(transaction[2]),
          to: handleAddress(transaction[3]),
          value: handleNumber(transaction[4]),
          data: transaction[5],
          chainId: 0
        };
        tx.type = null;
        switch (transaction.length) {
         case 6:
          break;

         case 7:
          let temp = transaction.slice(6)[0];
          if (temp.length == 6522) {
            tx.hash = (0, keccak256_1.keccak256)(rawTransaction);
            tx.signature = (0, bytes_1.splitSignature)(temp);
            tx.from = computeAddress(tx.signature.publicKey);
          } else {
            tx.chainId = bignumber_1.BigNumber.from(temp).toNumber();
          }
          break;

         case 8:
          tx.chainId = bignumber_1.BigNumber.from(transaction.slice(6)[0]).toNumber();
          tx.hash = (0, keccak256_1.keccak256)(rawTransaction);
          tx.signature = (0, bytes_1.splitSignature)(transaction.slice(7)[0]);
          tx.from = computeAddress(tx.signature.publicKey);
          break;

         default:
          break;
        }
        return tx;
      }
      function parse(rawTransaction) {
        const payload = (0, bytes_1.arrayify)(rawTransaction);
        if (payload[0] > 127) {
          return _parseLegacyAndEIP_155(payload);
        }
        switch (payload[0]) {
         case 1:
          return _parseEip2930(payload);

         case 2:
          return _parseEip1559(payload);

         default:
          break;
        }
        return logger.throwError(`unsupported transaction type: ${payload[0]}`, logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
          operation: "parseTransaction",
          transactionType: payload[0]
        });
      }
    },
    1177(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "units/5.7.1";
    },
    5700(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.commify = commify;
      exports.formatUnits = formatUnits;
      exports.parseUnits = parseUnits;
      exports.formatEther = formatEther;
      exports.parseEther = parseEther;
      const bignumber_1 = __webpack_require__(3804);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1177);
      const logger = new logger_1.Logger(_version_1.version);
      const names = [ "wei", "kwei", "mwei", "gwei", "szabo", "finney", "qevm" ];
      function commify(value) {
        const comps = String(value).split(".");
        if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || comps[1] && !comps[1].match(/^[0-9]*$/) || value === "." || value === "-.") {
          logger.throwArgumentError("invalid value", "value", value);
        }
        let whole = comps[0];
        let negative = "";
        if (whole.substring(0, 1) === "-") {
          negative = "-";
          whole = whole.substring(1);
        }
        while (whole.substring(0, 1) === "0") {
          whole = whole.substring(1);
        }
        if (whole === "") {
          whole = "0";
        }
        let suffix = "";
        if (comps.length === 2) {
          suffix = "." + (comps[1] || "0");
        }
        while (suffix.length > 2 && suffix[suffix.length - 1] === "0") {
          suffix = suffix.substring(0, suffix.length - 1);
        }
        const formatted = [];
        while (whole.length) {
          if (whole.length <= 3) {
            formatted.unshift(whole);
            break;
          } else {
            const index = whole.length - 3;
            formatted.unshift(whole.substring(index));
            whole = whole.substring(0, index);
          }
        }
        return negative + formatted.join(",") + suffix;
      }
      function formatUnits(value, unitName) {
        if (typeof unitName === "string") {
          const index = names.indexOf(unitName);
          if (index !== -1) {
            unitName = 3 * index;
          }
        }
        return (0, bignumber_1.formatFixed)(value, unitName != null ? unitName : 18);
      }
      function parseUnits(value, unitName) {
        if (typeof value !== "string") {
          logger.throwArgumentError("value must be a string", "value", value);
        }
        if (typeof unitName === "string") {
          const index = names.indexOf(unitName);
          if (index !== -1) {
            unitName = 3 * index;
          }
        }
        return (0, bignumber_1.parseFixed)(value, unitName != null ? unitName : 18);
      }
      function formatEther(wei) {
        return formatUnits(wei, 18);
      }
      function parseEther(ether) {
        return parseUnits(ether, 18);
      }
    },
    1161(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "wallet/5.7.8";
    },
    1348(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Wallet = void 0;
      exports.verifyMessage = verifyMessage;
      exports.verifyTypedData = verifyTypedData;
      const address_1 = __webpack_require__(171);
      const abstract_signer_1 = __webpack_require__(8788);
      const bytes_1 = __webpack_require__(8380);
      const hash_1 = __webpack_require__(413);
      const keccak256_1 = __webpack_require__(1136);
      const properties_1 = __webpack_require__(1476);
      const signing_key_1 = __webpack_require__(2494);
      const json_wallets_1 = __webpack_require__(3120);
      const transactions_1 = __webpack_require__(3776);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(1161);
      const logger = new logger_1.Logger(_version_1.version);
      function isAccount(value) {
        return value != null && "_isSigningKey" in value === false && (0, bytes_1.isHexString)(value.privateKey, 2800) && (0, 
        bytes_1.isHexString)(value.publicKey, 1184) && value.address != null;
      }
      function hasMnemonic(value) {
        const mnemonic = value.mnemonic;
        return mnemonic;
      }
      class Wallet extends abstract_signer_1.Signer {
        constructor(signingKey, mnemonic, provider) {
          super();
          (0, properties_1.defineReadOnly)(this, "_signingKey", (() => signingKey));
          (0, properties_1.defineReadOnly)(this, "address", (0, address_1.getAddress)((0, 
          transactions_1.computeAddress)(signingKey.publicKey)));
          (0, properties_1.defineReadOnly)(this, "_mnemonic", (() => mnemonic));
          (0, properties_1.defineReadOnly)(this, "provider", provider || null);
        }
        static async create(credentials, provider) {
          if (credentials instanceof Wallet) {
            return new Wallet(await signing_key_1.SigningKey.create(credentials.privateKey, credentials.publicKey), credentials.mnemonic, provider);
          }
          if (typeof credentials === "string") {
            const signingKey = await signing_key_1.SigningKey.generateFromMnemonics(credentials);
            return new Wallet(signingKey, credentials, provider);
          }
          if (signing_key_1.SigningKey.isSigningKey(credentials)) {
            return new Wallet(credentials, null, provider);
          }
          if (isAccount(credentials)) {
            const signingKey = await signing_key_1.SigningKey.create(credentials.privateKey, credentials.publicKey);
            if (hasMnemonic(credentials)) {
              const testKey = await signing_key_1.SigningKey.generateFromMnemonics(credentials.mnemonic);
              if (testKey.privateKey !== signingKey.privateKey || testKey.publicKey !== signingKey.publicKey) {
                throw new Error("mnemonic/keys mismatch");
              }
              return new Wallet(signingKey, credentials.mnemonic, provider);
            } else {
              return new Wallet(signingKey, null, provider);
            }
          }
          throw new Error("Invalid credentials");
        }
        get mnemonic() {
          return this._mnemonic();
        }
        get privateKey() {
          return this._signingKey().privateKey;
        }
        get publicKey() {
          return this._signingKey().publicKey;
        }
        getAddress() {
          return Promise.resolve(this.address);
        }
        connect(provider) {
          return new Wallet(this._signingKey(), this._mnemonic(), provider);
        }
        async signTransaction(transaction) {
          const tx = await (0, properties_1.resolveProperties)(transaction);
          if (tx.from != null && (0, address_1.getAddress)(tx.from) !== this.address) {
            logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
          }
          delete tx.from;
          const digest = (0, keccak256_1.keccak256)((0, transactions_1.serialize)(tx));
          const signature = await this._signingKey().signDigest(digest);
          return (0, transactions_1.serialize)(tx, signature);
        }
        async signMessage(message) {
          return (0, bytes_1.joinSignature)(await this._signingKey().signDigest((0, hash_1.hashMessage)(message)));
        }
        async _signTypedData(domain, types, value) {
          const populated = await hash_1._TypedDataEncoder.resolveNames(domain, types, value, (async name => {
            if (!this.provider) {
              logger.throwError("cannot resolve ENS names without a provider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
                operation: "resolveName",
                value: name
              });
            }
            return this.provider.resolveName(name);
          }));
          return (0, bytes_1.joinSignature)(await this._signingKey().signDigest(hash_1._TypedDataEncoder.hash(populated.domain, types, populated.value)));
        }
        encrypt(password, options, progressCallback) {
          if (typeof options === "function") {
            progressCallback = options;
            options = {};
          }
          return (0, json_wallets_1.encryptKeystore)(this, password, options || {}, progressCallback);
        }
        static async createRandom(options) {
          await signing_key_1.SigningKey.ensureInitialized();
          const result = signing_key_1.SigningKey.dilithiumInstance.generateKeys(1, null);
          const signingKey = await signing_key_1.SigningKey.create(result.privateKey, result.publicKey);
          return new Wallet(signingKey, null);
        }
        static async fromEncryptedJson(json, password, progressCallback) {
          const account = await (0, json_wallets_1.decryptJsonWallet)(json, password, progressCallback);
          return await Wallet.create(account);
        }
        static fromEncryptedJsonSync(json, password) {
          const account = (0, json_wallets_1.decryptJsonWalletSync)(json, password);
          const signingKey = signing_key_1.SigningKey.createSync(account.privateKey, account.publicKey);
          return new Wallet(signingKey, null);
        }
        static async fromMnemonic(mnemonic, provider) {
          return await Wallet.create(mnemonic, provider);
        }
      }
      exports.Wallet = Wallet;
      async function verifyMessage(message, signature) {
        await signing_key_1.SigningKey.ensureInitialized();
        const sig = (0, bytes_1.splitSignature)(signature);
        const varResult = signing_key_1.SigningKey.dilithiumInstance.verify((0, bytes_1.arrayify)(sig.signature), (0, 
        bytes_1.arrayify)((0, hash_1.hashMessage)(message)), (0, bytes_1.arrayify)(sig.publicKey), 1);
        return varResult.result;
      }
      async function verifyTypedData(domain, types, value, signature) {
        await signing_key_1.SigningKey.ensureInitialized();
        const sig = (0, bytes_1.splitSignature)(signature);
        const varResult = signing_key_1.SigningKey.dilithiumInstance.verify(sig.signature, hash_1._TypedDataEncoder.hash(domain, types, value), sig.publicKey, 1);
        return varResult.result;
      }
    },
    4510(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "web/5.7.4";
    },
    8215(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getUrl = void 0;
      const bytes_1 = __webpack_require__(8380);
      async function getUrl(href, options) {
        if (options == null) {
          options = {};
        }
        const request = {
          method: options.method || "GET",
          headers: options.headers || {},
          body: options.body || undefined
        };
        if (options.skipFetchSetup !== true) {
          request.mode = "cors";
          request.cache = "no-cache";
          request.credentials = "same-origin";
          request.redirect = "follow";
          request.referrer = "client";
        }
        if (options.fetchOptions != null) {
          const opts = options.fetchOptions;
          if (opts.mode) {
            request.mode = opts.mode;
          }
          if (opts.cache) {
            request.cache = opts.cache;
          }
          if (opts.credentials) {
            request.credentials = opts.credentials;
          }
          if (opts.redirect) {
            request.redirect = opts.redirect;
          }
          if (opts.referrer) {
            request.referrer = opts.referrer;
          }
        }
        const response = await fetch(href, request);
        const body = await response.arrayBuffer();
        const headers = {};
        if (response.headers.forEach) {
          response.headers.forEach(((value, key) => {
            headers[key.toLowerCase()] = value;
          }));
        } else {
          response.headers.keys().forEach((key => {
            headers[key.toLowerCase()] = response.headers.get(key);
          }));
        }
        return {
          headers,
          statusCode: response.status,
          statusMessage: response.statusText,
          body: (0, bytes_1.arrayify)(new Uint8Array(body))
        };
      }
      exports.getUrl = getUrl;
    },
    6637(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.poll = exports.fetchJson = exports._fetchData = void 0;
      const base64_1 = __webpack_require__(8886);
      const bytes_1 = __webpack_require__(8380);
      const properties_1 = __webpack_require__(1476);
      const strings_1 = __webpack_require__(2509);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(4510);
      const logger = new logger_1.Logger(_version_1.version);
      const geturl_1 = __webpack_require__(8215);
      function staller(duration) {
        return new Promise((resolve => {
          setTimeout(resolve, duration);
        }));
      }
      function bodyify(value, type) {
        if (value == null) {
          return null;
        }
        if (typeof value === "string") {
          return value;
        }
        if ((0, bytes_1.isBytesLike)(value)) {
          if (type && (type.split("/")[0] === "text" || type.split(";")[0].trim() === "application/json")) {
            try {
              return (0, strings_1.toUtf8String)(value);
            } catch (error) {}
          }
          return (0, bytes_1.hexlify)(value);
        }
        return value;
      }
      function unpercent(value) {
        return (0, strings_1.toUtf8Bytes)(value.replace(/%([0-9a-f][0-9a-f])/gi, ((all, code) => String.fromCharCode(parseInt(code, 16)))));
      }
      function _fetchData(connection, body, processFunc) {
        const attemptLimit = typeof connection === "object" && connection.throttleLimit != null ? connection.throttleLimit : 12;
        logger.assertArgument(attemptLimit > 0 && attemptLimit % 1 === 0, "invalid connection throttle limit", "connection.throttleLimit", attemptLimit);
        const throttleCallback = typeof connection === "object" ? connection.throttleCallback : null;
        const throttleSlotInterval = typeof connection === "object" && typeof connection.throttleSlotInterval === "number" ? connection.throttleSlotInterval : 100;
        logger.assertArgument(throttleSlotInterval > 0 && throttleSlotInterval % 1 === 0, "invalid connection throttle slot interval", "connection.throttleSlotInterval", throttleSlotInterval);
        const errorPassThrough = typeof connection === "object" ? !!connection.errorPassThrough : false;
        const headers = {};
        let url = null;
        const options = {
          method: "GET"
        };
        let allow304 = false;
        let timeout = 2 * 60 * 1e3;
        if (typeof connection === "string") {
          url = connection;
        } else if (typeof connection === "object") {
          if (connection == null || connection.url == null) {
            logger.throwArgumentError("missing URL", "connection.url", connection);
          }
          url = connection.url;
          if (typeof connection.timeout === "number" && connection.timeout > 0) {
            timeout = connection.timeout;
          }
          if (connection.headers) {
            for (const key in connection.headers) {
              headers[key.toLowerCase()] = {
                key,
                value: String(connection.headers[key])
              };
              if ([ "if-none-match", "if-modified-since" ].indexOf(key.toLowerCase()) >= 0) {
                allow304 = true;
              }
            }
          }
          options.allowGzip = !!connection.allowGzip;
          if (connection.user != null && connection.password != null) {
            if (url.substring(0, 6) !== "https:" && connection.allowInsecureAuthentication !== true) {
              logger.throwError("basic authentication requires a secure https url", logger_1.Logger.errors.INVALID_ARGUMENT, {
                argument: "url",
                url,
                user: connection.user,
                password: "[REDACTED]"
              });
            }
            const authorization = connection.user + ":" + connection.password;
            headers["authorization"] = {
              key: "Authorization",
              value: "Basic " + (0, base64_1.encode)((0, strings_1.toUtf8Bytes)(authorization))
            };
          }
          if (connection.skipFetchSetup != null) {
            options.skipFetchSetup = !!connection.skipFetchSetup;
          }
          if (connection.fetchOptions != null) {
            options.fetchOptions = (0, properties_1.shallowCopy)(connection.fetchOptions);
          }
        }
        const reData = new RegExp("^data:([^;:]*)?(;base64)?,(.*)$", "i");
        const dataMatch = url ? url.match(reData) : null;
        if (dataMatch) {
          try {
            const response = {
              statusCode: 200,
              statusMessage: "OK",
              headers: {
                "content-type": dataMatch[1] || "text/plain"
              },
              body: dataMatch[2] ? (0, base64_1.decode)(dataMatch[3]) : unpercent(dataMatch[3])
            };
            let result = response.body;
            if (processFunc) {
              result = processFunc(response.body, response);
            }
            return Promise.resolve(result);
          } catch (error) {
            logger.throwError("processing response error", logger_1.Logger.errors.SERVER_ERROR, {
              body: bodyify(dataMatch[1], dataMatch[2]),
              error,
              requestBody: null,
              requestMethod: "GET",
              url
            });
          }
        }
        if (body) {
          options.method = "POST";
          options.body = body;
          if (headers["content-type"] == null) {
            headers["content-type"] = {
              key: "Content-Type",
              value: "application/octet-stream"
            };
          }
          if (headers["content-length"] == null) {
            headers["content-length"] = {
              key: "Content-Length",
              value: String(body.length)
            };
          }
        }
        const flatHeaders = {};
        Object.keys(headers).forEach((key => {
          const header = headers[key];
          flatHeaders[header.key] = header.value;
        }));
        options.headers = flatHeaders;
        const runningTimeout = function() {
          let timer = null;
          const promise = new Promise((function(resolve, reject) {
            if (timeout) {
              timer = setTimeout((() => {
                if (timer == null) {
                  return;
                }
                timer = null;
                reject(logger.makeError("timeout", logger_1.Logger.errors.TIMEOUT, {
                  requestBody: bodyify(options.body, flatHeaders["content-type"]),
                  requestMethod: options.method,
                  timeout,
                  url
                }));
              }), timeout);
            }
          }));
          const cancel = function() {
            if (timer == null) {
              return;
            }
            clearTimeout(timer);
            timer = null;
          };
          return {
            promise,
            cancel
          };
        }();
        const runningFetch = async function() {
          for (let attempt = 0; attempt < attemptLimit; attempt++) {
            let response = null;
            try {
              response = await (0, geturl_1.getUrl)(url, options);
              if (attempt < attemptLimit) {
                if (response.statusCode === 301 || response.statusCode === 302) {
                  const location = response.headers.location || "";
                  if (options.method === "GET" && location.match(/^https:/)) {
                    url = response.headers.location;
                    continue;
                  }
                } else if (response.statusCode === 429) {
                  let tryAgain = true;
                  if (throttleCallback) {
                    tryAgain = await throttleCallback(attempt, url);
                  }
                  if (tryAgain) {
                    let stall = 0;
                    const retryAfter = response.headers["retry-after"];
                    if (typeof retryAfter === "string" && retryAfter.match(/^[1-9][0-9]*$/)) {
                      stall = parseInt(retryAfter) * 1e3;
                    } else {
                      stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));
                    }
                    await staller(stall);
                    continue;
                  }
                }
              }
            } catch (error) {
              response = error.response;
              if (response == null) {
                runningTimeout.cancel();
                logger.throwError("missing response", logger_1.Logger.errors.SERVER_ERROR, {
                  requestBody: bodyify(options.body, flatHeaders["content-type"]),
                  requestMethod: options.method,
                  serverError: error,
                  url
                });
              }
            }
            let body = response.body;
            if (allow304 && response.statusCode === 304) {
              body = null;
            } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {
              runningTimeout.cancel();
              logger.throwError("bad response", logger_1.Logger.errors.SERVER_ERROR, {
                status: response.statusCode,
                headers: response.headers,
                body: bodyify(body, response.headers ? response.headers["content-type"] : null),
                requestBody: bodyify(options.body, flatHeaders["content-type"]),
                requestMethod: options.method,
                url
              });
            }
            if (processFunc) {
              try {
                const result = await processFunc(body, response);
                runningTimeout.cancel();
                return result;
              } catch (error) {
                if (error.throttleRetry && attempt < attemptLimit) {
                  let tryAgain = true;
                  if (throttleCallback) {
                    tryAgain = await throttleCallback(attempt, url);
                  }
                  if (tryAgain) {
                    const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));
                    await staller(timeout);
                    continue;
                  }
                }
                runningTimeout.cancel();
                logger.throwError("processing response error", logger_1.Logger.errors.SERVER_ERROR, {
                  body: bodyify(body, response.headers ? response.headers["content-type"] : null),
                  error,
                  requestBody: bodyify(options.body, flatHeaders["content-type"]),
                  requestMethod: options.method,
                  url
                });
              }
            }
            runningTimeout.cancel();
            return body;
          }
          return logger.throwError("failed response", logger_1.Logger.errors.SERVER_ERROR, {
            requestBody: bodyify(options.body, flatHeaders["content-type"]),
            requestMethod: options.method,
            url
          });
        }();
        return Promise.race([ runningTimeout.promise, runningFetch ]);
      }
      exports._fetchData = _fetchData;
      function fetchJson(connection, json, processFunc) {
        let processJsonFunc = (value, response) => {
          let result = null;
          if (value != null) {
            try {
              result = JSON.parse((0, strings_1.toUtf8String)(value));
            } catch (error) {
              logger.throwError("invalid JSON", logger_1.Logger.errors.SERVER_ERROR, {
                body: value,
                error
              });
            }
          }
          if (processFunc) {
            result = processFunc(result, response);
          }
          return result;
        };
        let body = null;
        if (json != null) {
          body = (0, strings_1.toUtf8Bytes)(json);
          const updated = typeof connection === "string" ? {
            url: connection
          } : (0, properties_1.shallowCopy)(connection);
          if (updated.headers) {
            const hasContentType = Object.keys(updated.headers).filter((k => k.toLowerCase() === "content-type")).length !== 0;
            if (!hasContentType) {
              updated.headers = (0, properties_1.shallowCopy)(updated.headers);
              updated.headers["content-type"] = "application/json";
            }
          } else {
            updated.headers = {
              "content-type": "application/json"
            };
          }
          connection = updated;
        }
        return _fetchData(connection, body, processJsonFunc);
      }
      exports.fetchJson = fetchJson;
      function poll(func, options) {
        if (!options) {
          options = {};
        }
        options = (0, properties_1.shallowCopy)(options);
        if (options.floor == null) {
          options.floor = 0;
        }
        if (options.ceiling == null) {
          options.ceiling = 1e4;
        }
        if (options.interval == null) {
          options.interval = 250;
        }
        return new Promise((function(resolve, reject) {
          let timer = null;
          let done = false;
          const cancel = () => {
            if (done) {
              return false;
            }
            done = true;
            if (timer) {
              clearTimeout(timer);
            }
            return true;
          };
          if (options.timeout) {
            timer = setTimeout((() => {
              if (cancel()) {
                reject(new Error("timeout"));
              }
            }), options.timeout);
          }
          const retryLimit = options.retryLimit;
          let attempt = 0;
          function check() {
            return func().then((function(result) {
              if (result !== undefined) {
                if (cancel()) {
                  resolve(result);
                }
              } else if (options.oncePoll) {
                options.oncePoll.once("poll", check);
              } else if (options.onceBlock) {
                options.onceBlock.once("block", check);
              } else if (!done) {
                attempt++;
                if (attempt > retryLimit) {
                  if (cancel()) {
                    reject(new Error("retry limit reached"));
                  }
                  return;
                }
                let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));
                if (timeout < options.floor) {
                  timeout = options.floor;
                }
                if (timeout > options.ceiling) {
                  timeout = options.ceiling;
                }
                setTimeout(check, timeout);
              }
              return null;
            }), (function(error) {
              if (cancel()) {
                reject(error);
              }
            }));
          }
          check();
        }));
      }
      exports.poll = poll;
    },
    6079(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.version = void 0;
      exports.version = "wordlists/5.7.1";
    },
    6261(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.wordlists = exports.Wordlist = exports.logger = void 0;
      const wordlist_1 = __webpack_require__(652);
      Object.defineProperty(exports, "logger", {
        enumerable: true,
        get: function() {
          return wordlist_1.logger;
        }
      });
      Object.defineProperty(exports, "Wordlist", {
        enumerable: true,
        get: function() {
          return wordlist_1.Wordlist;
        }
      });
      const wordlists_1 = __webpack_require__(9107);
      Object.defineProperty(exports, "wordlists", {
        enumerable: true,
        get: function() {
          return wordlists_1.wordlists;
        }
      });
    },
    6587(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langCz = void 0;
      const wordlist_1 = __webpack_require__(652);
      const words = " ";
      let wordlist = null;
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = words.replace(/([A-Z])/g, " $1").toLowerCase().substring(1).split(" ");
        if (wordlist_1.Wordlist.check(lang) !== "0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for en (English) FAILED");
        }
      }
      class LangCz extends wordlist_1.Wordlist {
        constructor() {
          super("cz");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist.indexOf(word);
        }
      }
      const langCz = new LangCz;
      exports.langCz = langCz;
      wordlist_1.Wordlist.register(langCz);
    },
    2578(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langEn = void 0;
      const wordlist_1 = __webpack_require__(652);
      const words = " ";
      let wordlist = null;
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = words.replace(/([A-Z])/g, " $1").toLowerCase().substring(1).split(" ");
        if (wordlist_1.Wordlist.check(lang) !== "0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for en (English) FAILED");
        }
      }
      class LangEn extends wordlist_1.Wordlist {
        constructor() {
          super("en");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist.indexOf(word);
        }
      }
      const langEn = new LangEn;
      exports.langEn = langEn;
      wordlist_1.Wordlist.register(langEn);
    },
    8581(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langEs = void 0;
      const strings_1 = __webpack_require__(2509);
      const wordlist_1 = __webpack_require__(652);
      const words = "A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo";
      const lookup = {};
      let wordlist = null;
      function dropDiacritic(word) {
        wordlist_1.logger.checkNormalize();
        return (0, strings_1.toUtf8String)(Array.prototype.filter.call((0, strings_1.toUtf8Bytes)(word.normalize("NFD").toLowerCase()), (c => c >= 65 && c <= 90 || c >= 97 && c <= 123)));
      }
      function expand(word) {
        const output = [];
        Array.prototype.forEach.call((0, strings_1.toUtf8Bytes)(word), (c => {
          if (c === 47) {
            output.push(204);
            output.push(129);
          } else if (c === 126) {
            output.push(110);
            output.push(204);
            output.push(131);
          } else {
            output.push(c);
          }
        }));
        return (0, strings_1.toUtf8String)(output);
      }
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = words.replace(/([A-Z])/g, " $1").toLowerCase().substring(1).split(" ").map((w => expand(w)));
        wordlist.forEach(((word, index) => {
          lookup[dropDiacritic(word)] = index;
        }));
        if (wordlist_1.Wordlist.check(lang) !== "0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for es (Spanish) FAILED");
        }
      }
      class LangEs extends wordlist_1.Wordlist {
        constructor() {
          super("es");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return lookup[dropDiacritic(word)];
        }
      }
      const langEs = new LangEs;
      exports.langEs = langEs;
      wordlist_1.Wordlist.register(langEs);
    },
    3485(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langFr = void 0;
      const strings_1 = __webpack_require__(2509);
      const wordlist_1 = __webpack_require__(652);
      const words = " ";
      let wordlist = null;
      const lookup = {};
      function dropDiacritic(word) {
        wordlist_1.logger.checkNormalize();
        return (0, strings_1.toUtf8String)(Array.prototype.filter.call((0, strings_1.toUtf8Bytes)(word.normalize("NFD").toLowerCase()), (c => c >= 65 && c <= 90 || c >= 97 && c <= 123)));
      }
      function expand(word) {
        const output = [];
        Array.prototype.forEach.call((0, strings_1.toUtf8Bytes)(word), (c => {
          if (c === 47) {
            output.push(204);
            output.push(129);
          } else if (c === 45) {
            output.push(204);
            output.push(128);
          } else {
            output.push(c);
          }
        }));
        return (0, strings_1.toUtf8String)(output);
      }
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = words.replace(/([A-Z])/g, " $1").toLowerCase().substring(1).split(" ").map((w => expand(w)));
        wordlist.forEach(((word, index) => {
          lookup[dropDiacritic(word)] = index;
        }));
        if (wordlist_1.Wordlist.check(lang) !== "0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for fr (French) FAILED");
        }
      }
      class LangFr extends wordlist_1.Wordlist {
        constructor() {
          super("fr");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return lookup[dropDiacritic(word)];
        }
      }
      const langFr = new LangFr;
      exports.langFr = langFr;
      wordlist_1.Wordlist.register(langFr);
    },
    4908(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langIt = void 0;
      const wordlist_1 = __webpack_require__(652);
      const words = " ";
      let wordlist = null;
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = words.replace(/([A-Z])/g, " $1").toLowerCase().substring(1).split(" ");
        if (wordlist_1.Wordlist.check(lang) !== "0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for it (Italian) FAILED");
        }
      }
      class LangIt extends wordlist_1.Wordlist {
        constructor() {
          super("it");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist.indexOf(word);
        }
      }
      const langIt = new LangIt;
      exports.langIt = langIt;
      wordlist_1.Wordlist.register(langIt);
    },
    6136(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langJa = void 0;
      const bytes_1 = __webpack_require__(8380);
      const strings_1 = __webpack_require__(2509);
      const wordlist_1 = __webpack_require__(652);
      const data = [ "AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR", "ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR", "AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm", "ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC", "BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD", "QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD", "IJBEJqXZJ" ];
      const mapping = "~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt";
      let wordlist = null;
      function hex(word) {
        return (0, bytes_1.hexlify)((0, strings_1.toUtf8Bytes)(word));
      }
      const KiYoKu = "0xe3818de38284e3818f";
      const KyoKu = "0xe3818de38283e3818f";
      function loadWords(lang) {
        if (wordlist !== null) {
          return;
        }
        wordlist = [];
        const transform = {};
        transform[(0, strings_1.toUtf8String)([ 227, 130, 154 ])] = false;
        transform[(0, strings_1.toUtf8String)([ 227, 130, 153 ])] = false;
        transform[(0, strings_1.toUtf8String)([ 227, 130, 133 ])] = (0, strings_1.toUtf8String)([ 227, 130, 134 ]);
        transform[(0, strings_1.toUtf8String)([ 227, 129, 163 ])] = (0, strings_1.toUtf8String)([ 227, 129, 164 ]);
        transform[(0, strings_1.toUtf8String)([ 227, 130, 131 ])] = (0, strings_1.toUtf8String)([ 227, 130, 132 ]);
        transform[(0, strings_1.toUtf8String)([ 227, 130, 135 ])] = (0, strings_1.toUtf8String)([ 227, 130, 136 ]);
        function normalize(word) {
          let result = "";
          for (let i = 0; i < word.length; i++) {
            let kana = word[i];
            const target = transform[kana];
            if (target === false) {
              continue;
            }
            if (target) {
              kana = target;
            }
            result += kana;
          }
          return result;
        }
        function sortJapanese(a, b) {
          a = normalize(a);
          b = normalize(b);
          if (a < b) {
            return -1;
          }
          if (a > b) {
            return 1;
          }
          return 0;
        }
        for (let length = 3; length <= 9; length++) {
          const d = data[length - 3];
          for (let offset = 0; offset < d.length; offset += length) {
            const word = [];
            for (let i = 0; i < length; i++) {
              const k = mapping.indexOf(d[offset + i]);
              word.push(227);
              word.push(k & 64 ? 130 : 129);
              word.push((k & 63) + 128);
            }
            wordlist.push((0, strings_1.toUtf8String)(word));
          }
        }
        wordlist.sort(sortJapanese);
        if (hex(wordlist[442]) === KiYoKu && hex(wordlist[443]) === KyoKu) {
          const tmp = wordlist[442];
          wordlist[442] = wordlist[443];
          wordlist[443] = tmp;
        }
        if (wordlist_1.Wordlist.check(lang) !== "0xcb36b09e6baa935787fd762ce65e80b0c6a8dabdfbc3a7f86ac0e2c4fd111600") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for ja (Japanese) FAILED");
        }
      }
      class LangJa extends wordlist_1.Wordlist {
        constructor() {
          super("ja");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist.indexOf(word);
        }
        split(mnemonic) {
          wordlist_1.logger.checkNormalize();
          return mnemonic.split(/(?:\u3000| )+/g);
        }
        join(words) {
          return words.join("　");
        }
      }
      const langJa = new LangJa;
      exports.langJa = langJa;
      wordlist_1.Wordlist.register(langJa);
    },
    1699(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langKo = void 0;
      const strings_1 = __webpack_require__(2509);
      const wordlist_1 = __webpack_require__(652);
      const data = [ "OYAa", "ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@HgLnrHgMT8HgMX8HgMboHgOnrHgQToHgRg3HgoHgHgrCbHgrFnHgrLVHgvAcHgvAfHnAloHnCTrHnCnvHnGTrHnGZ8HnGnvHnJT8HnLf8HnLkvHnMg8HnRTrITvFUITvFnJTAXrJTCV8JTFT3JTFT8JTFn4JTGgvJTHT8JTJT8JTJXvJTJl3JTJnvJTLX4JTLf8JTLhvJTMT8JTMXrJTMnrJTObrJTQT8JTSlvJT8DUJT8FkJT8MTJT8OXJT8OgJT8QUJT8RfJUHZoJXFT4JXFlrJXGZ8JXGnrJXLV8JXLgvJXMXoJXMX3JXNboJXPlvJXoJTJXoLkJXrAXJXrHUJXrJgJXvJTJXvOnJX4KnJYAl3JYJT8JYLhvJYQToJYrQXJY6NUJbAl3JbCZrJbDloJbGT8JbGgrJbJXvJbJboJbLf8JbLhrJbLl3JbMnvJbRg8JbSZ8JboDbJbrCZJbrSUJb3KnJb8LnJfRn8JgAXrJgCZrJgDTrJgGZrJgGZ8JgHToJgJT8JgJXoJgJgvJgLX4JgLZ3JgLZ8JgLn4JgMgrJgMn4JgOgvJgPX6JgRnvJgSToJgoCZJgoJbJgoMYJgrJXJgrJgJgrLjJg6MTJlCn3JlGgvJlJl8Jl4AnJl8FnJl8HgJnAToJnATrJnAbvJnDUoJnGnrJnJXrJnJXvJnLhvJnLnrJnLnvJnMToJnMT8JnMXvJnMX3JnMg8JnMlrJnMn4JnOX8JnST4JnSX3JnoAgJnoAnJnoJTJnoObJnrAbJnrAkJnrHnJnrJTJnrJYJnrOYJnrScJnvCUJnvFaJnvJgJnvJnJnvOYJnvQUJnvRUJn3FnJn3JTKnFl3KnLT6LTDlvLTMnoLTOn3LTRl3LTSb4LTSlrLToAnLToJgLTrAULTrAcLTrCULTrHgLTrMgLT3JnLULnrLUMX8LUoJgLVATrLVDTrLVLb8LVoJgLV8MgLV8RTLXDg3LXFlrLXrCnLXrLXLX3GTLX4GgLX4OYLZAXrLZAcrLZAgrLZAhrLZDXyLZDlrLZFbrLZFl3LZJX6LZJX8LZLc8LZLnrLZSU8LZoJTLZoJnLZrAgLZrAnLZrJYLZrLULZrMgLZrSkLZvAnLZvGULZvJeLZvOTLZ3FZLZ4JXLZ8STLZ8ScLaAT3LaAl3LaHT8LaJTrLaJT8LaJXrLaJgvLaJl4LaLVoLaMXrLaMXvLaMX8LbClvLbFToLbHlrLbJn4LbLZ3LbLhvLbMXrLbMnoLbvSULcLnrLc8HnLc8MTLdrMnLeAgoLeOgvLeOn3LfAl3LfLnvLfMl3LfOX8Lf8AnLf8JXLf8LXLgJTrLgJXrLgJl8LgMX8LgRZrLhCToLhrAbLhrFULhrJXLhvJYLjHTrLjHX4LjJX8LjLhrLjSX3LjSZ4LkFX4LkGZ8LkGgvLkJTrLkMXoLkSToLkSU8LkSZ8LkoOYLl3FfLl3MgLmAZrLmCbrLmGgrLmHboLmJnoLmJn3LmLfoLmLhrLmSToLnAX6LnAb6LnCZ3LnCb3LnDTvLnDb8LnFl3LnGnrLnHZvLnHgvLnITvLnJT8LnJX8LnJlvLnLf8LnLg6LnLhvLnLnoLnMXrLnMg8LnQlvLnSbrLnrAgLnrAnLnrDbLnrFkLnrJdLnrMULnrOYLnrSTLnvAnLnvDULnvHgLnvOYLnvOnLn3GgLn4DULn4JTLn4JnMTAZoMTAloMTDb8MTFT8MTJnoMTJnrMTLZrMTLhrMTLkvMTMX8MTRTrMToATMTrDnMTrOnMT3JnMT4MnMT8FUMT8FaMT8FlMT8GTMT8GbMT8GnMT8HnMT8JTMT8JbMT8OTMUCl8MUJTrMUJU8MUMX8MURTrMUSToMXAX6MXAb6MXCZoMXFXrMXHXrMXLgvMXOgoMXrAUMXrAnMXrHgMXrJYMXrJnMXrMTMXrMgMXrOYMXrSZMXrSgMXvDUMXvOTMX3JgMX3OTMX4JnMX8DbMX8FnMX8HbMX8HgMX8HnMX8LbMX8MnMX8OnMYAb8MYGboMYHTvMYHX4MYLTrMYLnvMYMToMYOgvMYRg3MYSTrMbAToMbAXrMbAl3MbAn8MbGZ8MbJT8MbJXrMbMXvMbMX8MbMnoMbrMUMb8AfMb8FbMb8FkMcJXoMeLnrMgFl3MgGTvMgGXoMgGgrMgGnrMgHT8MgHZrMgJnoMgLnrMgLnvMgMT8MgQUoMgrHnMgvAnMg8HgMg8JYMg8LfMloJnMl8ATMl8AXMl8JYMnAToMnAT4MnAZ8MnAl3MnAl4MnCl8MnHT8MnHg8MnJnoMnLZoMnLhrMnMXoMnMX3MnMnrMnOgvMnrFbMnrFfMnrFnMnrNTMnvJXNTMl8OTCT3OTFV8OTFn3OTHZvOTJXrOTOl3OT3ATOT3JUOT3LZOT3LeOT3MbOT8ATOT8AbOT8AgOT8MbOUCXvOUMX3OXHXvOXLl3OXrMUOXvDbOX6NUOX8JbOYFZoOYLbrOYLkoOYMg8OYSX3ObHTrObHT4ObJgrObLhrObMX3ObOX8Ob8FnOeAlrOeJT8OeJXrOeJnrOeLToOeMb8OgJXoOgLXoOgMnrOgOXrOgOloOgoAgOgoJbOgoMYOgoSTOg8AbOjLX4OjMnoOjSV8OnLVoOnrAgOn3DUPXQlrPXvFXPbvFTPdAT3PlFn3PnvFbQTLn4QToAgQToMTQULV8QURg8QUoJnQXCXvQbFbrQb8AaQb8AcQb8FbQb8MYQb8ScQeAlrQeLhrQjAn3QlFXoQloJgQloSnRTLnvRTrGURTrJTRUJZrRUoJlRUrQnRZrLmRZrMnRZrSnRZ8ATRZ8JbRZ8ScRbMT8RbST3RfGZrRfMX8RfMgrRfSZrRnAbrRnGT8RnvJgRnvLfRnvMTRn8AaSTClvSTJgrSTOXrSTRg3STRnvSToAcSToAfSToAnSToHnSToLjSToMTSTrAaSTrEUST3BYST8AgST8LmSUAZvSUAgrSUDT4SUDT8SUGgvSUJXoSUJXvSULTrSU8JTSU8LjSV8AnSV8JgSXFToSXLf8SYvAnSZrDUSZrMUSZrMnSZ8HgSZ8JTSZ8JgSZ8MYSZ8QUSaQUoSbCT3SbHToSbQYvSbSl4SboJnSbvFbSb8HbSb8JgSb8OTScGZrScHgrScJTvScMT8ScSToScoHbScrMTScvAnSeAZrSeAcrSeHboSeJUoSeLhrSeMT8SeMXrSe6JgSgHTrSkJnoSkLnvSk8CUSlFl3SlrSnSl8GnSmAboSmGT8SmJU8", "ATLnDlATrAZoATrJX4ATrMT8ATrMX4ATrRTrATvDl8ATvJUoATvMl8AT3AToAT3MX8AT8CT3AT8DT8AT8HZrAT8HgoAUAgFnAUCTFnAXoMX8AXrAT8AXrGgvAXrJXvAXrOgoAXvLl3AZvAgoAZvFbrAZvJXoAZvJl8AZvJn3AZvMX8AZvSbrAZ8FZoAZ8LZ8AZ8MU8AZ8OTvAZ8SV8AZ8SX3AbAgFZAboJnoAbvGboAb8ATrAb8AZoAb8AgrAb8Al4Ab8Db8Ab8JnoAb8LX4Ab8LZrAb8LhrAb8MT8Ab8OUoAb8Qb8Ab8ST8AcrAUoAcrAc8AcrCZ3AcrFT3AcrFZrAcrJl4AcrJn3AcrMX3AcrOTvAc8AZ8Ac8MT8AfAcJXAgoFn4AgoGgvAgoGnrAgoLc8AgoMXoAgrLnrAkrSZ8AlFXCTAloHboAlrHbrAlrLhrAlrLkoAl3CZrAl3LUoAl3LZrAnrAl4AnrMT8An3HT4BT3IToBX4MnvBb!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6", "ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv", "AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo", "AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg", "HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb", "AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl" ];
      const codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
      function getHangul(code) {
        if (code >= 40) {
          code = code + 168 - 40;
        } else if (code >= 19) {
          code = code + 97 - 19;
        }
        return (0, strings_1.toUtf8String)([ 225, (code >> 6) + 132, (code & 63) + 128 ]);
      }
      let wordlist = null;
      function loadWords(lang) {
        if (wordlist != null) {
          return;
        }
        wordlist = [];
        data.forEach(((data, length) => {
          length += 4;
          for (let i = 0; i < data.length; i += length) {
            let word = "";
            for (let j = 0; j < length; j++) {
              word += getHangul(codes.indexOf(data[i + j]));
            }
            wordlist.push(word);
          }
        }));
        wordlist.sort();
        if (wordlist_1.Wordlist.check(lang) !== "0xf9eddeace9c5d3da9c93cf7d3cd38f6a13ed3affb933259ae865714e8a3ae71a") {
          wordlist = null;
          throw new Error("BIP39 Wordlist for ko (Korean) FAILED");
        }
      }
      class LangKo extends wordlist_1.Wordlist {
        constructor() {
          super("ko");
        }
        getWord(index) {
          loadWords(this);
          return wordlist[index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist.indexOf(word);
        }
      }
      const langKo = new LangKo;
      exports.langKo = langKo;
      wordlist_1.Wordlist.register(langKo);
    },
    5911(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.langZhTw = exports.langZhCn = void 0;
      const strings_1 = __webpack_require__(2509);
      const wordlist_1 = __webpack_require__(652);
      const data = "}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN<di,AM=W5%QO&ka&ua,hM^tm=zV=JA=wR&+X]7P&NB#4J#5L|/b[dA}tJ<Do&6m&u2[U1&Kb.HM&mC=w0&MW<rY,Hq#6M}QG,13&wP}Jp]Ow%ue&Kg<HP<D9~4k~9T&I2_c6$9T#9/[C5~7O~4a=cs&O7=KK=An&l9$6U$8A&uD&QI|/Y&bg}Ux&F2#6b}E2&JN&kW&kp=U/&bb=Xl<Cj}k+~5J#6L&5z&9i}b4&Fo,ho(X0_g3~4O$Fz&QE<HN=Ww]6/%GF-Vw=tj&/D&PN#9g=YO}cL&Of&PI~5I&Ip=vU=IW#9G;0o-wU}ss&QR<BT&R9=tk$PY_dh&Pq-yh]7T,nj.Xu=EP&76=cI&Fs*Xg}z7$Gb&+I=DF,AF=cA}rL#7j=Dz&3y<Aa$52=PQ}b0(iY$Fa}oL&xV#6U=ec=WZ,xh%RY<dp#9N&Fl&44=WH*A7=sh&TB&8P=07;u+&PK}uh}J5#72)V/=xC,AB$k0&f6;1E|+5=1B,3v]6n&wR%b+&xx]7f=Ol}fl;+D^wG]7E;nB;uh^Ir&l5=JL,nS=cf=g5;u6|/Q$Gc=MH%Hg#5d%M6^86=U+$Gz,l/,ir^5y&Ba&/F-IY&FI&be%IZ#77&PW_Nu$kE(Yf&NX]7Z,Jy&FJ(Xo&Nz#/d=y7&MX<Ag}Z+;nE]Dt(iG#4D=13&Pj~4c%v8&Zo%OL&/X#4W<HR&ie~6J_1O(Y2=y5=Ad*cv_eB#6k&PX:BU#7A;uk&Ft&Fx_dD=U2;vB=U5=4F}+O&GN.HH:9s=b0%NV(jO&IH=JT}Z9=VZ<Af,Kx^4m&uJ%c6,6r;9m#+L}cf%Kh&F3~4H=vP}bu,Hz|++,1w]nv}k6;uu$jw*Kl*WX&uM[x7&Fr[m7$NO&QN]hu=JN}nR^8g#/h(ps|KC;vd}xz=V0}p6&FD$G1#7K<bG_4p~8g&cf;u4=tl}+k%5/}fz;uw<cA=u1}gU}VM=LJ=eX&+L&Pr#4U}p2:nC,2K]7H:jF&9x}uX#9O=MB<fz~8X~5m&4D&kN&u5%E/(h7(ZF&VG<de(qM|/e-Wt=3x(a+,/R]f/&ND$Ro&nU}0g=KA%kH&NK$Ke<dS}cB&IX~5g$TN]6m=Uv,Is&Py=Ef%Kz#+/%bi&+A<F4$OG&4C&FL#9V<Zk=2I_eE&6c]nw&kq$HG}y+&A8$P3}OH=XP]70%IS(AJ_gH%GZ&tY&AZ=vb~6y&/r=VI=Wv<Zi=fl=xf&eL}c8}OL=MJ=g8$F7=YT}9u=0+^xC}JH&nL^N0~4T]K2,Cy%OC#6s;vG(AC^xe^cG&MF}Br#9P;wD-7h$O/&xA}Fn^PC]6i]7G&8V$Qs;vl(TB~73~4l<mW&6V=2y&uY&+3)aP}XF;LP&kx$wU=t7;uy<FN&lz)7E=Oo*Y+;wI}9q}le;J6&Ri&4t&Qr#8B=cb&vG=J5|Ql(h5<Yy~4+}QD,Lx=wn%K/&RK=dO&Pw,Q9=co%4u;9u}g0@6a^4I%b0=zo|/c&tX=dQ=OS#+b=yz_AB&wB&Pm=W9$HP_gR=62=AO=ti=hI,oA&jr&dH=tm&b6$P2(x8=zi;nG~7F;05]0n[Ix&3m}rg=Xp=cd&uz]7t;97=cN;vV<jf&FF&F1=6Q&Ik*Kk&P4,2z=fQ]7D&3u,H0=d/}Uw<ZN<7R}Kv;0f$H7,MD]7n$F0#88~9Z%da=by;+T#/u=VF&fO&kr^kf<AB]sU,I5$Ng&Pz;0i&QD&vM=Yl:BM;nJ_xJ]U7&Kf&30,3f|Z9*dC)je_jA&Q4&Kp$NH(Yz#6S&Id%Ib=KX,AD=KV%dP}tW&Pk^+E_Ni=cq,3R}VZ(Si=b+}rv;0j}rZ]uA,/w(Sx&Jv$w9&4d&wE,NJ$Gy=J/]Ls#7k<ZQ<Y/&uj]Ov$PM;v3,2F&+u:up=On&3e,Jv;90=J+&Qm]6q}bK#+d~8Y(h2]hA;99&AS=I/}qB&dQ}yJ-VM}Vl&ui,iB&G3|Dc]7d=eQ%dX%JC_1L~4d^NP;vJ&/1)ZI#7N]9X[bQ&PL=0L(UZ,Lm&kc&IR}n7(iR<AQ<dg=33=vN}ft}au]7I,Ba=x9=dR~6R&Tq=Xi,3d$Nr&Bc}DI&ku&vf]Dn,/F&iD,Ll&Nw=0y&I7=Ls=/A&tU=Qe}Ua&uk&+F=g4=gh=Vj#+1&Qn}Uy*44#5F,Pc&Rz*Xn=oh=5W;0n_Nf(iE<Y7=vr=Zu]oz#5Z%mI=kN=Bv_Jp(T2;vt_Ml<FS&uI=L/&6P]64$M7}86<bo%QX(SI%IY&VK=Al&Ux;vv;ut*E/%uh<ZE|O3,M2(yc]yu=Wk&tp:Ex}hr,Cl&WE)+Z=8U}I2_4Q,hA_si=iw=OM=tM=yZ%Ia=U7;wT}b+;uo=Za}yS!5x}HD}fb#5O_dA;Nv%uB(yB;01(Sf}Fk;v7}Pt#8v<mZ#7L,/r&Pl~4w&f5=Ph$Fw_LF&8m,bL=yJ&BH}p/*Jn}tU~5Q;wB(h6]Df]8p^+B;E4&Wc=d+;Ea&bw$8C&FN,DM=Yf}mP~5w=fT#6V=mC=Fi=AV}jB&AN}lW}aH#/D)dZ;hl;vE}/7,CJ;31&w8,hj%u9_Js=jJ&4M~8k=TN&eC}nL&uc-wi&lX}dj=Mv=e2#6u=cr$uq$6G]8W}Jb:nm=Yg<b3(UA;vX&6n&xF=KT,jC,De&R8&oY=Zv&oB]7/=Z2&Oa}bf,hh(4h^tZ&72&Nx;D2&xL~5h~40)ZG)h+=OJ&RA]Bv$yB=Oq=df,AQ%Jn}OJ;11,3z&Tl&tj;v+^Hv,Dh(id=s+]7N&N3)9Q~8f,S4=uW=w4&uX,LX&3d]CJ&yp&8x<b2_do&lP=y/<cy_dG=Oi=7R(VH(lt_1T,Iq_AA;12^6T%k6#8K[B1{oO<AU[Bt;1b$9S&Ps<8T=St{bY,jB(Zp&63&Uv$9V,PM]6v&Af}zW[bW_oq}sm}nB&Kq&gC&ff_eq_2m&5F&TI}rf}Gf;Zr_z9;ER&jk}iz_sn<BN~+n&vo=Vi%97|ZR=Wc,WE&6t]6z%85(ly#84=KY)6m_5/=aX,N3}Tm&he&6K]tR_B2-I3;u/&hU&lH<AP=iB&IA=XL;/5&Nh=wv<BH#79=vS=zl<AA=0X_RG}Bw&9p$NW,AX&kP_Lp&/Z(Tc]Mu}hs#6I}5B&cI<bq&H9#6m=K9}vH(Y1(Y0#4B&w6,/9&gG<bE,/O=zb}I4_l8<B/;wL%Qo<HO[Mq=XX}0v&BP&F4(mG}0i}nm,EC=9u{I3,xG&/9=JY*DK&hR)BX=EI=cx=b/{6k}yX%A+&wa}Xb=la;wi^lL;0t}jo&Qb=xg=XB}iO<qo{bR=NV&8f=a0&Jy;0v=uK)HK;vN#6h&jB(h/%ud&NI%wY.X7=Pt}Cu-uL&Gs_hl%mH,tm]78=Lb^Q0#7Y=1u<Bt&+Q=Co_RH,w3;1e}ux<aU;ui}U3&Q5%bt]63&UQ|0l&uL}O7&3o,AV&dm|Nj(Xt*5+(Uu&Hh(p7(UF=VR=Bp^Jl&Hd[ix)9/=Iq]C8<67]66}mB%6f}bb}JI]8T$HA}db=YM&pa=2J}tS&Y0=PS&y4=cX$6E,hX,XP&nR;04,FQ&l0&Vm_Dv#5Y~8Z=Bi%MA]6x=JO:+p,Az&9q,Hj~6/}SD=K1:EJ}nA;Qo#/E]9R,Ie&6X%W3]61&v4=xX_MC=0q;06(Xq=fs}IG}Dv=0l}o7$iZ;9v&LH&DP-7a&OY,SZ,Kz,Cv&dh=fx|Nh,F/~7q=XF&w+;9n&Gw;0h}Z7<7O&JK(S7&LS<AD<ac=wo<Dt&zw%4B=4v#8P;9o~6p*vV=Tm,Or&I6=1q}nY=P0=gq&Bl&Uu,Ch%yb}UY=zh}dh}rl(T4_xk(YA#8R*xH,IN}Jn]7V}C4&Ty}j3]7p=cL=3h&wW%Qv<Z3=f0&RI&+S(ic_zq}oN&/Y=z1;Td=LW=0e=OI(Vc,+b^ju(UL;0r:Za%8v=Rp=zw&58&73&wK}qX]6y&8E)a2}WR=wP^ur&nQ<cH}Re=Aq&wk}Q0&+q=PP,Gc|/d^k5,Fw]8Y}Pg]p3=ju=ed}r5_yf&Cs]7z$/G<Cm&Jp&54_1G_gP_Ll}JZ;0u]k8_7k(Sg]65{9i=LN&Sx&WK,iW&fD&Lk{9a}Em-9c#8N&io=sy]8d&nT&IK(lx#7/$lW(Td<s8~49,3o<7Y=MW(T+_Jr&Wd,iL}Ct=xh&5V;v4&8n%Kx=iF&l2_0B{B+,If(J0,Lv;u8=Kx-vB=HC&vS=Z6&fU&vE^xK;3D=4h=MR#45:Jw;0d}iw=LU}I5=I0]gB*im,K9}GU,1k_4U&Tt=Vs(iX&lU(TF#7y,ZO}oA&m5#5P}PN}Uz=hM<B1&FB<aG,e6~7T<tP(UQ_ZT=wu&F8)aQ]iN,1r_Lo&/g:CD}84{J1_Ki&Na&3n$jz&FE=dc;uv;va}in}ll=fv(h1&3h}fp=Cy}BM(+E~8m}lo%v7=hC(T6$cj=BQ=Bw(DR,2j=Ks,NS|F+;00=fU=70}Mb(YU;+G&m7&hr=Sk%Co]t+(X5_Jw}0r}gC(AS-IP&QK<Z2#8Q$WC]WX}T2&pG_Ka,HC=R4&/N;Z+;ch(C7,D4$3p_Mk&B2$8D=n9%Ky#5z(CT&QJ#7B]DC]gW}nf~5M;Iw#80}Tc_1F#4Z-aC}Hl=ph=fz,/3=aW}JM}nn;DG;vm}wn,4P}T3;wx&RG$u+}zK=0b;+J_Ek{re<aZ=AS}yY#5D]7q,Cp}xN=VP*2C}GZ}aG~+m_Cs=OY#6r]6g<GS}LC(UB=3A=Bo}Jy<c4}Is;1P<AG}Op<Z1}ld}nS=1Z,yM&95&98=CJ(4t:2L$Hk=Zo}Vc;+I}np&N1}9y=iv}CO*7p=jL)px]tb^zh&GS&Vl%v/;vR=14=zJ&49|/f]hF}WG;03=8P}o/&Gg&rp;DB,Kv}Ji&Pb;aA^ll(4j%yt}+K$Ht#4y&hY]7Y<F1,eN}bG(Uh%6Z]t5%G7;+F_RE;it}tL=LS&Da=Xx(S+(4f=8G=yI}cJ}WP=37=jS}pX}hd)fp<A8=Jt~+o$HJ=M6}iX=g9}CS=dv=Cj(mP%Kd,xq|+9&LD(4/=Xm&QP=Lc}LX&fL;+K=Op(lu=Qs.qC:+e&L+=Jj#8w;SL]7S(b+#4I=c1&nG_Lf&uH;+R)ZV<bV%B/,TE&0H&Jq&Ah%OF&Ss(p2,Wv&I3=Wl}Vq;1L&lJ#9b_1H=8r=b8=JH(SZ=hD=J2#7U,/U#/X~6P,FU<eL=jx,mG=hG=CE&PU=Se(qX&LY=X6=y4&tk&QQ&tf=4g&xI}W+&mZ=Dc#7w}Lg;DA;wQ_Kb(cJ=hR%yX&Yb,hw{bX_4X;EP;1W_2M}Uc=b5(YF,CM&Tp^OJ{DD]6s=vF=Yo~8q}XH}Fu%P5(SJ=Qt;MO]s8<F3&B3&8T(Ul-BS*dw&dR<87}/8]62$PZ]Lx<Au}9Q]7c=ja=KR,Go,Us&v6(qk}pG&G2=ev^GM%w4&H4]7F&dv]J6}Ew:9w=sj-ZL}Ym$+h(Ut(Um~4n=Xs(U7%eE=Qc_JR<CA#6t<Fv|/I,IS,EG<F2(Xy$/n<Fa(h9}+9_2o&N4#7X<Zq|+f_Dp=dt&na,Ca=NJ)jY=8C=YG=s6&Q+<DO}D3=xB&R1(lw;Qn<bF(Cu|/B}HV=SS&n7,10&u0]Dm%A6^4Q=WR(TD=Xo<GH,Rj(l8)bP&n/=LM&CF,F5&ml=PJ;0k=LG=tq,Rh,D6@4i=1p&+9=YC%er_Mh;nI;0q=Fw]80=xq=FM$Gv;v6&nc;wK%H2&Kj;vs,AA=YP,66}bI(qR~5U=6q~4b$Ni=K5.X3$So&Iu(p+]8G=Cf=RY(TS_O3(iH&57=fE=Dg_Do#9z#7H;FK{qd_2k%JR}en&gh_z8;Rx}9p<cN_Ne,DO;LN_7o~/p=NF=5Y}gN<ce<C1,QE]Wv=3u<BC}GK]yq}DY&u/_hj=II(pz&rC,jV&+Z}ut=NQ;Cg-SR_ZS,+o=u/;Oy_RK_QF(Fx&xP}Wr&TA,Uh&g1=yr{ax[VF$Pg(YB;Ox=Vy;+W(Sp}XV%dd&33(l/]l4#4Y}OE=6c=bw(A7&9t%wd&N/&mo,JH&Qe)fm=Ao}fu=tH";
      const deltaData = "FAZDC6BALcLZCA+GBARCW8wNCcDDZ8LVFBOqqDUiou+M42TFAyERXFb7EjhP+vmBFpFrUpfDV2F7eB+eCltCHJFWLFCED+pWTojEIHFXc3aFn4F68zqjEuKidS1QBVPDEhE7NA4mhMF7oThD49ot3FgtzHFCK0acW1x8DH1EmLoIlrWFBLE+y5+NA3Cx65wJHTaEZVaK1mWAmPGxgYCdxwOjTDIt/faOEhTl1vqNsKtJCOhJWuio2g07KLZEQsFBUpNtwEByBgxFslFheFbiEPvi61msDvApxCzB6rBCzox7joYA5UdDc+Cb4FSgIabpXFAj3bjkmFAxCZE+mD/SFf/0ELecYCt3nLoxC6WEZf2tKDB4oZvrEmqFkKk7BwILA7gtYBpsTq//D4jD0F0wEB9pyQ1BD5Ba0oYHDI+sbDFhvrHXdDHfgFEIJLi5r8qercNFBgFLC4bo5ERJtamWBDFy73KCEb6M8VpmEt330ygCTK58EIIFkYgF84gtGA9Uyh3m68iVrFbWFbcbqiCYHZ9J1jeRPbL8yswhMiDbhEhdNoSwFbZrLT740ABEqgCkO8J1BLd1VhKKR4sD1yUo0z+FF59Mvg71CFbyEhbHSFBKEIKyoQNgQppq9T0KAqePu0ZFGrXOHdKJqkoTFhYvpDNyuuznrN84thJbsCoO6Cu6Xlvntvy0QYuAExQEYtTUBf3CoCqwgGFZ4u1HJFzDVwEy3cjcpV4QvsPaBC3rCGyCF23o4K3pp2gberGgFEJEHo4nHICtyKH2ZqyxhN05KBBJIQlKh/Oujv/DH32VrlqFdIFC7Fz9Ct4kaqFME0UETLprnN9kfy+kFmtQBB0+5CFu0N9Ij8l/VvJDh2oq3hT6EzjTHKFN7ZjZwoTsAZ4Exsko6Fpa6WC+sduz8jyrLpegTv2h1EBeYpLpm2czQW0KoCcS0bCVXCmuWJDBjN1nQNLdF58SFJ0h7i3pC3oEOKy/FjBklL70XvBEEIWp2yZ04xObzAWDDJG7f+DbqBEA7LyiR95j7MDVdDViz2RE5vWlBMv5e4+VfhP3aXNPhvLSynb9O2x4uFBV+3jqu6d5pCG28/sETByvmu/+IJ0L3wb4rj9DNOLBF6XPIODr4L19U9RRofAG6Nxydi8Bki8BhGJbBAJKzbJxkZSlF9Q2Cu8oKqggB9hBArwLLqEBWEtFowy8XK8bEyw9snT+BeyFk1ZCSrdmgfEwFePTgCjELBEnIbjaDDPJm36rG9pztcEzT8dGk23SBhXBB1H4z+OWze0ooFzz8pDBYFvp9j9tvFByf9y4EFdVnz026CGR5qMr7fxMHN8UUdlyJAzlTBDRC28k+L4FB8078ljyD91tUj1ocnTs8vdEf7znbzm+GIjEZnoZE5rnLL700Xc7yHfz05nWxy03vBB9YGHYOWxgMQGBCR24CVYNE1hpfKxN0zKnfJDmmMgMmBWqNbjfSyFCBWSCGCgR8yFXiHyEj+VtD1FB3FpC1zI0kFbzifiKTLm9yq5zFmur+q8FHqjoOBWsBPiDbnCC2ErunV6cJ6TygXFYHYp7MKN9RUlSIS8/xBAGYLzeqUnBF4QbsTuUkUqGs6CaiDWKWjQK9EJkjpkTmNCPYXL";
      const wordlist = {
        zh_cn: null,
        zh_tw: null
      };
      const Checks = {
        zh_cn: "0x17bcc4d8547e5a7135e365d1ab443aaae95e76d8230c2782c67305d4f21497a1",
        zh_tw: "0x51e720e90c7b87bec1d70eb6e74a21a449bd3ec9c020b01d3a40ed991b60ce5d"
      };
      const codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
      const style = "~!@#$%^&*_-=[]{}|;:,.()<>?";
      function loadWords(lang) {
        if (wordlist[lang.locale] !== null) {
          return;
        }
        wordlist[lang.locale] = [];
        let deltaOffset = 0;
        for (let i = 0; i < 2048; i++) {
          const s = style.indexOf(data[i * 3]);
          const bytes = [ 228 + (s >> 2), 128 + codes.indexOf(data[i * 3 + 1]), 128 + codes.indexOf(data[i * 3 + 2]) ];
          if (lang.locale === "zh_tw") {
            const common = s % 4;
            for (let i = common; i < 3; i++) {
              bytes[i] = codes.indexOf(deltaData[deltaOffset++]) + (i == 0 ? 228 : 128);
            }
          }
          wordlist[lang.locale].push((0, strings_1.toUtf8String)(bytes));
        }
        if (wordlist_1.Wordlist.check(lang) !== Checks[lang.locale]) {
          wordlist[lang.locale] = null;
          throw new Error("BIP39 Wordlist for " + lang.locale + " (Chinese) FAILED");
        }
      }
      class LangZh extends wordlist_1.Wordlist {
        constructor(country) {
          super("zh_" + country);
        }
        getWord(index) {
          loadWords(this);
          return wordlist[this.locale][index];
        }
        getWordIndex(word) {
          loadWords(this);
          return wordlist[this.locale].indexOf(word);
        }
        split(mnemonic) {
          mnemonic = mnemonic.replace(/(?:\u3000| )+/g, "");
          return mnemonic.split("");
        }
      }
      const langZhCn = new LangZh("cn");
      exports.langZhCn = langZhCn;
      wordlist_1.Wordlist.register(langZhCn);
      wordlist_1.Wordlist.register(langZhCn, "zh");
      const langZhTw = new LangZh("tw");
      exports.langZhTw = langZhTw;
      wordlist_1.Wordlist.register(langZhTw);
    },
    652(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.Wordlist = exports.logger = void 0;
      const exportWordlist = false;
      const hash_1 = __webpack_require__(413);
      const properties_1 = __webpack_require__(1476);
      const logger_1 = __webpack_require__(5289);
      const _version_1 = __webpack_require__(6079);
      exports.logger = new logger_1.Logger(_version_1.version);
      class Wordlist {
        constructor(locale) {
          exports.logger.checkAbstract(new.target, Wordlist);
          (0, properties_1.defineReadOnly)(this, "locale", locale);
        }
        split(mnemonic) {
          return mnemonic.toLowerCase().split(/ +/g);
        }
        join(words) {
          return words.join(" ");
        }
        static check(wordlist) {
          const words = [];
          for (let i = 0; i < 2048; i++) {
            const word = wordlist.getWord(i);
            if (i !== wordlist.getWordIndex(word)) {
              return "0x";
            }
            words.push(word);
          }
          return (0, hash_1.id)(words.join("\n") + "\n");
        }
        static register(lang, name) {
          if (!name) {
            name = lang.locale;
          }
          if (exportWordlist) {
            try {
              const anyGlobal = window;
              if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {
                if (!anyGlobal._ethers.wordlists[name]) {
                  (0, properties_1.defineReadOnly)(anyGlobal._ethers.wordlists, name, lang);
                }
              }
            } catch (error) {}
          }
        }
      }
      exports.Wordlist = Wordlist;
    },
    9107(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.wordlists = void 0;
      const lang_cz_1 = __webpack_require__(6587);
      const lang_en_1 = __webpack_require__(2578);
      const lang_es_1 = __webpack_require__(8581);
      const lang_fr_1 = __webpack_require__(3485);
      const lang_ja_1 = __webpack_require__(6136);
      const lang_ko_1 = __webpack_require__(1699);
      const lang_it_1 = __webpack_require__(4908);
      const lang_zh_1 = __webpack_require__(5911);
      exports.wordlists = {
        cz: lang_cz_1.langCz,
        en: lang_en_1.langEn,
        es: lang_es_1.langEs,
        fr: lang_fr_1.langFr,
        it: lang_it_1.langIt,
        ja: lang_ja_1.langJa,
        ko: lang_ko_1.langKo,
        zh: lang_zh_1.langZhCn,
        zh_cn: lang_zh_1.langZhCn,
        zh_tw: lang_zh_1.langZhTw
      };
    },
    3836(module) {
      "use strict";
      (function(root) {
        function checkInt(value) {
          return parseInt(value) === value;
        }
        function checkInts(arrayish) {
          if (!checkInt(arrayish.length)) {
            return false;
          }
          for (var i = 0; i < arrayish.length; i++) {
            if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {
              return false;
            }
          }
          return true;
        }
        function coerceArray(arg, copy) {
          if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === "Uint8Array") {
            if (copy) {
              if (arg.slice) {
                arg = arg.slice();
              } else {
                arg = Array.prototype.slice.call(arg);
              }
            }
            return arg;
          }
          if (Array.isArray(arg)) {
            if (!checkInts(arg)) {
              throw new Error("Array contains invalid value: " + arg);
            }
            return new Uint8Array(arg);
          }
          if (checkInt(arg.length) && checkInts(arg)) {
            return new Uint8Array(arg);
          }
          throw new Error("unsupported array-like object");
        }
        function createArray(length) {
          return new Uint8Array(length);
        }
        function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {
          if (sourceStart != null || sourceEnd != null) {
            if (sourceArray.slice) {
              sourceArray = sourceArray.slice(sourceStart, sourceEnd);
            } else {
              sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);
            }
          }
          targetArray.set(sourceArray, targetStart);
        }
        var convertUtf8 = function() {
          function toBytes(text) {
            var result = [], i = 0;
            text = encodeURI(text);
            while (i < text.length) {
              var c = text.charCodeAt(i++);
              if (c === 37) {
                result.push(parseInt(text.substr(i, 2), 16));
                i += 2;
              } else {
                result.push(c);
              }
            }
            return coerceArray(result);
          }
          function fromBytes(bytes) {
            var result = [], i = 0;
            while (i < bytes.length) {
              var c = bytes[i];
              if (c < 128) {
                result.push(String.fromCharCode(c));
                i++;
              } else if (c > 191 && c < 224) {
                result.push(String.fromCharCode((c & 31) << 6 | bytes[i + 1] & 63));
                i += 2;
              } else {
                result.push(String.fromCharCode((c & 15) << 12 | (bytes[i + 1] & 63) << 6 | bytes[i + 2] & 63));
                i += 3;
              }
            }
            return result.join("");
          }
          return {
            toBytes,
            fromBytes
          };
        }();
        var convertHex = function() {
          function toBytes(text) {
            var result = [];
            for (var i = 0; i < text.length; i += 2) {
              result.push(parseInt(text.substr(i, 2), 16));
            }
            return result;
          }
          var Hex = "0123456789abcdef";
          function fromBytes(bytes) {
            var result = [];
            for (var i = 0; i < bytes.length; i++) {
              var v = bytes[i];
              result.push(Hex[(v & 240) >> 4] + Hex[v & 15]);
            }
            return result.join("");
          }
          return {
            toBytes,
            fromBytes
          };
        }();
        var numberOfRounds = {
          16: 10,
          24: 12,
          32: 14
        };
        var rcon = [ 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145 ];
        var S = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22 ];
        var Si = [ 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125 ];
        var T1 = [ 3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986 ];
        var T2 = [ 2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766 ];
        var T3 = [ 1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126 ];
        var T4 = [ 1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436 ];
        var T5 = [ 1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890 ];
        var T6 = [ 1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935 ];
        var T7 = [ 2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600 ];
        var T8 = [ 4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480 ];
        var U1 = [ 0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795 ];
        var U2 = [ 0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855 ];
        var U3 = [ 0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150 ];
        var U4 = [ 0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925 ];
        function convertToInt32(bytes) {
          var result = [];
          for (var i = 0; i < bytes.length; i += 4) {
            result.push(bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]);
          }
          return result;
        }
        var AES = function(key) {
          if (!(this instanceof AES)) {
            throw Error("AES must be instanitated with `new`");
          }
          Object.defineProperty(this, "key", {
            value: coerceArray(key, true)
          });
          this._prepare();
        };
        AES.prototype._prepare = function() {
          var rounds = numberOfRounds[this.key.length];
          if (rounds == null) {
            throw new Error("invalid key size (must be 16, 24 or 32 bytes)");
          }
          this._Ke = [];
          this._Kd = [];
          for (var i = 0; i <= rounds; i++) {
            this._Ke.push([ 0, 0, 0, 0 ]);
            this._Kd.push([ 0, 0, 0, 0 ]);
          }
          var roundKeyCount = (rounds + 1) * 4;
          var KC = this.key.length / 4;
          var tk = convertToInt32(this.key);
          var index;
          for (var i = 0; i < KC; i++) {
            index = i >> 2;
            this._Ke[index][i % 4] = tk[i];
            this._Kd[rounds - index][i % 4] = tk[i];
          }
          var rconpointer = 0;
          var t = KC, tt;
          while (t < roundKeyCount) {
            tt = tk[KC - 1];
            tk[0] ^= S[tt >> 16 & 255] << 24 ^ S[tt >> 8 & 255] << 16 ^ S[tt & 255] << 8 ^ S[tt >> 24 & 255] ^ rcon[rconpointer] << 24;
            rconpointer += 1;
            if (KC != 8) {
              for (var i = 1; i < KC; i++) {
                tk[i] ^= tk[i - 1];
              }
            } else {
              for (var i = 1; i < KC / 2; i++) {
                tk[i] ^= tk[i - 1];
              }
              tt = tk[KC / 2 - 1];
              tk[KC / 2] ^= S[tt & 255] ^ S[tt >> 8 & 255] << 8 ^ S[tt >> 16 & 255] << 16 ^ S[tt >> 24 & 255] << 24;
              for (var i = KC / 2 + 1; i < KC; i++) {
                tk[i] ^= tk[i - 1];
              }
            }
            var i = 0, r, c;
            while (i < KC && t < roundKeyCount) {
              r = t >> 2;
              c = t % 4;
              this._Ke[r][c] = tk[i];
              this._Kd[rounds - r][c] = tk[i++];
              t++;
            }
          }
          for (var r = 1; r < rounds; r++) {
            for (var c = 0; c < 4; c++) {
              tt = this._Kd[r][c];
              this._Kd[r][c] = U1[tt >> 24 & 255] ^ U2[tt >> 16 & 255] ^ U3[tt >> 8 & 255] ^ U4[tt & 255];
            }
          }
        };
        AES.prototype.encrypt = function(plaintext) {
          if (plaintext.length != 16) {
            throw new Error("invalid plaintext size (must be 16 bytes)");
          }
          var rounds = this._Ke.length - 1;
          var a = [ 0, 0, 0, 0 ];
          var t = convertToInt32(plaintext);
          for (var i = 0; i < 4; i++) {
            t[i] ^= this._Ke[0][i];
          }
          for (var r = 1; r < rounds; r++) {
            for (var i = 0; i < 4; i++) {
              a[i] = T1[t[i] >> 24 & 255] ^ T2[t[(i + 1) % 4] >> 16 & 255] ^ T3[t[(i + 2) % 4] >> 8 & 255] ^ T4[t[(i + 3) % 4] & 255] ^ this._Ke[r][i];
            }
            t = a.slice();
          }
          var result = createArray(16), tt;
          for (var i = 0; i < 4; i++) {
            tt = this._Ke[rounds][i];
            result[4 * i] = (S[t[i] >> 24 & 255] ^ tt >> 24) & 255;
            result[4 * i + 1] = (S[t[(i + 1) % 4] >> 16 & 255] ^ tt >> 16) & 255;
            result[4 * i + 2] = (S[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255;
            result[4 * i + 3] = (S[t[(i + 3) % 4] & 255] ^ tt) & 255;
          }
          return result;
        };
        AES.prototype.decrypt = function(ciphertext) {
          if (ciphertext.length != 16) {
            throw new Error("invalid ciphertext size (must be 16 bytes)");
          }
          var rounds = this._Kd.length - 1;
          var a = [ 0, 0, 0, 0 ];
          var t = convertToInt32(ciphertext);
          for (var i = 0; i < 4; i++) {
            t[i] ^= this._Kd[0][i];
          }
          for (var r = 1; r < rounds; r++) {
            for (var i = 0; i < 4; i++) {
              a[i] = T5[t[i] >> 24 & 255] ^ T6[t[(i + 3) % 4] >> 16 & 255] ^ T7[t[(i + 2) % 4] >> 8 & 255] ^ T8[t[(i + 1) % 4] & 255] ^ this._Kd[r][i];
            }
            t = a.slice();
          }
          var result = createArray(16), tt;
          for (var i = 0; i < 4; i++) {
            tt = this._Kd[rounds][i];
            result[4 * i] = (Si[t[i] >> 24 & 255] ^ tt >> 24) & 255;
            result[4 * i + 1] = (Si[t[(i + 3) % 4] >> 16 & 255] ^ tt >> 16) & 255;
            result[4 * i + 2] = (Si[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255;
            result[4 * i + 3] = (Si[t[(i + 1) % 4] & 255] ^ tt) & 255;
          }
          return result;
        };
        var ModeOfOperationECB = function(key) {
          if (!(this instanceof ModeOfOperationECB)) {
            throw Error("AES must be instanitated with `new`");
          }
          this.description = "Electronic Code Block";
          this.name = "ecb";
          this._aes = new AES(key);
        };
        ModeOfOperationECB.prototype.encrypt = function(plaintext) {
          plaintext = coerceArray(plaintext);
          if (plaintext.length % 16 !== 0) {
            throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
          }
          var ciphertext = createArray(plaintext.length);
          var block = createArray(16);
          for (var i = 0; i < plaintext.length; i += 16) {
            copyArray(plaintext, block, 0, i, i + 16);
            block = this._aes.encrypt(block);
            copyArray(block, ciphertext, i);
          }
          return ciphertext;
        };
        ModeOfOperationECB.prototype.decrypt = function(ciphertext) {
          ciphertext = coerceArray(ciphertext);
          if (ciphertext.length % 16 !== 0) {
            throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
          }
          var plaintext = createArray(ciphertext.length);
          var block = createArray(16);
          for (var i = 0; i < ciphertext.length; i += 16) {
            copyArray(ciphertext, block, 0, i, i + 16);
            block = this._aes.decrypt(block);
            copyArray(block, plaintext, i);
          }
          return plaintext;
        };
        var ModeOfOperationCBC = function(key, iv) {
          if (!(this instanceof ModeOfOperationCBC)) {
            throw Error("AES must be instanitated with `new`");
          }
          this.description = "Cipher Block Chaining";
          this.name = "cbc";
          if (!iv) {
            iv = createArray(16);
          } else if (iv.length != 16) {
            throw new Error("invalid initialation vector size (must be 16 bytes)");
          }
          this._lastCipherblock = coerceArray(iv, true);
          this._aes = new AES(key);
        };
        ModeOfOperationCBC.prototype.encrypt = function(plaintext) {
          plaintext = coerceArray(plaintext);
          if (plaintext.length % 16 !== 0) {
            throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
          }
          var ciphertext = createArray(plaintext.length);
          var block = createArray(16);
          for (var i = 0; i < plaintext.length; i += 16) {
            copyArray(plaintext, block, 0, i, i + 16);
            for (var j = 0; j < 16; j++) {
              block[j] ^= this._lastCipherblock[j];
            }
            this._lastCipherblock = this._aes.encrypt(block);
            copyArray(this._lastCipherblock, ciphertext, i);
          }
          return ciphertext;
        };
        ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {
          ciphertext = coerceArray(ciphertext);
          if (ciphertext.length % 16 !== 0) {
            throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
          }
          var plaintext = createArray(ciphertext.length);
          var block = createArray(16);
          for (var i = 0; i < ciphertext.length; i += 16) {
            copyArray(ciphertext, block, 0, i, i + 16);
            block = this._aes.decrypt(block);
            for (var j = 0; j < 16; j++) {
              plaintext[i + j] = block[j] ^ this._lastCipherblock[j];
            }
            copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);
          }
          return plaintext;
        };
        var ModeOfOperationCFB = function(key, iv, segmentSize) {
          if (!(this instanceof ModeOfOperationCFB)) {
            throw Error("AES must be instanitated with `new`");
          }
          this.description = "Cipher Feedback";
          this.name = "cfb";
          if (!iv) {
            iv = createArray(16);
          } else if (iv.length != 16) {
            throw new Error("invalid initialation vector size (must be 16 size)");
          }
          if (!segmentSize) {
            segmentSize = 1;
          }
          this.segmentSize = segmentSize;
          this._shiftRegister = coerceArray(iv, true);
          this._aes = new AES(key);
        };
        ModeOfOperationCFB.prototype.encrypt = function(plaintext) {
          if (plaintext.length % this.segmentSize != 0) {
            throw new Error("invalid plaintext size (must be segmentSize bytes)");
          }
          var encrypted = coerceArray(plaintext, true);
          var xorSegment;
          for (var i = 0; i < encrypted.length; i += this.segmentSize) {
            xorSegment = this._aes.encrypt(this._shiftRegister);
            for (var j = 0; j < this.segmentSize; j++) {
              encrypted[i + j] ^= xorSegment[j];
            }
            copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
            copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);
          }
          return encrypted;
        };
        ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {
          if (ciphertext.length % this.segmentSize != 0) {
            throw new Error("invalid ciphertext size (must be segmentSize bytes)");
          }
          var plaintext = coerceArray(ciphertext, true);
          var xorSegment;
          for (var i = 0; i < plaintext.length; i += this.segmentSize) {
            xorSegment = this._aes.encrypt(this._shiftRegister);
            for (var j = 0; j < this.segmentSize; j++) {
              plaintext[i + j] ^= xorSegment[j];
            }
            copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
            copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);
          }
          return plaintext;
        };
        var ModeOfOperationOFB = function(key, iv) {
          if (!(this instanceof ModeOfOperationOFB)) {
            throw Error("AES must be instanitated with `new`");
          }
          this.description = "Output Feedback";
          this.name = "ofb";
          if (!iv) {
            iv = createArray(16);
          } else if (iv.length != 16) {
            throw new Error("invalid initialation vector size (must be 16 bytes)");
          }
          this._lastPrecipher = coerceArray(iv, true);
          this._lastPrecipherIndex = 16;
          this._aes = new AES(key);
        };
        ModeOfOperationOFB.prototype.encrypt = function(plaintext) {
          var encrypted = coerceArray(plaintext, true);
          for (var i = 0; i < encrypted.length; i++) {
            if (this._lastPrecipherIndex === 16) {
              this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);
              this._lastPrecipherIndex = 0;
            }
            encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];
          }
          return encrypted;
        };
        ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;
        var Counter = function(initialValue) {
          if (!(this instanceof Counter)) {
            throw Error("Counter must be instanitated with `new`");
          }
          if (initialValue !== 0 && !initialValue) {
            initialValue = 1;
          }
          if (typeof initialValue === "number") {
            this._counter = createArray(16);
            this.setValue(initialValue);
          } else {
            this.setBytes(initialValue);
          }
        };
        Counter.prototype.setValue = function(value) {
          if (typeof value !== "number" || parseInt(value) != value) {
            throw new Error("invalid counter value (must be an integer)");
          }
          for (var index = 15; index >= 0; --index) {
            this._counter[index] = value % 256;
            value = value >> 8;
          }
        };
        Counter.prototype.setBytes = function(bytes) {
          bytes = coerceArray(bytes, true);
          if (bytes.length != 16) {
            throw new Error("invalid counter bytes size (must be 16 bytes)");
          }
          this._counter = bytes;
        };
        Counter.prototype.increment = function() {
          for (var i = 15; i >= 0; i--) {
            if (this._counter[i] === 255) {
              this._counter[i] = 0;
            } else {
              this._counter[i]++;
              break;
            }
          }
        };
        var ModeOfOperationCTR = function(key, counter) {
          if (!(this instanceof ModeOfOperationCTR)) {
            throw Error("AES must be instanitated with `new`");
          }
          this.description = "Counter";
          this.name = "ctr";
          if (!(counter instanceof Counter)) {
            counter = new Counter(counter);
          }
          this._counter = counter;
          this._remainingCounter = null;
          this._remainingCounterIndex = 16;
          this._aes = new AES(key);
        };
        ModeOfOperationCTR.prototype.encrypt = function(plaintext) {
          var encrypted = coerceArray(plaintext, true);
          for (var i = 0; i < encrypted.length; i++) {
            if (this._remainingCounterIndex === 16) {
              this._remainingCounter = this._aes.encrypt(this._counter._counter);
              this._remainingCounterIndex = 0;
              this._counter.increment();
            }
            encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];
          }
          return encrypted;
        };
        ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;
        function pkcs7pad(data) {
          data = coerceArray(data, true);
          var padder = 16 - data.length % 16;
          var result = createArray(data.length + padder);
          copyArray(data, result);
          for (var i = data.length; i < result.length; i++) {
            result[i] = padder;
          }
          return result;
        }
        function pkcs7strip(data) {
          data = coerceArray(data, true);
          if (data.length < 16) {
            throw new Error("PKCS#7 invalid length");
          }
          var padder = data[data.length - 1];
          if (padder > 16) {
            throw new Error("PKCS#7 padding byte out of range");
          }
          var length = data.length - padder;
          for (var i = 0; i < padder; i++) {
            if (data[length + i] !== padder) {
              throw new Error("PKCS#7 invalid padding byte");
            }
          }
          var result = createArray(length);
          copyArray(data, result, 0, 0, length);
          return result;
        }
        var aesjs = {
          AES,
          Counter,
          ModeOfOperation: {
            ecb: ModeOfOperationECB,
            cbc: ModeOfOperationCBC,
            cfb: ModeOfOperationCFB,
            ofb: ModeOfOperationOFB,
            ctr: ModeOfOperationCTR
          },
          utils: {
            hex: convertHex,
            utf8: convertUtf8
          },
          padding: {
            pkcs7: {
              pad: pkcs7pad,
              strip: pkcs7strip
            }
          },
          _arrayTest: {
            coerceArray,
            createArray,
            copyArray
          }
        };
        if (true) {
          module.exports = aesjs;
        } else {}
      })(this);
    },
    3853(__unused_webpack_module, exports) {
      "use strict";
      var __webpack_unused_export__;
      __webpack_unused_export__ = {
        value: true
      };
      function ucs2length(str) {
        const len = str.length;
        let length = 0;
        let pos = 0;
        let value;
        while (pos < len) {
          length++;
          value = str.charCodeAt(pos++);
          if (value >= 55296 && value <= 56319 && pos < len) {
            value = str.charCodeAt(pos);
            if ((value & 64512) === 56320) pos++;
          }
        }
        return length;
      }
      exports.A = ucs2length;
      ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
    },
    3905(module, __unused_webpack_exports, __webpack_require__) {
      var __webpack_dirname__ = "/";
      var process = __webpack_require__(5606);
      var Module = typeof self !== "undefined" && typeof self.Module !== "undefined" ? self.Module : {};
      var jsModule = null && Module;
      var moduleOverrides = {};
      var key;
      for (key in Module) {
        if (Module.hasOwnProperty(key)) {
          moduleOverrides[key] = Module[key];
        }
      }
      var arguments_ = [];
      var thisProgram = "./this.program";
      var quit_ = function(status, toThrow) {
        throw toThrow;
      };
      var ENVIRONMENT_IS_WEB = false;
      var ENVIRONMENT_IS_WORKER = false;
      var ENVIRONMENT_IS_NODE = false;
      var ENVIRONMENT_IS_SHELL = false;
      ENVIRONMENT_IS_WEB = typeof window === "object";
      ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
      ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string";
      ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
      var scriptDirectory = "";
      function locateFile(path) {
        if (Module["locateFile"]) {
          return Module["locateFile"](path, scriptDirectory);
        }
        return scriptDirectory + path;
      }
      var read_, readAsync, readBinary, setWindowTitle;
      var nodeFS;
      var nodePath;
      if (ENVIRONMENT_IS_NODE) {
        if (ENVIRONMENT_IS_WORKER) {
          scriptDirectory = __webpack_require__(4049).dirname(scriptDirectory) + "/";
        } else {
          scriptDirectory = __webpack_dirname__ + "/";
        }
        read_ = function shell_read(filename, binary) {
          if (!nodeFS) nodeFS = __webpack_require__(2789);
          if (!nodePath) nodePath = __webpack_require__(4049);
          filename = nodePath["normalize"](filename);
          return nodeFS["readFileSync"](filename, binary ? null : "utf8");
        };
        readBinary = function readBinary(filename) {
          var ret = read_(filename, true);
          if (!ret.buffer) {
            ret = new Uint8Array(ret);
          }
          assert(ret.buffer);
          return ret;
        };
        if (process["argv"].length > 1) {
          thisProgram = process["argv"][1].replace(/\\/g, "/");
        }
        arguments_ = process["argv"].slice(2);
        if (true) {
          module["exports"] = Module;
        }
        process["on"]("uncaughtException", (function(ex) {
          if (!(ex instanceof ExitStatus)) {
            throw ex;
          }
        }));
        process["on"]("unhandledRejection", abort);
        quit_ = function(status) {
          process["exit"](status);
        };
        Module["inspect"] = function() {
          return "[Emscripten Module object]";
        };
      } else if (ENVIRONMENT_IS_SHELL) {
        if (typeof read != "undefined") {
          read_ = function shell_read(f) {
            return read(f);
          };
        }
        readBinary = function readBinary(f) {
          var data;
          if (typeof readbuffer === "function") {
            return new Uint8Array(readbuffer(f));
          }
          data = read(f, "binary");
          assert(typeof data === "object");
          return data;
        };
        if (typeof scriptArgs != "undefined") {
          arguments_ = scriptArgs;
        } else if (typeof arguments != "undefined") {
          arguments_ = arguments;
        }
        if (typeof quit === "function") {
          quit_ = function(status) {
            quit(status);
          };
        }
        if (typeof print !== "undefined") {
          if (typeof console === "undefined") console = {};
          console.log = print;
          console.warn = console.error = typeof printErr !== "undefined" ? printErr : print;
        }
      } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
        if (ENVIRONMENT_IS_WORKER) {
          scriptDirectory = self.location.href;
        } else if (typeof document !== "undefined" && document.currentScript) {
          scriptDirectory = document.currentScript.src;
        }
        if (scriptDirectory.indexOf("blob:") !== 0) {
          scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1);
        } else {
          scriptDirectory = "";
        }
        {
          read_ = function(url) {
            var xhr = new XMLHttpRequest;
            xhr.open("GET", url, false);
            xhr.send(null);
            return xhr.responseText;
          };
          if (ENVIRONMENT_IS_WORKER) {
            readBinary = function(url) {
              var xhr = new XMLHttpRequest;
              xhr.open("GET", url, false);
              xhr.responseType = "arraybuffer";
              xhr.send(null);
              return new Uint8Array(xhr.response);
            };
          }
          readAsync = function(url, onload, onerror) {
            var xhr = new XMLHttpRequest;
            xhr.open("GET", url, true);
            xhr.responseType = "arraybuffer";
            xhr.onload = function() {
              if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
                onload(xhr.response);
                return;
              }
              onerror();
            };
            xhr.onerror = onerror;
            xhr.send(null);
          };
        }
        setWindowTitle = function(title) {
          document.title = title;
        };
      } else {}
      var out = Module["print"] || console.log.bind(console);
      var err = Module["printErr"] || console.warn.bind(console);
      for (key in moduleOverrides) {
        if (moduleOverrides.hasOwnProperty(key)) {
          Module[key] = moduleOverrides[key];
        }
      }
      moduleOverrides = null;
      if (Module["arguments"]) arguments_ = Module["arguments"];
      if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
      if (Module["quit"]) quit_ = Module["quit"];
      var wasmBinary;
      if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
      var noExitRuntime = Module["noExitRuntime"] || true;
      if (typeof WebAssembly !== "object") {
        abort("no native wasm support detected");
      }
      var wasmMemory;
      var ABORT = false;
      var EXITSTATUS;
      function assert(condition, text) {
        if (!condition) {
          abort("Assertion failed: " + text);
        }
      }
      var ALLOC_NORMAL = 0;
      var ALLOC_STACK = 1;
      function allocate(slab, allocator) {
        var ret;
        if (allocator == ALLOC_STACK) {
          ret = stackAlloc(slab.length);
        } else {
          ret = _malloc(slab.length);
        }
        if (slab.subarray || slab.slice) {
          HEAPU8.set(slab, ret);
        } else {
          HEAPU8.set(new Uint8Array(slab), ret);
        }
        return ret;
      }
      var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
      function UTF8ArrayToString(heap, idx, maxBytesToRead) {
        var endIdx = idx + maxBytesToRead;
        var endPtr = idx;
        while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr;
        if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {
          return UTF8Decoder.decode(heap.subarray(idx, endPtr));
        } else {
          var str = "";
          while (idx < endPtr) {
            var u0 = heap[idx++];
            if (!(u0 & 128)) {
              str += String.fromCharCode(u0);
              continue;
            }
            var u1 = heap[idx++] & 63;
            if ((u0 & 224) == 192) {
              str += String.fromCharCode((u0 & 31) << 6 | u1);
              continue;
            }
            var u2 = heap[idx++] & 63;
            if ((u0 & 240) == 224) {
              u0 = (u0 & 15) << 12 | u1 << 6 | u2;
            } else {
              u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63;
            }
            if (u0 < 65536) {
              str += String.fromCharCode(u0);
            } else {
              var ch = u0 - 65536;
              str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
            }
          }
        }
        return str;
      }
      function UTF8ToString(ptr, maxBytesToRead) {
        return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
      }
      function alignUp(x, multiple) {
        if (x % multiple > 0) {
          x += multiple - x % multiple;
        }
        return x;
      }
      var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
      function updateGlobalBufferAndViews(buf) {
        buffer = buf;
        Module["HEAP8"] = HEAP8 = new Int8Array(buf);
        Module["HEAP16"] = HEAP16 = new Int16Array(buf);
        Module["HEAP32"] = HEAP32 = new Int32Array(buf);
        Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
        Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);
        Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);
        Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
        Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
      }
      var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;
      var wasmTable;
      var __ATPRERUN__ = [];
      var __ATINIT__ = [];
      var __ATPOSTRUN__ = [];
      var runtimeInitialized = false;
      function preRun() {
        if (Module["preRun"]) {
          if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
          while (Module["preRun"].length) {
            addOnPreRun(Module["preRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPRERUN__);
      }
      function initRuntime() {
        runtimeInitialized = true;
        callRuntimeCallbacks(__ATINIT__);
      }
      function postRun() {
        if (Module["postRun"]) {
          if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ];
          while (Module["postRun"].length) {
            addOnPostRun(Module["postRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPOSTRUN__);
      }
      function addOnPreRun(cb) {
        __ATPRERUN__.unshift(cb);
      }
      function addOnInit(cb) {
        __ATINIT__.unshift(cb);
      }
      function addOnPostRun(cb) {
        __ATPOSTRUN__.unshift(cb);
      }
      var runDependencies = 0;
      var runDependencyWatcher = null;
      var dependenciesFulfilled = null;
      function addRunDependency(id) {
        runDependencies++;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
      }
      function removeRunDependency(id) {
        runDependencies--;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
        if (runDependencies == 0) {
          if (runDependencyWatcher !== null) {
            clearInterval(runDependencyWatcher);
            runDependencyWatcher = null;
          }
          if (dependenciesFulfilled) {
            var callback = dependenciesFulfilled;
            dependenciesFulfilled = null;
            callback();
          }
        }
      }
      Module["preloadedImages"] = {};
      Module["preloadedAudios"] = {};
      function abort(what) {
        if (Module["onAbort"]) {
          Module["onAbort"](what);
        }
        what += "";
        err(what);
        ABORT = true;
        EXITSTATUS = 1;
        what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
        var e = new WebAssembly.RuntimeError(what);
        throw e;
      }
      var dataURIPrefix = "data:application/octet-stream;base64,";
      function isDataURI(filename) {
        return filename.startsWith(dataURIPrefix);
      }
      function isFileURI(filename) {
        return filename.startsWith("file://");
      }
      var wasmBinaryFile = "argon2.wasm";
      if (!isDataURI(wasmBinaryFile)) {
        wasmBinaryFile = locateFile(wasmBinaryFile);
      }
      function getBinary(file) {
        try {
          if (file == wasmBinaryFile && wasmBinary) {
            return new Uint8Array(wasmBinary);
          }
          if (readBinary) {
            return readBinary(file);
          } else {
            throw "both async and sync fetching of the wasm failed";
          }
        } catch (err) {
          abort(err);
        }
      }
      function getBinaryPromise() {
        if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
          if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) {
            return fetch(wasmBinaryFile, {
              credentials: "same-origin"
            }).then((function(response) {
              if (!response["ok"]) {
                throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
              }
              return response["arrayBuffer"]();
            })).catch((function() {
              return getBinary(wasmBinaryFile);
            }));
          } else {
            if (readAsync) {
              return new Promise((function(resolve, reject) {
                readAsync(wasmBinaryFile, (function(response) {
                  resolve(new Uint8Array(response));
                }), reject);
              }));
            }
          }
        }
        return Promise.resolve().then((function() {
          return getBinary(wasmBinaryFile);
        }));
      }
      function createWasm() {
        var info = {
          a: asmLibraryArg
        };
        function receiveInstance(instance, module) {
          var exports = instance.exports;
          Module["asm"] = exports;
          wasmMemory = Module["asm"]["c"];
          updateGlobalBufferAndViews(wasmMemory.buffer);
          wasmTable = Module["asm"]["k"];
          addOnInit(Module["asm"]["d"]);
          removeRunDependency("wasm-instantiate");
        }
        addRunDependency("wasm-instantiate");
        function receiveInstantiationResult(result) {
          receiveInstance(result["instance"]);
        }
        function instantiateArrayBuffer(receiver) {
          return getBinaryPromise().then((function(binary) {
            var result = WebAssembly.instantiate(binary, info);
            return result;
          })).then(receiver, (function(reason) {
            err("failed to asynchronously prepare wasm: " + reason);
            abort(reason);
          }));
        }
        function instantiateAsync() {
          if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") {
            return fetch(wasmBinaryFile, {
              credentials: "same-origin"
            }).then((function(response) {
              var result = WebAssembly.instantiateStreaming(response, info);
              return result.then(receiveInstantiationResult, (function(reason) {
                err("wasm streaming compile failed: " + reason);
                err("falling back to ArrayBuffer instantiation");
                return instantiateArrayBuffer(receiveInstantiationResult);
              }));
            }));
          } else {
            return instantiateArrayBuffer(receiveInstantiationResult);
          }
        }
        if (Module["instantiateWasm"]) {
          try {
            var exports = Module["instantiateWasm"](info, receiveInstance);
            return exports;
          } catch (e) {
            err("Module.instantiateWasm callback failed with error: " + e);
            return false;
          }
        }
        instantiateAsync();
        return {};
      }
      function callRuntimeCallbacks(callbacks) {
        while (callbacks.length > 0) {
          var callback = callbacks.shift();
          if (typeof callback == "function") {
            callback(Module);
            continue;
          }
          var func = callback.func;
          if (typeof func === "number") {
            if (callback.arg === undefined) {
              wasmTable.get(func)();
            } else {
              wasmTable.get(func)(callback.arg);
            }
          } else {
            func(callback.arg === undefined ? null : callback.arg);
          }
        }
      }
      function _emscripten_memcpy_big(dest, src, num) {
        HEAPU8.copyWithin(dest, src, src + num);
      }
      function emscripten_realloc_buffer(size) {
        try {
          wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);
          updateGlobalBufferAndViews(wasmMemory.buffer);
          return 1;
        } catch (e) {}
      }
      function _emscripten_resize_heap(requestedSize) {
        var oldSize = HEAPU8.length;
        requestedSize = requestedSize >>> 0;
        var maxHeapSize = 2147418112;
        if (requestedSize > maxHeapSize) {
          return false;
        }
        for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
          var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
          overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
          var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
          var replacement = emscripten_realloc_buffer(newSize);
          if (replacement) {
            return true;
          }
        }
        return false;
      }
      var asmLibraryArg = {
        a: _emscripten_memcpy_big,
        b: _emscripten_resize_heap
      };
      var asm = createWasm();
      var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
        return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["d"]).apply(null, arguments);
      };
      var _argon2_hash = Module["_argon2_hash"] = function() {
        return (_argon2_hash = Module["_argon2_hash"] = Module["asm"]["e"]).apply(null, arguments);
      };
      var _malloc = Module["_malloc"] = function() {
        return (_malloc = Module["_malloc"] = Module["asm"]["f"]).apply(null, arguments);
      };
      var _free = Module["_free"] = function() {
        return (_free = Module["_free"] = Module["asm"]["g"]).apply(null, arguments);
      };
      var _argon2_verify = Module["_argon2_verify"] = function() {
        return (_argon2_verify = Module["_argon2_verify"] = Module["asm"]["h"]).apply(null, arguments);
      };
      var _argon2_error_message = Module["_argon2_error_message"] = function() {
        return (_argon2_error_message = Module["_argon2_error_message"] = Module["asm"]["i"]).apply(null, arguments);
      };
      var _argon2_encodedlen = Module["_argon2_encodedlen"] = function() {
        return (_argon2_encodedlen = Module["_argon2_encodedlen"] = Module["asm"]["j"]).apply(null, arguments);
      };
      var _argon2_hash_ext = Module["_argon2_hash_ext"] = function() {
        return (_argon2_hash_ext = Module["_argon2_hash_ext"] = Module["asm"]["l"]).apply(null, arguments);
      };
      var _argon2_verify_ext = Module["_argon2_verify_ext"] = function() {
        return (_argon2_verify_ext = Module["_argon2_verify_ext"] = Module["asm"]["m"]).apply(null, arguments);
      };
      var stackAlloc = Module["stackAlloc"] = function() {
        return (stackAlloc = Module["stackAlloc"] = Module["asm"]["n"]).apply(null, arguments);
      };
      Module["allocate"] = allocate;
      Module["UTF8ToString"] = UTF8ToString;
      Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
      var calledRun;
      function ExitStatus(status) {
        this.name = "ExitStatus";
        this.message = "Program terminated with exit(" + status + ")";
        this.status = status;
      }
      dependenciesFulfilled = function runCaller() {
        if (!calledRun) run();
        if (!calledRun) dependenciesFulfilled = runCaller;
      };
      function run(args) {
        args = args || arguments_;
        if (runDependencies > 0) {
          return;
        }
        preRun();
        if (runDependencies > 0) {
          return;
        }
        function doRun() {
          if (calledRun) return;
          calledRun = true;
          Module["calledRun"] = true;
          if (ABORT) return;
          initRuntime();
          if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
          postRun();
        }
        if (Module["setStatus"]) {
          Module["setStatus"]("Running...");
          setTimeout((function() {
            setTimeout((function() {
              Module["setStatus"]("");
            }), 1);
            doRun();
          }), 1);
        } else {
          doRun();
        }
      }
      Module["run"] = run;
      if (Module["preInit"]) {
        if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ];
        while (Module["preInit"].length > 0) {
          Module["preInit"].pop()();
        }
      }
      run();
      if (true) module.exports = Module;
      Module.unloadRuntime = function() {
        if (typeof self !== "undefined") {
          delete self.Module;
        }
        Module = jsModule = wasmMemory = wasmTable = asm = buffer = HEAP8 = HEAPU8 = HEAP16 = HEAPU16 = HEAP32 = HEAPU32 = HEAPF32 = HEAPF64 = undefined;
        if (true) {
          delete module.exports;
        }
      };
    },
    6452(module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
      (function(root, factory) {
        if (true) {
          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, 
          __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
        } else {}
      })(typeof self !== "undefined" ? self : this, (function() {
        const global = typeof self !== "undefined" ? self : this;
        const ArgonType = {
          Argon2d: 0,
          Argon2i: 1,
          Argon2id: 2
        };
        function loadModule(mem) {
          if (loadModule._promise) {
            return loadModule._promise;
          }
          if (loadModule._module) {
            return Promise.resolve(loadModule._module);
          }
          let promise;
          if (global.process && global.process.versions && global.process.versions.node) {
            promise = loadWasmModule().then((Module => new Promise((resolve => {
              Module.postRun = () => resolve(Module);
            }))));
          } else {
            promise = loadWasmBinary().then((wasmBinary => {
              const wasmMemory = mem ? createWasmMemory(mem) : undefined;
              return initWasm(wasmBinary, wasmMemory);
            }));
          }
          loadModule._promise = promise;
          return promise.then((Module => {
            loadModule._module = Module;
            delete loadModule._promise;
            return Module;
          }));
        }
        function initWasm(wasmBinary, wasmMemory) {
          return new Promise((resolve => {
            global.Module = {
              wasmBinary,
              wasmMemory,
              postRun() {
                resolve(Module);
              }
            };
            return loadWasmModule();
          }));
        }
        function loadWasmModule() {
          if (global.loadArgon2WasmModule) {
            return global.loadArgon2WasmModule();
          }
          if (true) {
            return Promise.resolve(__webpack_require__(3905));
          }
        }
        function loadWasmBinary() {
          if (global.loadArgon2WasmBinary) {
            return global.loadArgon2WasmBinary();
          }
          if (true) {
            return Promise.resolve(__webpack_require__(6104)).then((wasmModule => decodeWasmBinary(wasmModule)));
          }
        }
        function decodeWasmBinary(base64) {
          const text = atob(base64);
          const binary = new Uint8Array(new ArrayBuffer(text.length));
          for (let i = 0; i < text.length; i++) {
            binary[i] = text.charCodeAt(i);
          }
          return binary;
        }
        function createWasmMemory(mem) {
          const KB = 1024;
          const MB = 1024 * KB;
          const GB = 1024 * MB;
          const WASM_PAGE_SIZE = 64 * KB;
          const totalMemory = (2 * GB - 64 * KB) / WASM_PAGE_SIZE;
          const initialMemory = Math.min(Math.max(Math.ceil(mem * KB / WASM_PAGE_SIZE), 256) + 256, totalMemory);
          return new WebAssembly.Memory({
            initial: initialMemory,
            maximum: totalMemory
          });
        }
        function allocateArray(Module, arr) {
          return Module.allocate(arr, "i8", Module.ALLOC_NORMAL);
        }
        function allocateArrayStr(Module, arr) {
          const nullTerminatedArray = new Uint8Array([ ...arr, 0 ]);
          return allocateArray(Module, nullTerminatedArray);
        }
        function encodeUtf8(str) {
          if (typeof str !== "string") {
            return str;
          }
          if (typeof TextEncoder === "function") {
            return (new TextEncoder).encode(str);
          } else if (typeof Buffer === "function") {
            return Buffer.from(str);
          } else {
            throw new Error("Don't know how to encode UTF8");
          }
        }
        function argon2Hash(params) {
          const mCost = params.mem || 1024;
          return loadModule(mCost).then((Module => {
            const tCost = params.time || 1;
            const parallelism = params.parallelism || 1;
            const pwdEncoded = encodeUtf8(params.pass);
            const pwd = allocateArrayStr(Module, pwdEncoded);
            const pwdlen = pwdEncoded.length;
            const saltEncoded = encodeUtf8(params.salt);
            const salt = allocateArrayStr(Module, saltEncoded);
            const saltlen = saltEncoded.length;
            const argon2Type = params.type || ArgonType.Argon2d;
            const hash = Module.allocate(new Array(params.hashLen || 24), "i8", Module.ALLOC_NORMAL);
            const secret = params.secret ? allocateArray(Module, params.secret) : 0;
            const secretlen = params.secret ? params.secret.byteLength : 0;
            const ad = params.ad ? allocateArray(Module, params.ad) : 0;
            const adlen = params.ad ? params.ad.byteLength : 0;
            const hashlen = params.hashLen || 24;
            const encodedlen = Module._argon2_encodedlen(tCost, mCost, parallelism, saltlen, hashlen, argon2Type);
            const encoded = Module.allocate(new Array(encodedlen + 1), "i8", Module.ALLOC_NORMAL);
            const version = 19;
            let err;
            let res;
            try {
              res = Module._argon2_hash_ext(tCost, mCost, parallelism, pwd, pwdlen, salt, saltlen, hash, hashlen, encoded, encodedlen, argon2Type, secret, secretlen, ad, adlen, version);
            } catch (e) {
              err = e;
            }
            let result;
            if (res === 0 && !err) {
              let hashStr = "";
              const hashArr = new Uint8Array(hashlen);
              for (let i = 0; i < hashlen; i++) {
                const byte = Module.HEAP8[hash + i];
                hashArr[i] = byte;
                hashStr += ("0" + (255 & byte).toString(16)).slice(-2);
              }
              const encodedStr = Module.UTF8ToString(encoded);
              result = {
                hash: hashArr,
                hashHex: hashStr,
                encoded: encodedStr
              };
            } else {
              try {
                if (!err) {
                  err = Module.UTF8ToString(Module._argon2_error_message(res));
                }
              } catch (e) {}
              result = {
                message: err,
                code: res
              };
            }
            try {
              Module._free(pwd);
              Module._free(salt);
              Module._free(hash);
              Module._free(encoded);
              if (ad) {
                Module._free(ad);
              }
              if (secret) {
                Module._free(secret);
              }
            } catch (e) {}
            if (err) {
              throw result;
            } else {
              return result;
            }
          }));
        }
        function argon2Verify(params) {
          return loadModule().then((Module => {
            const pwdEncoded = encodeUtf8(params.pass);
            const pwd = allocateArrayStr(Module, pwdEncoded);
            const pwdlen = pwdEncoded.length;
            const secret = params.secret ? allocateArray(Module, params.secret) : 0;
            const secretlen = params.secret ? params.secret.byteLength : 0;
            const ad = params.ad ? allocateArray(Module, params.ad) : 0;
            const adlen = params.ad ? params.ad.byteLength : 0;
            const encEncoded = encodeUtf8(params.encoded);
            const enc = allocateArrayStr(Module, encEncoded);
            let argon2Type = params.type;
            if (argon2Type === undefined) {
              let typeStr = params.encoded.split("$")[1];
              if (typeStr) {
                typeStr = typeStr.replace("a", "A");
                argon2Type = ArgonType[typeStr] || ArgonType.Argon2d;
              }
            }
            let err;
            let res;
            try {
              res = Module._argon2_verify_ext(enc, pwd, pwdlen, secret, secretlen, ad, adlen, argon2Type);
            } catch (e) {
              err = e;
            }
            let result;
            if (res || err) {
              try {
                if (!err) {
                  err = Module.UTF8ToString(Module._argon2_error_message(res));
                }
              } catch (e) {}
              result = {
                message: err,
                code: res
              };
            }
            try {
              Module._free(pwd);
              Module._free(enc);
            } catch (e) {}
            if (err) {
              throw result;
            } else {
              return result;
            }
          }));
        }
        function unloadRuntime() {
          if (loadModule._module) {
            loadModule._module.unloadRuntime();
            delete loadModule._promise;
            delete loadModule._module;
          }
        }
        return {
          ArgonType,
          hash: argon2Hash,
          verify: argon2Verify,
          unloadRuntime
        };
      }));
    },
    7568(__unused_webpack_module, exports, __webpack_require__) {
      var asn1 = exports;
      asn1.bignum = __webpack_require__(2344);
      asn1.define = __webpack_require__(7363).define;
      asn1.base = __webpack_require__(9673);
      asn1.constants = __webpack_require__(2153);
      asn1.decoders = __webpack_require__(2853);
      asn1.encoders = __webpack_require__(4669);
    },
    7363(__unused_webpack_module, exports, __webpack_require__) {
      var asn1 = __webpack_require__(7568);
      var inherits = __webpack_require__(6698);
      var api = exports;
      api.define = function define(name, body) {
        return new Entity(name, body);
      };
      function Entity(name, body) {
        this.name = name;
        this.body = body;
        this.decoders = {};
        this.encoders = {};
      }
      Entity.prototype._createNamed = function createNamed(base) {
        var named;
        try {
          named = Object(function webpackMissingModule() {
            var e = new Error("Cannot find module 'vm'");
            e.code = "MODULE_NOT_FOUND";
            throw e;
          }())("(function " + this.name + "(entity) {\n" + "  this._initNamed(entity);\n" + "})");
        } catch (e) {
          named = function(entity) {
            this._initNamed(entity);
          };
        }
        inherits(named, base);
        named.prototype._initNamed = function initnamed(entity) {
          base.call(this, entity);
        };
        return new named(this);
      };
      Entity.prototype._getDecoder = function _getDecoder(enc) {
        enc = enc || "der";
        if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(asn1.decoders[enc]);
        return this.decoders[enc];
      };
      Entity.prototype.decode = function decode(data, enc, options) {
        return this._getDecoder(enc).decode(data, options);
      };
      Entity.prototype._getEncoder = function _getEncoder(enc) {
        enc = enc || "der";
        if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(asn1.encoders[enc]);
        return this.encoders[enc];
      };
      Entity.prototype.encode = function encode(data, enc, reporter) {
        return this._getEncoder(enc).encode(data, reporter);
      };
    },
    7227(__unused_webpack_module, exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      var Reporter = __webpack_require__(9673).Reporter;
      var Buffer = __webpack_require__(8287).Buffer;
      function DecoderBuffer(base, options) {
        Reporter.call(this, options);
        if (!Buffer.isBuffer(base)) {
          this.error("Input not Buffer");
          return;
        }
        this.base = base;
        this.offset = 0;
        this.length = base.length;
      }
      inherits(DecoderBuffer, Reporter);
      exports.t = DecoderBuffer;
      DecoderBuffer.prototype.save = function save() {
        return {
          offset: this.offset,
          reporter: Reporter.prototype.save.call(this)
        };
      };
      DecoderBuffer.prototype.restore = function restore(save) {
        var res = new DecoderBuffer(this.base);
        res.offset = save.offset;
        res.length = this.offset;
        this.offset = save.offset;
        Reporter.prototype.restore.call(this, save.reporter);
        return res;
      };
      DecoderBuffer.prototype.isEmpty = function isEmpty() {
        return this.offset === this.length;
      };
      DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {
        if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true); else return this.error(fail || "DecoderBuffer overrun");
      };
      DecoderBuffer.prototype.skip = function skip(bytes, fail) {
        if (!(this.offset + bytes <= this.length)) return this.error(fail || "DecoderBuffer overrun");
        var res = new DecoderBuffer(this.base);
        res._reporterState = this._reporterState;
        res.offset = this.offset;
        res.length = this.offset + bytes;
        this.offset += bytes;
        return res;
      };
      DecoderBuffer.prototype.raw = function raw(save) {
        return this.base.slice(save ? save.offset : this.offset, this.length);
      };
      function EncoderBuffer(value, reporter) {
        if (Array.isArray(value)) {
          this.length = 0;
          this.value = value.map((function(item) {
            if (!(item instanceof EncoderBuffer)) item = new EncoderBuffer(item, reporter);
            this.length += item.length;
            return item;
          }), this);
        } else if (typeof value === "number") {
          if (!(0 <= value && value <= 255)) return reporter.error("non-byte EncoderBuffer value");
          this.value = value;
          this.length = 1;
        } else if (typeof value === "string") {
          this.value = value;
          this.length = Buffer.byteLength(value);
        } else if (Buffer.isBuffer(value)) {
          this.value = value;
          this.length = value.length;
        } else {
          return reporter.error("Unsupported type: " + typeof value);
        }
      }
      exports.d = EncoderBuffer;
      EncoderBuffer.prototype.join = function join(out, offset) {
        if (!out) out = new Buffer(this.length);
        if (!offset) offset = 0;
        if (this.length === 0) return out;
        if (Array.isArray(this.value)) {
          this.value.forEach((function(item) {
            item.join(out, offset);
            offset += item.length;
          }));
        } else {
          if (typeof this.value === "number") out[offset] = this.value; else if (typeof this.value === "string") out.write(this.value, offset); else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);
          offset += this.length;
        }
        return out;
      };
    },
    9673(__unused_webpack_module, exports, __webpack_require__) {
      var base = exports;
      base.Reporter = __webpack_require__(9220).a;
      base.DecoderBuffer = __webpack_require__(7227).t;
      base.EncoderBuffer = __webpack_require__(7227).d;
      base.Node = __webpack_require__(993);
    },
    993(module, __unused_webpack_exports, __webpack_require__) {
      var Reporter = __webpack_require__(9673).Reporter;
      var EncoderBuffer = __webpack_require__(9673).EncoderBuffer;
      var DecoderBuffer = __webpack_require__(9673).DecoderBuffer;
      var assert = __webpack_require__(3349);
      var tags = [ "seq", "seqof", "set", "setof", "objid", "bool", "gentime", "utctime", "null_", "enum", "int", "objDesc", "bitstr", "bmpstr", "charstr", "genstr", "graphstr", "ia5str", "iso646str", "numstr", "octstr", "printstr", "t61str", "unistr", "utf8str", "videostr" ];
      var methods = [ "key", "obj", "use", "optional", "explicit", "implicit", "def", "choice", "any", "contains" ].concat(tags);
      var overrided = [ "_peekTag", "_decodeTag", "_use", "_decodeStr", "_decodeObjid", "_decodeTime", "_decodeNull", "_decodeInt", "_decodeBool", "_decodeList", "_encodeComposite", "_encodeStr", "_encodeObjid", "_encodeTime", "_encodeNull", "_encodeInt", "_encodeBool" ];
      function Node(enc, parent) {
        var state = {};
        this._baseState = state;
        state.enc = enc;
        state.parent = parent || null;
        state.children = null;
        state.tag = null;
        state.args = null;
        state.reverseArgs = null;
        state.choice = null;
        state.optional = false;
        state.any = false;
        state.obj = false;
        state.use = null;
        state.useDecoder = null;
        state.key = null;
        state["default"] = null;
        state.explicit = null;
        state.implicit = null;
        state.contains = null;
        if (!state.parent) {
          state.children = [];
          this._wrap();
        }
      }
      module.exports = Node;
      var stateProps = [ "enc", "parent", "children", "tag", "args", "reverseArgs", "choice", "optional", "any", "obj", "use", "alteredUse", "key", "default", "explicit", "implicit", "contains" ];
      Node.prototype.clone = function clone() {
        var state = this._baseState;
        var cstate = {};
        stateProps.forEach((function(prop) {
          cstate[prop] = state[prop];
        }));
        var res = new this.constructor(cstate.parent);
        res._baseState = cstate;
        return res;
      };
      Node.prototype._wrap = function wrap() {
        var state = this._baseState;
        methods.forEach((function(method) {
          this[method] = function _wrappedMethod() {
            var clone = new this.constructor(this);
            state.children.push(clone);
            return clone[method].apply(clone, arguments);
          };
        }), this);
      };
      Node.prototype._init = function init(body) {
        var state = this._baseState;
        assert(state.parent === null);
        body.call(this);
        state.children = state.children.filter((function(child) {
          return child._baseState.parent === this;
        }), this);
        assert.equal(state.children.length, 1, "Root node can have only one child");
      };
      Node.prototype._useArgs = function useArgs(args) {
        var state = this._baseState;
        var children = args.filter((function(arg) {
          return arg instanceof this.constructor;
        }), this);
        args = args.filter((function(arg) {
          return !(arg instanceof this.constructor);
        }), this);
        if (children.length !== 0) {
          assert(state.children === null);
          state.children = children;
          children.forEach((function(child) {
            child._baseState.parent = this;
          }), this);
        }
        if (args.length !== 0) {
          assert(state.args === null);
          state.args = args;
          state.reverseArgs = args.map((function(arg) {
            if (typeof arg !== "object" || arg.constructor !== Object) return arg;
            var res = {};
            Object.keys(arg).forEach((function(key) {
              if (key == (key | 0)) key |= 0;
              var value = arg[key];
              res[value] = key;
            }));
            return res;
          }));
        }
      };
      overrided.forEach((function(method) {
        Node.prototype[method] = function _overrided() {
          var state = this._baseState;
          throw new Error(method + " not implemented for encoding: " + state.enc);
        };
      }));
      tags.forEach((function(tag) {
        Node.prototype[tag] = function _tagMethod() {
          var state = this._baseState;
          var args = Array.prototype.slice.call(arguments);
          assert(state.tag === null);
          state.tag = tag;
          this._useArgs(args);
          return this;
        };
      }));
      Node.prototype.use = function use(item) {
        assert(item);
        var state = this._baseState;
        assert(state.use === null);
        state.use = item;
        return this;
      };
      Node.prototype.optional = function optional() {
        var state = this._baseState;
        state.optional = true;
        return this;
      };
      Node.prototype.def = function def(val) {
        var state = this._baseState;
        assert(state["default"] === null);
        state["default"] = val;
        state.optional = true;
        return this;
      };
      Node.prototype.explicit = function explicit(num) {
        var state = this._baseState;
        assert(state.explicit === null && state.implicit === null);
        state.explicit = num;
        return this;
      };
      Node.prototype.implicit = function implicit(num) {
        var state = this._baseState;
        assert(state.explicit === null && state.implicit === null);
        state.implicit = num;
        return this;
      };
      Node.prototype.obj = function obj() {
        var state = this._baseState;
        var args = Array.prototype.slice.call(arguments);
        state.obj = true;
        if (args.length !== 0) this._useArgs(args);
        return this;
      };
      Node.prototype.key = function key(newKey) {
        var state = this._baseState;
        assert(state.key === null);
        state.key = newKey;
        return this;
      };
      Node.prototype.any = function any() {
        var state = this._baseState;
        state.any = true;
        return this;
      };
      Node.prototype.choice = function choice(obj) {
        var state = this._baseState;
        assert(state.choice === null);
        state.choice = obj;
        this._useArgs(Object.keys(obj).map((function(key) {
          return obj[key];
        })));
        return this;
      };
      Node.prototype.contains = function contains(item) {
        var state = this._baseState;
        assert(state.use === null);
        state.contains = item;
        return this;
      };
      Node.prototype._decode = function decode(input, options) {
        var state = this._baseState;
        if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));
        var result = state["default"];
        var present = true;
        var prevKey = null;
        if (state.key !== null) prevKey = input.enterKey(state.key);
        if (state.optional) {
          var tag = null;
          if (state.explicit !== null) tag = state.explicit; else if (state.implicit !== null) tag = state.implicit; else if (state.tag !== null) tag = state.tag;
          if (tag === null && !state.any) {
            var save = input.save();
            try {
              if (state.choice === null) this._decodeGeneric(state.tag, input, options); else this._decodeChoice(input, options);
              present = true;
            } catch (e) {
              present = false;
            }
            input.restore(save);
          } else {
            present = this._peekTag(input, tag, state.any);
            if (input.isError(present)) return present;
          }
        }
        var prevObj;
        if (state.obj && present) prevObj = input.enterObject();
        if (present) {
          if (state.explicit !== null) {
            var explicit = this._decodeTag(input, state.explicit);
            if (input.isError(explicit)) return explicit;
            input = explicit;
          }
          var start = input.offset;
          if (state.use === null && state.choice === null) {
            if (state.any) var save = input.save();
            var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);
            if (input.isError(body)) return body;
            if (state.any) result = input.raw(save); else input = body;
          }
          if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, "tagged");
          if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, "content");
          if (state.any) result = result; else if (state.choice === null) result = this._decodeGeneric(state.tag, input, options); else result = this._decodeChoice(input, options);
          if (input.isError(result)) return result;
          if (!state.any && state.choice === null && state.children !== null) {
            state.children.forEach((function decodeChildren(child) {
              child._decode(input, options);
            }));
          }
          if (state.contains && (state.tag === "octstr" || state.tag === "bitstr")) {
            var data = new DecoderBuffer(result);
            result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);
          }
        }
        if (state.obj && present) result = input.leaveObject(prevObj);
        if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result); else if (prevKey !== null) input.exitKey(prevKey);
        return result;
      };
      Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
        var state = this._baseState;
        if (tag === "seq" || tag === "set") return null;
        if (tag === "seqof" || tag === "setof") return this._decodeList(input, tag, state.args[0], options); else if (/str$/.test(tag)) return this._decodeStr(input, tag, options); else if (tag === "objid" && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options); else if (tag === "objid") return this._decodeObjid(input, null, null, options); else if (tag === "gentime" || tag === "utctime") return this._decodeTime(input, tag, options); else if (tag === "null_") return this._decodeNull(input, options); else if (tag === "bool") return this._decodeBool(input, options); else if (tag === "objDesc") return this._decodeStr(input, tag, options); else if (tag === "int" || tag === "enum") return this._decodeInt(input, state.args && state.args[0], options);
        if (state.use !== null) {
          return this._getUse(state.use, input._reporterState.obj)._decode(input, options);
        } else {
          return input.error("unknown tag: " + tag);
        }
      };
      Node.prototype._getUse = function _getUse(entity, obj) {
        var state = this._baseState;
        state.useDecoder = this._use(entity, obj);
        assert(state.useDecoder._baseState.parent === null);
        state.useDecoder = state.useDecoder._baseState.children[0];
        if (state.implicit !== state.useDecoder._baseState.implicit) {
          state.useDecoder = state.useDecoder.clone();
          state.useDecoder._baseState.implicit = state.implicit;
        }
        return state.useDecoder;
      };
      Node.prototype._decodeChoice = function decodeChoice(input, options) {
        var state = this._baseState;
        var result = null;
        var match = false;
        Object.keys(state.choice).some((function(key) {
          var save = input.save();
          var node = state.choice[key];
          try {
            var value = node._decode(input, options);
            if (input.isError(value)) return false;
            result = {
              type: key,
              value
            };
            match = true;
          } catch (e) {
            input.restore(save);
            return false;
          }
          return true;
        }), this);
        if (!match) return input.error("Choice not matched");
        return result;
      };
      Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {
        return new EncoderBuffer(data, this.reporter);
      };
      Node.prototype._encode = function encode(data, reporter, parent) {
        var state = this._baseState;
        if (state["default"] !== null && state["default"] === data) return;
        var result = this._encodeValue(data, reporter, parent);
        if (result === undefined) return;
        if (this._skipDefault(result, reporter, parent)) return;
        return result;
      };
      Node.prototype._encodeValue = function encode(data, reporter, parent) {
        var state = this._baseState;
        if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter);
        var result = null;
        this.reporter = reporter;
        if (state.optional && data === undefined) {
          if (state["default"] !== null) data = state["default"]; else return;
        }
        var content = null;
        var primitive = false;
        if (state.any) {
          result = this._createEncoderBuffer(data);
        } else if (state.choice) {
          result = this._encodeChoice(data, reporter);
        } else if (state.contains) {
          content = this._getUse(state.contains, parent)._encode(data, reporter);
          primitive = true;
        } else if (state.children) {
          content = state.children.map((function(child) {
            if (child._baseState.tag === "null_") return child._encode(null, reporter, data);
            if (child._baseState.key === null) return reporter.error("Child should have a key");
            var prevKey = reporter.enterKey(child._baseState.key);
            if (typeof data !== "object") return reporter.error("Child expected, but input is not object");
            var res = child._encode(data[child._baseState.key], reporter, data);
            reporter.leaveKey(prevKey);
            return res;
          }), this).filter((function(child) {
            return child;
          }));
          content = this._createEncoderBuffer(content);
        } else {
          if (state.tag === "seqof" || state.tag === "setof") {
            if (!(state.args && state.args.length === 1)) return reporter.error("Too many args for : " + state.tag);
            if (!Array.isArray(data)) return reporter.error("seqof/setof, but data is not Array");
            var child = this.clone();
            child._baseState.implicit = null;
            content = this._createEncoderBuffer(data.map((function(item) {
              var state = this._baseState;
              return this._getUse(state.args[0], data)._encode(item, reporter);
            }), child));
          } else if (state.use !== null) {
            result = this._getUse(state.use, parent)._encode(data, reporter);
          } else {
            content = this._encodePrimitive(state.tag, data);
            primitive = true;
          }
        }
        var result;
        if (!state.any && state.choice === null) {
          var tag = state.implicit !== null ? state.implicit : state.tag;
          var cls = state.implicit === null ? "universal" : "context";
          if (tag === null) {
            if (state.use === null) reporter.error("Tag could be omitted only for .use()");
          } else {
            if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);
          }
        }
        if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, "context", result);
        return result;
      };
      Node.prototype._encodeChoice = function encodeChoice(data, reporter) {
        var state = this._baseState;
        var node = state.choice[data.type];
        if (!node) {
          assert(false, data.type + " not found in " + JSON.stringify(Object.keys(state.choice)));
        }
        return node._encode(data.value, reporter);
      };
      Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {
        var state = this._baseState;
        if (/str$/.test(tag)) return this._encodeStr(data, tag); else if (tag === "objid" && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); else if (tag === "objid") return this._encodeObjid(data, null, null); else if (tag === "gentime" || tag === "utctime") return this._encodeTime(data, tag); else if (tag === "null_") return this._encodeNull(); else if (tag === "int" || tag === "enum") return this._encodeInt(data, state.args && state.reverseArgs[0]); else if (tag === "bool") return this._encodeBool(data); else if (tag === "objDesc") return this._encodeStr(data, tag); else throw new Error("Unsupported tag: " + tag);
      };
      Node.prototype._isNumstr = function isNumstr(str) {
        return /^[0-9 ]*$/.test(str);
      };
      Node.prototype._isPrintstr = function isPrintstr(str) {
        return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str);
      };
    },
    9220(__unused_webpack_module, exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      function Reporter(options) {
        this._reporterState = {
          obj: null,
          path: [],
          options: options || {},
          errors: []
        };
      }
      exports.a = Reporter;
      Reporter.prototype.isError = function isError(obj) {
        return obj instanceof ReporterError;
      };
      Reporter.prototype.save = function save() {
        var state = this._reporterState;
        return {
          obj: state.obj,
          pathLen: state.path.length
        };
      };
      Reporter.prototype.restore = function restore(data) {
        var state = this._reporterState;
        state.obj = data.obj;
        state.path = state.path.slice(0, data.pathLen);
      };
      Reporter.prototype.enterKey = function enterKey(key) {
        return this._reporterState.path.push(key);
      };
      Reporter.prototype.exitKey = function exitKey(index) {
        var state = this._reporterState;
        state.path = state.path.slice(0, index - 1);
      };
      Reporter.prototype.leaveKey = function leaveKey(index, key, value) {
        var state = this._reporterState;
        this.exitKey(index);
        if (state.obj !== null) state.obj[key] = value;
      };
      Reporter.prototype.path = function path() {
        return this._reporterState.path.join("/");
      };
      Reporter.prototype.enterObject = function enterObject() {
        var state = this._reporterState;
        var prev = state.obj;
        state.obj = {};
        return prev;
      };
      Reporter.prototype.leaveObject = function leaveObject(prev) {
        var state = this._reporterState;
        var now = state.obj;
        state.obj = prev;
        return now;
      };
      Reporter.prototype.error = function error(msg) {
        var err;
        var state = this._reporterState;
        var inherited = msg instanceof ReporterError;
        if (inherited) {
          err = msg;
        } else {
          err = new ReporterError(state.path.map((function(elem) {
            return "[" + JSON.stringify(elem) + "]";
          })).join(""), msg.message || msg, msg.stack);
        }
        if (!state.options.partial) throw err;
        if (!inherited) state.errors.push(err);
        return err;
      };
      Reporter.prototype.wrapResult = function wrapResult(result) {
        var state = this._reporterState;
        if (!state.options.partial) return result;
        return {
          result: this.isError(result) ? null : result,
          errors: state.errors
        };
      };
      function ReporterError(path, msg) {
        this.path = path;
        this.rethrow(msg);
      }
      inherits(ReporterError, Error);
      ReporterError.prototype.rethrow = function rethrow(msg) {
        this.message = msg + " at: " + (this.path || "(shallow)");
        if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);
        if (!this.stack) {
          try {
            throw new Error(this.message);
          } catch (e) {
            this.stack = e.stack;
          }
        }
        return this;
      };
    },
    4598(__unused_webpack_module, exports, __webpack_require__) {
      var constants = __webpack_require__(2153);
      exports.tagClass = {
        0: "universal",
        1: "application",
        2: "context",
        3: "private"
      };
      exports.tagClassByName = constants._reverse(exports.tagClass);
      exports.tag = {
        0: "end",
        1: "bool",
        2: "int",
        3: "bitstr",
        4: "octstr",
        5: "null_",
        6: "objid",
        7: "objDesc",
        8: "external",
        9: "real",
        10: "enum",
        11: "embed",
        12: "utf8str",
        13: "relativeOid",
        16: "seq",
        17: "set",
        18: "numstr",
        19: "printstr",
        20: "t61str",
        21: "videostr",
        22: "ia5str",
        23: "utctime",
        24: "gentime",
        25: "graphstr",
        26: "iso646str",
        27: "genstr",
        28: "unistr",
        29: "charstr",
        30: "bmpstr"
      };
      exports.tagByName = constants._reverse(exports.tag);
    },
    2153(__unused_webpack_module, exports, __webpack_require__) {
      var constants = exports;
      constants._reverse = function reverse(map) {
        var res = {};
        Object.keys(map).forEach((function(key) {
          if ((key | 0) == key) key = key | 0;
          var value = map[key];
          res[value] = key;
        }));
        return res;
      };
      constants.der = __webpack_require__(4598);
    },
    2010(module, __unused_webpack_exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      var asn1 = __webpack_require__(7568);
      var base = asn1.base;
      var bignum = asn1.bignum;
      var der = asn1.constants.der;
      function DERDecoder(entity) {
        this.enc = "der";
        this.name = entity.name;
        this.entity = entity;
        this.tree = new DERNode;
        this.tree._init(entity.body);
      }
      module.exports = DERDecoder;
      DERDecoder.prototype.decode = function decode(data, options) {
        if (!(data instanceof base.DecoderBuffer)) data = new base.DecoderBuffer(data, options);
        return this.tree._decode(data, options);
      };
      function DERNode(parent) {
        base.Node.call(this, "der", parent);
      }
      inherits(DERNode, base.Node);
      DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
        if (buffer.isEmpty()) return false;
        var state = buffer.save();
        var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
        if (buffer.isError(decodedTag)) return decodedTag;
        buffer.restore(state);
        return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + "of" === tag || any;
      };
      DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
        var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of "' + tag + '"');
        if (buffer.isError(decodedTag)) return decodedTag;
        var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of "' + tag + '"');
        if (buffer.isError(len)) return len;
        if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + "of" !== tag) {
          return buffer.error('Failed to match tag: "' + tag + '"');
        }
        if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
        var state = buffer.save();
        var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: "' + this.tag + '"');
        if (buffer.isError(res)) return res;
        len = buffer.offset - state.offset;
        buffer.restore(state);
        return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
      };
      DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
        while (true) {
          var tag = derDecodeTag(buffer, fail);
          if (buffer.isError(tag)) return tag;
          var len = derDecodeLen(buffer, tag.primitive, fail);
          if (buffer.isError(len)) return len;
          var res;
          if (tag.primitive || len !== null) res = buffer.skip(len); else res = this._skipUntilEnd(buffer, fail);
          if (buffer.isError(res)) return res;
          if (tag.tagStr === "end") break;
        }
      };
      DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {
        var result = [];
        while (!buffer.isEmpty()) {
          var possibleEnd = this._peekTag(buffer, "end");
          if (buffer.isError(possibleEnd)) return possibleEnd;
          var res = decoder.decode(buffer, "der", options);
          if (buffer.isError(res) && possibleEnd) break;
          result.push(res);
        }
        return result;
      };
      DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
        if (tag === "bitstr") {
          var unused = buffer.readUInt8();
          if (buffer.isError(unused)) return unused;
          return {
            unused,
            data: buffer.raw()
          };
        } else if (tag === "bmpstr") {
          var raw = buffer.raw();
          if (raw.length % 2 === 1) return buffer.error("Decoding of string type: bmpstr length mismatch");
          var str = "";
          for (var i = 0; i < raw.length / 2; i++) {
            str += String.fromCharCode(raw.readUInt16BE(i * 2));
          }
          return str;
        } else if (tag === "numstr") {
          var numstr = buffer.raw().toString("ascii");
          if (!this._isNumstr(numstr)) {
            return buffer.error("Decoding of string type: " + "numstr unsupported characters");
          }
          return numstr;
        } else if (tag === "octstr") {
          return buffer.raw();
        } else if (tag === "objDesc") {
          return buffer.raw();
        } else if (tag === "printstr") {
          var printstr = buffer.raw().toString("ascii");
          if (!this._isPrintstr(printstr)) {
            return buffer.error("Decoding of string type: " + "printstr unsupported characters");
          }
          return printstr;
        } else if (/str$/.test(tag)) {
          return buffer.raw().toString();
        } else {
          return buffer.error("Decoding of string type: " + tag + " unsupported");
        }
      };
      DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {
        var result;
        var identifiers = [];
        var ident = 0;
        while (!buffer.isEmpty()) {
          var subident = buffer.readUInt8();
          ident <<= 7;
          ident |= subident & 127;
          if ((subident & 128) === 0) {
            identifiers.push(ident);
            ident = 0;
          }
        }
        if (subident & 128) identifiers.push(ident);
        var first = identifiers[0] / 40 | 0;
        var second = identifiers[0] % 40;
        if (relative) result = identifiers; else result = [ first, second ].concat(identifiers.slice(1));
        if (values) {
          var tmp = values[result.join(" ")];
          if (tmp === undefined) tmp = values[result.join(".")];
          if (tmp !== undefined) result = tmp;
        }
        return result;
      };
      DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
        var str = buffer.raw().toString();
        if (tag === "gentime") {
          var year = str.slice(0, 4) | 0;
          var mon = str.slice(4, 6) | 0;
          var day = str.slice(6, 8) | 0;
          var hour = str.slice(8, 10) | 0;
          var min = str.slice(10, 12) | 0;
          var sec = str.slice(12, 14) | 0;
        } else if (tag === "utctime") {
          var year = str.slice(0, 2) | 0;
          var mon = str.slice(2, 4) | 0;
          var day = str.slice(4, 6) | 0;
          var hour = str.slice(6, 8) | 0;
          var min = str.slice(8, 10) | 0;
          var sec = str.slice(10, 12) | 0;
          if (year < 70) year = 2e3 + year; else year = 1900 + year;
        } else {
          return buffer.error("Decoding " + tag + " time is not supported yet");
        }
        return Date.UTC(year, mon - 1, day, hour, min, sec, 0);
      };
      DERNode.prototype._decodeNull = function decodeNull(buffer) {
        return null;
      };
      DERNode.prototype._decodeBool = function decodeBool(buffer) {
        var res = buffer.readUInt8();
        if (buffer.isError(res)) return res; else return res !== 0;
      };
      DERNode.prototype._decodeInt = function decodeInt(buffer, values) {
        var raw = buffer.raw();
        var res = new bignum(raw);
        if (values) res = values[res.toString(10)] || res;
        return res;
      };
      DERNode.prototype._use = function use(entity, obj) {
        if (typeof entity === "function") entity = entity(obj);
        return entity._getDecoder("der").tree;
      };
      function derDecodeTag(buf, fail) {
        var tag = buf.readUInt8(fail);
        if (buf.isError(tag)) return tag;
        var cls = der.tagClass[tag >> 6];
        var primitive = (tag & 32) === 0;
        if ((tag & 31) === 31) {
          var oct = tag;
          tag = 0;
          while ((oct & 128) === 128) {
            oct = buf.readUInt8(fail);
            if (buf.isError(oct)) return oct;
            tag <<= 7;
            tag |= oct & 127;
          }
        } else {
          tag &= 31;
        }
        var tagStr = der.tag[tag];
        return {
          cls,
          primitive,
          tag,
          tagStr
        };
      }
      function derDecodeLen(buf, primitive, fail) {
        var len = buf.readUInt8(fail);
        if (buf.isError(len)) return len;
        if (!primitive && len === 128) return null;
        if ((len & 128) === 0) {
          return len;
        }
        var num = len & 127;
        if (num > 4) return buf.error("length octect is too long");
        len = 0;
        for (var i = 0; i < num; i++) {
          len <<= 8;
          var j = buf.readUInt8(fail);
          if (buf.isError(j)) return j;
          len |= j;
        }
        return len;
      }
    },
    2853(__unused_webpack_module, exports, __webpack_require__) {
      var decoders = exports;
      decoders.der = __webpack_require__(2010);
      decoders.pem = __webpack_require__(8903);
    },
    8903(module, __unused_webpack_exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      var Buffer = __webpack_require__(8287).Buffer;
      var DERDecoder = __webpack_require__(2010);
      function PEMDecoder(entity) {
        DERDecoder.call(this, entity);
        this.enc = "pem";
      }
      inherits(PEMDecoder, DERDecoder);
      module.exports = PEMDecoder;
      PEMDecoder.prototype.decode = function decode(data, options) {
        var lines = data.toString().split(/[\r\n]+/g);
        var label = options.label.toUpperCase();
        var re = /^-----(BEGIN|END) ([^-]+)-----$/;
        var start = -1;
        var end = -1;
        for (var i = 0; i < lines.length; i++) {
          var match = lines[i].match(re);
          if (match === null) continue;
          if (match[2] !== label) continue;
          if (start === -1) {
            if (match[1] !== "BEGIN") break;
            start = i;
          } else {
            if (match[1] !== "END") break;
            end = i;
            break;
          }
        }
        if (start === -1 || end === -1) throw new Error("PEM section not found for: " + label);
        var base64 = lines.slice(start + 1, end).join("");
        base64.replace(/[^a-z0-9\+\/=]+/gi, "");
        var input = new Buffer(base64, "base64");
        return DERDecoder.prototype.decode.call(this, input, options);
      };
    },
    82(module, __unused_webpack_exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      var Buffer = __webpack_require__(8287).Buffer;
      var asn1 = __webpack_require__(7568);
      var base = asn1.base;
      var der = asn1.constants.der;
      function DEREncoder(entity) {
        this.enc = "der";
        this.name = entity.name;
        this.entity = entity;
        this.tree = new DERNode;
        this.tree._init(entity.body);
      }
      module.exports = DEREncoder;
      DEREncoder.prototype.encode = function encode(data, reporter) {
        return this.tree._encode(data, reporter).join();
      };
      function DERNode(parent) {
        base.Node.call(this, "der", parent);
      }
      inherits(DERNode, base.Node);
      DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {
        var encodedTag = encodeTag(tag, primitive, cls, this.reporter);
        if (content.length < 128) {
          var header = new Buffer(2);
          header[0] = encodedTag;
          header[1] = content.length;
          return this._createEncoderBuffer([ header, content ]);
        }
        var lenOctets = 1;
        for (var i = content.length; i >= 256; i >>= 8) lenOctets++;
        var header = new Buffer(1 + 1 + lenOctets);
        header[0] = encodedTag;
        header[1] = 128 | lenOctets;
        for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) header[i] = j & 255;
        return this._createEncoderBuffer([ header, content ]);
      };
      DERNode.prototype._encodeStr = function encodeStr(str, tag) {
        if (tag === "bitstr") {
          return this._createEncoderBuffer([ str.unused | 0, str.data ]);
        } else if (tag === "bmpstr") {
          var buf = new Buffer(str.length * 2);
          for (var i = 0; i < str.length; i++) {
            buf.writeUInt16BE(str.charCodeAt(i), i * 2);
          }
          return this._createEncoderBuffer(buf);
        } else if (tag === "numstr") {
          if (!this._isNumstr(str)) {
            return this.reporter.error("Encoding of string type: numstr supports " + "only digits and space");
          }
          return this._createEncoderBuffer(str);
        } else if (tag === "printstr") {
          if (!this._isPrintstr(str)) {
            return this.reporter.error("Encoding of string type: printstr supports " + "only latin upper and lower case letters, " + "digits, space, apostrophe, left and rigth " + "parenthesis, plus sign, comma, hyphen, " + "dot, slash, colon, equal sign, " + "question mark");
          }
          return this._createEncoderBuffer(str);
        } else if (/str$/.test(tag)) {
          return this._createEncoderBuffer(str);
        } else if (tag === "objDesc") {
          return this._createEncoderBuffer(str);
        } else {
          return this.reporter.error("Encoding of string type: " + tag + " unsupported");
        }
      };
      DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
        if (typeof id === "string") {
          if (!values) return this.reporter.error("string objid given, but no values map found");
          if (!values.hasOwnProperty(id)) return this.reporter.error("objid not found in values map");
          id = values[id].split(/[\s\.]+/g);
          for (var i = 0; i < id.length; i++) id[i] |= 0;
        } else if (Array.isArray(id)) {
          id = id.slice();
          for (var i = 0; i < id.length; i++) id[i] |= 0;
        }
        if (!Array.isArray(id)) {
          return this.reporter.error("objid() should be either array or string, " + "got: " + JSON.stringify(id));
        }
        if (!relative) {
          if (id[1] >= 40) return this.reporter.error("Second objid identifier OOB");
          id.splice(0, 2, id[0] * 40 + id[1]);
        }
        var size = 0;
        for (var i = 0; i < id.length; i++) {
          var ident = id[i];
          for (size++; ident >= 128; ident >>= 7) size++;
        }
        var objid = new Buffer(size);
        var offset = objid.length - 1;
        for (var i = id.length - 1; i >= 0; i--) {
          var ident = id[i];
          objid[offset--] = ident & 127;
          while ((ident >>= 7) > 0) objid[offset--] = 128 | ident & 127;
        }
        return this._createEncoderBuffer(objid);
      };
      function two(num) {
        if (num < 10) return "0" + num; else return num;
      }
      DERNode.prototype._encodeTime = function encodeTime(time, tag) {
        var str;
        var date = new Date(time);
        if (tag === "gentime") {
          str = [ two(date.getFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), "Z" ].join("");
        } else if (tag === "utctime") {
          str = [ two(date.getFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), "Z" ].join("");
        } else {
          this.reporter.error("Encoding " + tag + " time is not supported yet");
        }
        return this._encodeStr(str, "octstr");
      };
      DERNode.prototype._encodeNull = function encodeNull() {
        return this._createEncoderBuffer("");
      };
      DERNode.prototype._encodeInt = function encodeInt(num, values) {
        if (typeof num === "string") {
          if (!values) return this.reporter.error("String int or enum given, but no values map");
          if (!values.hasOwnProperty(num)) {
            return this.reporter.error("Values map doesn't contain: " + JSON.stringify(num));
          }
          num = values[num];
        }
        if (typeof num !== "number" && !Buffer.isBuffer(num)) {
          var numArray = num.toArray();
          if (!num.sign && numArray[0] & 128) {
            numArray.unshift(0);
          }
          num = new Buffer(numArray);
        }
        if (Buffer.isBuffer(num)) {
          var size = num.length;
          if (num.length === 0) size++;
          var out = new Buffer(size);
          num.copy(out);
          if (num.length === 0) out[0] = 0;
          return this._createEncoderBuffer(out);
        }
        if (num < 128) return this._createEncoderBuffer(num);
        if (num < 256) return this._createEncoderBuffer([ 0, num ]);
        var size = 1;
        for (var i = num; i >= 256; i >>= 8) size++;
        var out = new Array(size);
        for (var i = out.length - 1; i >= 0; i--) {
          out[i] = num & 255;
          num >>= 8;
        }
        if (out[0] & 128) {
          out.unshift(0);
        }
        return this._createEncoderBuffer(new Buffer(out));
      };
      DERNode.prototype._encodeBool = function encodeBool(value) {
        return this._createEncoderBuffer(value ? 255 : 0);
      };
      DERNode.prototype._use = function use(entity, obj) {
        if (typeof entity === "function") entity = entity(obj);
        return entity._getEncoder("der").tree;
      };
      DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {
        var state = this._baseState;
        var i;
        if (state["default"] === null) return false;
        var data = dataBuffer.join();
        if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state["default"], reporter, parent).join();
        if (data.length !== state.defaultBuffer.length) return false;
        for (i = 0; i < data.length; i++) if (data[i] !== state.defaultBuffer[i]) return false;
        return true;
      };
      function encodeTag(tag, primitive, cls, reporter) {
        var res;
        if (tag === "seqof") tag = "seq"; else if (tag === "setof") tag = "set";
        if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag]; else if (typeof tag === "number" && (tag | 0) === tag) res = tag; else return reporter.error("Unknown tag: " + tag);
        if (res >= 31) return reporter.error("Multi-octet tag encoding unsupported");
        if (!primitive) res |= 32;
        res |= der.tagClassByName[cls || "universal"] << 6;
        return res;
      }
    },
    4669(__unused_webpack_module, exports, __webpack_require__) {
      var encoders = exports;
      encoders.der = __webpack_require__(82);
      encoders.pem = __webpack_require__(735);
    },
    735(module, __unused_webpack_exports, __webpack_require__) {
      var inherits = __webpack_require__(6698);
      var DEREncoder = __webpack_require__(82);
      function PEMEncoder(entity) {
        DEREncoder.call(this, entity);
        this.enc = "pem";
      }
      inherits(PEMEncoder, DEREncoder);
      module.exports = PEMEncoder;
      PEMEncoder.prototype.encode = function encode(data, options) {
        var buf = DEREncoder.prototype.encode.call(this, data);
        var p = buf.toString("base64");
        var out = [ "-----BEGIN " + options.label + "-----" ];
        for (var i = 0; i < p.length; i += 64) out.push(p.slice(i, i + 64));
        out.push("-----END " + options.label + "-----");
        return out.join("\n");
      };
    },
    2344(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(8982).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    7526(__unused_webpack_module, exports) {
      "use strict";
      exports.byteLength = byteLength;
      exports.toByteArray = toByteArray;
      exports.fromByteArray = fromByteArray;
      var lookup = [];
      var revLookup = [];
      var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
      var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
      for (var i = 0, len = code.length; i < len; ++i) {
        lookup[i] = code[i];
        revLookup[code.charCodeAt(i)] = i;
      }
      revLookup["-".charCodeAt(0)] = 62;
      revLookup["_".charCodeAt(0)] = 63;
      function getLens(b64) {
        var len = b64.length;
        if (len % 4 > 0) {
          throw new Error("Invalid string. Length must be a multiple of 4");
        }
        var validLen = b64.indexOf("=");
        if (validLen === -1) validLen = len;
        var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;
        return [ validLen, placeHoldersLen ];
      }
      function byteLength(b64) {
        var lens = getLens(b64);
        var validLen = lens[0];
        var placeHoldersLen = lens[1];
        return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
      }
      function _byteLength(b64, validLen, placeHoldersLen) {
        return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
      }
      function toByteArray(b64) {
        var tmp;
        var lens = getLens(b64);
        var validLen = lens[0];
        var placeHoldersLen = lens[1];
        var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
        var curByte = 0;
        var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
        var i;
        for (i = 0; i < len; i += 4) {
          tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
          arr[curByte++] = tmp >> 16 & 255;
          arr[curByte++] = tmp >> 8 & 255;
          arr[curByte++] = tmp & 255;
        }
        if (placeHoldersLen === 2) {
          tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
          arr[curByte++] = tmp & 255;
        }
        if (placeHoldersLen === 1) {
          tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
          arr[curByte++] = tmp >> 8 & 255;
          arr[curByte++] = tmp & 255;
        }
        return arr;
      }
      function tripletToBase64(num) {
        return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
      }
      function encodeChunk(uint8, start, end) {
        var tmp;
        var output = [];
        for (var i = start; i < end; i += 3) {
          tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);
          output.push(tripletToBase64(tmp));
        }
        return output.join("");
      }
      function fromByteArray(uint8) {
        var tmp;
        var len = uint8.length;
        var extraBytes = len % 3;
        var parts = [];
        var maxChunkLength = 16383;
        for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
          parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
        }
        if (extraBytes === 1) {
          tmp = uint8[len - 1];
          parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==");
        } else if (extraBytes === 2) {
          tmp = (uint8[len - 2] << 8) + uint8[len - 1];
          parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=");
        }
        return parts.join("");
      }
    },
    6104(module, exports) {
      module.exports = " ";
    },
    9674(module) {
      "use strict";
      var ALPHABET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
      var ALPHABET_MAP = {};
      for (var z = 0; z < ALPHABET.length; z++) {
        var x = ALPHABET.charAt(z);
        if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + " is ambiguous");
        ALPHABET_MAP[x] = z;
      }
      function polymodStep(pre) {
        var b = pre >> 25;
        return (pre & 33554431) << 5 ^ -(b >> 0 & 1) & 996825010 ^ -(b >> 1 & 1) & 642813549 ^ -(b >> 2 & 1) & 513874426 ^ -(b >> 3 & 1) & 1027748829 ^ -(b >> 4 & 1) & 705979059;
      }
      function prefixChk(prefix) {
        var chk = 1;
        for (var i = 0; i < prefix.length; ++i) {
          var c = prefix.charCodeAt(i);
          if (c < 33 || c > 126) return "Invalid prefix (" + prefix + ")";
          chk = polymodStep(chk) ^ c >> 5;
        }
        chk = polymodStep(chk);
        for (i = 0; i < prefix.length; ++i) {
          var v = prefix.charCodeAt(i);
          chk = polymodStep(chk) ^ v & 31;
        }
        return chk;
      }
      function encode(prefix, words, LIMIT) {
        LIMIT = LIMIT || 90;
        if (prefix.length + 7 + words.length > LIMIT) throw new TypeError("Exceeds length limit");
        prefix = prefix.toLowerCase();
        var chk = prefixChk(prefix);
        if (typeof chk === "string") throw new Error(chk);
        var result = prefix + "1";
        for (var i = 0; i < words.length; ++i) {
          var x = words[i];
          if (x >> 5 !== 0) throw new Error("Non 5-bit word");
          chk = polymodStep(chk) ^ x;
          result += ALPHABET.charAt(x);
        }
        for (i = 0; i < 6; ++i) {
          chk = polymodStep(chk);
        }
        chk ^= 1;
        for (i = 0; i < 6; ++i) {
          var v = chk >> (5 - i) * 5 & 31;
          result += ALPHABET.charAt(v);
        }
        return result;
      }
      function __decode(str, LIMIT) {
        LIMIT = LIMIT || 90;
        if (str.length < 8) return str + " too short";
        if (str.length > LIMIT) return "Exceeds length limit";
        var lowered = str.toLowerCase();
        var uppered = str.toUpperCase();
        if (str !== lowered && str !== uppered) return "Mixed-case string " + str;
        str = lowered;
        var split = str.lastIndexOf("1");
        if (split === -1) return "No separator character for " + str;
        if (split === 0) return "Missing prefix for " + str;
        var prefix = str.slice(0, split);
        var wordChars = str.slice(split + 1);
        if (wordChars.length < 6) return "Data too short";
        var chk = prefixChk(prefix);
        if (typeof chk === "string") return chk;
        var words = [];
        for (var i = 0; i < wordChars.length; ++i) {
          var c = wordChars.charAt(i);
          var v = ALPHABET_MAP[c];
          if (v === undefined) return "Unknown character " + c;
          chk = polymodStep(chk) ^ v;
          if (i + 6 >= wordChars.length) continue;
          words.push(v);
        }
        if (chk !== 1) return "Invalid checksum for " + str;
        return {
          prefix,
          words
        };
      }
      function decodeUnsafe() {
        var res = __decode.apply(null, arguments);
        if (typeof res === "object") return res;
      }
      function decode(str) {
        var res = __decode.apply(null, arguments);
        if (typeof res === "object") return res;
        throw new Error(res);
      }
      function convert(data, inBits, outBits, pad) {
        var value = 0;
        var bits = 0;
        var maxV = (1 << outBits) - 1;
        var result = [];
        for (var i = 0; i < data.length; ++i) {
          value = value << inBits | data[i];
          bits += inBits;
          while (bits >= outBits) {
            bits -= outBits;
            result.push(value >> bits & maxV);
          }
        }
        if (pad) {
          if (bits > 0) {
            result.push(value << outBits - bits & maxV);
          }
        } else {
          if (bits >= inBits) return "Excess padding";
          if (value << outBits - bits & maxV) return "Non-zero padding";
        }
        return result;
      }
      function toWordsUnsafe(bytes) {
        var res = convert(bytes, 8, 5, true);
        if (Array.isArray(res)) return res;
      }
      function toWords(bytes) {
        var res = convert(bytes, 8, 5, true);
        if (Array.isArray(res)) return res;
        throw new Error(res);
      }
      function fromWordsUnsafe(words) {
        var res = convert(words, 5, 8, false);
        if (Array.isArray(res)) return res;
      }
      function fromWords(words) {
        var res = convert(words, 5, 8, false);
        if (Array.isArray(res)) return res;
        throw new Error(res);
      }
      module.exports = {
        decodeUnsafe,
        decode,
        encode,
        toWordsUnsafe,
        toWords,
        fromWordsUnsafe,
        fromWords
      };
    },
    9404(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(7790).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this._strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 48 && c <= 57) {
            return c - 48;
          } else if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            assert(false, "Invalid character in " + string);
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this._strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var b = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              b = c - 49 + 10;
            } else if (c >= 17) {
              b = c - 17 + 10;
            } else {
              b = c;
            }
            assert(c >= 0 && b < mul, "Invalid character");
            r += b;
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this._strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        function move(dest, src) {
          dest.words = src.words;
          dest.length = src.length;
          dest.negative = src.negative;
          dest.red = src.red;
        }
        BN.prototype._move = function _move(dest) {
          move(dest, this);
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype._strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        if (typeof Symbol !== "undefined" && typeof Symbol.for === "function") {
          try {
            BN.prototype[Symbol.for("nodejs.util.inspect.custom")] = inspect;
          } catch (e) {
            BN.prototype.inspect = inspect;
          }
        } else {
          BN.prototype.inspect = inspect;
        }
        function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        }
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modrn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16, 2);
        };
        if (Buffer) {
          BN.prototype.toBuffer = function toBuffer(endian, length) {
            return this.toArrayLike(Buffer, endian, length);
          };
        }
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        var allocate = function allocate(ArrayType, size) {
          if (ArrayType.allocUnsafe) {
            return ArrayType.allocUnsafe(size);
          }
          return new ArrayType(size);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          this._strip();
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          var res = allocate(ArrayType, reqLength);
          var postfix = endian === "le" ? "LE" : "BE";
          this["_toArrayLike" + postfix](res, byteLength);
          return res;
        };
        BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {
          var position = 0;
          var carry = 0;
          for (var i = 0, shift = 0; i < this.length; i++) {
            var word = this.words[i] << shift | carry;
            res[position++] = word & 255;
            if (position < res.length) {
              res[position++] = word >> 8 & 255;
            }
            if (position < res.length) {
              res[position++] = word >> 16 & 255;
            }
            if (shift === 6) {
              if (position < res.length) {
                res[position++] = word >> 24 & 255;
              }
              carry = 0;
              shift = 0;
            } else {
              carry = word >>> 24;
              shift += 2;
            }
          }
          if (position < res.length) {
            res[position++] = carry;
            while (position < res.length) {
              res[position++] = 0;
            }
          }
        };
        BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {
          var position = res.length - 1;
          var carry = 0;
          for (var i = 0, shift = 0; i < this.length; i++) {
            var word = this.words[i] << shift | carry;
            res[position--] = word & 255;
            if (position >= 0) {
              res[position--] = word >> 8 & 255;
            }
            if (position >= 0) {
              res[position--] = word >> 16 & 255;
            }
            if (shift === 6) {
              if (position >= 0) {
                res[position--] = word >> 24 & 255;
              }
              carry = 0;
              shift = 0;
            } else {
              carry = word >>> 24;
              shift += 2;
            }
          }
          if (position >= 0) {
            res[position--] = carry;
            while (position >= 0) {
              res[position--] = 0;
            }
          }
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = num.words[off] >>> wbit & 1;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this._strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this._strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this._strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this._strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this._strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this._strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out._strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out._strip();
        }
        function jumboMulTo(self, num, out) {
          return bigMulTo(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out._strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          var isNegNum = num < 0;
          if (isNegNum) num = -num;
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return isNegNum ? this.ineg() : this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this._strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this._strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this._strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) <= num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this._strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this._strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this._strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q._strip();
          }
          a._strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modrn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modrn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modrn = function modrn(num) {
          var isNegNum = num < 0;
          if (isNegNum) num = -num;
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return isNegNum ? -acc : acc;
        };
        BN.prototype.modn = function modn(num) {
          return this.modrn(num);
        };
        BN.prototype.idivn = function idivn(num) {
          var isNegNum = num < 0;
          if (isNegNum) num = -num;
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          this._strip();
          return isNegNum ? this.ineg() : this;
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this._strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          move(a, a.umod(this.m)._forceRed(this));
          return a;
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    5037(module, __unused_webpack_exports, __webpack_require__) {
      var r;
      module.exports = function rand(len) {
        if (!r) r = new Rand(null);
        return r.generate(len);
      };
      function Rand(rand) {
        this.rand = rand;
      }
      module.exports.Rand = Rand;
      Rand.prototype.generate = function generate(len) {
        return this._rand(len);
      };
      Rand.prototype._rand = function _rand(n) {
        if (this.rand.getBytes) return this.rand.getBytes(n);
        var res = new Uint8Array(n);
        for (var i = 0; i < res.length; i++) res[i] = this.rand.getByte();
        return res;
      };
      if (typeof self === "object") {
        if (self.crypto && self.crypto.getRandomValues) {
          Rand.prototype._rand = function _rand(n) {
            var arr = new Uint8Array(n);
            self.crypto.getRandomValues(arr);
            return arr;
          };
        } else if (self.msCrypto && self.msCrypto.getRandomValues) {
          Rand.prototype._rand = function _rand(n) {
            var arr = new Uint8Array(n);
            self.msCrypto.getRandomValues(arr);
            return arr;
          };
        } else if (typeof window === "object") {
          Rand.prototype._rand = function() {
            throw new Error("Not implemented yet");
          };
        }
      } else {
        try {
          var crypto = __webpack_require__(1395);
          if (typeof crypto.randomBytes !== "function") throw new Error("Not supported");
          Rand.prototype._rand = function _rand(n) {
            return crypto.randomBytes(n);
          };
        } catch (e) {}
      }
    },
    462(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      function asUInt32Array(buf) {
        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);
        var len = buf.length / 4 | 0;
        var out = new Array(len);
        for (var i = 0; i < len; i++) {
          out[i] = buf.readUInt32BE(i * 4);
        }
        return out;
      }
      function scrubVec(v) {
        for (var i = 0; i < v.length; v++) {
          v[i] = 0;
        }
      }
      function cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {
        var SUB_MIX0 = SUB_MIX[0];
        var SUB_MIX1 = SUB_MIX[1];
        var SUB_MIX2 = SUB_MIX[2];
        var SUB_MIX3 = SUB_MIX[3];
        var s0 = M[0] ^ keySchedule[0];
        var s1 = M[1] ^ keySchedule[1];
        var s2 = M[2] ^ keySchedule[2];
        var s3 = M[3] ^ keySchedule[3];
        var t0, t1, t2, t3;
        var ksRow = 4;
        for (var round = 1; round < nRounds; round++) {
          t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 255] ^ SUB_MIX2[s2 >>> 8 & 255] ^ SUB_MIX3[s3 & 255] ^ keySchedule[ksRow++];
          t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 255] ^ SUB_MIX2[s3 >>> 8 & 255] ^ SUB_MIX3[s0 & 255] ^ keySchedule[ksRow++];
          t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 255] ^ SUB_MIX2[s0 >>> 8 & 255] ^ SUB_MIX3[s1 & 255] ^ keySchedule[ksRow++];
          t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 255] ^ SUB_MIX2[s1 >>> 8 & 255] ^ SUB_MIX3[s2 & 255] ^ keySchedule[ksRow++];
          s0 = t0;
          s1 = t1;
          s2 = t2;
          s3 = t3;
        }
        t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 255] << 16 | SBOX[s2 >>> 8 & 255] << 8 | SBOX[s3 & 255]) ^ keySchedule[ksRow++];
        t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 255] << 16 | SBOX[s3 >>> 8 & 255] << 8 | SBOX[s0 & 255]) ^ keySchedule[ksRow++];
        t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 255] << 16 | SBOX[s0 >>> 8 & 255] << 8 | SBOX[s1 & 255]) ^ keySchedule[ksRow++];
        t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 255] << 16 | SBOX[s1 >>> 8 & 255] << 8 | SBOX[s2 & 255]) ^ keySchedule[ksRow++];
        t0 = t0 >>> 0;
        t1 = t1 >>> 0;
        t2 = t2 >>> 0;
        t3 = t3 >>> 0;
        return [ t0, t1, t2, t3 ];
      }
      var RCON = [ 0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54 ];
      var G = function() {
        var d = new Array(256);
        for (var j = 0; j < 256; j++) {
          if (j < 128) {
            d[j] = j << 1;
          } else {
            d[j] = j << 1 ^ 283;
          }
        }
        var SBOX = [];
        var INV_SBOX = [];
        var SUB_MIX = [ [], [], [], [] ];
        var INV_SUB_MIX = [ [], [], [], [] ];
        var x = 0;
        var xi = 0;
        for (var i = 0; i < 256; ++i) {
          var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
          sx = sx >>> 8 ^ sx & 255 ^ 99;
          SBOX[x] = sx;
          INV_SBOX[sx] = x;
          var x2 = d[x];
          var x4 = d[x2];
          var x8 = d[x4];
          var t = d[sx] * 257 ^ sx * 16843008;
          SUB_MIX[0][x] = t << 24 | t >>> 8;
          SUB_MIX[1][x] = t << 16 | t >>> 16;
          SUB_MIX[2][x] = t << 8 | t >>> 24;
          SUB_MIX[3][x] = t;
          t = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008;
          INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;
          INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;
          INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;
          INV_SUB_MIX[3][sx] = t;
          if (x === 0) {
            x = xi = 1;
          } else {
            x = x2 ^ d[d[d[x8 ^ x2]]];
            xi ^= d[d[xi]];
          }
        }
        return {
          SBOX,
          INV_SBOX,
          SUB_MIX,
          INV_SUB_MIX
        };
      }();
      function AES(key) {
        this._key = asUInt32Array(key);
        this._reset();
      }
      AES.blockSize = 4 * 4;
      AES.keySize = 256 / 8;
      AES.prototype.blockSize = AES.blockSize;
      AES.prototype.keySize = AES.keySize;
      AES.prototype._reset = function() {
        var keyWords = this._key;
        var keySize = keyWords.length;
        var nRounds = keySize + 6;
        var ksRows = (nRounds + 1) * 4;
        var keySchedule = [];
        for (var k = 0; k < keySize; k++) {
          keySchedule[k] = keyWords[k];
        }
        for (k = keySize; k < ksRows; k++) {
          var t = keySchedule[k - 1];
          if (k % keySize === 0) {
            t = t << 8 | t >>> 24;
            t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 255] << 16 | G.SBOX[t >>> 8 & 255] << 8 | G.SBOX[t & 255];
            t ^= RCON[k / keySize | 0] << 24;
          } else if (keySize > 6 && k % keySize === 4) {
            t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 255] << 16 | G.SBOX[t >>> 8 & 255] << 8 | G.SBOX[t & 255];
          }
          keySchedule[k] = keySchedule[k - keySize] ^ t;
        }
        var invKeySchedule = [];
        for (var ik = 0; ik < ksRows; ik++) {
          var ksR = ksRows - ik;
          var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];
          if (ik < 4 || ksR <= 4) {
            invKeySchedule[ik] = tt;
          } else {
            invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 255]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 255]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 255]];
          }
        }
        this._nRounds = nRounds;
        this._keySchedule = keySchedule;
        this._invKeySchedule = invKeySchedule;
      };
      AES.prototype.encryptBlockRaw = function(M) {
        M = asUInt32Array(M);
        return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);
      };
      AES.prototype.encryptBlock = function(M) {
        var out = this.encryptBlockRaw(M);
        var buf = Buffer.allocUnsafe(16);
        buf.writeUInt32BE(out[0], 0);
        buf.writeUInt32BE(out[1], 4);
        buf.writeUInt32BE(out[2], 8);
        buf.writeUInt32BE(out[3], 12);
        return buf;
      };
      AES.prototype.decryptBlock = function(M) {
        M = asUInt32Array(M);
        var m1 = M[1];
        M[1] = M[3];
        M[3] = m1;
        var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);
        var buf = Buffer.allocUnsafe(16);
        buf.writeUInt32BE(out[0], 0);
        buf.writeUInt32BE(out[3], 4);
        buf.writeUInt32BE(out[2], 8);
        buf.writeUInt32BE(out[1], 12);
        return buf;
      };
      AES.prototype.scrub = function() {
        scrubVec(this._keySchedule);
        scrubVec(this._invKeySchedule);
        scrubVec(this._key);
      };
      module.exports.AES = AES;
    },
    2356(module, __unused_webpack_exports, __webpack_require__) {
      var aes = __webpack_require__(462);
      var Buffer = __webpack_require__(2861).Buffer;
      var Transform = __webpack_require__(6168);
      var inherits = __webpack_require__(6698);
      var GHASH = __webpack_require__(5892);
      var xor = __webpack_require__(295);
      var incr32 = __webpack_require__(5122);
      function xorTest(a, b) {
        var out = 0;
        if (a.length !== b.length) out++;
        var len = Math.min(a.length, b.length);
        for (var i = 0; i < len; ++i) {
          out += a[i] ^ b[i];
        }
        return out;
      }
      function calcIv(self, iv, ck) {
        if (iv.length === 12) {
          self._finID = Buffer.concat([ iv, Buffer.from([ 0, 0, 0, 1 ]) ]);
          return Buffer.concat([ iv, Buffer.from([ 0, 0, 0, 2 ]) ]);
        }
        var ghash = new GHASH(ck);
        var len = iv.length;
        var toPad = len % 16;
        ghash.update(iv);
        if (toPad) {
          toPad = 16 - toPad;
          ghash.update(Buffer.alloc(toPad, 0));
        }
        ghash.update(Buffer.alloc(8, 0));
        var ivBits = len * 8;
        var tail = Buffer.alloc(8);
        tail.writeUIntBE(ivBits, 0, 8);
        ghash.update(tail);
        self._finID = ghash.state;
        var out = Buffer.from(self._finID);
        incr32(out);
        return out;
      }
      function StreamCipher(mode, key, iv, decrypt) {
        Transform.call(this);
        var h = Buffer.alloc(4, 0);
        this._cipher = new aes.AES(key);
        var ck = this._cipher.encryptBlock(h);
        this._ghash = new GHASH(ck);
        iv = calcIv(this, iv, ck);
        this._prev = Buffer.from(iv);
        this._cache = Buffer.allocUnsafe(0);
        this._secCache = Buffer.allocUnsafe(0);
        this._decrypt = decrypt;
        this._alen = 0;
        this._len = 0;
        this._mode = mode;
        this._authTag = null;
        this._called = false;
      }
      inherits(StreamCipher, Transform);
      StreamCipher.prototype._update = function(chunk) {
        if (!this._called && this._alen) {
          var rump = 16 - this._alen % 16;
          if (rump < 16) {
            rump = Buffer.alloc(rump, 0);
            this._ghash.update(rump);
          }
        }
        this._called = true;
        var out = this._mode.encrypt(this, chunk);
        if (this._decrypt) {
          this._ghash.update(chunk);
        } else {
          this._ghash.update(out);
        }
        this._len += chunk.length;
        return out;
      };
      StreamCipher.prototype._final = function() {
        if (this._decrypt && !this._authTag) throw new Error("Unsupported state or unable to authenticate data");
        var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));
        if (this._decrypt && xorTest(tag, this._authTag)) throw new Error("Unsupported state or unable to authenticate data");
        this._authTag = tag;
        this._cipher.scrub();
      };
      StreamCipher.prototype.getAuthTag = function getAuthTag() {
        if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error("Attempting to get auth tag in unsupported state");
        return this._authTag;
      };
      StreamCipher.prototype.setAuthTag = function setAuthTag(tag) {
        if (!this._decrypt) throw new Error("Attempting to set auth tag in unsupported state");
        this._authTag = tag;
      };
      StreamCipher.prototype.setAAD = function setAAD(buf) {
        if (this._called) throw new Error("Attempting to set AAD in unsupported state");
        this._ghash.update(buf);
        this._alen += buf.length;
      };
      module.exports = StreamCipher;
    },
    1241(__unused_webpack_module, exports, __webpack_require__) {
      var ciphers = __webpack_require__(5799);
      var deciphers = __webpack_require__(6171);
      var modes = __webpack_require__(3219);
      function getCiphers() {
        return Object.keys(modes);
      }
      exports.createCipher = exports.Cipher = ciphers.createCipher;
      exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;
      exports.createDecipher = exports.Decipher = deciphers.createDecipher;
      exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;
      exports.listCiphers = exports.getCiphers = getCiphers;
    },
    6171(__unused_webpack_module, exports, __webpack_require__) {
      var AuthCipher = __webpack_require__(2356);
      var Buffer = __webpack_require__(2861).Buffer;
      var MODES = __webpack_require__(530);
      var StreamCipher = __webpack_require__(650);
      var Transform = __webpack_require__(6168);
      var aes = __webpack_require__(462);
      var ebtk = __webpack_require__(8078);
      var inherits = __webpack_require__(6698);
      function Decipher(mode, key, iv) {
        Transform.call(this);
        this._cache = new Splitter;
        this._last = void 0;
        this._cipher = new aes.AES(key);
        this._prev = Buffer.from(iv);
        this._mode = mode;
        this._autopadding = true;
      }
      inherits(Decipher, Transform);
      Decipher.prototype._update = function(data) {
        this._cache.add(data);
        var chunk;
        var thing;
        var out = [];
        while (chunk = this._cache.get(this._autopadding)) {
          thing = this._mode.decrypt(this, chunk);
          out.push(thing);
        }
        return Buffer.concat(out);
      };
      Decipher.prototype._final = function() {
        var chunk = this._cache.flush();
        if (this._autopadding) {
          return unpad(this._mode.decrypt(this, chunk));
        } else if (chunk) {
          throw new Error("data not multiple of block length");
        }
      };
      Decipher.prototype.setAutoPadding = function(setTo) {
        this._autopadding = !!setTo;
        return this;
      };
      function Splitter() {
        this.cache = Buffer.allocUnsafe(0);
      }
      Splitter.prototype.add = function(data) {
        this.cache = Buffer.concat([ this.cache, data ]);
      };
      Splitter.prototype.get = function(autoPadding) {
        var out;
        if (autoPadding) {
          if (this.cache.length > 16) {
            out = this.cache.slice(0, 16);
            this.cache = this.cache.slice(16);
            return out;
          }
        } else {
          if (this.cache.length >= 16) {
            out = this.cache.slice(0, 16);
            this.cache = this.cache.slice(16);
            return out;
          }
        }
        return null;
      };
      Splitter.prototype.flush = function() {
        if (this.cache.length) return this.cache;
      };
      function unpad(last) {
        var padded = last[15];
        if (padded < 1 || padded > 16) {
          throw new Error("unable to decrypt data");
        }
        var i = -1;
        while (++i < padded) {
          if (last[i + (16 - padded)] !== padded) {
            throw new Error("unable to decrypt data");
          }
        }
        if (padded === 16) return;
        return last.slice(0, 16 - padded);
      }
      function createDecipheriv(suite, password, iv) {
        var config = MODES[suite.toLowerCase()];
        if (!config) throw new TypeError("invalid suite type");
        if (typeof iv === "string") iv = Buffer.from(iv);
        if (config.mode !== "GCM" && iv.length !== config.iv) throw new TypeError("invalid iv length " + iv.length);
        if (typeof password === "string") password = Buffer.from(password);
        if (password.length !== config.key / 8) throw new TypeError("invalid key length " + password.length);
        if (config.type === "stream") {
          return new StreamCipher(config.module, password, iv, true);
        } else if (config.type === "auth") {
          return new AuthCipher(config.module, password, iv, true);
        }
        return new Decipher(config.module, password, iv);
      }
      function createDecipher(suite, password) {
        var config = MODES[suite.toLowerCase()];
        if (!config) throw new TypeError("invalid suite type");
        var keys = ebtk(password, false, config.key, config.iv);
        return createDecipheriv(suite, keys.key, keys.iv);
      }
      exports.createDecipher = createDecipher;
      exports.createDecipheriv = createDecipheriv;
    },
    5799(__unused_webpack_module, exports, __webpack_require__) {
      var MODES = __webpack_require__(530);
      var AuthCipher = __webpack_require__(2356);
      var Buffer = __webpack_require__(2861).Buffer;
      var StreamCipher = __webpack_require__(650);
      var Transform = __webpack_require__(6168);
      var aes = __webpack_require__(462);
      var ebtk = __webpack_require__(8078);
      var inherits = __webpack_require__(6698);
      function Cipher(mode, key, iv) {
        Transform.call(this);
        this._cache = new Splitter;
        this._cipher = new aes.AES(key);
        this._prev = Buffer.from(iv);
        this._mode = mode;
        this._autopadding = true;
      }
      inherits(Cipher, Transform);
      Cipher.prototype._update = function(data) {
        this._cache.add(data);
        var chunk;
        var thing;
        var out = [];
        while (chunk = this._cache.get()) {
          thing = this._mode.encrypt(this, chunk);
          out.push(thing);
        }
        return Buffer.concat(out);
      };
      var PADDING = Buffer.alloc(16, 16);
      Cipher.prototype._final = function() {
        var chunk = this._cache.flush();
        if (this._autopadding) {
          chunk = this._mode.encrypt(this, chunk);
          this._cipher.scrub();
          return chunk;
        }
        if (!chunk.equals(PADDING)) {
          this._cipher.scrub();
          throw new Error("data not multiple of block length");
        }
      };
      Cipher.prototype.setAutoPadding = function(setTo) {
        this._autopadding = !!setTo;
        return this;
      };
      function Splitter() {
        this.cache = Buffer.allocUnsafe(0);
      }
      Splitter.prototype.add = function(data) {
        this.cache = Buffer.concat([ this.cache, data ]);
      };
      Splitter.prototype.get = function() {
        if (this.cache.length > 15) {
          var out = this.cache.slice(0, 16);
          this.cache = this.cache.slice(16);
          return out;
        }
        return null;
      };
      Splitter.prototype.flush = function() {
        var len = 16 - this.cache.length;
        var padBuff = Buffer.allocUnsafe(len);
        var i = -1;
        while (++i < len) {
          padBuff.writeUInt8(len, i);
        }
        return Buffer.concat([ this.cache, padBuff ]);
      };
      function createCipheriv(suite, password, iv) {
        var config = MODES[suite.toLowerCase()];
        if (!config) throw new TypeError("invalid suite type");
        if (typeof password === "string") password = Buffer.from(password);
        if (password.length !== config.key / 8) throw new TypeError("invalid key length " + password.length);
        if (typeof iv === "string") iv = Buffer.from(iv);
        if (config.mode !== "GCM" && iv.length !== config.iv) throw new TypeError("invalid iv length " + iv.length);
        if (config.type === "stream") {
          return new StreamCipher(config.module, password, iv);
        } else if (config.type === "auth") {
          return new AuthCipher(config.module, password, iv);
        }
        return new Cipher(config.module, password, iv);
      }
      function createCipher(suite, password) {
        var config = MODES[suite.toLowerCase()];
        if (!config) throw new TypeError("invalid suite type");
        var keys = ebtk(password, false, config.key, config.iv);
        return createCipheriv(suite, keys.key, keys.iv);
      }
      exports.createCipheriv = createCipheriv;
      exports.createCipher = createCipher;
    },
    5892(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      var ZEROES = Buffer.alloc(16, 0);
      function toArray(buf) {
        return [ buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12) ];
      }
      function fromArray(out) {
        var buf = Buffer.allocUnsafe(16);
        buf.writeUInt32BE(out[0] >>> 0, 0);
        buf.writeUInt32BE(out[1] >>> 0, 4);
        buf.writeUInt32BE(out[2] >>> 0, 8);
        buf.writeUInt32BE(out[3] >>> 0, 12);
        return buf;
      }
      function GHASH(key) {
        this.h = key;
        this.state = Buffer.alloc(16, 0);
        this.cache = Buffer.allocUnsafe(0);
      }
      GHASH.prototype.ghash = function(block) {
        var i = -1;
        while (++i < block.length) {
          this.state[i] ^= block[i];
        }
        this._multiply();
      };
      GHASH.prototype._multiply = function() {
        var Vi = toArray(this.h);
        var Zi = [ 0, 0, 0, 0 ];
        var j, xi, lsbVi;
        var i = -1;
        while (++i < 128) {
          xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;
          if (xi) {
            Zi[0] ^= Vi[0];
            Zi[1] ^= Vi[1];
            Zi[2] ^= Vi[2];
            Zi[3] ^= Vi[3];
          }
          lsbVi = (Vi[3] & 1) !== 0;
          for (j = 3; j > 0; j--) {
            Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;
          }
          Vi[0] = Vi[0] >>> 1;
          if (lsbVi) {
            Vi[0] = Vi[0] ^ 225 << 24;
          }
        }
        this.state = fromArray(Zi);
      };
      GHASH.prototype.update = function(buf) {
        this.cache = Buffer.concat([ this.cache, buf ]);
        var chunk;
        while (this.cache.length >= 16) {
          chunk = this.cache.slice(0, 16);
          this.cache = this.cache.slice(16);
          this.ghash(chunk);
        }
      };
      GHASH.prototype.final = function(abl, bl) {
        if (this.cache.length) {
          this.ghash(Buffer.concat([ this.cache, ZEROES ], 16));
        }
        this.ghash(fromArray([ 0, abl, 0, bl ]));
        return this.state;
      };
      module.exports = GHASH;
    },
    5122(module) {
      function incr32(iv) {
        var len = iv.length;
        var item;
        while (len--) {
          item = iv.readUInt8(len);
          if (item === 255) {
            iv.writeUInt8(0, len);
          } else {
            item++;
            iv.writeUInt8(item, len);
            break;
          }
        }
      }
      module.exports = incr32;
    },
    2884(__unused_webpack_module, exports, __webpack_require__) {
      var xor = __webpack_require__(295);
      exports.encrypt = function(self, block) {
        var data = xor(block, self._prev);
        self._prev = self._cipher.encryptBlock(data);
        return self._prev;
      };
      exports.decrypt = function(self, block) {
        var pad = self._prev;
        self._prev = block;
        var out = self._cipher.decryptBlock(block);
        return xor(out, pad);
      };
    },
    6383(__unused_webpack_module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      var xor = __webpack_require__(295);
      function encryptStart(self, data, decrypt) {
        var len = data.length;
        var out = xor(data, self._cache);
        self._cache = self._cache.slice(len);
        self._prev = Buffer.concat([ self._prev, decrypt ? data : out ]);
        return out;
      }
      exports.encrypt = function(self, data, decrypt) {
        var out = Buffer.allocUnsafe(0);
        var len;
        while (data.length) {
          if (self._cache.length === 0) {
            self._cache = self._cipher.encryptBlock(self._prev);
            self._prev = Buffer.allocUnsafe(0);
          }
          if (self._cache.length <= data.length) {
            len = self._cache.length;
            out = Buffer.concat([ out, encryptStart(self, data.slice(0, len), decrypt) ]);
            data = data.slice(len);
          } else {
            out = Buffer.concat([ out, encryptStart(self, data, decrypt) ]);
            break;
          }
        }
        return out;
      };
    },
    5264(__unused_webpack_module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      function encryptByte(self, byteParam, decrypt) {
        var pad;
        var i = -1;
        var len = 8;
        var out = 0;
        var bit, value;
        while (++i < len) {
          pad = self._cipher.encryptBlock(self._prev);
          bit = byteParam & 1 << 7 - i ? 128 : 0;
          value = pad[0] ^ bit;
          out += (value & 128) >> i % 8;
          self._prev = shiftIn(self._prev, decrypt ? bit : value);
        }
        return out;
      }
      function shiftIn(buffer, value) {
        var len = buffer.length;
        var i = -1;
        var out = Buffer.allocUnsafe(buffer.length);
        buffer = Buffer.concat([ buffer, Buffer.from([ value ]) ]);
        while (++i < len) {
          out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;
        }
        return out;
      }
      exports.encrypt = function(self, chunk, decrypt) {
        var len = chunk.length;
        var out = Buffer.allocUnsafe(len);
        var i = -1;
        while (++i < len) {
          out[i] = encryptByte(self, chunk[i], decrypt);
        }
        return out;
      };
    },
    6975(__unused_webpack_module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      function encryptByte(self, byteParam, decrypt) {
        var pad = self._cipher.encryptBlock(self._prev);
        var out = pad[0] ^ byteParam;
        self._prev = Buffer.concat([ self._prev.slice(1), Buffer.from([ decrypt ? byteParam : out ]) ]);
        return out;
      }
      exports.encrypt = function(self, chunk, decrypt) {
        var len = chunk.length;
        var out = Buffer.allocUnsafe(len);
        var i = -1;
        while (++i < len) {
          out[i] = encryptByte(self, chunk[i], decrypt);
        }
        return out;
      };
    },
    3053(__unused_webpack_module, exports, __webpack_require__) {
      var xor = __webpack_require__(295);
      var Buffer = __webpack_require__(2861).Buffer;
      var incr32 = __webpack_require__(5122);
      function getBlock(self) {
        var out = self._cipher.encryptBlockRaw(self._prev);
        incr32(self._prev);
        return out;
      }
      var blockSize = 16;
      exports.encrypt = function(self, chunk) {
        var chunkNum = Math.ceil(chunk.length / blockSize);
        var start = self._cache.length;
        self._cache = Buffer.concat([ self._cache, Buffer.allocUnsafe(chunkNum * blockSize) ]);
        for (var i = 0; i < chunkNum; i++) {
          var out = getBlock(self);
          var offset = start + i * blockSize;
          self._cache.writeUInt32BE(out[0], offset + 0);
          self._cache.writeUInt32BE(out[1], offset + 4);
          self._cache.writeUInt32BE(out[2], offset + 8);
          self._cache.writeUInt32BE(out[3], offset + 12);
        }
        var pad = self._cache.slice(0, chunk.length);
        self._cache = self._cache.slice(chunk.length);
        return xor(chunk, pad);
      };
    },
    2632(__unused_webpack_module, exports) {
      exports.encrypt = function(self, block) {
        return self._cipher.encryptBlock(block);
      };
      exports.decrypt = function(self, block) {
        return self._cipher.decryptBlock(block);
      };
    },
    530(module, __unused_webpack_exports, __webpack_require__) {
      var modeModules = {
        ECB: __webpack_require__(2632),
        CBC: __webpack_require__(2884),
        CFB: __webpack_require__(6383),
        CFB8: __webpack_require__(6975),
        CFB1: __webpack_require__(5264),
        OFB: __webpack_require__(6843),
        CTR: __webpack_require__(3053),
        GCM: __webpack_require__(3053)
      };
      var modes = __webpack_require__(3219);
      for (var key in modes) {
        modes[key].module = modeModules[modes[key].mode];
      }
      module.exports = modes;
    },
    6843(__unused_webpack_module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      var xor = __webpack_require__(295);
      function getBlock(self) {
        self._prev = self._cipher.encryptBlock(self._prev);
        return self._prev;
      }
      exports.encrypt = function(self, chunk) {
        while (self._cache.length < chunk.length) {
          self._cache = Buffer.concat([ self._cache, getBlock(self) ]);
        }
        var pad = self._cache.slice(0, chunk.length);
        self._cache = self._cache.slice(chunk.length);
        return xor(chunk, pad);
      };
    },
    650(module, __unused_webpack_exports, __webpack_require__) {
      var aes = __webpack_require__(462);
      var Buffer = __webpack_require__(2861).Buffer;
      var Transform = __webpack_require__(6168);
      var inherits = __webpack_require__(6698);
      function StreamCipher(mode, key, iv, decrypt) {
        Transform.call(this);
        this._cipher = new aes.AES(key);
        this._prev = Buffer.from(iv);
        this._cache = Buffer.allocUnsafe(0);
        this._secCache = Buffer.allocUnsafe(0);
        this._decrypt = decrypt;
        this._mode = mode;
      }
      inherits(StreamCipher, Transform);
      StreamCipher.prototype._update = function(chunk) {
        return this._mode.encrypt(this, chunk, this._decrypt);
      };
      StreamCipher.prototype._final = function() {
        this._cipher.scrub();
      };
      module.exports = StreamCipher;
    },
    125(__unused_webpack_module, exports, __webpack_require__) {
      var DES = __webpack_require__(4050);
      var aes = __webpack_require__(1241);
      var aesModes = __webpack_require__(530);
      var desModes = __webpack_require__(2438);
      var ebtk = __webpack_require__(8078);
      function createCipher(suite, password) {
        suite = suite.toLowerCase();
        var keyLen, ivLen;
        if (aesModes[suite]) {
          keyLen = aesModes[suite].key;
          ivLen = aesModes[suite].iv;
        } else if (desModes[suite]) {
          keyLen = desModes[suite].key * 8;
          ivLen = desModes[suite].iv;
        } else {
          throw new TypeError("invalid suite type");
        }
        var keys = ebtk(password, false, keyLen, ivLen);
        return createCipheriv(suite, keys.key, keys.iv);
      }
      function createDecipher(suite, password) {
        suite = suite.toLowerCase();
        var keyLen, ivLen;
        if (aesModes[suite]) {
          keyLen = aesModes[suite].key;
          ivLen = aesModes[suite].iv;
        } else if (desModes[suite]) {
          keyLen = desModes[suite].key * 8;
          ivLen = desModes[suite].iv;
        } else {
          throw new TypeError("invalid suite type");
        }
        var keys = ebtk(password, false, keyLen, ivLen);
        return createDecipheriv(suite, keys.key, keys.iv);
      }
      function createCipheriv(suite, key, iv) {
        suite = suite.toLowerCase();
        if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);
        if (desModes[suite]) return new DES({
          key,
          iv,
          mode: suite
        });
        throw new TypeError("invalid suite type");
      }
      function createDecipheriv(suite, key, iv) {
        suite = suite.toLowerCase();
        if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);
        if (desModes[suite]) return new DES({
          key,
          iv,
          mode: suite,
          decrypt: true
        });
        throw new TypeError("invalid suite type");
      }
      function getCiphers() {
        return Object.keys(desModes).concat(aes.getCiphers());
      }
      exports.createCipher = exports.Cipher = createCipher;
      exports.createCipheriv = exports.Cipheriv = createCipheriv;
      exports.createDecipher = exports.Decipher = createDecipher;
      exports.createDecipheriv = exports.Decipheriv = createDecipheriv;
      exports.listCiphers = exports.getCiphers = getCiphers;
    },
    4050(module, __unused_webpack_exports, __webpack_require__) {
      var CipherBase = __webpack_require__(6168);
      var des = __webpack_require__(9560);
      var inherits = __webpack_require__(6698);
      var Buffer = __webpack_require__(2861).Buffer;
      var modes = {
        "des-ede3-cbc": des.CBC.instantiate(des.EDE),
        "des-ede3": des.EDE,
        "des-ede-cbc": des.CBC.instantiate(des.EDE),
        "des-ede": des.EDE,
        "des-cbc": des.CBC.instantiate(des.DES),
        "des-ecb": des.DES
      };
      modes.des = modes["des-cbc"];
      modes.des3 = modes["des-ede3-cbc"];
      module.exports = DES;
      inherits(DES, CipherBase);
      function DES(opts) {
        CipherBase.call(this);
        var modeName = opts.mode.toLowerCase();
        var mode = modes[modeName];
        var type;
        if (opts.decrypt) {
          type = "decrypt";
        } else {
          type = "encrypt";
        }
        var key = opts.key;
        if (!Buffer.isBuffer(key)) {
          key = Buffer.from(key);
        }
        if (modeName === "des-ede" || modeName === "des-ede-cbc") {
          key = Buffer.concat([ key, key.slice(0, 8) ]);
        }
        var iv = opts.iv;
        if (!Buffer.isBuffer(iv)) {
          iv = Buffer.from(iv);
        }
        this._des = mode.create({
          key,
          iv,
          type
        });
      }
      DES.prototype._update = function(data) {
        return Buffer.from(this._des.update(data));
      };
      DES.prototype._final = function() {
        return Buffer.from(this._des.final());
      };
    },
    2438(__unused_webpack_module, exports) {
      exports["des-ecb"] = {
        key: 8,
        iv: 0
      };
      exports["des-cbc"] = exports.des = {
        key: 8,
        iv: 8
      };
      exports["des-ede3-cbc"] = exports.des3 = {
        key: 24,
        iv: 8
      };
      exports["des-ede3"] = {
        key: 24,
        iv: 0
      };
      exports["des-ede-cbc"] = {
        key: 16,
        iv: 8
      };
      exports["des-ede"] = {
        key: 16,
        iv: 0
      };
    },
    7332(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(9404);
      var randomBytes = __webpack_require__(3209);
      var Buffer = __webpack_require__(2861).Buffer;
      function getr(priv) {
        var len = priv.modulus.byteLength();
        var r;
        do {
          r = new BN(randomBytes(len));
        } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));
        return r;
      }
      function blind(priv) {
        var r = getr(priv);
        var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();
        return {
          blinder,
          unblinder: r.invm(priv.modulus)
        };
      }
      function crt(msg, priv) {
        var blinds = blind(priv);
        var len = priv.modulus.byteLength();
        var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);
        var c1 = blinded.toRed(BN.mont(priv.prime1));
        var c2 = blinded.toRed(BN.mont(priv.prime2));
        var qinv = priv.coefficient;
        var p = priv.prime1;
        var q = priv.prime2;
        var m1 = c1.redPow(priv.exponent1).fromRed();
        var m2 = c2.redPow(priv.exponent2).fromRed();
        var h = m1.isub(m2).imul(qinv).umod(p).imul(q);
        return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, "be", len);
      }
      crt.getr = getr;
      module.exports = crt;
    },
    5715(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = __webpack_require__(2951);
    },
    20(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var createHash = __webpack_require__(7108);
      var stream = __webpack_require__(6737);
      var inherits = __webpack_require__(6698);
      var sign = __webpack_require__(5359);
      var verify = __webpack_require__(4847);
      var algorithms = __webpack_require__(2951);
      Object.keys(algorithms).forEach((function(key) {
        algorithms[key].id = Buffer.from(algorithms[key].id, "hex");
        algorithms[key.toLowerCase()] = algorithms[key];
      }));
      function Sign(algorithm) {
        stream.Writable.call(this);
        var data = algorithms[algorithm];
        if (!data) {
          throw new Error("Unknown message digest");
        }
        this._hashType = data.hash;
        this._hash = createHash(data.hash);
        this._tag = data.id;
        this._signType = data.sign;
      }
      inherits(Sign, stream.Writable);
      Sign.prototype._write = function _write(data, _, done) {
        this._hash.update(data);
        done();
      };
      Sign.prototype.update = function update(data, enc) {
        this._hash.update(typeof data === "string" ? Buffer.from(data, enc) : data);
        return this;
      };
      Sign.prototype.sign = function signMethod(key, enc) {
        this.end();
        var hash = this._hash.digest();
        var sig = sign(hash, key, this._hashType, this._signType, this._tag);
        return enc ? sig.toString(enc) : sig;
      };
      function Verify(algorithm) {
        stream.Writable.call(this);
        var data = algorithms[algorithm];
        if (!data) {
          throw new Error("Unknown message digest");
        }
        this._hash = createHash(data.hash);
        this._tag = data.id;
        this._signType = data.sign;
      }
      inherits(Verify, stream.Writable);
      Verify.prototype._write = function _write(data, _, done) {
        this._hash.update(data);
        done();
      };
      Verify.prototype.update = function update(data, enc) {
        this._hash.update(typeof data === "string" ? Buffer.from(data, enc) : data);
        return this;
      };
      Verify.prototype.verify = function verifyMethod(key, sig, enc) {
        var sigBuffer = typeof sig === "string" ? Buffer.from(sig, enc) : sig;
        this.end();
        var hash = this._hash.digest();
        return verify(sigBuffer, hash, key, this._signType, this._tag);
      };
      function createSign(algorithm) {
        return new Sign(algorithm);
      }
      function createVerify(algorithm) {
        return new Verify(algorithm);
      }
      module.exports = {
        Sign: createSign,
        Verify: createVerify,
        createSign,
        createVerify
      };
    },
    5359(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var createHmac = __webpack_require__(3507);
      var crt = __webpack_require__(7332);
      var EC = __webpack_require__(6729).ec;
      var BN = __webpack_require__(9404);
      var parseKeys = __webpack_require__(8170);
      var curves = __webpack_require__(4589);
      var RSA_PKCS1_PADDING = 1;
      function sign(hash, key, hashType, signType, tag) {
        var priv = parseKeys(key);
        if (priv.curve) {
          if (signType !== "ecdsa" && signType !== "ecdsa/rsa") {
            throw new Error("wrong private key type");
          }
          return ecSign(hash, priv);
        } else if (priv.type === "dsa") {
          if (signType !== "dsa") {
            throw new Error("wrong private key type");
          }
          return dsaSign(hash, priv, hashType);
        }
        if (signType !== "rsa" && signType !== "ecdsa/rsa") {
          throw new Error("wrong private key type");
        }
        if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) {
          throw new Error("illegal or unsupported padding mode");
        }
        hash = Buffer.concat([ tag, hash ]);
        var len = priv.modulus.byteLength();
        var pad = [ 0, 1 ];
        while (hash.length + pad.length + 1 < len) {
          pad.push(255);
        }
        pad.push(0);
        var i = -1;
        while (++i < hash.length) {
          pad.push(hash[i]);
        }
        var out = crt(pad, priv);
        return out;
      }
      function ecSign(hash, priv) {
        var curveId = curves[priv.curve.join(".")];
        if (!curveId) {
          throw new Error("unknown curve " + priv.curve.join("."));
        }
        var curve = new EC(curveId);
        var key = curve.keyFromPrivate(priv.privateKey);
        var out = key.sign(hash);
        return Buffer.from(out.toDER());
      }
      function dsaSign(hash, priv, algo) {
        var x = priv.params.priv_key;
        var p = priv.params.p;
        var q = priv.params.q;
        var g = priv.params.g;
        var r = new BN(0);
        var k;
        var H = bits2int(hash, q).mod(q);
        var s = false;
        var kv = getKey(x, q, hash, algo);
        while (s === false) {
          k = makeKey(q, kv, algo);
          r = makeR(g, k, p, q);
          s = k.invm(q).imul(H.add(x.mul(r))).mod(q);
          if (s.cmpn(0) === 0) {
            s = false;
            r = new BN(0);
          }
        }
        return toDER(r, s);
      }
      function toDER(r, s) {
        r = r.toArray();
        s = s.toArray();
        if (r[0] & 128) {
          r = [ 0 ].concat(r);
        }
        if (s[0] & 128) {
          s = [ 0 ].concat(s);
        }
        var total = r.length + s.length + 4;
        var res = [ 48, total, 2, r.length ];
        res = res.concat(r, [ 2, s.length ], s);
        return Buffer.from(res);
      }
      function getKey(x, q, hash, algo) {
        x = Buffer.from(x.toArray());
        if (x.length < q.byteLength()) {
          var zeros = Buffer.alloc(q.byteLength() - x.length);
          x = Buffer.concat([ zeros, x ]);
        }
        var hlen = hash.length;
        var hbits = bits2octets(hash, q);
        var v = Buffer.alloc(hlen);
        v.fill(1);
        var k = Buffer.alloc(hlen);
        k = createHmac(algo, k).update(v).update(Buffer.from([ 0 ])).update(x).update(hbits).digest();
        v = createHmac(algo, k).update(v).digest();
        k = createHmac(algo, k).update(v).update(Buffer.from([ 1 ])).update(x).update(hbits).digest();
        v = createHmac(algo, k).update(v).digest();
        return {
          k,
          v
        };
      }
      function bits2int(obits, q) {
        var bits = new BN(obits);
        var shift = (obits.length << 3) - q.bitLength();
        if (shift > 0) {
          bits.ishrn(shift);
        }
        return bits;
      }
      function bits2octets(bits, q) {
        bits = bits2int(bits, q);
        bits = bits.mod(q);
        var out = Buffer.from(bits.toArray());
        if (out.length < q.byteLength()) {
          var zeros = Buffer.alloc(q.byteLength() - out.length);
          out = Buffer.concat([ zeros, out ]);
        }
        return out;
      }
      function makeKey(q, kv, algo) {
        var t;
        var k;
        do {
          t = Buffer.alloc(0);
          while (t.length * 8 < q.bitLength()) {
            kv.v = createHmac(algo, kv.k).update(kv.v).digest();
            t = Buffer.concat([ t, kv.v ]);
          }
          k = bits2int(t, q);
          kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([ 0 ])).digest();
          kv.v = createHmac(algo, kv.k).update(kv.v).digest();
        } while (k.cmp(q) !== -1);
        return k;
      }
      function makeR(g, k, p, q) {
        return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);
      }
      module.exports = sign;
      module.exports.getKey = getKey;
      module.exports.makeKey = makeKey;
    },
    4847(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var BN = __webpack_require__(9404);
      var EC = __webpack_require__(6729).ec;
      var parseKeys = __webpack_require__(8170);
      var curves = __webpack_require__(4589);
      function verify(sig, hash, key, signType, tag) {
        var pub = parseKeys(key);
        if (pub.type === "ec") {
          if (signType !== "ecdsa" && signType !== "ecdsa/rsa") {
            throw new Error("wrong public key type");
          }
          return ecVerify(sig, hash, pub);
        } else if (pub.type === "dsa") {
          if (signType !== "dsa") {
            throw new Error("wrong public key type");
          }
          return dsaVerify(sig, hash, pub);
        }
        if (signType !== "rsa" && signType !== "ecdsa/rsa") {
          throw new Error("wrong public key type");
        }
        hash = Buffer.concat([ tag, hash ]);
        var len = pub.modulus.byteLength();
        var pad = [ 1 ];
        var padNum = 0;
        while (hash.length + pad.length + 2 < len) {
          pad.push(255);
          padNum += 1;
        }
        pad.push(0);
        var i = -1;
        while (++i < hash.length) {
          pad.push(hash[i]);
        }
        pad = Buffer.from(pad);
        var red = BN.mont(pub.modulus);
        sig = new BN(sig).toRed(red);
        sig = sig.redPow(new BN(pub.publicExponent));
        sig = Buffer.from(sig.fromRed().toArray());
        var out = padNum < 8 ? 1 : 0;
        len = Math.min(sig.length, pad.length);
        if (sig.length !== pad.length) {
          out = 1;
        }
        i = -1;
        while (++i < len) {
          out |= sig[i] ^ pad[i];
        }
        return out === 0;
      }
      function ecVerify(sig, hash, pub) {
        var curveId = curves[pub.data.algorithm.curve.join(".")];
        if (!curveId) {
          throw new Error("unknown curve " + pub.data.algorithm.curve.join("."));
        }
        var curve = new EC(curveId);
        var pubkey = pub.data.subjectPrivateKey.data;
        return curve.verify(hash, sig, pubkey);
      }
      function dsaVerify(sig, hash, pub) {
        var p = pub.data.p;
        var q = pub.data.q;
        var g = pub.data.g;
        var y = pub.data.pub_key;
        var unpacked = parseKeys.signature.decode(sig, "der");
        var s = unpacked.s;
        var r = unpacked.r;
        checkValue(s, q);
        checkValue(r, q);
        var montp = BN.mont(p);
        var w = s.invm(q);
        var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);
        return v.cmp(r) === 0;
      }
      function checkValue(b, q) {
        if (b.cmpn(0) <= 0) {
          throw new Error("invalid sig");
        }
        if (b.cmp(q) >= 0) {
          throw new Error("invalid sig");
        }
      }
      module.exports = verify;
    },
    2240(module) {
      var toString = {}.toString;
      module.exports = Array.isArray || function(arr) {
        return toString.call(arr) == "[object Array]";
      };
    },
    6248(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var pna = __webpack_require__(3225);
      var objectKeys = Object.keys || function(obj) {
        var keys = [];
        for (var key in obj) {
          keys.push(key);
        }
        return keys;
      };
      module.exports = Duplex;
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var Readable = __webpack_require__(206);
      var Writable = __webpack_require__(7314);
      util.inherits(Duplex, Readable);
      {
        var keys = objectKeys(Writable.prototype);
        for (var v = 0; v < keys.length; v++) {
          var method = keys[v];
          if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
        }
      }
      function Duplex(options) {
        if (!(this instanceof Duplex)) return new Duplex(options);
        Readable.call(this, options);
        Writable.call(this, options);
        if (options && options.readable === false) this.readable = false;
        if (options && options.writable === false) this.writable = false;
        this.allowHalfOpen = true;
        if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
        this.once("end", onend);
      }
      Object.defineProperty(Duplex.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._writableState.highWaterMark;
        }
      });
      function onend() {
        if (this.allowHalfOpen || this._writableState.ended) return;
        pna.nextTick(onEndNT, this);
      }
      function onEndNT(self) {
        self.end();
      }
      Object.defineProperty(Duplex.prototype, "destroyed", {
        get: function() {
          if (this._readableState === undefined || this._writableState === undefined) {
            return false;
          }
          return this._readableState.destroyed && this._writableState.destroyed;
        },
        set: function(value) {
          if (this._readableState === undefined || this._writableState === undefined) {
            return;
          }
          this._readableState.destroyed = value;
          this._writableState.destroyed = value;
        }
      });
      Duplex.prototype._destroy = function(err, cb) {
        this.push(null);
        this.end();
        pna.nextTick(cb, err);
      };
    },
    5242(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = PassThrough;
      var Transform = __webpack_require__(1816);
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      util.inherits(PassThrough, Transform);
      function PassThrough(options) {
        if (!(this instanceof PassThrough)) return new PassThrough(options);
        Transform.call(this, options);
      }
      PassThrough.prototype._transform = function(chunk, encoding, cb) {
        cb(null, chunk);
      };
    },
    206(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var pna = __webpack_require__(3225);
      module.exports = Readable;
      var isArray = __webpack_require__(2240);
      var Duplex;
      Readable.ReadableState = ReadableState;
      var EE = __webpack_require__(7007).EventEmitter;
      var EElistenerCount = function(emitter, type) {
        return emitter.listeners(type).length;
      };
      var Stream = __webpack_require__(5567);
      var Buffer = __webpack_require__(4116).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var debugUtil = __webpack_require__(2668);
      var debug = void 0;
      if (debugUtil && debugUtil.debuglog) {
        debug = debugUtil.debuglog("stream");
      } else {
        debug = function() {};
      }
      var BufferList = __webpack_require__(672);
      var destroyImpl = __webpack_require__(6278);
      var StringDecoder;
      util.inherits(Readable, Stream);
      var kProxyEvents = [ "error", "close", "destroy", "pause", "resume" ];
      function prependListener(emitter, event, fn) {
        if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn);
        if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); else emitter._events[event] = [ fn, emitter._events[event] ];
      }
      function ReadableState(options, stream) {
        Duplex = Duplex || __webpack_require__(6248);
        options = options || {};
        var isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
        var hwm = options.highWaterMark;
        var readableHwm = options.readableHighWaterMark;
        var defaultHwm = this.objectMode ? 16 : 16 * 1024;
        if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm; else this.highWaterMark = defaultHwm;
        this.highWaterMark = Math.floor(this.highWaterMark);
        this.buffer = new BufferList;
        this.length = 0;
        this.pipes = null;
        this.pipesCount = 0;
        this.flowing = null;
        this.ended = false;
        this.endEmitted = false;
        this.reading = false;
        this.sync = true;
        this.needReadable = false;
        this.emittedReadable = false;
        this.readableListening = false;
        this.resumeScheduled = false;
        this.destroyed = false;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.awaitDrain = 0;
        this.readingMore = false;
        this.decoder = null;
        this.encoding = null;
        if (options.encoding) {
          if (!StringDecoder) StringDecoder = __webpack_require__(6427).I;
          this.decoder = new StringDecoder(options.encoding);
          this.encoding = options.encoding;
        }
      }
      function Readable(options) {
        Duplex = Duplex || __webpack_require__(6248);
        if (!(this instanceof Readable)) return new Readable(options);
        this._readableState = new ReadableState(options, this);
        this.readable = true;
        if (options) {
          if (typeof options.read === "function") this._read = options.read;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
        }
        Stream.call(this);
      }
      Object.defineProperty(Readable.prototype, "destroyed", {
        get: function() {
          if (this._readableState === undefined) {
            return false;
          }
          return this._readableState.destroyed;
        },
        set: function(value) {
          if (!this._readableState) {
            return;
          }
          this._readableState.destroyed = value;
        }
      });
      Readable.prototype.destroy = destroyImpl.destroy;
      Readable.prototype._undestroy = destroyImpl.undestroy;
      Readable.prototype._destroy = function(err, cb) {
        this.push(null);
        cb(err);
      };
      Readable.prototype.push = function(chunk, encoding) {
        var state = this._readableState;
        var skipChunkCheck;
        if (!state.objectMode) {
          if (typeof chunk === "string") {
            encoding = encoding || state.defaultEncoding;
            if (encoding !== state.encoding) {
              chunk = Buffer.from(chunk, encoding);
              encoding = "";
            }
            skipChunkCheck = true;
          }
        } else {
          skipChunkCheck = true;
        }
        return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
      };
      Readable.prototype.unshift = function(chunk) {
        return readableAddChunk(this, chunk, null, true, false);
      };
      function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
        var state = stream._readableState;
        if (chunk === null) {
          state.reading = false;
          onEofChunk(stream, state);
        } else {
          var er;
          if (!skipChunkCheck) er = chunkInvalid(state, chunk);
          if (er) {
            stream.emit("error", er);
          } else if (state.objectMode || chunk && chunk.length > 0) {
            if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
              chunk = _uint8ArrayToBuffer(chunk);
            }
            if (addToFront) {
              if (state.endEmitted) stream.emit("error", new Error("stream.unshift() after end event")); else addChunk(stream, state, chunk, true);
            } else if (state.ended) {
              stream.emit("error", new Error("stream.push() after EOF"));
            } else {
              state.reading = false;
              if (state.decoder && !encoding) {
                chunk = state.decoder.write(chunk);
                if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); else maybeReadMore(stream, state);
              } else {
                addChunk(stream, state, chunk, false);
              }
            }
          } else if (!addToFront) {
            state.reading = false;
          }
        }
        return needMoreData(state);
      }
      function addChunk(stream, state, chunk, addToFront) {
        if (state.flowing && state.length === 0 && !state.sync) {
          stream.emit("data", chunk);
          stream.read(0);
        } else {
          state.length += state.objectMode ? 1 : chunk.length;
          if (addToFront) state.buffer.unshift(chunk); else state.buffer.push(chunk);
          if (state.needReadable) emitReadable(stream);
        }
        maybeReadMore(stream, state);
      }
      function chunkInvalid(state, chunk) {
        var er;
        if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
          er = new TypeError("Invalid non-string/buffer chunk");
        }
        return er;
      }
      function needMoreData(state) {
        return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
      }
      Readable.prototype.isPaused = function() {
        return this._readableState.flowing === false;
      };
      Readable.prototype.setEncoding = function(enc) {
        if (!StringDecoder) StringDecoder = __webpack_require__(6427).I;
        this._readableState.decoder = new StringDecoder(enc);
        this._readableState.encoding = enc;
        return this;
      };
      var MAX_HWM = 8388608;
      function computeNewHighWaterMark(n) {
        if (n >= MAX_HWM) {
          n = MAX_HWM;
        } else {
          n--;
          n |= n >>> 1;
          n |= n >>> 2;
          n |= n >>> 4;
          n |= n >>> 8;
          n |= n >>> 16;
          n++;
        }
        return n;
      }
      function howMuchToRead(n, state) {
        if (n <= 0 || state.length === 0 && state.ended) return 0;
        if (state.objectMode) return 1;
        if (n !== n) {
          if (state.flowing && state.length) return state.buffer.head.data.length; else return state.length;
        }
        if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
        if (n <= state.length) return n;
        if (!state.ended) {
          state.needReadable = true;
          return 0;
        }
        return state.length;
      }
      Readable.prototype.read = function(n) {
        debug("read", n);
        n = parseInt(n, 10);
        var state = this._readableState;
        var nOrig = n;
        if (n !== 0) state.emittedReadable = false;
        if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
          debug("read: emitReadable", state.length, state.ended);
          if (state.length === 0 && state.ended) endReadable(this); else emitReadable(this);
          return null;
        }
        n = howMuchToRead(n, state);
        if (n === 0 && state.ended) {
          if (state.length === 0) endReadable(this);
          return null;
        }
        var doRead = state.needReadable;
        debug("need readable", doRead);
        if (state.length === 0 || state.length - n < state.highWaterMark) {
          doRead = true;
          debug("length less than watermark", doRead);
        }
        if (state.ended || state.reading) {
          doRead = false;
          debug("reading or ended", doRead);
        } else if (doRead) {
          debug("do read");
          state.reading = true;
          state.sync = true;
          if (state.length === 0) state.needReadable = true;
          this._read(state.highWaterMark);
          state.sync = false;
          if (!state.reading) n = howMuchToRead(nOrig, state);
        }
        var ret;
        if (n > 0) ret = fromList(n, state); else ret = null;
        if (ret === null) {
          state.needReadable = true;
          n = 0;
        } else {
          state.length -= n;
        }
        if (state.length === 0) {
          if (!state.ended) state.needReadable = true;
          if (nOrig !== n && state.ended) endReadable(this);
        }
        if (ret !== null) this.emit("data", ret);
        return ret;
      };
      function onEofChunk(stream, state) {
        if (state.ended) return;
        if (state.decoder) {
          var chunk = state.decoder.end();
          if (chunk && chunk.length) {
            state.buffer.push(chunk);
            state.length += state.objectMode ? 1 : chunk.length;
          }
        }
        state.ended = true;
        emitReadable(stream);
      }
      function emitReadable(stream) {
        var state = stream._readableState;
        state.needReadable = false;
        if (!state.emittedReadable) {
          debug("emitReadable", state.flowing);
          state.emittedReadable = true;
          if (state.sync) pna.nextTick(emitReadable_, stream); else emitReadable_(stream);
        }
      }
      function emitReadable_(stream) {
        debug("emit readable");
        stream.emit("readable");
        flow(stream);
      }
      function maybeReadMore(stream, state) {
        if (!state.readingMore) {
          state.readingMore = true;
          pna.nextTick(maybeReadMore_, stream, state);
        }
      }
      function maybeReadMore_(stream, state) {
        var len = state.length;
        while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
          debug("maybeReadMore read 0");
          stream.read(0);
          if (len === state.length) break; else len = state.length;
        }
        state.readingMore = false;
      }
      Readable.prototype._read = function(n) {
        this.emit("error", new Error("_read() is not implemented"));
      };
      Readable.prototype.pipe = function(dest, pipeOpts) {
        var src = this;
        var state = this._readableState;
        switch (state.pipesCount) {
         case 0:
          state.pipes = dest;
          break;

         case 1:
          state.pipes = [ state.pipes, dest ];
          break;

         default:
          state.pipes.push(dest);
          break;
        }
        state.pipesCount += 1;
        debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
        var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
        var endFn = doEnd ? onend : unpipe;
        if (state.endEmitted) pna.nextTick(endFn); else src.once("end", endFn);
        dest.on("unpipe", onunpipe);
        function onunpipe(readable, unpipeInfo) {
          debug("onunpipe");
          if (readable === src) {
            if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
              unpipeInfo.hasUnpiped = true;
              cleanup();
            }
          }
        }
        function onend() {
          debug("onend");
          dest.end();
        }
        var ondrain = pipeOnDrain(src);
        dest.on("drain", ondrain);
        var cleanedUp = false;
        function cleanup() {
          debug("cleanup");
          dest.removeListener("close", onclose);
          dest.removeListener("finish", onfinish);
          dest.removeListener("drain", ondrain);
          dest.removeListener("error", onerror);
          dest.removeListener("unpipe", onunpipe);
          src.removeListener("end", onend);
          src.removeListener("end", unpipe);
          src.removeListener("data", ondata);
          cleanedUp = true;
          if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
        }
        var increasedAwaitDrain = false;
        src.on("data", ondata);
        function ondata(chunk) {
          debug("ondata");
          increasedAwaitDrain = false;
          var ret = dest.write(chunk);
          if (false === ret && !increasedAwaitDrain) {
            if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
              debug("false write response, pause", state.awaitDrain);
              state.awaitDrain++;
              increasedAwaitDrain = true;
            }
            src.pause();
          }
        }
        function onerror(er) {
          debug("onerror", er);
          unpipe();
          dest.removeListener("error", onerror);
          if (EElistenerCount(dest, "error") === 0) dest.emit("error", er);
        }
        prependListener(dest, "error", onerror);
        function onclose() {
          dest.removeListener("finish", onfinish);
          unpipe();
        }
        dest.once("close", onclose);
        function onfinish() {
          debug("onfinish");
          dest.removeListener("close", onclose);
          unpipe();
        }
        dest.once("finish", onfinish);
        function unpipe() {
          debug("unpipe");
          src.unpipe(dest);
        }
        dest.emit("pipe", src);
        if (!state.flowing) {
          debug("pipe resume");
          src.resume();
        }
        return dest;
      };
      function pipeOnDrain(src) {
        return function() {
          var state = src._readableState;
          debug("pipeOnDrain", state.awaitDrain);
          if (state.awaitDrain) state.awaitDrain--;
          if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
            state.flowing = true;
            flow(src);
          }
        };
      }
      Readable.prototype.unpipe = function(dest) {
        var state = this._readableState;
        var unpipeInfo = {
          hasUnpiped: false
        };
        if (state.pipesCount === 0) return this;
        if (state.pipesCount === 1) {
          if (dest && dest !== state.pipes) return this;
          if (!dest) dest = state.pipes;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          if (dest) dest.emit("unpipe", this, unpipeInfo);
          return this;
        }
        if (!dest) {
          var dests = state.pipes;
          var len = state.pipesCount;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          for (var i = 0; i < len; i++) {
            dests[i].emit("unpipe", this, {
              hasUnpiped: false
            });
          }
          return this;
        }
        var index = indexOf(state.pipes, dest);
        if (index === -1) return this;
        state.pipes.splice(index, 1);
        state.pipesCount -= 1;
        if (state.pipesCount === 1) state.pipes = state.pipes[0];
        dest.emit("unpipe", this, unpipeInfo);
        return this;
      };
      Readable.prototype.on = function(ev, fn) {
        var res = Stream.prototype.on.call(this, ev, fn);
        if (ev === "data") {
          if (this._readableState.flowing !== false) this.resume();
        } else if (ev === "readable") {
          var state = this._readableState;
          if (!state.endEmitted && !state.readableListening) {
            state.readableListening = state.needReadable = true;
            state.emittedReadable = false;
            if (!state.reading) {
              pna.nextTick(nReadingNextTick, this);
            } else if (state.length) {
              emitReadable(this);
            }
          }
        }
        return res;
      };
      Readable.prototype.addListener = Readable.prototype.on;
      function nReadingNextTick(self) {
        debug("readable nexttick read 0");
        self.read(0);
      }
      Readable.prototype.resume = function() {
        var state = this._readableState;
        if (!state.flowing) {
          debug("resume");
          state.flowing = true;
          resume(this, state);
        }
        return this;
      };
      function resume(stream, state) {
        if (!state.resumeScheduled) {
          state.resumeScheduled = true;
          pna.nextTick(resume_, stream, state);
        }
      }
      function resume_(stream, state) {
        if (!state.reading) {
          debug("resume read 0");
          stream.read(0);
        }
        state.resumeScheduled = false;
        state.awaitDrain = 0;
        stream.emit("resume");
        flow(stream);
        if (state.flowing && !state.reading) stream.read(0);
      }
      Readable.prototype.pause = function() {
        debug("call pause flowing=%j", this._readableState.flowing);
        if (false !== this._readableState.flowing) {
          debug("pause");
          this._readableState.flowing = false;
          this.emit("pause");
        }
        return this;
      };
      function flow(stream) {
        var state = stream._readableState;
        debug("flow", state.flowing);
        while (state.flowing && stream.read() !== null) {}
      }
      Readable.prototype.wrap = function(stream) {
        var _this = this;
        var state = this._readableState;
        var paused = false;
        stream.on("end", (function() {
          debug("wrapped end");
          if (state.decoder && !state.ended) {
            var chunk = state.decoder.end();
            if (chunk && chunk.length) _this.push(chunk);
          }
          _this.push(null);
        }));
        stream.on("data", (function(chunk) {
          debug("wrapped data");
          if (state.decoder) chunk = state.decoder.write(chunk);
          if (state.objectMode && (chunk === null || chunk === undefined)) return; else if (!state.objectMode && (!chunk || !chunk.length)) return;
          var ret = _this.push(chunk);
          if (!ret) {
            paused = true;
            stream.pause();
          }
        }));
        for (var i in stream) {
          if (this[i] === undefined && typeof stream[i] === "function") {
            this[i] = function(method) {
              return function() {
                return stream[method].apply(stream, arguments);
              };
            }(i);
          }
        }
        for (var n = 0; n < kProxyEvents.length; n++) {
          stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
        }
        this._read = function(n) {
          debug("wrapped _read", n);
          if (paused) {
            paused = false;
            stream.resume();
          }
        };
        return this;
      };
      Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._readableState.highWaterMark;
        }
      });
      Readable._fromList = fromList;
      function fromList(n, state) {
        if (state.length === 0) return null;
        var ret;
        if (state.objectMode) ret = state.buffer.shift(); else if (!n || n >= state.length) {
          if (state.decoder) ret = state.buffer.join(""); else if (state.buffer.length === 1) ret = state.buffer.head.data; else ret = state.buffer.concat(state.length);
          state.buffer.clear();
        } else {
          ret = fromListPartial(n, state.buffer, state.decoder);
        }
        return ret;
      }
      function fromListPartial(n, list, hasStrings) {
        var ret;
        if (n < list.head.data.length) {
          ret = list.head.data.slice(0, n);
          list.head.data = list.head.data.slice(n);
        } else if (n === list.head.data.length) {
          ret = list.shift();
        } else {
          ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
        }
        return ret;
      }
      function copyFromBufferString(n, list) {
        var p = list.head;
        var c = 1;
        var ret = p.data;
        n -= ret.length;
        while (p = p.next) {
          var str = p.data;
          var nb = n > str.length ? str.length : n;
          if (nb === str.length) ret += str; else ret += str.slice(0, n);
          n -= nb;
          if (n === 0) {
            if (nb === str.length) {
              ++c;
              if (p.next) list.head = p.next; else list.head = list.tail = null;
            } else {
              list.head = p;
              p.data = str.slice(nb);
            }
            break;
          }
          ++c;
        }
        list.length -= c;
        return ret;
      }
      function copyFromBuffer(n, list) {
        var ret = Buffer.allocUnsafe(n);
        var p = list.head;
        var c = 1;
        p.data.copy(ret);
        n -= p.data.length;
        while (p = p.next) {
          var buf = p.data;
          var nb = n > buf.length ? buf.length : n;
          buf.copy(ret, ret.length - n, 0, nb);
          n -= nb;
          if (n === 0) {
            if (nb === buf.length) {
              ++c;
              if (p.next) list.head = p.next; else list.head = list.tail = null;
            } else {
              list.head = p;
              p.data = buf.slice(nb);
            }
            break;
          }
          ++c;
        }
        list.length -= c;
        return ret;
      }
      function endReadable(stream) {
        var state = stream._readableState;
        if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
        if (!state.endEmitted) {
          state.ended = true;
          pna.nextTick(endReadableNT, state, stream);
        }
      }
      function endReadableNT(state, stream) {
        if (!state.endEmitted && state.length === 0) {
          state.endEmitted = true;
          stream.readable = false;
          stream.emit("end");
        }
      }
      function indexOf(xs, x) {
        for (var i = 0, l = xs.length; i < l; i++) {
          if (xs[i] === x) return i;
        }
        return -1;
      }
    },
    1816(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = Transform;
      var Duplex = __webpack_require__(6248);
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      util.inherits(Transform, Duplex);
      function afterTransform(er, data) {
        var ts = this._transformState;
        ts.transforming = false;
        var cb = ts.writecb;
        if (!cb) {
          return this.emit("error", new Error("write callback called multiple times"));
        }
        ts.writechunk = null;
        ts.writecb = null;
        if (data != null) this.push(data);
        cb(er);
        var rs = this._readableState;
        rs.reading = false;
        if (rs.needReadable || rs.length < rs.highWaterMark) {
          this._read(rs.highWaterMark);
        }
      }
      function Transform(options) {
        if (!(this instanceof Transform)) return new Transform(options);
        Duplex.call(this, options);
        this._transformState = {
          afterTransform: afterTransform.bind(this),
          needTransform: false,
          transforming: false,
          writecb: null,
          writechunk: null,
          writeencoding: null
        };
        this._readableState.needReadable = true;
        this._readableState.sync = false;
        if (options) {
          if (typeof options.transform === "function") this._transform = options.transform;
          if (typeof options.flush === "function") this._flush = options.flush;
        }
        this.on("prefinish", prefinish);
      }
      function prefinish() {
        var _this = this;
        if (typeof this._flush === "function") {
          this._flush((function(er, data) {
            done(_this, er, data);
          }));
        } else {
          done(this, null, null);
        }
      }
      Transform.prototype.push = function(chunk, encoding) {
        this._transformState.needTransform = false;
        return Duplex.prototype.push.call(this, chunk, encoding);
      };
      Transform.prototype._transform = function(chunk, encoding, cb) {
        throw new Error("_transform() is not implemented");
      };
      Transform.prototype._write = function(chunk, encoding, cb) {
        var ts = this._transformState;
        ts.writecb = cb;
        ts.writechunk = chunk;
        ts.writeencoding = encoding;
        if (!ts.transforming) {
          var rs = this._readableState;
          if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
        }
      };
      Transform.prototype._read = function(n) {
        var ts = this._transformState;
        if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
          ts.transforming = true;
          this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
        } else {
          ts.needTransform = true;
        }
      };
      Transform.prototype._destroy = function(err, cb) {
        var _this2 = this;
        Duplex.prototype._destroy.call(this, err, (function(err2) {
          cb(err2);
          _this2.emit("close");
        }));
      };
      function done(stream, er, data) {
        if (er) return stream.emit("error", er);
        if (data != null) stream.push(data);
        if (stream._writableState.length) throw new Error("Calling transform done when ws.length != 0");
        if (stream._transformState.transforming) throw new Error("Calling transform done when still transforming");
        return stream.push(null);
      }
    },
    7314(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var pna = __webpack_require__(3225);
      module.exports = Writable;
      function WriteReq(chunk, encoding, cb) {
        this.chunk = chunk;
        this.encoding = encoding;
        this.callback = cb;
        this.next = null;
      }
      function CorkedRequest(state) {
        var _this = this;
        this.next = null;
        this.entry = null;
        this.finish = function() {
          onCorkedFinish(_this, state);
        };
      }
      var asyncWrite = !process.browser && [ "v0.10", "v0.9." ].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
      var Duplex;
      Writable.WritableState = WritableState;
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var internalUtil = {
        deprecate: __webpack_require__(4643)
      };
      var Stream = __webpack_require__(5567);
      var Buffer = __webpack_require__(4116).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var destroyImpl = __webpack_require__(6278);
      util.inherits(Writable, Stream);
      function nop() {}
      function WritableState(options, stream) {
        Duplex = Duplex || __webpack_require__(6248);
        options = options || {};
        var isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
        var hwm = options.highWaterMark;
        var writableHwm = options.writableHighWaterMark;
        var defaultHwm = this.objectMode ? 16 : 16 * 1024;
        if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm; else this.highWaterMark = defaultHwm;
        this.highWaterMark = Math.floor(this.highWaterMark);
        this.finalCalled = false;
        this.needDrain = false;
        this.ending = false;
        this.ended = false;
        this.finished = false;
        this.destroyed = false;
        var noDecode = options.decodeStrings === false;
        this.decodeStrings = !noDecode;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.length = 0;
        this.writing = false;
        this.corked = 0;
        this.sync = true;
        this.bufferProcessing = false;
        this.onwrite = function(er) {
          onwrite(stream, er);
        };
        this.writecb = null;
        this.writelen = 0;
        this.bufferedRequest = null;
        this.lastBufferedRequest = null;
        this.pendingcb = 0;
        this.prefinished = false;
        this.errorEmitted = false;
        this.bufferedRequestCount = 0;
        this.corkedRequestsFree = new CorkedRequest(this);
      }
      WritableState.prototype.getBuffer = function getBuffer() {
        var current = this.bufferedRequest;
        var out = [];
        while (current) {
          out.push(current);
          current = current.next;
        }
        return out;
      };
      (function() {
        try {
          Object.defineProperty(WritableState.prototype, "buffer", {
            get: internalUtil.deprecate((function() {
              return this.getBuffer();
            }), "_writableState.buffer is deprecated. Use _writableState.getBuffer " + "instead.", "DEP0003")
          });
        } catch (_) {}
      })();
      var realHasInstance;
      if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
        realHasInstance = Function.prototype[Symbol.hasInstance];
        Object.defineProperty(Writable, Symbol.hasInstance, {
          value: function(object) {
            if (realHasInstance.call(this, object)) return true;
            if (this !== Writable) return false;
            return object && object._writableState instanceof WritableState;
          }
        });
      } else {
        realHasInstance = function(object) {
          return object instanceof this;
        };
      }
      function Writable(options) {
        Duplex = Duplex || __webpack_require__(6248);
        if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
          return new Writable(options);
        }
        this._writableState = new WritableState(options, this);
        this.writable = true;
        if (options) {
          if (typeof options.write === "function") this._write = options.write;
          if (typeof options.writev === "function") this._writev = options.writev;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
          if (typeof options.final === "function") this._final = options.final;
        }
        Stream.call(this);
      }
      Writable.prototype.pipe = function() {
        this.emit("error", new Error("Cannot pipe, not readable"));
      };
      function writeAfterEnd(stream, cb) {
        var er = new Error("write after end");
        stream.emit("error", er);
        pna.nextTick(cb, er);
      }
      function validChunk(stream, state, chunk, cb) {
        var valid = true;
        var er = false;
        if (chunk === null) {
          er = new TypeError("May not write null values to stream");
        } else if (typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
          er = new TypeError("Invalid non-string/buffer chunk");
        }
        if (er) {
          stream.emit("error", er);
          pna.nextTick(cb, er);
          valid = false;
        }
        return valid;
      }
      Writable.prototype.write = function(chunk, encoding, cb) {
        var state = this._writableState;
        var ret = false;
        var isBuf = !state.objectMode && _isUint8Array(chunk);
        if (isBuf && !Buffer.isBuffer(chunk)) {
          chunk = _uint8ArrayToBuffer(chunk);
        }
        if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (isBuf) encoding = "buffer"; else if (!encoding) encoding = state.defaultEncoding;
        if (typeof cb !== "function") cb = nop;
        if (state.ended) writeAfterEnd(this, cb); else if (isBuf || validChunk(this, state, chunk, cb)) {
          state.pendingcb++;
          ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
        }
        return ret;
      };
      Writable.prototype.cork = function() {
        var state = this._writableState;
        state.corked++;
      };
      Writable.prototype.uncork = function() {
        var state = this._writableState;
        if (state.corked) {
          state.corked--;
          if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
        }
      };
      Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
        if (typeof encoding === "string") encoding = encoding.toLowerCase();
        if (!([ "hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw" ].indexOf((encoding + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + encoding);
        this._writableState.defaultEncoding = encoding;
        return this;
      };
      function decodeChunk(state, chunk, encoding) {
        if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
          chunk = Buffer.from(chunk, encoding);
        }
        return chunk;
      }
      Object.defineProperty(Writable.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._writableState.highWaterMark;
        }
      });
      function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
        if (!isBuf) {
          var newChunk = decodeChunk(state, chunk, encoding);
          if (chunk !== newChunk) {
            isBuf = true;
            encoding = "buffer";
            chunk = newChunk;
          }
        }
        var len = state.objectMode ? 1 : chunk.length;
        state.length += len;
        var ret = state.length < state.highWaterMark;
        if (!ret) state.needDrain = true;
        if (state.writing || state.corked) {
          var last = state.lastBufferedRequest;
          state.lastBufferedRequest = {
            chunk,
            encoding,
            isBuf,
            callback: cb,
            next: null
          };
          if (last) {
            last.next = state.lastBufferedRequest;
          } else {
            state.bufferedRequest = state.lastBufferedRequest;
          }
          state.bufferedRequestCount += 1;
        } else {
          doWrite(stream, state, false, len, chunk, encoding, cb);
        }
        return ret;
      }
      function doWrite(stream, state, writev, len, chunk, encoding, cb) {
        state.writelen = len;
        state.writecb = cb;
        state.writing = true;
        state.sync = true;
        if (writev) stream._writev(chunk, state.onwrite); else stream._write(chunk, encoding, state.onwrite);
        state.sync = false;
      }
      function onwriteError(stream, state, sync, er, cb) {
        --state.pendingcb;
        if (sync) {
          pna.nextTick(cb, er);
          pna.nextTick(finishMaybe, stream, state);
          stream._writableState.errorEmitted = true;
          stream.emit("error", er);
        } else {
          cb(er);
          stream._writableState.errorEmitted = true;
          stream.emit("error", er);
          finishMaybe(stream, state);
        }
      }
      function onwriteStateUpdate(state) {
        state.writing = false;
        state.writecb = null;
        state.length -= state.writelen;
        state.writelen = 0;
      }
      function onwrite(stream, er) {
        var state = stream._writableState;
        var sync = state.sync;
        var cb = state.writecb;
        onwriteStateUpdate(state);
        if (er) onwriteError(stream, state, sync, er, cb); else {
          var finished = needFinish(state);
          if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
            clearBuffer(stream, state);
          }
          if (sync) {
            asyncWrite(afterWrite, stream, state, finished, cb);
          } else {
            afterWrite(stream, state, finished, cb);
          }
        }
      }
      function afterWrite(stream, state, finished, cb) {
        if (!finished) onwriteDrain(stream, state);
        state.pendingcb--;
        cb();
        finishMaybe(stream, state);
      }
      function onwriteDrain(stream, state) {
        if (state.length === 0 && state.needDrain) {
          state.needDrain = false;
          stream.emit("drain");
        }
      }
      function clearBuffer(stream, state) {
        state.bufferProcessing = true;
        var entry = state.bufferedRequest;
        if (stream._writev && entry && entry.next) {
          var l = state.bufferedRequestCount;
          var buffer = new Array(l);
          var holder = state.corkedRequestsFree;
          holder.entry = entry;
          var count = 0;
          var allBuffers = true;
          while (entry) {
            buffer[count] = entry;
            if (!entry.isBuf) allBuffers = false;
            entry = entry.next;
            count += 1;
          }
          buffer.allBuffers = allBuffers;
          doWrite(stream, state, true, state.length, buffer, "", holder.finish);
          state.pendingcb++;
          state.lastBufferedRequest = null;
          if (holder.next) {
            state.corkedRequestsFree = holder.next;
            holder.next = null;
          } else {
            state.corkedRequestsFree = new CorkedRequest(state);
          }
          state.bufferedRequestCount = 0;
        } else {
          while (entry) {
            var chunk = entry.chunk;
            var encoding = entry.encoding;
            var cb = entry.callback;
            var len = state.objectMode ? 1 : chunk.length;
            doWrite(stream, state, false, len, chunk, encoding, cb);
            entry = entry.next;
            state.bufferedRequestCount--;
            if (state.writing) {
              break;
            }
          }
          if (entry === null) state.lastBufferedRequest = null;
        }
        state.bufferedRequest = entry;
        state.bufferProcessing = false;
      }
      Writable.prototype._write = function(chunk, encoding, cb) {
        cb(new Error("_write() is not implemented"));
      };
      Writable.prototype._writev = null;
      Writable.prototype.end = function(chunk, encoding, cb) {
        var state = this._writableState;
        if (typeof chunk === "function") {
          cb = chunk;
          chunk = null;
          encoding = null;
        } else if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
        if (state.corked) {
          state.corked = 1;
          this.uncork();
        }
        if (!state.ending) endWritable(this, state, cb);
      };
      function needFinish(state) {
        return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
      }
      function callFinal(stream, state) {
        stream._final((function(err) {
          state.pendingcb--;
          if (err) {
            stream.emit("error", err);
          }
          state.prefinished = true;
          stream.emit("prefinish");
          finishMaybe(stream, state);
        }));
      }
      function prefinish(stream, state) {
        if (!state.prefinished && !state.finalCalled) {
          if (typeof stream._final === "function") {
            state.pendingcb++;
            state.finalCalled = true;
            pna.nextTick(callFinal, stream, state);
          } else {
            state.prefinished = true;
            stream.emit("prefinish");
          }
        }
      }
      function finishMaybe(stream, state) {
        var need = needFinish(state);
        if (need) {
          prefinish(stream, state);
          if (state.pendingcb === 0) {
            state.finished = true;
            stream.emit("finish");
          }
        }
        return need;
      }
      function endWritable(stream, state, cb) {
        state.ending = true;
        finishMaybe(stream, state);
        if (cb) {
          if (state.finished) pna.nextTick(cb); else stream.once("finish", cb);
        }
        state.ended = true;
        stream.writable = false;
      }
      function onCorkedFinish(corkReq, state, err) {
        var entry = corkReq.entry;
        corkReq.entry = null;
        while (entry) {
          var cb = entry.callback;
          state.pendingcb--;
          cb(err);
          entry = entry.next;
        }
        state.corkedRequestsFree.next = corkReq;
      }
      Object.defineProperty(Writable.prototype, "destroyed", {
        get: function() {
          if (this._writableState === undefined) {
            return false;
          }
          return this._writableState.destroyed;
        },
        set: function(value) {
          if (!this._writableState) {
            return;
          }
          this._writableState.destroyed = value;
        }
      });
      Writable.prototype.destroy = destroyImpl.destroy;
      Writable.prototype._undestroy = destroyImpl.undestroy;
      Writable.prototype._destroy = function(err, cb) {
        this.end();
        cb(err);
      };
    },
    672(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      function _classCallCheck(instance, Constructor) {
        if (!(instance instanceof Constructor)) {
          throw new TypeError("Cannot call a class as a function");
        }
      }
      var Buffer = __webpack_require__(4116).Buffer;
      var util = __webpack_require__(1638);
      function copyBuffer(src, target, offset) {
        src.copy(target, offset);
      }
      module.exports = function() {
        function BufferList() {
          _classCallCheck(this, BufferList);
          this.head = null;
          this.tail = null;
          this.length = 0;
        }
        BufferList.prototype.push = function push(v) {
          var entry = {
            data: v,
            next: null
          };
          if (this.length > 0) this.tail.next = entry; else this.head = entry;
          this.tail = entry;
          ++this.length;
        };
        BufferList.prototype.unshift = function unshift(v) {
          var entry = {
            data: v,
            next: this.head
          };
          if (this.length === 0) this.tail = entry;
          this.head = entry;
          ++this.length;
        };
        BufferList.prototype.shift = function shift() {
          if (this.length === 0) return;
          var ret = this.head.data;
          if (this.length === 1) this.head = this.tail = null; else this.head = this.head.next;
          --this.length;
          return ret;
        };
        BufferList.prototype.clear = function clear() {
          this.head = this.tail = null;
          this.length = 0;
        };
        BufferList.prototype.join = function join(s) {
          if (this.length === 0) return "";
          var p = this.head;
          var ret = "" + p.data;
          while (p = p.next) {
            ret += s + p.data;
          }
          return ret;
        };
        BufferList.prototype.concat = function concat(n) {
          if (this.length === 0) return Buffer.alloc(0);
          var ret = Buffer.allocUnsafe(n >>> 0);
          var p = this.head;
          var i = 0;
          while (p) {
            copyBuffer(p.data, ret, i);
            i += p.data.length;
            p = p.next;
          }
          return ret;
        };
        return BufferList;
      }();
      if (util && util.inspect && util.inspect.custom) {
        module.exports.prototype[util.inspect.custom] = function() {
          var obj = util.inspect({
            length: this.length
          });
          return this.constructor.name + " " + obj;
        };
      }
    },
    6278(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var pna = __webpack_require__(3225);
      function destroy(err, cb) {
        var _this = this;
        var readableDestroyed = this._readableState && this._readableState.destroyed;
        var writableDestroyed = this._writableState && this._writableState.destroyed;
        if (readableDestroyed || writableDestroyed) {
          if (cb) {
            cb(err);
          } else if (err) {
            if (!this._writableState) {
              pna.nextTick(emitErrorNT, this, err);
            } else if (!this._writableState.errorEmitted) {
              this._writableState.errorEmitted = true;
              pna.nextTick(emitErrorNT, this, err);
            }
          }
          return this;
        }
        if (this._readableState) {
          this._readableState.destroyed = true;
        }
        if (this._writableState) {
          this._writableState.destroyed = true;
        }
        this._destroy(err || null, (function(err) {
          if (!cb && err) {
            if (!_this._writableState) {
              pna.nextTick(emitErrorNT, _this, err);
            } else if (!_this._writableState.errorEmitted) {
              _this._writableState.errorEmitted = true;
              pna.nextTick(emitErrorNT, _this, err);
            }
          } else if (cb) {
            cb(err);
          }
        }));
        return this;
      }
      function undestroy() {
        if (this._readableState) {
          this._readableState.destroyed = false;
          this._readableState.reading = false;
          this._readableState.ended = false;
          this._readableState.endEmitted = false;
        }
        if (this._writableState) {
          this._writableState.destroyed = false;
          this._writableState.ended = false;
          this._writableState.ending = false;
          this._writableState.finalCalled = false;
          this._writableState.prefinished = false;
          this._writableState.finished = false;
          this._writableState.errorEmitted = false;
        }
      }
      function emitErrorNT(self, err) {
        self.emit("error", err);
      }
      module.exports = {
        destroy,
        undestroy
      };
    },
    5567(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = __webpack_require__(7007).EventEmitter;
    },
    4116(module, exports, __webpack_require__) {
      var buffer = __webpack_require__(8287);
      var Buffer = buffer.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer;
      } else {
        copyProps(buffer, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          throw new TypeError("Argument must not be a number");
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function(size, fill, encoding) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === "string") {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return buffer.SlowBuffer(size);
      };
    },
    6737(module, exports, __webpack_require__) {
      exports = module.exports = __webpack_require__(206);
      exports.Stream = exports;
      exports.Readable = exports;
      exports.Writable = __webpack_require__(7314);
      exports.Duplex = __webpack_require__(6248);
      exports.Transform = __webpack_require__(1816);
      exports.PassThrough = __webpack_require__(5242);
    },
    6427(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(8393).Buffer;
      var isEncoding = Buffer.isEncoding || function(encoding) {
        encoding = "" + encoding;
        switch (encoding && encoding.toLowerCase()) {
         case "hex":
         case "utf8":
         case "utf-8":
         case "ascii":
         case "binary":
         case "base64":
         case "ucs2":
         case "ucs-2":
         case "utf16le":
         case "utf-16le":
         case "raw":
          return true;

         default:
          return false;
        }
      };
      function _normalizeEncoding(enc) {
        if (!enc) return "utf8";
        var retried;
        while (true) {
          switch (enc) {
           case "utf8":
           case "utf-8":
            return "utf8";

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return "utf16le";

           case "latin1":
           case "binary":
            return "latin1";

           case "base64":
           case "ascii":
           case "hex":
            return enc;

           default:
            if (retried) return;
            enc = ("" + enc).toLowerCase();
            retried = true;
          }
        }
      }
      function normalizeEncoding(enc) {
        var nenc = _normalizeEncoding(enc);
        if (typeof nenc !== "string" && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc);
        return nenc || enc;
      }
      exports.I = StringDecoder;
      function StringDecoder(encoding) {
        this.encoding = normalizeEncoding(encoding);
        var nb;
        switch (this.encoding) {
         case "utf16le":
          this.text = utf16Text;
          this.end = utf16End;
          nb = 4;
          break;

         case "utf8":
          this.fillLast = utf8FillLast;
          nb = 4;
          break;

         case "base64":
          this.text = base64Text;
          this.end = base64End;
          nb = 3;
          break;

         default:
          this.write = simpleWrite;
          this.end = simpleEnd;
          return;
        }
        this.lastNeed = 0;
        this.lastTotal = 0;
        this.lastChar = Buffer.allocUnsafe(nb);
      }
      StringDecoder.prototype.write = function(buf) {
        if (buf.length === 0) return "";
        var r;
        var i;
        if (this.lastNeed) {
          r = this.fillLast(buf);
          if (r === undefined) return "";
          i = this.lastNeed;
          this.lastNeed = 0;
        } else {
          i = 0;
        }
        if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
        return r || "";
      };
      StringDecoder.prototype.end = utf8End;
      StringDecoder.prototype.text = utf8Text;
      StringDecoder.prototype.fillLast = function(buf) {
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
        this.lastNeed -= buf.length;
      };
      function utf8CheckByte(byte) {
        if (byte <= 127) return 0; else if (byte >> 5 === 6) return 2; else if (byte >> 4 === 14) return 3; else if (byte >> 3 === 30) return 4;
        return byte >> 6 === 2 ? -1 : -2;
      }
      function utf8CheckIncomplete(self, buf, i) {
        var j = buf.length - 1;
        if (j < i) return 0;
        var nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 1;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 2;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) {
            if (nb === 2) nb = 0; else self.lastNeed = nb - 3;
          }
          return nb;
        }
        return 0;
      }
      function utf8CheckExtraBytes(self, buf, p) {
        if ((buf[0] & 192) !== 128) {
          self.lastNeed = 0;
          return "�";
        }
        if (self.lastNeed > 1 && buf.length > 1) {
          if ((buf[1] & 192) !== 128) {
            self.lastNeed = 1;
            return "�";
          }
          if (self.lastNeed > 2 && buf.length > 2) {
            if ((buf[2] & 192) !== 128) {
              self.lastNeed = 2;
              return "�";
            }
          }
        }
      }
      function utf8FillLast(buf) {
        var p = this.lastTotal - this.lastNeed;
        var r = utf8CheckExtraBytes(this, buf, p);
        if (r !== undefined) return r;
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, p, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, p, 0, buf.length);
        this.lastNeed -= buf.length;
      }
      function utf8Text(buf, i) {
        var total = utf8CheckIncomplete(this, buf, i);
        if (!this.lastNeed) return buf.toString("utf8", i);
        this.lastTotal = total;
        var end = buf.length - (total - this.lastNeed);
        buf.copy(this.lastChar, 0, end);
        return buf.toString("utf8", i, end);
      }
      function utf8End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + "�";
        return r;
      }
      function utf16Text(buf, i) {
        if ((buf.length - i) % 2 === 0) {
          var r = buf.toString("utf16le", i);
          if (r) {
            var c = r.charCodeAt(r.length - 1);
            if (c >= 55296 && c <= 56319) {
              this.lastNeed = 2;
              this.lastTotal = 4;
              this.lastChar[0] = buf[buf.length - 2];
              this.lastChar[1] = buf[buf.length - 1];
              return r.slice(0, -1);
            }
          }
          return r;
        }
        this.lastNeed = 1;
        this.lastTotal = 2;
        this.lastChar[0] = buf[buf.length - 1];
        return buf.toString("utf16le", i, buf.length - 1);
      }
      function utf16End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) {
          var end = this.lastTotal - this.lastNeed;
          return r + this.lastChar.toString("utf16le", 0, end);
        }
        return r;
      }
      function base64Text(buf, i) {
        var n = (buf.length - i) % 3;
        if (n === 0) return buf.toString("base64", i);
        this.lastNeed = 3 - n;
        this.lastTotal = 3;
        if (n === 1) {
          this.lastChar[0] = buf[buf.length - 1];
        } else {
          this.lastChar[0] = buf[buf.length - 2];
          this.lastChar[1] = buf[buf.length - 1];
        }
        return buf.toString("base64", i, buf.length - n);
      }
      function base64End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
        return r;
      }
      function simpleWrite(buf) {
        return buf.toString(this.encoding);
      }
      function simpleEnd(buf) {
        return buf && buf.length ? this.write(buf) : "";
      }
    },
    8393(module, exports, __webpack_require__) {
      var buffer = __webpack_require__(8287);
      var Buffer = buffer.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer;
      } else {
        copyProps(buffer, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          throw new TypeError("Argument must not be a number");
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function(size, fill, encoding) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === "string") {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return buffer.SlowBuffer(size);
      };
    },
    295(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      module.exports = function xor(a, b) {
        var length = Math.min(a.length, b.length);
        var buffer = new Buffer(length);
        for (var i = 0; i < length; ++i) {
          buffer[i] = a[i] ^ b[i];
        }
        return buffer;
      };
    },
    8287(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      const base64 = __webpack_require__(7526);
      const ieee754 = __webpack_require__(251);
      const customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null;
      exports.Buffer = Buffer;
      exports.SlowBuffer = SlowBuffer;
      exports.INSPECT_MAX_BYTES = 50;
      const K_MAX_LENGTH = 2147483647;
      exports.kMaxLength = K_MAX_LENGTH;
      Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();
      if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") {
        console.error("This browser lacks typed array (Uint8Array) support which is required by " + "`buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
      }
      function typedArraySupport() {
        try {
          const arr = new Uint8Array(1);
          const proto = {
            foo: function() {
              return 42;
            }
          };
          Object.setPrototypeOf(proto, Uint8Array.prototype);
          Object.setPrototypeOf(arr, proto);
          return arr.foo() === 42;
        } catch (e) {
          return false;
        }
      }
      Object.defineProperty(Buffer.prototype, "parent", {
        enumerable: true,
        get: function() {
          if (!Buffer.isBuffer(this)) return undefined;
          return this.buffer;
        }
      });
      Object.defineProperty(Buffer.prototype, "offset", {
        enumerable: true,
        get: function() {
          if (!Buffer.isBuffer(this)) return undefined;
          return this.byteOffset;
        }
      });
      function createBuffer(length) {
        if (length > K_MAX_LENGTH) {
          throw new RangeError('The value "' + length + '" is invalid for option "size"');
        }
        const buf = new Uint8Array(length);
        Object.setPrototypeOf(buf, Buffer.prototype);
        return buf;
      }
      function Buffer(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          if (typeof encodingOrOffset === "string") {
            throw new TypeError('The "string" argument must be of type string. Received type number');
          }
          return allocUnsafe(arg);
        }
        return from(arg, encodingOrOffset, length);
      }
      Buffer.poolSize = 8192;
      function from(value, encodingOrOffset, length) {
        if (typeof value === "string") {
          return fromString(value, encodingOrOffset);
        }
        if (ArrayBuffer.isView(value)) {
          return fromArrayView(value);
        }
        if (value == null) {
          throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, " + "or Array-like Object. Received type " + typeof value);
        }
        if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
          return fromArrayBuffer(value, encodingOrOffset, length);
        }
        if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {
          return fromArrayBuffer(value, encodingOrOffset, length);
        }
        if (typeof value === "number") {
          throw new TypeError('The "value" argument must not be of type number. Received type number');
        }
        const valueOf = value.valueOf && value.valueOf();
        if (valueOf != null && valueOf !== value) {
          return Buffer.from(valueOf, encodingOrOffset, length);
        }
        const b = fromObject(value);
        if (b) return b;
        if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") {
          return Buffer.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length);
        }
        throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, " + "or Array-like Object. Received type " + typeof value);
      }
      Buffer.from = function(value, encodingOrOffset, length) {
        return from(value, encodingOrOffset, length);
      };
      Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);
      Object.setPrototypeOf(Buffer, Uint8Array);
      function assertSize(size) {
        if (typeof size !== "number") {
          throw new TypeError('"size" argument must be of type number');
        } else if (size < 0) {
          throw new RangeError('The value "' + size + '" is invalid for option "size"');
        }
      }
      function alloc(size, fill, encoding) {
        assertSize(size);
        if (size <= 0) {
          return createBuffer(size);
        }
        if (fill !== undefined) {
          return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
        }
        return createBuffer(size);
      }
      Buffer.alloc = function(size, fill, encoding) {
        return alloc(size, fill, encoding);
      };
      function allocUnsafe(size) {
        assertSize(size);
        return createBuffer(size < 0 ? 0 : checked(size) | 0);
      }
      Buffer.allocUnsafe = function(size) {
        return allocUnsafe(size);
      };
      Buffer.allocUnsafeSlow = function(size) {
        return allocUnsafe(size);
      };
      function fromString(string, encoding) {
        if (typeof encoding !== "string" || encoding === "") {
          encoding = "utf8";
        }
        if (!Buffer.isEncoding(encoding)) {
          throw new TypeError("Unknown encoding: " + encoding);
        }
        const length = byteLength(string, encoding) | 0;
        let buf = createBuffer(length);
        const actual = buf.write(string, encoding);
        if (actual !== length) {
          buf = buf.slice(0, actual);
        }
        return buf;
      }
      function fromArrayLike(array) {
        const length = array.length < 0 ? 0 : checked(array.length) | 0;
        const buf = createBuffer(length);
        for (let i = 0; i < length; i += 1) {
          buf[i] = array[i] & 255;
        }
        return buf;
      }
      function fromArrayView(arrayView) {
        if (isInstance(arrayView, Uint8Array)) {
          const copy = new Uint8Array(arrayView);
          return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);
        }
        return fromArrayLike(arrayView);
      }
      function fromArrayBuffer(array, byteOffset, length) {
        if (byteOffset < 0 || array.byteLength < byteOffset) {
          throw new RangeError('"offset" is outside of buffer bounds');
        }
        if (array.byteLength < byteOffset + (length || 0)) {
          throw new RangeError('"length" is outside of buffer bounds');
        }
        let buf;
        if (byteOffset === undefined && length === undefined) {
          buf = new Uint8Array(array);
        } else if (length === undefined) {
          buf = new Uint8Array(array, byteOffset);
        } else {
          buf = new Uint8Array(array, byteOffset, length);
        }
        Object.setPrototypeOf(buf, Buffer.prototype);
        return buf;
      }
      function fromObject(obj) {
        if (Buffer.isBuffer(obj)) {
          const len = checked(obj.length) | 0;
          const buf = createBuffer(len);
          if (buf.length === 0) {
            return buf;
          }
          obj.copy(buf, 0, 0, len);
          return buf;
        }
        if (obj.length !== undefined) {
          if (typeof obj.length !== "number" || numberIsNaN(obj.length)) {
            return createBuffer(0);
          }
          return fromArrayLike(obj);
        }
        if (obj.type === "Buffer" && Array.isArray(obj.data)) {
          return fromArrayLike(obj.data);
        }
      }
      function checked(length) {
        if (length >= K_MAX_LENGTH) {
          throw new RangeError("Attempt to allocate Buffer larger than maximum " + "size: 0x" + K_MAX_LENGTH.toString(16) + " bytes");
        }
        return length | 0;
      }
      function SlowBuffer(length) {
        if (+length != length) {
          length = 0;
        }
        return Buffer.alloc(+length);
      }
      Buffer.isBuffer = function isBuffer(b) {
        return b != null && b._isBuffer === true && b !== Buffer.prototype;
      };
      Buffer.compare = function compare(a, b) {
        if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);
        if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);
        if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
          throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
        }
        if (a === b) return 0;
        let x = a.length;
        let y = b.length;
        for (let i = 0, len = Math.min(x, y); i < len; ++i) {
          if (a[i] !== b[i]) {
            x = a[i];
            y = b[i];
            break;
          }
        }
        if (x < y) return -1;
        if (y < x) return 1;
        return 0;
      };
      Buffer.isEncoding = function isEncoding(encoding) {
        switch (String(encoding).toLowerCase()) {
         case "hex":
         case "utf8":
         case "utf-8":
         case "ascii":
         case "latin1":
         case "binary":
         case "base64":
         case "ucs2":
         case "ucs-2":
         case "utf16le":
         case "utf-16le":
          return true;

         default:
          return false;
        }
      };
      Buffer.concat = function concat(list, length) {
        if (!Array.isArray(list)) {
          throw new TypeError('"list" argument must be an Array of Buffers');
        }
        if (list.length === 0) {
          return Buffer.alloc(0);
        }
        let i;
        if (length === undefined) {
          length = 0;
          for (i = 0; i < list.length; ++i) {
            length += list[i].length;
          }
        }
        const buffer = Buffer.allocUnsafe(length);
        let pos = 0;
        for (i = 0; i < list.length; ++i) {
          let buf = list[i];
          if (isInstance(buf, Uint8Array)) {
            if (pos + buf.length > buffer.length) {
              if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);
              buf.copy(buffer, pos);
            } else {
              Uint8Array.prototype.set.call(buffer, buf, pos);
            }
          } else if (!Buffer.isBuffer(buf)) {
            throw new TypeError('"list" argument must be an Array of Buffers');
          } else {
            buf.copy(buffer, pos);
          }
          pos += buf.length;
        }
        return buffer;
      };
      function byteLength(string, encoding) {
        if (Buffer.isBuffer(string)) {
          return string.length;
        }
        if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
          return string.byteLength;
        }
        if (typeof string !== "string") {
          throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + "Received type " + typeof string);
        }
        const len = string.length;
        const mustMatch = arguments.length > 2 && arguments[2] === true;
        if (!mustMatch && len === 0) return 0;
        let loweredCase = false;
        for (;;) {
          switch (encoding) {
           case "ascii":
           case "latin1":
           case "binary":
            return len;

           case "utf8":
           case "utf-8":
            return utf8ToBytes(string).length;

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return len * 2;

           case "hex":
            return len >>> 1;

           case "base64":
            return base64ToBytes(string).length;

           default:
            if (loweredCase) {
              return mustMatch ? -1 : utf8ToBytes(string).length;
            }
            encoding = ("" + encoding).toLowerCase();
            loweredCase = true;
          }
        }
      }
      Buffer.byteLength = byteLength;
      function slowToString(encoding, start, end) {
        let loweredCase = false;
        if (start === undefined || start < 0) {
          start = 0;
        }
        if (start > this.length) {
          return "";
        }
        if (end === undefined || end > this.length) {
          end = this.length;
        }
        if (end <= 0) {
          return "";
        }
        end >>>= 0;
        start >>>= 0;
        if (end <= start) {
          return "";
        }
        if (!encoding) encoding = "utf8";
        while (true) {
          switch (encoding) {
           case "hex":
            return hexSlice(this, start, end);

           case "utf8":
           case "utf-8":
            return utf8Slice(this, start, end);

           case "ascii":
            return asciiSlice(this, start, end);

           case "latin1":
           case "binary":
            return latin1Slice(this, start, end);

           case "base64":
            return base64Slice(this, start, end);

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return utf16leSlice(this, start, end);

           default:
            if (loweredCase) throw new TypeError("Unknown encoding: " + encoding);
            encoding = (encoding + "").toLowerCase();
            loweredCase = true;
          }
        }
      }
      Buffer.prototype._isBuffer = true;
      function swap(b, n, m) {
        const i = b[n];
        b[n] = b[m];
        b[m] = i;
      }
      Buffer.prototype.swap16 = function swap16() {
        const len = this.length;
        if (len % 2 !== 0) {
          throw new RangeError("Buffer size must be a multiple of 16-bits");
        }
        for (let i = 0; i < len; i += 2) {
          swap(this, i, i + 1);
        }
        return this;
      };
      Buffer.prototype.swap32 = function swap32() {
        const len = this.length;
        if (len % 4 !== 0) {
          throw new RangeError("Buffer size must be a multiple of 32-bits");
        }
        for (let i = 0; i < len; i += 4) {
          swap(this, i, i + 3);
          swap(this, i + 1, i + 2);
        }
        return this;
      };
      Buffer.prototype.swap64 = function swap64() {
        const len = this.length;
        if (len % 8 !== 0) {
          throw new RangeError("Buffer size must be a multiple of 64-bits");
        }
        for (let i = 0; i < len; i += 8) {
          swap(this, i, i + 7);
          swap(this, i + 1, i + 6);
          swap(this, i + 2, i + 5);
          swap(this, i + 3, i + 4);
        }
        return this;
      };
      Buffer.prototype.toString = function toString() {
        const length = this.length;
        if (length === 0) return "";
        if (arguments.length === 0) return utf8Slice(this, 0, length);
        return slowToString.apply(this, arguments);
      };
      Buffer.prototype.toLocaleString = Buffer.prototype.toString;
      Buffer.prototype.equals = function equals(b) {
        if (!Buffer.isBuffer(b)) throw new TypeError("Argument must be a Buffer");
        if (this === b) return true;
        return Buffer.compare(this, b) === 0;
      };
      Buffer.prototype.inspect = function inspect() {
        let str = "";
        const max = exports.INSPECT_MAX_BYTES;
        str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim();
        if (this.length > max) str += " ... ";
        return "<Buffer " + str + ">";
      };
      if (customInspectSymbol) {
        Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;
      }
      Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
        if (isInstance(target, Uint8Array)) {
          target = Buffer.from(target, target.offset, target.byteLength);
        }
        if (!Buffer.isBuffer(target)) {
          throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + "Received type " + typeof target);
        }
        if (start === undefined) {
          start = 0;
        }
        if (end === undefined) {
          end = target ? target.length : 0;
        }
        if (thisStart === undefined) {
          thisStart = 0;
        }
        if (thisEnd === undefined) {
          thisEnd = this.length;
        }
        if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
          throw new RangeError("out of range index");
        }
        if (thisStart >= thisEnd && start >= end) {
          return 0;
        }
        if (thisStart >= thisEnd) {
          return -1;
        }
        if (start >= end) {
          return 1;
        }
        start >>>= 0;
        end >>>= 0;
        thisStart >>>= 0;
        thisEnd >>>= 0;
        if (this === target) return 0;
        let x = thisEnd - thisStart;
        let y = end - start;
        const len = Math.min(x, y);
        const thisCopy = this.slice(thisStart, thisEnd);
        const targetCopy = target.slice(start, end);
        for (let i = 0; i < len; ++i) {
          if (thisCopy[i] !== targetCopy[i]) {
            x = thisCopy[i];
            y = targetCopy[i];
            break;
          }
        }
        if (x < y) return -1;
        if (y < x) return 1;
        return 0;
      };
      function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
        if (buffer.length === 0) return -1;
        if (typeof byteOffset === "string") {
          encoding = byteOffset;
          byteOffset = 0;
        } else if (byteOffset > 2147483647) {
          byteOffset = 2147483647;
        } else if (byteOffset < -2147483648) {
          byteOffset = -2147483648;
        }
        byteOffset = +byteOffset;
        if (numberIsNaN(byteOffset)) {
          byteOffset = dir ? 0 : buffer.length - 1;
        }
        if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
        if (byteOffset >= buffer.length) {
          if (dir) return -1; else byteOffset = buffer.length - 1;
        } else if (byteOffset < 0) {
          if (dir) byteOffset = 0; else return -1;
        }
        if (typeof val === "string") {
          val = Buffer.from(val, encoding);
        }
        if (Buffer.isBuffer(val)) {
          if (val.length === 0) {
            return -1;
          }
          return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
        } else if (typeof val === "number") {
          val = val & 255;
          if (typeof Uint8Array.prototype.indexOf === "function") {
            if (dir) {
              return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
            } else {
              return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
            }
          }
          return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir);
        }
        throw new TypeError("val must be string, number or Buffer");
      }
      function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
        let indexSize = 1;
        let arrLength = arr.length;
        let valLength = val.length;
        if (encoding !== undefined) {
          encoding = String(encoding).toLowerCase();
          if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") {
            if (arr.length < 2 || val.length < 2) {
              return -1;
            }
            indexSize = 2;
            arrLength /= 2;
            valLength /= 2;
            byteOffset /= 2;
          }
        }
        function read(buf, i) {
          if (indexSize === 1) {
            return buf[i];
          } else {
            return buf.readUInt16BE(i * indexSize);
          }
        }
        let i;
        if (dir) {
          let foundIndex = -1;
          for (i = byteOffset; i < arrLength; i++) {
            if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
              if (foundIndex === -1) foundIndex = i;
              if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
            } else {
              if (foundIndex !== -1) i -= i - foundIndex;
              foundIndex = -1;
            }
          }
        } else {
          if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
          for (i = byteOffset; i >= 0; i--) {
            let found = true;
            for (let j = 0; j < valLength; j++) {
              if (read(arr, i + j) !== read(val, j)) {
                found = false;
                break;
              }
            }
            if (found) return i;
          }
        }
        return -1;
      }
      Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
        return this.indexOf(val, byteOffset, encoding) !== -1;
      };
      Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
        return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
      };
      Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
        return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
      };
      function hexWrite(buf, string, offset, length) {
        offset = Number(offset) || 0;
        const remaining = buf.length - offset;
        if (!length) {
          length = remaining;
        } else {
          length = Number(length);
          if (length > remaining) {
            length = remaining;
          }
        }
        const strLen = string.length;
        if (length > strLen / 2) {
          length = strLen / 2;
        }
        let i;
        for (i = 0; i < length; ++i) {
          const parsed = parseInt(string.substr(i * 2, 2), 16);
          if (numberIsNaN(parsed)) return i;
          buf[offset + i] = parsed;
        }
        return i;
      }
      function utf8Write(buf, string, offset, length) {
        return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
      }
      function asciiWrite(buf, string, offset, length) {
        return blitBuffer(asciiToBytes(string), buf, offset, length);
      }
      function base64Write(buf, string, offset, length) {
        return blitBuffer(base64ToBytes(string), buf, offset, length);
      }
      function ucs2Write(buf, string, offset, length) {
        return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
      }
      Buffer.prototype.write = function write(string, offset, length, encoding) {
        if (offset === undefined) {
          encoding = "utf8";
          length = this.length;
          offset = 0;
        } else if (length === undefined && typeof offset === "string") {
          encoding = offset;
          length = this.length;
          offset = 0;
        } else if (isFinite(offset)) {
          offset = offset >>> 0;
          if (isFinite(length)) {
            length = length >>> 0;
            if (encoding === undefined) encoding = "utf8";
          } else {
            encoding = length;
            length = undefined;
          }
        } else {
          throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
        }
        const remaining = this.length - offset;
        if (length === undefined || length > remaining) length = remaining;
        if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
          throw new RangeError("Attempt to write outside buffer bounds");
        }
        if (!encoding) encoding = "utf8";
        let loweredCase = false;
        for (;;) {
          switch (encoding) {
           case "hex":
            return hexWrite(this, string, offset, length);

           case "utf8":
           case "utf-8":
            return utf8Write(this, string, offset, length);

           case "ascii":
           case "latin1":
           case "binary":
            return asciiWrite(this, string, offset, length);

           case "base64":
            return base64Write(this, string, offset, length);

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return ucs2Write(this, string, offset, length);

           default:
            if (loweredCase) throw new TypeError("Unknown encoding: " + encoding);
            encoding = ("" + encoding).toLowerCase();
            loweredCase = true;
          }
        }
      };
      Buffer.prototype.toJSON = function toJSON() {
        return {
          type: "Buffer",
          data: Array.prototype.slice.call(this._arr || this, 0)
        };
      };
      function base64Slice(buf, start, end) {
        if (start === 0 && end === buf.length) {
          return base64.fromByteArray(buf);
        } else {
          return base64.fromByteArray(buf.slice(start, end));
        }
      }
      function utf8Slice(buf, start, end) {
        end = Math.min(buf.length, end);
        const res = [];
        let i = start;
        while (i < end) {
          const firstByte = buf[i];
          let codePoint = null;
          let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;
          if (i + bytesPerSequence <= end) {
            let secondByte, thirdByte, fourthByte, tempCodePoint;
            switch (bytesPerSequence) {
             case 1:
              if (firstByte < 128) {
                codePoint = firstByte;
              }
              break;

             case 2:
              secondByte = buf[i + 1];
              if ((secondByte & 192) === 128) {
                tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;
                if (tempCodePoint > 127) {
                  codePoint = tempCodePoint;
                }
              }
              break;

             case 3:
              secondByte = buf[i + 1];
              thirdByte = buf[i + 2];
              if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {
                tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;
                if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {
                  codePoint = tempCodePoint;
                }
              }
              break;

             case 4:
              secondByte = buf[i + 1];
              thirdByte = buf[i + 2];
              fourthByte = buf[i + 3];
              if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {
                tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;
                if (tempCodePoint > 65535 && tempCodePoint < 1114112) {
                  codePoint = tempCodePoint;
                }
              }
            }
          }
          if (codePoint === null) {
            codePoint = 65533;
            bytesPerSequence = 1;
          } else if (codePoint > 65535) {
            codePoint -= 65536;
            res.push(codePoint >>> 10 & 1023 | 55296);
            codePoint = 56320 | codePoint & 1023;
          }
          res.push(codePoint);
          i += bytesPerSequence;
        }
        return decodeCodePointsArray(res);
      }
      const MAX_ARGUMENTS_LENGTH = 4096;
      function decodeCodePointsArray(codePoints) {
        const len = codePoints.length;
        if (len <= MAX_ARGUMENTS_LENGTH) {
          return String.fromCharCode.apply(String, codePoints);
        }
        let res = "";
        let i = 0;
        while (i < len) {
          res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
        }
        return res;
      }
      function asciiSlice(buf, start, end) {
        let ret = "";
        end = Math.min(buf.length, end);
        for (let i = start; i < end; ++i) {
          ret += String.fromCharCode(buf[i] & 127);
        }
        return ret;
      }
      function latin1Slice(buf, start, end) {
        let ret = "";
        end = Math.min(buf.length, end);
        for (let i = start; i < end; ++i) {
          ret += String.fromCharCode(buf[i]);
        }
        return ret;
      }
      function hexSlice(buf, start, end) {
        const len = buf.length;
        if (!start || start < 0) start = 0;
        if (!end || end < 0 || end > len) end = len;
        let out = "";
        for (let i = start; i < end; ++i) {
          out += hexSliceLookupTable[buf[i]];
        }
        return out;
      }
      function utf16leSlice(buf, start, end) {
        const bytes = buf.slice(start, end);
        let res = "";
        for (let i = 0; i < bytes.length - 1; i += 2) {
          res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
        }
        return res;
      }
      Buffer.prototype.slice = function slice(start, end) {
        const len = this.length;
        start = ~~start;
        end = end === undefined ? len : ~~end;
        if (start < 0) {
          start += len;
          if (start < 0) start = 0;
        } else if (start > len) {
          start = len;
        }
        if (end < 0) {
          end += len;
          if (end < 0) end = 0;
        } else if (end > len) {
          end = len;
        }
        if (end < start) end = start;
        const newBuf = this.subarray(start, end);
        Object.setPrototypeOf(newBuf, Buffer.prototype);
        return newBuf;
      };
      function checkOffset(offset, ext, length) {
        if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint");
        if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length");
      }
      Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        let val = this[offset];
        let mul = 1;
        let i = 0;
        while (++i < byteLength && (mul *= 256)) {
          val += this[offset + i] * mul;
        }
        return val;
      };
      Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          checkOffset(offset, byteLength, this.length);
        }
        let val = this[offset + --byteLength];
        let mul = 1;
        while (byteLength > 0 && (mul *= 256)) {
          val += this[offset + --byteLength] * mul;
        }
        return val;
      };
      Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 1, this.length);
        return this[offset];
      };
      Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        return this[offset] | this[offset + 1] << 8;
      };
      Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        return this[offset] << 8 | this[offset + 1];
      };
      Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;
      };
      Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
      };
      Buffer.prototype.readBigUInt64LE = defineBigIntMethod((function readBigUInt64LE(offset) {
        offset = offset >>> 0;
        validateNumber(offset, "offset");
        const first = this[offset];
        const last = this[offset + 7];
        if (first === undefined || last === undefined) {
          boundsError(offset, this.length - 8);
        }
        const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;
        const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;
        return BigInt(lo) + (BigInt(hi) << BigInt(32));
      }));
      Buffer.prototype.readBigUInt64BE = defineBigIntMethod((function readBigUInt64BE(offset) {
        offset = offset >>> 0;
        validateNumber(offset, "offset");
        const first = this[offset];
        const last = this[offset + 7];
        if (first === undefined || last === undefined) {
          boundsError(offset, this.length - 8);
        }
        const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
        const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;
        return (BigInt(hi) << BigInt(32)) + BigInt(lo);
      }));
      Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        let val = this[offset];
        let mul = 1;
        let i = 0;
        while (++i < byteLength && (mul *= 256)) {
          val += this[offset + i] * mul;
        }
        mul *= 128;
        if (val >= mul) val -= Math.pow(2, 8 * byteLength);
        return val;
      };
      Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        let i = byteLength;
        let mul = 1;
        let val = this[offset + --i];
        while (i > 0 && (mul *= 256)) {
          val += this[offset + --i] * mul;
        }
        mul *= 128;
        if (val >= mul) val -= Math.pow(2, 8 * byteLength);
        return val;
      };
      Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 1, this.length);
        if (!(this[offset] & 128)) return this[offset];
        return (255 - this[offset] + 1) * -1;
      };
      Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        const val = this[offset] | this[offset + 1] << 8;
        return val & 32768 ? val | 4294901760 : val;
      };
      Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        const val = this[offset + 1] | this[offset] << 8;
        return val & 32768 ? val | 4294901760 : val;
      };
      Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
      };
      Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
      };
      Buffer.prototype.readBigInt64LE = defineBigIntMethod((function readBigInt64LE(offset) {
        offset = offset >>> 0;
        validateNumber(offset, "offset");
        const first = this[offset];
        const last = this[offset + 7];
        if (first === undefined || last === undefined) {
          boundsError(offset, this.length - 8);
        }
        const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24);
        return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);
      }));
      Buffer.prototype.readBigInt64BE = defineBigIntMethod((function readBigInt64BE(offset) {
        offset = offset >>> 0;
        validateNumber(offset, "offset");
        const first = this[offset];
        const last = this[offset + 7];
        if (first === undefined || last === undefined) {
          boundsError(offset, this.length - 8);
        }
        const val = (first << 24) + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
        return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);
      }));
      Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return ieee754.read(this, offset, true, 23, 4);
      };
      Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return ieee754.read(this, offset, false, 23, 4);
      };
      Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 8, this.length);
        return ieee754.read(this, offset, true, 52, 8);
      };
      Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 8, this.length);
        return ieee754.read(this, offset, false, 52, 8);
      };
      function checkInt(buf, value, offset, ext, max, min) {
        if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
        if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
        if (offset + ext > buf.length) throw new RangeError("Index out of range");
      }
      Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          const maxBytes = Math.pow(2, 8 * byteLength) - 1;
          checkInt(this, value, offset, byteLength, maxBytes, 0);
        }
        let mul = 1;
        let i = 0;
        this[offset] = value & 255;
        while (++i < byteLength && (mul *= 256)) {
          this[offset + i] = value / mul & 255;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          const maxBytes = Math.pow(2, 8 * byteLength) - 1;
          checkInt(this, value, offset, byteLength, maxBytes, 0);
        }
        let i = byteLength - 1;
        let mul = 1;
        this[offset + i] = value & 255;
        while (--i >= 0 && (mul *= 256)) {
          this[offset + i] = value / mul & 255;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 1, 255, 0);
        this[offset] = value & 255;
        return offset + 1;
      };
      Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);
        this[offset] = value & 255;
        this[offset + 1] = value >>> 8;
        return offset + 2;
      };
      Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);
        this[offset] = value >>> 8;
        this[offset + 1] = value & 255;
        return offset + 2;
      };
      Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);
        this[offset + 3] = value >>> 24;
        this[offset + 2] = value >>> 16;
        this[offset + 1] = value >>> 8;
        this[offset] = value & 255;
        return offset + 4;
      };
      Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);
        this[offset] = value >>> 24;
        this[offset + 1] = value >>> 16;
        this[offset + 2] = value >>> 8;
        this[offset + 3] = value & 255;
        return offset + 4;
      };
      function wrtBigUInt64LE(buf, value, offset, min, max) {
        checkIntBI(value, min, max, buf, offset, 7);
        let lo = Number(value & BigInt(4294967295));
        buf[offset++] = lo;
        lo = lo >> 8;
        buf[offset++] = lo;
        lo = lo >> 8;
        buf[offset++] = lo;
        lo = lo >> 8;
        buf[offset++] = lo;
        let hi = Number(value >> BigInt(32) & BigInt(4294967295));
        buf[offset++] = hi;
        hi = hi >> 8;
        buf[offset++] = hi;
        hi = hi >> 8;
        buf[offset++] = hi;
        hi = hi >> 8;
        buf[offset++] = hi;
        return offset;
      }
      function wrtBigUInt64BE(buf, value, offset, min, max) {
        checkIntBI(value, min, max, buf, offset, 7);
        let lo = Number(value & BigInt(4294967295));
        buf[offset + 7] = lo;
        lo = lo >> 8;
        buf[offset + 6] = lo;
        lo = lo >> 8;
        buf[offset + 5] = lo;
        lo = lo >> 8;
        buf[offset + 4] = lo;
        let hi = Number(value >> BigInt(32) & BigInt(4294967295));
        buf[offset + 3] = hi;
        hi = hi >> 8;
        buf[offset + 2] = hi;
        hi = hi >> 8;
        buf[offset + 1] = hi;
        hi = hi >> 8;
        buf[offset] = hi;
        return offset + 8;
      }
      Buffer.prototype.writeBigUInt64LE = defineBigIntMethod((function writeBigUInt64LE(value, offset = 0) {
        return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
      }));
      Buffer.prototype.writeBigUInt64BE = defineBigIntMethod((function writeBigUInt64BE(value, offset = 0) {
        return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
      }));
      Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          const limit = Math.pow(2, 8 * byteLength - 1);
          checkInt(this, value, offset, byteLength, limit - 1, -limit);
        }
        let i = 0;
        let mul = 1;
        let sub = 0;
        this[offset] = value & 255;
        while (++i < byteLength && (mul *= 256)) {
          if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
            sub = 1;
          }
          this[offset + i] = (value / mul >> 0) - sub & 255;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          const limit = Math.pow(2, 8 * byteLength - 1);
          checkInt(this, value, offset, byteLength, limit - 1, -limit);
        }
        let i = byteLength - 1;
        let mul = 1;
        let sub = 0;
        this[offset + i] = value & 255;
        while (--i >= 0 && (mul *= 256)) {
          if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
            sub = 1;
          }
          this[offset + i] = (value / mul >> 0) - sub & 255;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 1, 127, -128);
        if (value < 0) value = 255 + value + 1;
        this[offset] = value & 255;
        return offset + 1;
      };
      Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);
        this[offset] = value & 255;
        this[offset + 1] = value >>> 8;
        return offset + 2;
      };
      Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);
        this[offset] = value >>> 8;
        this[offset + 1] = value & 255;
        return offset + 2;
      };
      Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);
        this[offset] = value & 255;
        this[offset + 1] = value >>> 8;
        this[offset + 2] = value >>> 16;
        this[offset + 3] = value >>> 24;
        return offset + 4;
      };
      Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);
        if (value < 0) value = 4294967295 + value + 1;
        this[offset] = value >>> 24;
        this[offset + 1] = value >>> 16;
        this[offset + 2] = value >>> 8;
        this[offset + 3] = value & 255;
        return offset + 4;
      };
      Buffer.prototype.writeBigInt64LE = defineBigIntMethod((function writeBigInt64LE(value, offset = 0) {
        return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
      }));
      Buffer.prototype.writeBigInt64BE = defineBigIntMethod((function writeBigInt64BE(value, offset = 0) {
        return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
      }));
      function checkIEEE754(buf, value, offset, ext, max, min) {
        if (offset + ext > buf.length) throw new RangeError("Index out of range");
        if (offset < 0) throw new RangeError("Index out of range");
      }
      function writeFloat(buf, value, offset, littleEndian, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22);
        }
        ieee754.write(buf, value, offset, littleEndian, 23, 4);
        return offset + 4;
      }
      Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
        return writeFloat(this, value, offset, true, noAssert);
      };
      Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
        return writeFloat(this, value, offset, false, noAssert);
      };
      function writeDouble(buf, value, offset, littleEndian, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292);
        }
        ieee754.write(buf, value, offset, littleEndian, 52, 8);
        return offset + 8;
      }
      Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
        return writeDouble(this, value, offset, true, noAssert);
      };
      Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
        return writeDouble(this, value, offset, false, noAssert);
      };
      Buffer.prototype.copy = function copy(target, targetStart, start, end) {
        if (!Buffer.isBuffer(target)) throw new TypeError("argument should be a Buffer");
        if (!start) start = 0;
        if (!end && end !== 0) end = this.length;
        if (targetStart >= target.length) targetStart = target.length;
        if (!targetStart) targetStart = 0;
        if (end > 0 && end < start) end = start;
        if (end === start) return 0;
        if (target.length === 0 || this.length === 0) return 0;
        if (targetStart < 0) {
          throw new RangeError("targetStart out of bounds");
        }
        if (start < 0 || start >= this.length) throw new RangeError("Index out of range");
        if (end < 0) throw new RangeError("sourceEnd out of bounds");
        if (end > this.length) end = this.length;
        if (target.length - targetStart < end - start) {
          end = target.length - targetStart + start;
        }
        const len = end - start;
        if (this === target && typeof Uint8Array.prototype.copyWithin === "function") {
          this.copyWithin(targetStart, start, end);
        } else {
          Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
        }
        return len;
      };
      Buffer.prototype.fill = function fill(val, start, end, encoding) {
        if (typeof val === "string") {
          if (typeof start === "string") {
            encoding = start;
            start = 0;
            end = this.length;
          } else if (typeof end === "string") {
            encoding = end;
            end = this.length;
          }
          if (encoding !== undefined && typeof encoding !== "string") {
            throw new TypeError("encoding must be a string");
          }
          if (typeof encoding === "string" && !Buffer.isEncoding(encoding)) {
            throw new TypeError("Unknown encoding: " + encoding);
          }
          if (val.length === 1) {
            const code = val.charCodeAt(0);
            if (encoding === "utf8" && code < 128 || encoding === "latin1") {
              val = code;
            }
          }
        } else if (typeof val === "number") {
          val = val & 255;
        } else if (typeof val === "boolean") {
          val = Number(val);
        }
        if (start < 0 || this.length < start || this.length < end) {
          throw new RangeError("Out of range index");
        }
        if (end <= start) {
          return this;
        }
        start = start >>> 0;
        end = end === undefined ? this.length : end >>> 0;
        if (!val) val = 0;
        let i;
        if (typeof val === "number") {
          for (i = start; i < end; ++i) {
            this[i] = val;
          }
        } else {
          const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);
          const len = bytes.length;
          if (len === 0) {
            throw new TypeError('The value "' + val + '" is invalid for argument "value"');
          }
          for (i = 0; i < end - start; ++i) {
            this[i + start] = bytes[i % len];
          }
        }
        return this;
      };
      const errors = {};
      function E(sym, getMessage, Base) {
        errors[sym] = class NodeError extends Base {
          constructor() {
            super();
            Object.defineProperty(this, "message", {
              value: getMessage.apply(this, arguments),
              writable: true,
              configurable: true
            });
            this.name = `${this.name} [${sym}]`;
            this.stack;
            delete this.name;
          }
          get code() {
            return sym;
          }
          set code(value) {
            Object.defineProperty(this, "code", {
              configurable: true,
              enumerable: true,
              value,
              writable: true
            });
          }
          toString() {
            return `${this.name} [${sym}]: ${this.message}`;
          }
        };
      }
      E("ERR_BUFFER_OUT_OF_BOUNDS", (function(name) {
        if (name) {
          return `${name} is outside of buffer bounds`;
        }
        return "Attempt to access memory outside buffer bounds";
      }), RangeError);
      E("ERR_INVALID_ARG_TYPE", (function(name, actual) {
        return `The "${name}" argument must be of type number. Received type ${typeof actual}`;
      }), TypeError);
      E("ERR_OUT_OF_RANGE", (function(str, range, input) {
        let msg = `The value of "${str}" is out of range.`;
        let received = input;
        if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {
          received = addNumericalSeparator(String(input));
        } else if (typeof input === "bigint") {
          received = String(input);
          if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {
            received = addNumericalSeparator(received);
          }
          received += "n";
        }
        msg += ` It must be ${range}. Received ${received}`;
        return msg;
      }), RangeError);
      function addNumericalSeparator(val) {
        let res = "";
        let i = val.length;
        const start = val[0] === "-" ? 1 : 0;
        for (;i >= start + 4; i -= 3) {
          res = `_${val.slice(i - 3, i)}${res}`;
        }
        return `${val.slice(0, i)}${res}`;
      }
      function checkBounds(buf, offset, byteLength) {
        validateNumber(offset, "offset");
        if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {
          boundsError(offset, buf.length - (byteLength + 1));
        }
      }
      function checkIntBI(value, min, max, buf, offset, byteLength) {
        if (value > max || value < min) {
          const n = typeof min === "bigint" ? "n" : "";
          let range;
          if (byteLength > 3) {
            if (min === 0 || min === BigInt(0)) {
              range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;
            } else {
              range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;
            }
          } else {
            range = `>= ${min}${n} and <= ${max}${n}`;
          }
          throw new errors.ERR_OUT_OF_RANGE("value", range, value);
        }
        checkBounds(buf, offset, byteLength);
      }
      function validateNumber(value, name) {
        if (typeof value !== "number") {
          throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value);
        }
      }
      function boundsError(value, length, type) {
        if (Math.floor(value) !== value) {
          validateNumber(value, type);
          throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value);
        }
        if (length < 0) {
          throw new errors.ERR_BUFFER_OUT_OF_BOUNDS;
        }
        throw new errors.ERR_OUT_OF_RANGE(type || "offset", `>= ${type ? 1 : 0} and <= ${length}`, value);
      }
      const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
      function base64clean(str) {
        str = str.split("=")[0];
        str = str.trim().replace(INVALID_BASE64_RE, "");
        if (str.length < 2) return "";
        while (str.length % 4 !== 0) {
          str = str + "=";
        }
        return str;
      }
      function utf8ToBytes(string, units) {
        units = units || Infinity;
        let codePoint;
        const length = string.length;
        let leadSurrogate = null;
        const bytes = [];
        for (let i = 0; i < length; ++i) {
          codePoint = string.charCodeAt(i);
          if (codePoint > 55295 && codePoint < 57344) {
            if (!leadSurrogate) {
              if (codePoint > 56319) {
                if ((units -= 3) > -1) bytes.push(239, 191, 189);
                continue;
              } else if (i + 1 === length) {
                if ((units -= 3) > -1) bytes.push(239, 191, 189);
                continue;
              }
              leadSurrogate = codePoint;
              continue;
            }
            if (codePoint < 56320) {
              if ((units -= 3) > -1) bytes.push(239, 191, 189);
              leadSurrogate = codePoint;
              continue;
            }
            codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;
          } else if (leadSurrogate) {
            if ((units -= 3) > -1) bytes.push(239, 191, 189);
          }
          leadSurrogate = null;
          if (codePoint < 128) {
            if ((units -= 1) < 0) break;
            bytes.push(codePoint);
          } else if (codePoint < 2048) {
            if ((units -= 2) < 0) break;
            bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);
          } else if (codePoint < 65536) {
            if ((units -= 3) < 0) break;
            bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
          } else if (codePoint < 1114112) {
            if ((units -= 4) < 0) break;
            bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
          } else {
            throw new Error("Invalid code point");
          }
        }
        return bytes;
      }
      function asciiToBytes(str) {
        const byteArray = [];
        for (let i = 0; i < str.length; ++i) {
          byteArray.push(str.charCodeAt(i) & 255);
        }
        return byteArray;
      }
      function utf16leToBytes(str, units) {
        let c, hi, lo;
        const byteArray = [];
        for (let i = 0; i < str.length; ++i) {
          if ((units -= 2) < 0) break;
          c = str.charCodeAt(i);
          hi = c >> 8;
          lo = c % 256;
          byteArray.push(lo);
          byteArray.push(hi);
        }
        return byteArray;
      }
      function base64ToBytes(str) {
        return base64.toByteArray(base64clean(str));
      }
      function blitBuffer(src, dst, offset, length) {
        let i;
        for (i = 0; i < length; ++i) {
          if (i + offset >= dst.length || i >= src.length) break;
          dst[i + offset] = src[i];
        }
        return i;
      }
      function isInstance(obj, type) {
        return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
      }
      function numberIsNaN(obj) {
        return obj !== obj;
      }
      const hexSliceLookupTable = function() {
        const alphabet = "0123456789abcdef";
        const table = new Array(256);
        for (let i = 0; i < 16; ++i) {
          const i16 = i * 16;
          for (let j = 0; j < 16; ++j) {
            table[i16 + j] = alphabet[i] + alphabet[j];
          }
        }
        return table;
      }();
      function defineBigIntMethod(fn) {
        return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn;
      }
      function BufferBigIntNotDefined() {
        throw new Error("BigInt not supported");
      }
    },
    3144(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var bind = __webpack_require__(6743);
      var $apply = __webpack_require__(1002);
      var $call = __webpack_require__(76);
      var $reflectApply = __webpack_require__(7119);
      module.exports = $reflectApply || bind.call($call, $apply);
    },
    2205(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var bind = __webpack_require__(6743);
      var $apply = __webpack_require__(1002);
      var actualApply = __webpack_require__(3144);
      module.exports = function applyBind() {
        return actualApply(bind, $apply, arguments);
      };
    },
    1002(module) {
      "use strict";
      module.exports = Function.prototype.apply;
    },
    76(module) {
      "use strict";
      module.exports = Function.prototype.call;
    },
    3126(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var bind = __webpack_require__(6743);
      var $TypeError = __webpack_require__(9675);
      var $call = __webpack_require__(76);
      var $actualApply = __webpack_require__(3144);
      module.exports = function callBindBasic(args) {
        if (args.length < 1 || typeof args[0] !== "function") {
          throw new $TypeError("a function is required");
        }
        return $actualApply(bind, $call, args);
      };
    },
    7119(module) {
      "use strict";
      module.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply;
    },
    487(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var setFunctionLength = __webpack_require__(6897);
      var $defineProperty = __webpack_require__(655);
      var callBindBasic = __webpack_require__(3126);
      var applyBind = __webpack_require__(2205);
      module.exports = function callBind(originalFunction) {
        var func = callBindBasic(arguments);
        var adjustedLength = originalFunction.length - (arguments.length - 1);
        return setFunctionLength(func, 1 + (adjustedLength > 0 ? adjustedLength : 0), true);
      };
      if ($defineProperty) {
        $defineProperty(module.exports, "apply", {
          value: applyBind
        });
      } else {
        module.exports.apply = applyBind;
      }
    },
    6556(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var GetIntrinsic = __webpack_require__(453);
      var callBindBasic = __webpack_require__(3126);
      var $indexOf = callBindBasic([ GetIntrinsic("%String.prototype.indexOf%") ]);
      module.exports = function callBoundIntrinsic(name, allowMissing) {
        var intrinsic = GetIntrinsic(name, !!allowMissing);
        if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) {
          return callBindBasic([ intrinsic ]);
        }
        return intrinsic;
      };
    },
    6168(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var Transform = __webpack_require__(8310).Transform;
      var StringDecoder = __webpack_require__(3141).I;
      var inherits = __webpack_require__(6698);
      function CipherBase(hashMode) {
        Transform.call(this);
        this.hashMode = typeof hashMode === "string";
        if (this.hashMode) {
          this[hashMode] = this._finalOrDigest;
        } else {
          this["final"] = this._finalOrDigest;
        }
        if (this._final) {
          this.__final = this._final;
          this._final = null;
        }
        this._decoder = null;
        this._encoding = null;
      }
      inherits(CipherBase, Transform);
      var useUint8Array = typeof Uint8Array !== "undefined";
      var useArrayBuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && ArrayBuffer.isView && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);
      function toBuffer(data, encoding) {
        if (data instanceof Buffer) {
          return data;
        }
        if (typeof data === "string") {
          return Buffer.from(data, encoding);
        }
        if (useArrayBuffer && ArrayBuffer.isView(data)) {
          if (data.byteLength === 0) {
            return Buffer.alloc(0);
          }
          var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
          if (res.byteLength === data.byteLength) {
            return res;
          }
        }
        if (useUint8Array && data instanceof Uint8Array) {
          return Buffer.from(data);
        }
        if (Buffer.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === "function" && data.constructor.isBuffer(data)) {
          return Buffer.from(data);
        }
        throw new TypeError('The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');
      }
      CipherBase.prototype.update = function(data, inputEnc, outputEnc) {
        var bufferData = toBuffer(data, inputEnc);
        var outData = this._update(bufferData);
        if (this.hashMode) {
          return this;
        }
        if (outputEnc) {
          outData = this._toString(outData, outputEnc);
        }
        return outData;
      };
      CipherBase.prototype.setAutoPadding = function() {};
      CipherBase.prototype.getAuthTag = function() {
        throw new Error("trying to get auth tag in unsupported state");
      };
      CipherBase.prototype.setAuthTag = function() {
        throw new Error("trying to set auth tag in unsupported state");
      };
      CipherBase.prototype.setAAD = function() {
        throw new Error("trying to set aad in unsupported state");
      };
      CipherBase.prototype._transform = function(data, _, next) {
        var err;
        try {
          if (this.hashMode) {
            this._update(data);
          } else {
            this.push(this._update(data));
          }
        } catch (e) {
          err = e;
        } finally {
          next(err);
        }
      };
      CipherBase.prototype._flush = function(done) {
        var err;
        try {
          this.push(this.__final());
        } catch (e) {
          err = e;
        }
        done(err);
      };
      CipherBase.prototype._finalOrDigest = function(outputEnc) {
        var outData = this.__final() || Buffer.alloc(0);
        if (outputEnc) {
          outData = this._toString(outData, outputEnc, true);
        }
        return outData;
      };
      CipherBase.prototype._toString = function(value, enc, fin) {
        if (!this._decoder) {
          this._decoder = new StringDecoder(enc);
          this._encoding = enc;
        }
        if (this._encoding !== enc) {
          throw new Error("can’t switch encodings");
        }
        var out = this._decoder.write(value);
        if (fin) {
          out += this._decoder.end();
        }
        return out;
      };
      module.exports = CipherBase;
    },
    6511() {},
    5622(__unused_webpack_module, exports, __webpack_require__) {
      function isArray(arg) {
        if (Array.isArray) {
          return Array.isArray(arg);
        }
        return objectToString(arg) === "[object Array]";
      }
      exports.isArray = isArray;
      function isBoolean(arg) {
        return typeof arg === "boolean";
      }
      exports.isBoolean = isBoolean;
      function isNull(arg) {
        return arg === null;
      }
      exports.isNull = isNull;
      function isNullOrUndefined(arg) {
        return arg == null;
      }
      exports.isNullOrUndefined = isNullOrUndefined;
      function isNumber(arg) {
        return typeof arg === "number";
      }
      exports.isNumber = isNumber;
      function isString(arg) {
        return typeof arg === "string";
      }
      exports.isString = isString;
      function isSymbol(arg) {
        return typeof arg === "symbol";
      }
      exports.isSymbol = isSymbol;
      function isUndefined(arg) {
        return arg === void 0;
      }
      exports.isUndefined = isUndefined;
      function isRegExp(re) {
        return objectToString(re) === "[object RegExp]";
      }
      exports.isRegExp = isRegExp;
      function isObject(arg) {
        return typeof arg === "object" && arg !== null;
      }
      exports.isObject = isObject;
      function isDate(d) {
        return objectToString(d) === "[object Date]";
      }
      exports.isDate = isDate;
      function isError(e) {
        return objectToString(e) === "[object Error]" || e instanceof Error;
      }
      exports.isError = isError;
      function isFunction(arg) {
        return typeof arg === "function";
      }
      exports.isFunction = isFunction;
      function isPrimitive(arg) {
        return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || typeof arg === "undefined";
      }
      exports.isPrimitive = isPrimitive;
      exports.isBuffer = __webpack_require__(8287).Buffer.isBuffer;
      function objectToString(o) {
        return Object.prototype.toString.call(o);
      }
    },
    1324(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      var elliptic = __webpack_require__(6729);
      var BN = __webpack_require__(2801);
      module.exports = function createECDH(curve) {
        return new ECDH(curve);
      };
      var aliases = {
        secp256k1: {
          name: "secp256k1",
          byteLength: 32
        },
        secp224r1: {
          name: "p224",
          byteLength: 28
        },
        prime256v1: {
          name: "p256",
          byteLength: 32
        },
        prime192v1: {
          name: "p192",
          byteLength: 24
        },
        ed25519: {
          name: "ed25519",
          byteLength: 32
        },
        secp384r1: {
          name: "p384",
          byteLength: 48
        },
        secp521r1: {
          name: "p521",
          byteLength: 66
        }
      };
      aliases.p224 = aliases.secp224r1;
      aliases.p256 = aliases.secp256r1 = aliases.prime256v1;
      aliases.p192 = aliases.secp192r1 = aliases.prime192v1;
      aliases.p384 = aliases.secp384r1;
      aliases.p521 = aliases.secp521r1;
      function ECDH(curve) {
        this.curveType = aliases[curve];
        if (!this.curveType) {
          this.curveType = {
            name: curve
          };
        }
        this.curve = new elliptic.ec(this.curveType.name);
        this.keys = void 0;
      }
      ECDH.prototype.generateKeys = function(enc, format) {
        this.keys = this.curve.genKeyPair();
        return this.getPublicKey(enc, format);
      };
      ECDH.prototype.computeSecret = function(other, inenc, enc) {
        inenc = inenc || "utf8";
        if (!Buffer.isBuffer(other)) {
          other = new Buffer(other, inenc);
        }
        var otherPub = this.curve.keyFromPublic(other).getPublic();
        var out = otherPub.mul(this.keys.getPrivate()).getX();
        return formatReturnValue(out, enc, this.curveType.byteLength);
      };
      ECDH.prototype.getPublicKey = function(enc, format) {
        var key = this.keys.getPublic(format === "compressed", true);
        if (format === "hybrid") {
          if (key[key.length - 1] % 2) {
            key[0] = 7;
          } else {
            key[0] = 6;
          }
        }
        return formatReturnValue(key, enc);
      };
      ECDH.prototype.getPrivateKey = function(enc) {
        return formatReturnValue(this.keys.getPrivate(), enc);
      };
      ECDH.prototype.setPublicKey = function(pub, enc) {
        enc = enc || "utf8";
        if (!Buffer.isBuffer(pub)) {
          pub = new Buffer(pub, enc);
        }
        this.keys._importPublic(pub);
        return this;
      };
      ECDH.prototype.setPrivateKey = function(priv, enc) {
        enc = enc || "utf8";
        if (!Buffer.isBuffer(priv)) {
          priv = new Buffer(priv, enc);
        }
        var _priv = new BN(priv);
        _priv = _priv.toString(16);
        this.keys = this.curve.genKeyPair();
        this.keys._importPrivate(_priv);
        return this;
      };
      function formatReturnValue(bn, enc, len) {
        if (!Array.isArray(bn)) {
          bn = bn.toArray();
        }
        var buf = new Buffer(bn);
        if (len && buf.length < len) {
          var zeros = new Buffer(len - buf.length);
          zeros.fill(0);
          buf = Buffer.concat([ zeros, buf ]);
        }
        if (!enc) {
          return buf;
        } else {
          return buf.toString(enc);
        }
      }
    },
    2801(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(7965).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    7108(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var MD5 = __webpack_require__(8276);
      var RIPEMD160 = __webpack_require__(6011);
      var sha = __webpack_require__(2802);
      var Base = __webpack_require__(6168);
      function Hash(hash) {
        Base.call(this, "digest");
        this._hash = hash;
      }
      inherits(Hash, Base);
      Hash.prototype._update = function(data) {
        this._hash.update(data);
      };
      Hash.prototype._final = function() {
        return this._hash.digest();
      };
      module.exports = function createHash(alg) {
        alg = alg.toLowerCase();
        if (alg === "md5") return new MD5;
        if (alg === "rmd160" || alg === "ripemd160") return new RIPEMD160;
        return new Hash(sha(alg));
      };
    },
    320(module, __unused_webpack_exports, __webpack_require__) {
      var MD5 = __webpack_require__(8276);
      module.exports = function(buffer) {
        return (new MD5).update(buffer).digest();
      };
    },
    3507(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Legacy = __webpack_require__(1800);
      var Base = __webpack_require__(6168);
      var Buffer = __webpack_require__(2861).Buffer;
      var md5 = __webpack_require__(320);
      var RIPEMD160 = __webpack_require__(6011);
      var sha = __webpack_require__(2802);
      var ZEROS = Buffer.alloc(128);
      function Hmac(alg, key) {
        Base.call(this, "digest");
        if (typeof key === "string") {
          key = Buffer.from(key);
        }
        var blocksize = alg === "sha512" || alg === "sha384" ? 128 : 64;
        this._alg = alg;
        this._key = key;
        if (key.length > blocksize) {
          var hash = alg === "rmd160" ? new RIPEMD160 : sha(alg);
          key = hash.update(key).digest();
        } else if (key.length < blocksize) {
          key = Buffer.concat([ key, ZEROS ], blocksize);
        }
        var ipad = this._ipad = Buffer.allocUnsafe(blocksize);
        var opad = this._opad = Buffer.allocUnsafe(blocksize);
        for (var i = 0; i < blocksize; i++) {
          ipad[i] = key[i] ^ 54;
          opad[i] = key[i] ^ 92;
        }
        this._hash = alg === "rmd160" ? new RIPEMD160 : sha(alg);
        this._hash.update(ipad);
      }
      inherits(Hmac, Base);
      Hmac.prototype._update = function(data) {
        this._hash.update(data);
      };
      Hmac.prototype._final = function() {
        var h = this._hash.digest();
        var hash = this._alg === "rmd160" ? new RIPEMD160 : sha(this._alg);
        return hash.update(this._opad).update(h).digest();
      };
      module.exports = function createHmac(alg, key) {
        alg = alg.toLowerCase();
        if (alg === "rmd160" || alg === "ripemd160") {
          return new Hmac("rmd160", key);
        }
        if (alg === "md5") {
          return new Legacy(md5, key);
        }
        return new Hmac(alg, key);
      };
    },
    1800(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Buffer = __webpack_require__(2861).Buffer;
      var Base = __webpack_require__(6168);
      var ZEROS = Buffer.alloc(128);
      var blocksize = 64;
      function Hmac(alg, key) {
        Base.call(this, "digest");
        if (typeof key === "string") {
          key = Buffer.from(key);
        }
        this._alg = alg;
        this._key = key;
        if (key.length > blocksize) {
          key = alg(key);
        } else if (key.length < blocksize) {
          key = Buffer.concat([ key, ZEROS ], blocksize);
        }
        var ipad = this._ipad = Buffer.allocUnsafe(blocksize);
        var opad = this._opad = Buffer.allocUnsafe(blocksize);
        for (var i = 0; i < blocksize; i++) {
          ipad[i] = key[i] ^ 54;
          opad[i] = key[i] ^ 92;
        }
        this._hash = [ ipad ];
      }
      inherits(Hmac, Base);
      Hmac.prototype._update = function(data) {
        this._hash.push(data);
      };
      Hmac.prototype._final = function() {
        var h = this._alg(Buffer.concat(this._hash));
        return this._alg(Buffer.concat([ this._opad, h ]));
      };
      module.exports = Hmac;
    },
    1565(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(3209);
      exports.createHash = exports.Hash = __webpack_require__(7108);
      exports.createHmac = exports.Hmac = __webpack_require__(3507);
      var algos = __webpack_require__(5715);
      var algoKeys = Object.keys(algos);
      var hashes = [ "sha1", "sha224", "sha256", "sha384", "sha512", "md5", "rmd160" ].concat(algoKeys);
      exports.getHashes = function() {
        return hashes;
      };
      var p = __webpack_require__(8396);
      exports.pbkdf2 = p.pbkdf2;
      exports.pbkdf2Sync = p.pbkdf2Sync;
      var aes = __webpack_require__(125);
      exports.Cipher = aes.Cipher;
      exports.createCipher = aes.createCipher;
      exports.Cipheriv = aes.Cipheriv;
      exports.createCipheriv = aes.createCipheriv;
      exports.Decipher = aes.Decipher;
      exports.createDecipher = aes.createDecipher;
      exports.Decipheriv = aes.Decipheriv;
      exports.createDecipheriv = aes.createDecipheriv;
      exports.getCiphers = aes.getCiphers;
      exports.listCiphers = aes.listCiphers;
      var dh = __webpack_require__(5380);
      exports.DiffieHellmanGroup = dh.DiffieHellmanGroup;
      exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;
      exports.getDiffieHellman = dh.getDiffieHellman;
      exports.createDiffieHellman = dh.createDiffieHellman;
      exports.DiffieHellman = dh.DiffieHellman;
      var sign = __webpack_require__(20);
      exports.createSign = sign.createSign;
      exports.Sign = sign.Sign;
      exports.createVerify = sign.createVerify;
      exports.Verify = sign.Verify;
      exports.createECDH = __webpack_require__(1324);
      var publicEncrypt = __webpack_require__(7168);
      exports.publicEncrypt = publicEncrypt.publicEncrypt;
      exports.privateEncrypt = publicEncrypt.privateEncrypt;
      exports.publicDecrypt = publicEncrypt.publicDecrypt;
      exports.privateDecrypt = publicEncrypt.privateDecrypt;
      var rf = __webpack_require__(6983);
      exports.randomFill = rf.randomFill;
      exports.randomFillSync = rf.randomFillSync;
      exports.createCredentials = function() {
        throw new Error("sorry, createCredentials is not implemented yet\nwe accept pull requests\nhttps://github.com/browserify/crypto-browserify");
      };
      exports.constants = {
        DH_CHECK_P_NOT_SAFE_PRIME: 2,
        DH_CHECK_P_NOT_PRIME: 1,
        DH_UNABLE_TO_CHECK_GENERATOR: 4,
        DH_NOT_SUITABLE_GENERATOR: 8,
        NPN_ENABLED: 1,
        ALPN_ENABLED: 1,
        RSA_PKCS1_PADDING: 1,
        RSA_SSLV23_PADDING: 2,
        RSA_NO_PADDING: 3,
        RSA_PKCS1_OAEP_PADDING: 4,
        RSA_X931_PADDING: 5,
        RSA_PKCS1_PSS_PADDING: 6,
        POINT_CONVERSION_COMPRESSED: 2,
        POINT_CONVERSION_UNCOMPRESSED: 4,
        POINT_CONVERSION_HYBRID: 6
      };
    },
    4353(module) {
      !function(t, e) {
        true ? module.exports = e() : 0;
      }(this, (function() {
        "use strict";
        var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = {
          name: "en",
          weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
          months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
          ordinal: function(t) {
            var e = [ "th", "st", "nd", "rd" ], n = t % 100;
            return "[" + t + (e[(n - 20) % 10] || e[n] || e[0]) + "]";
          }
        }, m = function(t, e, n) {
          var r = String(t);
          return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t;
        }, v = {
          s: m,
          z: function(t) {
            var e = -t.utcOffset(), n = Math.abs(e), r = Math.floor(n / 60), i = n % 60;
            return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0");
          },
          m: function t(e, n) {
            if (e.date() < n.date()) return -t(n, e);
            var r = 12 * (n.year() - e.year()) + (n.month() - e.month()), i = e.clone().add(r, c), s = n - i < 0, u = e.clone().add(r + (s ? -1 : 1), c);
            return +(-(r + (n - i) / (s ? i - u : u - i)) || 0);
          },
          a: function(t) {
            return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
          },
          p: function(t) {
            return {
              M: c,
              y: h,
              w: o,
              d: a,
              D: d,
              h: u,
              m: s,
              s: i,
              ms: r,
              Q: f
            }[t] || String(t || "").toLowerCase().replace(/s$/, "");
          },
          u: function(t) {
            return void 0 === t;
          }
        }, g = "en", D = {};
        D[g] = M;
        var p = "$isDayjsObject", S = function(t) {
          return t instanceof _ || !(!t || !t[p]);
        }, w = function t(e, n, r) {
          var i;
          if (!e) return g;
          if ("string" == typeof e) {
            var s = e.toLowerCase();
            D[s] && (i = s), n && (D[s] = n, i = s);
            var u = e.split("-");
            if (!i && u.length > 1) return t(u[0]);
          } else {
            var a = e.name;
            D[a] = e, i = a;
          }
          return !r && i && (g = i), i || !r && g;
        }, O = function(t, e) {
          if (S(t)) return t.clone();
          var n = "object" == typeof e ? e : {};
          return n.date = t, n.args = arguments, new _(n);
        }, b = v;
        b.l = w, b.i = S, b.w = function(t, e) {
          return O(t, {
            locale: e.$L,
            utc: e.$u,
            x: e.$x,
            $offset: e.$offset
          });
        };
        var _ = function() {
          function M(t) {
            this.$L = w(t.locale, null, !0), this.parse(t), this.$x = this.$x || t.x || {}, 
            this[p] = !0;
          }
          var m = M.prototype;
          return m.parse = function(t) {
            this.$d = function(t) {
              var e = t.date, n = t.utc;
              if (null === e) return new Date(NaN);
              if (b.u(e)) return new Date;
              if (e instanceof Date) return new Date(e);
              if ("string" == typeof e && !/Z$/i.test(e)) {
                var r = e.match($);
                if (r) {
                  var i = r[2] - 1 || 0, s = (r[7] || "0").substring(0, 3);
                  return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s);
                }
              }
              return new Date(e);
            }(t), this.init();
          }, m.init = function() {
            var t = this.$d;
            this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), 
            this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();
          }, m.$utils = function() {
            return b;
          }, m.isValid = function() {
            return !(this.$d.toString() === l);
          }, m.isSame = function(t, e) {
            var n = O(t);
            return this.startOf(e) <= n && n <= this.endOf(e);
          }, m.isAfter = function(t, e) {
            return O(t) < this.startOf(e);
          }, m.isBefore = function(t, e) {
            return this.endOf(e) < O(t);
          }, m.$g = function(t, e, n) {
            return b.u(t) ? this[e] : this.set(n, t);
          }, m.unix = function() {
            return Math.floor(this.valueOf() / 1e3);
          }, m.valueOf = function() {
            return this.$d.getTime();
          }, m.startOf = function(t, e) {
            var n = this, r = !!b.u(e) || e, f = b.p(t), l = function(t, e) {
              var i = b.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n);
              return r ? i : i.endOf(a);
            }, $ = function(t, e) {
              return b.w(n.toDate()[t].apply(n.toDate("s"), (r ? [ 0, 0, 0, 0 ] : [ 23, 59, 59, 999 ]).slice(e)), n);
            }, y = this.$W, M = this.$M, m = this.$D, v = "set" + (this.$u ? "UTC" : "");
            switch (f) {
             case h:
              return r ? l(1, 0) : l(31, 11);

             case c:
              return r ? l(1, M) : l(0, M + 1);

             case o:
              var g = this.$locale().weekStart || 0, D = (y < g ? y + 7 : y) - g;
              return l(r ? m - D : m + (6 - D), M);

             case a:
             case d:
              return $(v + "Hours", 0);

             case u:
              return $(v + "Minutes", 1);

             case s:
              return $(v + "Seconds", 2);

             case i:
              return $(v + "Milliseconds", 3);

             default:
              return this.clone();
            }
          }, m.endOf = function(t) {
            return this.startOf(t, !1);
          }, m.$set = function(t, e) {
            var n, o = b.p(t), f = "set" + (this.$u ? "UTC" : ""), l = (n = {}, n[a] = f + "Date", 
            n[d] = f + "Date", n[c] = f + "Month", n[h] = f + "FullYear", n[u] = f + "Hours", 
            n[s] = f + "Minutes", n[i] = f + "Seconds", n[r] = f + "Milliseconds", n)[o], $ = o === a ? this.$D + (e - this.$W) : e;
            if (o === c || o === h) {
              var y = this.clone().set(d, 1);
              y.$d[l]($), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d;
            } else l && this.$d[l]($);
            return this.init(), this;
          }, m.set = function(t, e) {
            return this.clone().$set(t, e);
          }, m.get = function(t) {
            return this[b.p(t)]();
          }, m.add = function(r, f) {
            var d, l = this;
            r = Number(r);
            var $ = b.p(f), y = function(t) {
              var e = O(l);
              return b.w(e.date(e.date() + Math.round(t * r)), l);
            };
            if ($ === c) return this.set(c, this.$M + r);
            if ($ === h) return this.set(h, this.$y + r);
            if ($ === a) return y(1);
            if ($ === o) return y(7);
            var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[$] || 1, m = this.$d.getTime() + r * M;
            return b.w(m, this);
          }, m.subtract = function(t, e) {
            return this.add(-1 * t, e);
          }, m.format = function(t) {
            var e = this, n = this.$locale();
            if (!this.isValid()) return n.invalidDate || l;
            var r = t || "YYYY-MM-DDTHH:mm:ssZ", i = b.z(this), s = this.$H, u = this.$m, a = this.$M, o = n.weekdays, c = n.months, f = n.meridiem, h = function(t, n, i, s) {
              return t && (t[n] || t(e, r)) || i[n].slice(0, s);
            }, d = function(t) {
              return b.s(s % 12 || 12, t, "0");
            }, $ = f || function(t, e, n) {
              var r = t < 12 ? "AM" : "PM";
              return n ? r.toLowerCase() : r;
            };
            return r.replace(y, (function(t, r) {
              return r || function(t) {
                switch (t) {
                 case "YY":
                  return String(e.$y).slice(-2);

                 case "YYYY":
                  return b.s(e.$y, 4, "0");

                 case "M":
                  return a + 1;

                 case "MM":
                  return b.s(a + 1, 2, "0");

                 case "MMM":
                  return h(n.monthsShort, a, c, 3);

                 case "MMMM":
                  return h(c, a);

                 case "D":
                  return e.$D;

                 case "DD":
                  return b.s(e.$D, 2, "0");

                 case "d":
                  return String(e.$W);

                 case "dd":
                  return h(n.weekdaysMin, e.$W, o, 2);

                 case "ddd":
                  return h(n.weekdaysShort, e.$W, o, 3);

                 case "dddd":
                  return o[e.$W];

                 case "H":
                  return String(s);

                 case "HH":
                  return b.s(s, 2, "0");

                 case "h":
                  return d(1);

                 case "hh":
                  return d(2);

                 case "a":
                  return $(s, u, !0);

                 case "A":
                  return $(s, u, !1);

                 case "m":
                  return String(u);

                 case "mm":
                  return b.s(u, 2, "0");

                 case "s":
                  return String(e.$s);

                 case "ss":
                  return b.s(e.$s, 2, "0");

                 case "SSS":
                  return b.s(e.$ms, 3, "0");

                 case "Z":
                  return i;
                }
                return null;
              }(t) || i.replace(":", "");
            }));
          }, m.utcOffset = function() {
            return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
          }, m.diff = function(r, d, l) {
            var $, y = this, M = b.p(d), m = O(r), v = (m.utcOffset() - this.utcOffset()) * e, g = this - m, D = function() {
              return b.m(y, m);
            };
            switch (M) {
             case h:
              $ = D() / 12;
              break;

             case c:
              $ = D();
              break;

             case f:
              $ = D() / 3;
              break;

             case o:
              $ = (g - v) / 6048e5;
              break;

             case a:
              $ = (g - v) / 864e5;
              break;

             case u:
              $ = g / n;
              break;

             case s:
              $ = g / e;
              break;

             case i:
              $ = g / t;
              break;

             default:
              $ = g;
            }
            return l ? $ : b.a($);
          }, m.daysInMonth = function() {
            return this.endOf(c).$D;
          }, m.$locale = function() {
            return D[this.$L];
          }, m.locale = function(t, e) {
            if (!t) return this.$L;
            var n = this.clone(), r = w(t, e, !0);
            return r && (n.$L = r), n;
          }, m.clone = function() {
            return b.w(this.$d, this);
          }, m.toDate = function() {
            return new Date(this.valueOf());
          }, m.toJSON = function() {
            return this.isValid() ? this.toISOString() : null;
          }, m.toISOString = function() {
            return this.$d.toISOString();
          }, m.toString = function() {
            return this.$d.toUTCString();
          }, M;
        }(), k = _.prototype;
        return O.prototype = k, [ [ "$ms", r ], [ "$s", i ], [ "$m", s ], [ "$H", u ], [ "$W", a ], [ "$M", c ], [ "$y", h ], [ "$D", d ] ].forEach((function(t) {
          k[t[1]] = function(e) {
            return this.$g(e, t[0], t[1]);
          };
        })), O.extend = function(t, e) {
          return t.$i || (t(e, _, O), t.$i = !0), O;
        }, O.locale = w, O.isDayjs = S, O.unix = function(t) {
          return O(1e3 * t);
        }, O.en = D[g], O.Ls = D, O.p = {}, O;
      }));
    },
    41(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $defineProperty = __webpack_require__(655);
      var $SyntaxError = __webpack_require__(8068);
      var $TypeError = __webpack_require__(9675);
      var gopd = __webpack_require__(5795);
      module.exports = function defineDataProperty(obj, property, value) {
        if (!obj || typeof obj !== "object" && typeof obj !== "function") {
          throw new $TypeError("`obj` must be an object or a function`");
        }
        if (typeof property !== "string" && typeof property !== "symbol") {
          throw new $TypeError("`property` must be a string or a symbol`");
        }
        if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) {
          throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null");
        }
        if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) {
          throw new $TypeError("`nonWritable`, if provided, must be a boolean or null");
        }
        if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) {
          throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null");
        }
        if (arguments.length > 6 && typeof arguments[6] !== "boolean") {
          throw new $TypeError("`loose`, if provided, must be a boolean");
        }
        var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
        var nonWritable = arguments.length > 4 ? arguments[4] : null;
        var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
        var loose = arguments.length > 6 ? arguments[6] : false;
        var desc = !!gopd && gopd(obj, property);
        if ($defineProperty) {
          $defineProperty(obj, property, {
            configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
            enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
            value,
            writable: nonWritable === null && desc ? desc.writable : !nonWritable
          });
        } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {
          obj[property] = value;
        } else {
          throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");
        }
      };
    },
    9560(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      exports.utils = __webpack_require__(7626);
      exports.Cipher = __webpack_require__(2808);
      exports.DES = __webpack_require__(2211);
      exports.CBC = __webpack_require__(3389);
      exports.EDE = __webpack_require__(5279);
    },
    3389(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var assert = __webpack_require__(3349);
      var inherits = __webpack_require__(6698);
      var proto = {};
      function CBCState(iv) {
        assert.equal(iv.length, 8, "Invalid IV length");
        this.iv = new Array(8);
        for (var i = 0; i < this.iv.length; i++) this.iv[i] = iv[i];
      }
      function instantiate(Base) {
        function CBC(options) {
          Base.call(this, options);
          this._cbcInit();
        }
        inherits(CBC, Base);
        var keys = Object.keys(proto);
        for (var i = 0; i < keys.length; i++) {
          var key = keys[i];
          CBC.prototype[key] = proto[key];
        }
        CBC.create = function create(options) {
          return new CBC(options);
        };
        return CBC;
      }
      exports.instantiate = instantiate;
      proto._cbcInit = function _cbcInit() {
        var state = new CBCState(this.options.iv);
        this._cbcState = state;
      };
      proto._update = function _update(inp, inOff, out, outOff) {
        var state = this._cbcState;
        var superProto = this.constructor.super_.prototype;
        var iv = state.iv;
        if (this.type === "encrypt") {
          for (var i = 0; i < this.blockSize; i++) iv[i] ^= inp[inOff + i];
          superProto._update.call(this, iv, 0, out, outOff);
          for (var i = 0; i < this.blockSize; i++) iv[i] = out[outOff + i];
        } else {
          superProto._update.call(this, inp, inOff, out, outOff);
          for (var i = 0; i < this.blockSize; i++) out[outOff + i] ^= iv[i];
          for (var i = 0; i < this.blockSize; i++) iv[i] = inp[inOff + i];
        }
      };
    },
    2808(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var assert = __webpack_require__(3349);
      function Cipher(options) {
        this.options = options;
        this.type = this.options.type;
        this.blockSize = 8;
        this._init();
        this.buffer = new Array(this.blockSize);
        this.bufferOff = 0;
        this.padding = options.padding !== false;
      }
      module.exports = Cipher;
      Cipher.prototype._init = function _init() {};
      Cipher.prototype.update = function update(data) {
        if (data.length === 0) return [];
        if (this.type === "decrypt") return this._updateDecrypt(data); else return this._updateEncrypt(data);
      };
      Cipher.prototype._buffer = function _buffer(data, off) {
        var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);
        for (var i = 0; i < min; i++) this.buffer[this.bufferOff + i] = data[off + i];
        this.bufferOff += min;
        return min;
      };
      Cipher.prototype._flushBuffer = function _flushBuffer(out, off) {
        this._update(this.buffer, 0, out, off);
        this.bufferOff = 0;
        return this.blockSize;
      };
      Cipher.prototype._updateEncrypt = function _updateEncrypt(data) {
        var inputOff = 0;
        var outputOff = 0;
        var count = (this.bufferOff + data.length) / this.blockSize | 0;
        var out = new Array(count * this.blockSize);
        if (this.bufferOff !== 0) {
          inputOff += this._buffer(data, inputOff);
          if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);
        }
        var max = data.length - (data.length - inputOff) % this.blockSize;
        for (;inputOff < max; inputOff += this.blockSize) {
          this._update(data, inputOff, out, outputOff);
          outputOff += this.blockSize;
        }
        for (;inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];
        return out;
      };
      Cipher.prototype._updateDecrypt = function _updateDecrypt(data) {
        var inputOff = 0;
        var outputOff = 0;
        var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;
        var out = new Array(count * this.blockSize);
        for (;count > 0; count--) {
          inputOff += this._buffer(data, inputOff);
          outputOff += this._flushBuffer(out, outputOff);
        }
        inputOff += this._buffer(data, inputOff);
        return out;
      };
      Cipher.prototype.final = function final(buffer) {
        var first;
        if (buffer) first = this.update(buffer);
        var last;
        if (this.type === "encrypt") last = this._finalEncrypt(); else last = this._finalDecrypt();
        if (first) return first.concat(last); else return last;
      };
      Cipher.prototype._pad = function _pad(buffer, off) {
        if (off === 0) return false;
        while (off < buffer.length) buffer[off++] = 0;
        return true;
      };
      Cipher.prototype._finalEncrypt = function _finalEncrypt() {
        if (!this._pad(this.buffer, this.bufferOff)) return [];
        var out = new Array(this.blockSize);
        this._update(this.buffer, 0, out, 0);
        return out;
      };
      Cipher.prototype._unpad = function _unpad(buffer) {
        return buffer;
      };
      Cipher.prototype._finalDecrypt = function _finalDecrypt() {
        assert.equal(this.bufferOff, this.blockSize, "Not enough data to decrypt");
        var out = new Array(this.blockSize);
        this._flushBuffer(out, 0);
        return this._unpad(out);
      };
    },
    2211(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var assert = __webpack_require__(3349);
      var inherits = __webpack_require__(6698);
      var utils = __webpack_require__(7626);
      var Cipher = __webpack_require__(2808);
      function DESState() {
        this.tmp = new Array(2);
        this.keys = null;
      }
      function DES(options) {
        Cipher.call(this, options);
        var state = new DESState;
        this._desState = state;
        this.deriveKeys(state, options.key);
      }
      inherits(DES, Cipher);
      module.exports = DES;
      DES.create = function create(options) {
        return new DES(options);
      };
      var shiftTable = [ 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 ];
      DES.prototype.deriveKeys = function deriveKeys(state, key) {
        state.keys = new Array(16 * 2);
        assert.equal(key.length, this.blockSize, "Invalid key length");
        var kL = utils.readUInt32BE(key, 0);
        var kR = utils.readUInt32BE(key, 4);
        utils.pc1(kL, kR, state.tmp, 0);
        kL = state.tmp[0];
        kR = state.tmp[1];
        for (var i = 0; i < state.keys.length; i += 2) {
          var shift = shiftTable[i >>> 1];
          kL = utils.r28shl(kL, shift);
          kR = utils.r28shl(kR, shift);
          utils.pc2(kL, kR, state.keys, i);
        }
      };
      DES.prototype._update = function _update(inp, inOff, out, outOff) {
        var state = this._desState;
        var l = utils.readUInt32BE(inp, inOff);
        var r = utils.readUInt32BE(inp, inOff + 4);
        utils.ip(l, r, state.tmp, 0);
        l = state.tmp[0];
        r = state.tmp[1];
        if (this.type === "encrypt") this._encrypt(state, l, r, state.tmp, 0); else this._decrypt(state, l, r, state.tmp, 0);
        l = state.tmp[0];
        r = state.tmp[1];
        utils.writeUInt32BE(out, l, outOff);
        utils.writeUInt32BE(out, r, outOff + 4);
      };
      DES.prototype._pad = function _pad(buffer, off) {
        if (this.padding === false) {
          return false;
        }
        var value = buffer.length - off;
        for (var i = off; i < buffer.length; i++) buffer[i] = value;
        return true;
      };
      DES.prototype._unpad = function _unpad(buffer) {
        if (this.padding === false) {
          return buffer;
        }
        var pad = buffer[buffer.length - 1];
        for (var i = buffer.length - pad; i < buffer.length; i++) assert.equal(buffer[i], pad);
        return buffer.slice(0, buffer.length - pad);
      };
      DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {
        var l = lStart;
        var r = rStart;
        for (var i = 0; i < state.keys.length; i += 2) {
          var keyL = state.keys[i];
          var keyR = state.keys[i + 1];
          utils.expand(r, state.tmp, 0);
          keyL ^= state.tmp[0];
          keyR ^= state.tmp[1];
          var s = utils.substitute(keyL, keyR);
          var f = utils.permute(s);
          var t = r;
          r = (l ^ f) >>> 0;
          l = t;
        }
        utils.rip(r, l, out, off);
      };
      DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {
        var l = rStart;
        var r = lStart;
        for (var i = state.keys.length - 2; i >= 0; i -= 2) {
          var keyL = state.keys[i];
          var keyR = state.keys[i + 1];
          utils.expand(l, state.tmp, 0);
          keyL ^= state.tmp[0];
          keyR ^= state.tmp[1];
          var s = utils.substitute(keyL, keyR);
          var f = utils.permute(s);
          var t = l;
          l = (r ^ f) >>> 0;
          r = t;
        }
        utils.rip(l, r, out, off);
      };
    },
    5279(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var assert = __webpack_require__(3349);
      var inherits = __webpack_require__(6698);
      var Cipher = __webpack_require__(2808);
      var DES = __webpack_require__(2211);
      function EDEState(type, key) {
        assert.equal(key.length, 24, "Invalid key length");
        var k1 = key.slice(0, 8);
        var k2 = key.slice(8, 16);
        var k3 = key.slice(16, 24);
        if (type === "encrypt") {
          this.ciphers = [ DES.create({
            type: "encrypt",
            key: k1
          }), DES.create({
            type: "decrypt",
            key: k2
          }), DES.create({
            type: "encrypt",
            key: k3
          }) ];
        } else {
          this.ciphers = [ DES.create({
            type: "decrypt",
            key: k3
          }), DES.create({
            type: "encrypt",
            key: k2
          }), DES.create({
            type: "decrypt",
            key: k1
          }) ];
        }
      }
      function EDE(options) {
        Cipher.call(this, options);
        var state = new EDEState(this.type, this.options.key);
        this._edeState = state;
      }
      inherits(EDE, Cipher);
      module.exports = EDE;
      EDE.create = function create(options) {
        return new EDE(options);
      };
      EDE.prototype._update = function _update(inp, inOff, out, outOff) {
        var state = this._edeState;
        state.ciphers[0]._update(inp, inOff, out, outOff);
        state.ciphers[1]._update(out, outOff, out, outOff);
        state.ciphers[2]._update(out, outOff, out, outOff);
      };
      EDE.prototype._pad = DES.prototype._pad;
      EDE.prototype._unpad = DES.prototype._unpad;
    },
    7626(__unused_webpack_module, exports) {
      "use strict";
      exports.readUInt32BE = function readUInt32BE(bytes, off) {
        var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];
        return res >>> 0;
      };
      exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {
        bytes[0 + off] = value >>> 24;
        bytes[1 + off] = value >>> 16 & 255;
        bytes[2 + off] = value >>> 8 & 255;
        bytes[3 + off] = value & 255;
      };
      exports.ip = function ip(inL, inR, out, off) {
        var outL = 0;
        var outR = 0;
        for (var i = 6; i >= 0; i -= 2) {
          for (var j = 0; j <= 24; j += 8) {
            outL <<= 1;
            outL |= inR >>> j + i & 1;
          }
          for (var j = 0; j <= 24; j += 8) {
            outL <<= 1;
            outL |= inL >>> j + i & 1;
          }
        }
        for (var i = 6; i >= 0; i -= 2) {
          for (var j = 1; j <= 25; j += 8) {
            outR <<= 1;
            outR |= inR >>> j + i & 1;
          }
          for (var j = 1; j <= 25; j += 8) {
            outR <<= 1;
            outR |= inL >>> j + i & 1;
          }
        }
        out[off + 0] = outL >>> 0;
        out[off + 1] = outR >>> 0;
      };
      exports.rip = function rip(inL, inR, out, off) {
        var outL = 0;
        var outR = 0;
        for (var i = 0; i < 4; i++) {
          for (var j = 24; j >= 0; j -= 8) {
            outL <<= 1;
            outL |= inR >>> j + i & 1;
            outL <<= 1;
            outL |= inL >>> j + i & 1;
          }
        }
        for (var i = 4; i < 8; i++) {
          for (var j = 24; j >= 0; j -= 8) {
            outR <<= 1;
            outR |= inR >>> j + i & 1;
            outR <<= 1;
            outR |= inL >>> j + i & 1;
          }
        }
        out[off + 0] = outL >>> 0;
        out[off + 1] = outR >>> 0;
      };
      exports.pc1 = function pc1(inL, inR, out, off) {
        var outL = 0;
        var outR = 0;
        for (var i = 7; i >= 5; i--) {
          for (var j = 0; j <= 24; j += 8) {
            outL <<= 1;
            outL |= inR >> j + i & 1;
          }
          for (var j = 0; j <= 24; j += 8) {
            outL <<= 1;
            outL |= inL >> j + i & 1;
          }
        }
        for (var j = 0; j <= 24; j += 8) {
          outL <<= 1;
          outL |= inR >> j + i & 1;
        }
        for (var i = 1; i <= 3; i++) {
          for (var j = 0; j <= 24; j += 8) {
            outR <<= 1;
            outR |= inR >> j + i & 1;
          }
          for (var j = 0; j <= 24; j += 8) {
            outR <<= 1;
            outR |= inL >> j + i & 1;
          }
        }
        for (var j = 0; j <= 24; j += 8) {
          outR <<= 1;
          outR |= inL >> j + i & 1;
        }
        out[off + 0] = outL >>> 0;
        out[off + 1] = outR >>> 0;
      };
      exports.r28shl = function r28shl(num, shift) {
        return num << shift & 268435455 | num >>> 28 - shift;
      };
      var pc2table = [ 14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24 ];
      exports.pc2 = function pc2(inL, inR, out, off) {
        var outL = 0;
        var outR = 0;
        var len = pc2table.length >>> 1;
        for (var i = 0; i < len; i++) {
          outL <<= 1;
          outL |= inL >>> pc2table[i] & 1;
        }
        for (var i = len; i < pc2table.length; i++) {
          outR <<= 1;
          outR |= inR >>> pc2table[i] & 1;
        }
        out[off + 0] = outL >>> 0;
        out[off + 1] = outR >>> 0;
      };
      exports.expand = function expand(r, out, off) {
        var outL = 0;
        var outR = 0;
        outL = (r & 1) << 5 | r >>> 27;
        for (var i = 23; i >= 15; i -= 4) {
          outL <<= 6;
          outL |= r >>> i & 63;
        }
        for (var i = 11; i >= 3; i -= 4) {
          outR |= r >>> i & 63;
          outR <<= 6;
        }
        outR |= (r & 31) << 1 | r >>> 31;
        out[off + 0] = outL >>> 0;
        out[off + 1] = outR >>> 0;
      };
      var sTable = [ 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11 ];
      exports.substitute = function substitute(inL, inR) {
        var out = 0;
        for (var i = 0; i < 4; i++) {
          var b = inL >>> 18 - i * 6 & 63;
          var sb = sTable[i * 64 + b];
          out <<= 4;
          out |= sb;
        }
        for (var i = 0; i < 4; i++) {
          var b = inR >>> 18 - i * 6 & 63;
          var sb = sTable[4 * 64 + i * 64 + b];
          out <<= 4;
          out |= sb;
        }
        return out >>> 0;
      };
      var permuteTable = [ 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7 ];
      exports.permute = function permute(num) {
        var out = 0;
        for (var i = 0; i < permuteTable.length; i++) {
          out <<= 1;
          out |= num >>> permuteTable[i] & 1;
        }
        return out >>> 0;
      };
      exports.padSplit = function padSplit(num, size, group) {
        var str = num.toString(2);
        while (str.length < size) str = "0" + str;
        var out = [];
        for (var i = 0; i < size; i += group) out.push(str.slice(i, i + group));
        return out.join(" ");
      };
    },
    5380(__unused_webpack_module, exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      var generatePrime = __webpack_require__(4934);
      var primes = __webpack_require__(3241);
      var DH = __webpack_require__(4910);
      function getDiffieHellman(mod) {
        var prime = new Buffer(primes[mod].prime, "hex");
        var gen = new Buffer(primes[mod].gen, "hex");
        return new DH(prime, gen);
      }
      var ENCODINGS = {
        binary: true,
        hex: true,
        base64: true
      };
      function createDiffieHellman(prime, enc, generator, genc) {
        if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {
          return createDiffieHellman(prime, "binary", enc, generator);
        }
        enc = enc || "binary";
        genc = genc || "binary";
        generator = generator || new Buffer([ 2 ]);
        if (!Buffer.isBuffer(generator)) {
          generator = new Buffer(generator, genc);
        }
        if (typeof prime === "number") {
          return new DH(generatePrime(prime, generator), generator, true);
        }
        if (!Buffer.isBuffer(prime)) {
          prime = new Buffer(prime, enc);
        }
        return new DH(prime, generator, true);
      }
      exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;
      exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;
    },
    4910(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(8287)["Buffer"];
      var BN = __webpack_require__(6473);
      var MillerRabin = __webpack_require__(2244);
      var millerRabin = new MillerRabin;
      var TWENTYFOUR = new BN(24);
      var ELEVEN = new BN(11);
      var TEN = new BN(10);
      var THREE = new BN(3);
      var SEVEN = new BN(7);
      var primes = __webpack_require__(4934);
      var randomBytes = __webpack_require__(3209);
      module.exports = DH;
      function setPublicKey(pub, enc) {
        enc = enc || "utf8";
        if (!Buffer.isBuffer(pub)) {
          pub = new Buffer(pub, enc);
        }
        this._pub = new BN(pub);
        return this;
      }
      function setPrivateKey(priv, enc) {
        enc = enc || "utf8";
        if (!Buffer.isBuffer(priv)) {
          priv = new Buffer(priv, enc);
        }
        this._priv = new BN(priv);
        return this;
      }
      var primeCache = {};
      function checkPrime(prime, generator) {
        var gen = generator.toString("hex");
        var hex = [ gen, prime.toString(16) ].join("_");
        if (hex in primeCache) {
          return primeCache[hex];
        }
        var error = 0;
        if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {
          error += 1;
          if (gen === "02" || gen === "05") {
            error += 8;
          } else {
            error += 4;
          }
          primeCache[hex] = error;
          return error;
        }
        if (!millerRabin.test(prime.shrn(1))) {
          error += 2;
        }
        var rem;
        switch (gen) {
         case "02":
          if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {
            error += 8;
          }
          break;

         case "05":
          rem = prime.mod(TEN);
          if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
            error += 8;
          }
          break;

         default:
          error += 4;
        }
        primeCache[hex] = error;
        return error;
      }
      function DH(prime, generator, malleable) {
        this.setGenerator(generator);
        this.__prime = new BN(prime);
        this._prime = BN.mont(this.__prime);
        this._primeLen = prime.length;
        this._pub = undefined;
        this._priv = undefined;
        this._primeCode = undefined;
        if (malleable) {
          this.setPublicKey = setPublicKey;
          this.setPrivateKey = setPrivateKey;
        } else {
          this._primeCode = 8;
        }
      }
      Object.defineProperty(DH.prototype, "verifyError", {
        enumerable: true,
        get: function() {
          if (typeof this._primeCode !== "number") {
            this._primeCode = checkPrime(this.__prime, this.__gen);
          }
          return this._primeCode;
        }
      });
      DH.prototype.generateKeys = function() {
        if (!this._priv) {
          this._priv = new BN(randomBytes(this._primeLen));
        }
        this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();
        return this.getPublicKey();
      };
      DH.prototype.computeSecret = function(other) {
        other = new BN(other);
        other = other.toRed(this._prime);
        var secret = other.redPow(this._priv).fromRed();
        var out = new Buffer(secret.toArray());
        var prime = this.getPrime();
        if (out.length < prime.length) {
          var front = new Buffer(prime.length - out.length);
          front.fill(0);
          out = Buffer.concat([ front, out ]);
        }
        return out;
      };
      DH.prototype.getPublicKey = function getPublicKey(enc) {
        return formatReturnValue(this._pub, enc);
      };
      DH.prototype.getPrivateKey = function getPrivateKey(enc) {
        return formatReturnValue(this._priv, enc);
      };
      DH.prototype.getPrime = function(enc) {
        return formatReturnValue(this.__prime, enc);
      };
      DH.prototype.getGenerator = function(enc) {
        return formatReturnValue(this._gen, enc);
      };
      DH.prototype.setGenerator = function(gen, enc) {
        enc = enc || "utf8";
        if (!Buffer.isBuffer(gen)) {
          gen = new Buffer(gen, enc);
        }
        this.__gen = gen;
        this._gen = new BN(gen);
        return this;
      };
      function formatReturnValue(bn, enc) {
        var buf = new Buffer(bn.toArray());
        if (!enc) {
          return buf;
        } else {
          return buf.toString(enc);
        }
      }
    },
    4934(module, __unused_webpack_exports, __webpack_require__) {
      var randomBytes = __webpack_require__(3209);
      module.exports = findPrime;
      findPrime.simpleSieve = simpleSieve;
      findPrime.fermatTest = fermatTest;
      var BN = __webpack_require__(6473);
      var TWENTYFOUR = new BN(24);
      var MillerRabin = __webpack_require__(2244);
      var millerRabin = new MillerRabin;
      var ONE = new BN(1);
      var TWO = new BN(2);
      var FIVE = new BN(5);
      var SIXTEEN = new BN(16);
      var EIGHT = new BN(8);
      var TEN = new BN(10);
      var THREE = new BN(3);
      var SEVEN = new BN(7);
      var ELEVEN = new BN(11);
      var FOUR = new BN(4);
      var TWELVE = new BN(12);
      var primes = null;
      function _getPrimes() {
        if (primes !== null) return primes;
        var limit = 1048576;
        var res = [];
        res[0] = 2;
        for (var i = 1, k = 3; k < limit; k += 2) {
          var sqrt = Math.ceil(Math.sqrt(k));
          for (var j = 0; j < i && res[j] <= sqrt; j++) if (k % res[j] === 0) break;
          if (i !== j && res[j] <= sqrt) continue;
          res[i++] = k;
        }
        primes = res;
        return res;
      }
      function simpleSieve(p) {
        var primes = _getPrimes();
        for (var i = 0; i < primes.length; i++) if (p.modn(primes[i]) === 0) {
          if (p.cmpn(primes[i]) === 0) {
            return true;
          } else {
            return false;
          }
        }
        return true;
      }
      function fermatTest(p) {
        var red = BN.mont(p);
        return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;
      }
      function findPrime(bits, gen) {
        if (bits < 16) {
          if (gen === 2 || gen === 5) {
            return new BN([ 140, 123 ]);
          } else {
            return new BN([ 140, 39 ]);
          }
        }
        gen = new BN(gen);
        var num, n2;
        while (true) {
          num = new BN(randomBytes(Math.ceil(bits / 8)));
          while (num.bitLength() > bits) {
            num.ishrn(1);
          }
          if (num.isEven()) {
            num.iadd(ONE);
          }
          if (!num.testn(1)) {
            num.iadd(TWO);
          }
          if (!gen.cmp(TWO)) {
            while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {
              num.iadd(FOUR);
            }
          } else if (!gen.cmp(FIVE)) {
            while (num.mod(TEN).cmp(THREE)) {
              num.iadd(FOUR);
            }
          }
          n2 = num.shrn(1);
          if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {
            return num;
          }
        }
      }
    },
    6473(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(6089).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    6052(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
      "use strict";
      __webpack_require__.r(__webpack_exports__);
      __webpack_require__.d(__webpack_exports__, {
        createDilithium: () => d
      });
      var process = __webpack_require__(5606);
      var Buffer = __webpack_require__(8287)["Buffer"];
      var e = {
        944: (e, t, r) => {
          var o, n = (o = (o = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0) || "/index.js", 
          function(e) {
            var t, n, i = void 0 !== (e = e || {}) ? e : {};
            i.ready = new Promise((function(e, r) {
              t = e, n = r;
            })), Object.getOwnPropertyDescriptor(i.ready, "_malloc") || (Object.defineProperty(i.ready, "_malloc", {
              configurable: !0,
              get: function() {
                Ee("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_malloc", {
              configurable: !0,
              set: function() {
                Ee("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_free") || (Object.defineProperty(i.ready, "_free", {
              configurable: !0,
              get: function() {
                Ee("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_free", {
              configurable: !0,
              set: function() {
                Ee("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_SHA3_256") || (Object.defineProperty(i.ready, "_SHA3_256", {
              configurable: !0,
              get: function() {
                Ee("You are getting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_SHA3_256", {
              configurable: !0,
              set: function() {
                Ee("You are setting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_randombytes") || (Object.defineProperty(i.ready, "_randombytes", {
              configurable: !0,
              get: function() {
                Ee("You are getting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_randombytes", {
              configurable: !0,
              set: function() {
                Ee("You are setting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_dilithium_keygen") || (Object.defineProperty(i.ready, "_dilithium_keygen", {
              configurable: !0,
              get: function() {
                Ee("You are getting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_dilithium_keygen", {
              configurable: !0,
              set: function() {
                Ee("You are setting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_dilithium_sign") || (Object.defineProperty(i.ready, "_dilithium_sign", {
              configurable: !0,
              get: function() {
                Ee("You are getting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_dilithium_sign", {
              configurable: !0,
              set: function() {
                Ee("You are setting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "_dilithium_verify") || (Object.defineProperty(i.ready, "_dilithium_verify", {
              configurable: !0,
              get: function() {
                Ee("You are getting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "_dilithium_verify", {
              configurable: !0,
              set: function() {
                Ee("You are setting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "___stdio_exit") || (Object.defineProperty(i.ready, "___stdio_exit", {
              configurable: !0,
              get: function() {
                Ee("You are getting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "___stdio_exit", {
              configurable: !0,
              set: function() {
                Ee("You are setting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            })), Object.getOwnPropertyDescriptor(i.ready, "onRuntimeInitialized") || (Object.defineProperty(i.ready, "onRuntimeInitialized", {
              configurable: !0,
              get: function() {
                Ee("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }), Object.defineProperty(i.ready, "onRuntimeInitialized", {
              configurable: !0,
              set: function() {
                Ee("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js");
              }
            }));
            var a = Object.assign({}, i), s = [], d = "object" == typeof window, c = "function" == typeof importScripts, l = "object" == typeof process && "object" == typeof process.versions && "string" == typeof process.versions.node, p = !d && !l && !c;
            if (i.ENVIRONMENT) throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");
            var E, u, f, h, O, g, m = "";
            if (l) {
              if ("object" != typeof process) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
              m = c ? r(507).dirname(m) + "/" : "//", g = () => {
                O || (h = r(175), O = r(507));
              }, E = function(e, t) {
                return g(), e = O.normalize(e), h.readFileSync(e, t ? void 0 : "utf8");
              }, f = e => {
                var t = E(e, !0);
                return t.buffer || (t = new Uint8Array(t)), I(t.buffer), t;
              }, u = (e, t, r) => {
                g(), e = O.normalize(e), h.readFile(e, (function(e, o) {
                  e ? r(e) : t(o.buffer);
                }));
              }, process.argv.length > 1 && process.argv[1].replace(/\\/g, "/"), s = process.argv.slice(2), 
              process.on("uncaughtException", (function(e) {
                if (!(e instanceof Ke)) throw e;
              })), process.on("unhandledRejection", (function(e) {
                throw e;
              })), i.inspect = function() {
                return "[Emscripten Module object]";
              };
            } else if (p) {
              if ("object" == typeof process || "object" == typeof window || "function" == typeof importScripts) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
              "undefined" != typeof read && (E = function(e) {
                return read(e);
              }), f = function(e) {
                let t;
                return "function" == typeof readbuffer ? new Uint8Array(readbuffer(e)) : (t = read(e, "binary"), 
                I("object" == typeof t), t);
              }, u = function(e, t, r) {
                setTimeout((() => t(f(e))), 0);
              }, "undefined" != typeof scriptArgs ? s = scriptArgs : void 0 !== arguments && (s = arguments), 
              "undefined" != typeof print && ("undefined" == typeof console && (console = {}), 
              console.log = print, console.warn = console.error = "undefined" != typeof printErr ? printErr : print);
            } else {
              if (!d && !c) throw new Error("environment detection error");
              if (c ? m = self.location.href : "undefined" != typeof document && document.currentScript && (m = document.currentScript.src), 
              o && (m = o), m = 0 !== m.indexOf("blob:") ? m.substr(0, m.replace(/[?#].*/, "").lastIndexOf("/") + 1) : "", 
              "object" != typeof window && "function" != typeof importScripts) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
              E = e => {
                var t = new XMLHttpRequest;
                return t.open("GET", e, !1), t.send(null), t.responseText;
              }, c && (f = e => {
                var t = new XMLHttpRequest;
                return t.open("GET", e, !1), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response);
              }), u = (e, t, r) => {
                var o = new XMLHttpRequest;
                o.open("GET", e, !0), o.responseType = "arraybuffer", o.onload = () => {
                  200 == o.status || 0 == o.status && o.response ? t(o.response) : r();
                }, o.onerror = r, o.send(null);
              };
            }
            var w, T = i.print || console.log.bind(console), y = i.printErr || console.warn.bind(console);
            function _(e) {
              _.shown || (_.shown = {}), _.shown[e] || (_.shown[e] = 1, y(e));
            }
            Object.assign(i, a), a = null, i.arguments && (s = i.arguments), Object.getOwnPropertyDescriptor(i, "arguments") || Object.defineProperty(i, "arguments", {
              configurable: !0,
              get: function() {
                Ee("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), i.thisProgram && i.thisProgram, Object.getOwnPropertyDescriptor(i, "thisProgram") || Object.defineProperty(i, "thisProgram", {
              configurable: !0,
              get: function() {
                Ee("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), i.quit && i.quit, Object.getOwnPropertyDescriptor(i, "quit") || Object.defineProperty(i, "quit", {
              configurable: !0,
              get: function() {
                Ee("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), I(void 0 === i.memoryInitializerPrefixURL, "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"), 
            I(void 0 === i.pthreadMainPrefixURL, "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"), 
            I(void 0 === i.cdInitializerPrefixURL, "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"), 
            I(void 0 === i.filePackagePrefixURL, "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"), 
            I(void 0 === i.read, "Module.read option was removed (modify read_ in JS)"), I(void 0 === i.readAsync, "Module.readAsync option was removed (modify readAsync in JS)"), 
            I(void 0 === i.readBinary, "Module.readBinary option was removed (modify readBinary in JS)"), 
            I(void 0 === i.setWindowTitle, "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"), 
            I(void 0 === i.TOTAL_MEMORY, "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"), 
            Object.getOwnPropertyDescriptor(i, "read") || Object.defineProperty(i, "read", {
              configurable: !0,
              get: function() {
                Ee("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), Object.getOwnPropertyDescriptor(i, "readAsync") || Object.defineProperty(i, "readAsync", {
              configurable: !0,
              get: function() {
                Ee("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), Object.getOwnPropertyDescriptor(i, "readBinary") || Object.defineProperty(i, "readBinary", {
              configurable: !0,
              get: function() {
                Ee("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), Object.getOwnPropertyDescriptor(i, "setWindowTitle") || Object.defineProperty(i, "setWindowTitle", {
              configurable: !0,
              get: function() {
                Ee("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), I(!p, "shell environment detected but not enabled at build time.  Add 'shell' to `-s ENVIRONMENT` to enable."), 
            i.wasmBinary && (w = i.wasmBinary), Object.getOwnPropertyDescriptor(i, "wasmBinary") || Object.defineProperty(i, "wasmBinary", {
              configurable: !0,
              get: function() {
                Ee("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            });
            var D;
            i.noExitRuntime;
            function b(e, t, r = "i8", o) {
              if ("*" === r.charAt(r.length - 1) && (r = "i32"), o) switch (r) {
               case "i1":
               case "i8":
                U[0 | e] = t;
                break;

               case "i16":
                x[e >> 1] = t;
                break;

               case "i32":
                C[e >> 2] = t;
                break;

               case "i64":
                L[e >> 3] = BigInt(t);
                break;

               case "float":
                H[e >> 2] = t;
                break;

               case "double":
                X[e >> 3] = t;
                break;

               default:
                Ee("invalid type for setValue: " + r);
              } else switch (r) {
               case "i1":
               case "i8":
                M(0 | e, 0 | t, 1);
                break;

               case "i16":
                M(0 | e, 0 | t, 2);
                break;

               case "i32":
                M(0 | e, 0 | t, 4);
                break;

               case "i64":
                M(0 | e, 0 | t, 8);
                break;

               case "float":
                R(0 | e, Math.fround(t), 4);
                break;

               case "double":
                R(0 | e, +t, 8);
                break;

               default:
                Ee("invalid type for setValue: " + r);
              }
            }
            function v(e, t = "i8", r) {
              if ("*" === t.charAt(t.length - 1) && (t = "i32"), r) switch (t) {
               case "i1":
               case "i8":
                return U[0 | e];

               case "i16":
                return x[e >> 1];

               case "i32":
                return C[e >> 2];

               case "i64":
                return Number(L[e >> 3]);

               case "float":
                return H[e >> 2];

               case "double":
                return Number(X[e >> 3]);

               default:
                Ee("invalid type for getValue: " + t);
              } else switch (t) {
               case "i1":
               case "i8":
                return 0 | S(0 | e, 1, 0);

               case "i16":
                return 0 | S(0 | e, 2, 0);

               case "i32":
                return 0 | S(0 | e, 4, 0);

               case "i64":
                return 0 | S(0 | e, 8, 0);

               case "float":
                return Math.fround(A(0 | e, 4, 0));

               case "double":
                return +A(0 | e, 8, 0);

               default:
                Ee("invalid type for getValue: " + t);
              }
              return null;
            }
            function P(e, t) {
              switch (e) {
               case 1:
                return "i8";

               case 2:
                return "i16";

               case 4:
                return t ? "float" : "i32";

               case 8:
                return t ? "double" : "i64";

               default:
                I(0);
              }
            }
            function M(e, t, r, o) {
              if (e <= 0 && Ee("segmentation fault storing " + r + " bytes to address " + e), 
              e % r != 0 && Ee("alignment error storing to address " + e + ", which was expected to be aligned to a multiple of " + r), 
              oe && !ne) {
                var n = Le() >>> 0;
                e + r > n && Ee("segmentation fault, exceeded the top of the available dynamic heap when storing " + r + " bytes to address " + e + ". DYNAMICTOP=" + n), 
                I(n >= Qe()), I(n <= U.length);
              }
              return b(e, t, P(r, o), 1), t;
            }
            function R(e, t, r) {
              return M(e, t, r, !0);
            }
            function S(e, t, r, o) {
              if (e <= 0 && Ee("segmentation fault loading " + t + " bytes from address " + e), 
              e % t != 0 && Ee("alignment error loading from address " + e + ", which was expected to be aligned to a multiple of " + t), 
              oe && !ne) {
                var n = Le() >>> 0;
                e + t > n && Ee("segmentation fault, exceeded the top of the available dynamic heap when loading " + t + " bytes from address " + e + ". DYNAMICTOP=" + n), 
                I(n >= Qe()), I(n <= U.length);
              }
              var i, a, s = P(t, o), d = v(e, s, 1);
              return r && (i = d, a = parseInt(s.substr(1), 10), d = i >= 0 ? i : a <= 32 ? 2 * Math.abs(1 << a - 1) + i : Math.pow(2, a) + i), 
              d;
            }
            function A(e, t, r) {
              return S(e, t, r, !0);
            }
            Object.getOwnPropertyDescriptor(i, "noExitRuntime") || Object.defineProperty(i, "noExitRuntime", {
              configurable: !0,
              get: function() {
                Ee("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), "object" != typeof WebAssembly && Ee("no native wasm support detected");
            var F = !1;
            function I(e, t) {
              e || Ee("Assertion failed" + (t ? ": " + t : ""));
            }
            function k(e, t, r, o, n) {
              var a = {
                string: function(e) {
                  var t = 0;
                  if (null != e && 0 !== e) {
                    var r = 1 + (e.length << 2);
                    W(e, t = We(r), r);
                  }
                  return t;
                },
                array: function(e) {
                  var t = We(e.length);
                  return function(e, t) {
                    I(e.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"), 
                    U.set(e, t);
                  }(e, t), t;
                }
              }, s = function(e) {
                var t = i["_" + e];
                return I(t, "Cannot call unknown function " + e + ", make sure it is exported"), 
                t;
              }(e), d = [], c = 0;
              if (I("array" !== t, 'Return type should not be "array".'), o) for (var l = 0; l < o.length; l++) {
                var p = a[r[l]];
                p ? (0 === c && (c = Ye()), d[l] = p(o[l])) : d[l] = o[l];
              }
              var E = s.apply(null, d);
              return E = function(e) {
                return 0 !== c && ze(c), function(e) {
                  return "string" === t ? Y(e) : "boolean" === t ? Boolean(e) : e;
                }(e);
              }(E);
            }
            var N, U, j, x, C, H, L, X, Q = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0;
            function B(e, t, r) {
              for (var o = t + r, n = t; e[n] && !(n >= o); ) ++n;
              if (n - t > 16 && e.subarray && Q) return Q.decode(e.subarray(t, n));
              for (var i = ""; t < n; ) {
                var a = e[t++];
                if (128 & a) {
                  var s = 63 & e[t++];
                  if (192 != (224 & a)) {
                    var d = 63 & e[t++];
                    if (224 == (240 & a) ? a = (15 & a) << 12 | s << 6 | d : (240 != (248 & a) && _("Invalid UTF-8 leading byte 0x" + a.toString(16) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!"), 
                    a = (7 & a) << 18 | s << 12 | d << 6 | 63 & e[t++]), a < 65536) i += String.fromCharCode(a); else {
                      var c = a - 65536;
                      i += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c);
                    }
                  } else i += String.fromCharCode((31 & a) << 6 | s);
                } else i += String.fromCharCode(a);
              }
              return i;
            }
            function Y(e, t) {
              return e ? B(j, e, t) : "";
            }
            function z(e, t, r, o) {
              if (!(o > 0)) return 0;
              for (var n = r, i = r + o - 1, a = 0; a < e.length; ++a) {
                var s = e.charCodeAt(a);
                if (s >= 55296 && s <= 57343 && (s = 65536 + ((1023 & s) << 10) | 1023 & e.charCodeAt(++a)), 
                s <= 127) {
                  if (r >= i) break;
                  t[r++] = s;
                } else if (s <= 2047) {
                  if (r + 1 >= i) break;
                  t[r++] = 192 | s >> 6, t[r++] = 128 | 63 & s;
                } else if (s <= 65535) {
                  if (r + 2 >= i) break;
                  t[r++] = 224 | s >> 12, t[r++] = 128 | s >> 6 & 63, t[r++] = 128 | 63 & s;
                } else {
                  if (r + 3 >= i) break;
                  s > 1114111 && _("Invalid Unicode code point 0x" + s.toString(16) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."), 
                  t[r++] = 240 | s >> 18, t[r++] = 128 | s >> 12 & 63, t[r++] = 128 | s >> 6 & 63, 
                  t[r++] = 128 | 63 & s;
                }
              }
              return t[r] = 0, r - n;
            }
            function W(e, t, r) {
              return I("number" == typeof r, "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"), 
              z(e, j, t, r);
            }
            function K(e) {
              for (var t = 0, r = 0; r < e.length; ++r) {
                var o = e.charCodeAt(r);
                o >= 55296 && o <= 57343 && (o = 65536 + ((1023 & o) << 10) | 1023 & e.charCodeAt(++r)), 
                o <= 127 ? ++t : t += o <= 2047 ? 2 : o <= 65535 ? 3 : 4;
              }
              return t;
            }
            function V(e) {
              N = e, i.HEAP8 = U = new Int8Array(e), i.HEAP16 = x = new Int16Array(e), i.HEAP32 = C = new Int32Array(e), 
              i.HEAPU8 = j = new Uint8Array(e), i.HEAPU16 = new Uint16Array(e), i.HEAPU32 = new Uint32Array(e), 
              i.HEAPF32 = H = new Float32Array(e), i.HEAPF64 = X = new Float64Array(e), i.HEAP64 = L = new BigInt64Array(e), 
              i.HEAPU64 = new BigUint64Array(e);
            }
            "undefined" != typeof TextDecoder && new TextDecoder("utf-16le");
            var G = 5242880;
            i.TOTAL_STACK && I(G === i.TOTAL_STACK, "the stack size can no longer be determined at runtime");
            var q, Z = i.INITIAL_MEMORY || 16777216;
            function J() {
              var e = Be();
              I(!(3 & e)), M(e + 4 | 0, 34821223, 4), M(e + 8 | 0, -1984246274, 4);
            }
            function $() {
              if (!F) {
                var e = Be(), t = S(e + 4 | 0, 4, 1) >>> 0, r = S(e + 8 | 0, 4, 1) >>> 0;
                34821223 == t && 2310721022 == r || Ee("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x" + r.toString(16) + " 0x" + t.toString(16));
              }
            }
            Object.getOwnPropertyDescriptor(i, "INITIAL_MEMORY") || Object.defineProperty(i, "INITIAL_MEMORY", {
              configurable: !0,
              get: function() {
                Ee("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");
              }
            }), I(Z >= G, "INITIAL_MEMORY should be larger than TOTAL_STACK, was " + Z + "! (TOTAL_STACK=" + G + ")"), 
            I("undefined" != typeof Int32Array && "undefined" != typeof Float64Array && null != Int32Array.prototype.subarray && null != Int32Array.prototype.set, "JS engine does not provide full typed array support"), 
            I(!i.wasmMemory, "Use of `wasmMemory` detected.  Use -s IMPORTED_MEMORY to define wasmMemory externally"), 
            I(16777216 == Z, "Detected runtime INITIAL_MEMORY setting.  Use -s IMPORTED_MEMORY to define wasmMemory dynamically"), 
            function() {
              var e = new Int16Array(1), t = new Int8Array(e.buffer);
              if (e[0] = 25459, 115 !== t[0] || 99 !== t[1]) throw "Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)";
            }();
            var ee = [], te = [], re = [], oe = !1, ne = !1;
            I(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), 
            I(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), 
            I(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), 
            I(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
            var ie = 0, ae = null, se = null, de = {};
            function ce(e) {
              for (var t = e; ;) {
                if (!de[e]) return e;
                e = t + Math.random();
              }
            }
            function le(e) {
              ie++, i.monitorRunDependencies && i.monitorRunDependencies(ie), e ? (I(!de[e]), 
              de[e] = 1, null === ae && "undefined" != typeof setInterval && (ae = setInterval((function() {
                if (F) return clearInterval(ae), void (ae = null);
                var e = !1;
                for (var t in de) e || (e = !0, y("still waiting on run dependencies:")), y("dependency: " + t);
                e && y("(end of list)");
              }), 1e4))) : y("warning: run dependency added without ID");
            }
            function pe(e) {
              if (ie--, i.monitorRunDependencies && i.monitorRunDependencies(ie), e ? (I(de[e]), 
              delete de[e]) : y("warning: run dependency removed without ID"), 0 == ie && (null !== ae && (clearInterval(ae), 
              ae = null), se)) {
                var t = se;
                se = null, t();
              }
            }
            function Ee(e) {
              i.onAbort && i.onAbort(e), y(e = "Aborted(" + e + ")"), F = !0;
              var t = new WebAssembly.RuntimeError(e);
              throw n(t), t;
            }
            i.preloadedImages = {}, i.preloadedAudios = {};
            var ue, fe, he = "data:application/octet-stream;base64,";
            function Oe(e) {
              return e.startsWith(he);
            }
            function ge(e) {
              return e.startsWith("file://");
            }
            function me(e, t) {
              return function() {
                var r = e, o = t;
                return t || (o = i.asm), I(oe, "native function `" + r + "` called before runtime initialization"), 
                I(!ne, "native function `" + r + "` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), 
                o[e] || I(o[e], "exported native function `" + r + "` not found"), o[e].apply(null, arguments);
              };
            }
            function we(e) {
              try {
                if (e == ue && w) return new Uint8Array(w);
                if (f) return f(e);
                throw "both async and sync fetching of the wasm failed";
              } catch (e) {
                Ee(e);
              }
            }
            function Te(e) {
              for (;e.length > 0; ) {
                var t = e.shift();
                if ("function" != typeof t) {
                  var r = t.func;
                  "number" == typeof r ? void 0 === t.arg ? De(r)() : De(r)(t.arg) : r(void 0 === t.arg ? null : t.arg);
                } else t(i);
              }
            }
            function ye(e) {
              return e.replace(/\b_Z[\w\d_]+/g, (function(e) {
                var t, r = (t = e, _("warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling"), 
                t);
                return e === r ? e : r + " [" + e + "]";
              }));
            }
            Oe(ue = "dilithium.wasm") || (fe = ue, ue = i.locateFile ? i.locateFile(fe, m) : m + fe);
            var _e = [];
            function De(e) {
              var t = _e[e];
              return t || (e >= _e.length && (_e.length = e + 1), _e[e] = t = q.get(e)), I(q.get(e) == t, "JavaScript-side Wasm function table mirror is out of date!"), 
              t;
            }
            var be = {
              splitPath: function(e) {
                return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);
              },
              normalizeArray: function(e, t) {
                for (var r = 0, o = e.length - 1; o >= 0; o--) {
                  var n = e[o];
                  "." === n ? e.splice(o, 1) : ".." === n ? (e.splice(o, 1), r++) : r && (e.splice(o, 1), 
                  r--);
                }
                if (t) for (;r; r--) e.unshift("..");
                return e;
              },
              normalize: function(e) {
                var t = "/" === e.charAt(0), r = "/" === e.substr(-1);
                return (e = be.normalizeArray(e.split("/").filter((function(e) {
                  return !!e;
                })), !t).join("/")) || t || (e = "."), e && r && (e += "/"), (t ? "/" : "") + e;
              },
              dirname: function(e) {
                var t = be.splitPath(e), r = t[0], o = t[1];
                return r || o ? (o && (o = o.substr(0, o.length - 1)), r + o) : ".";
              },
              basename: function(e) {
                if ("/" === e) return "/";
                var t = (e = (e = be.normalize(e)).replace(/\/$/, "")).lastIndexOf("/");
                return -1 === t ? e : e.substr(t + 1);
              },
              extname: function(e) {
                return be.splitPath(e)[3];
              },
              join: function() {
                var e = Array.prototype.slice.call(arguments, 0);
                return be.normalize(e.join("/"));
              },
              join2: function(e, t) {
                return be.normalize(e + "/" + t);
              }
            }, ve = {
              resolve: function() {
                for (var e = "", t = !1, r = arguments.length - 1; r >= -1 && !t; r--) {
                  var o = r >= 0 ? arguments[r] : Ae.cwd();
                  if ("string" != typeof o) throw new TypeError("Arguments to path.resolve must be strings");
                  if (!o) return "";
                  e = o + "/" + e, t = "/" === o.charAt(0);
                }
                return (t ? "/" : "") + (e = be.normalizeArray(e.split("/").filter((function(e) {
                  return !!e;
                })), !t).join("/")) || ".";
              },
              relative: function(e, t) {
                function r(e) {
                  for (var t = 0; t < e.length && "" === e[t]; t++) ;
                  for (var r = e.length - 1; r >= 0 && "" === e[r]; r--) ;
                  return t > r ? [] : e.slice(t, r - t + 1);
                }
                e = ve.resolve(e).substr(1), t = ve.resolve(t).substr(1);
                for (var o = r(e.split("/")), n = r(t.split("/")), i = Math.min(o.length, n.length), a = i, s = 0; s < i; s++) if (o[s] !== n[s]) {
                  a = s;
                  break;
                }
                var d = [];
                for (s = a; s < o.length; s++) d.push("..");
                return (d = d.concat(n.slice(a))).join("/");
              }
            }, Pe = {
              ttys: [],
              init: function() {},
              shutdown: function() {},
              register: function(e, t) {
                Pe.ttys[e] = {
                  input: [],
                  output: [],
                  ops: t
                }, Ae.registerDevice(e, Pe.stream_ops);
              },
              stream_ops: {
                open: function(e) {
                  var t = Pe.ttys[e.node.rdev];
                  if (!t) throw new Ae.ErrnoError(43);
                  e.tty = t, e.seekable = !1;
                },
                close: function(e) {
                  e.tty.ops.flush(e.tty);
                },
                flush: function(e) {
                  e.tty.ops.flush(e.tty);
                },
                read: function(e, t, r, o, n) {
                  if (!e.tty || !e.tty.ops.get_char) throw new Ae.ErrnoError(60);
                  for (var i = 0, a = 0; a < o; a++) {
                    var s;
                    try {
                      s = e.tty.ops.get_char(e.tty);
                    } catch (e) {
                      throw new Ae.ErrnoError(29);
                    }
                    if (void 0 === s && 0 === i) throw new Ae.ErrnoError(6);
                    if (null == s) break;
                    i++, t[r + a] = s;
                  }
                  return i && (e.node.timestamp = Date.now()), i;
                },
                write: function(e, t, r, o, n) {
                  if (!e.tty || !e.tty.ops.put_char) throw new Ae.ErrnoError(60);
                  try {
                    for (var i = 0; i < o; i++) e.tty.ops.put_char(e.tty, t[r + i]);
                  } catch (e) {
                    throw new Ae.ErrnoError(29);
                  }
                  return o && (e.node.timestamp = Date.now()), i;
                }
              },
              default_tty_ops: {
                get_char: function(e) {
                  if (!e.input.length) {
                    var t = null;
                    if (l) {
                      var r = Buffer.alloc(256), o = 0;
                      try {
                        o = h.readSync(process.stdin.fd, r, 0, 256, -1);
                      } catch (e) {
                        if (!e.toString().includes("EOF")) throw e;
                        o = 0;
                      }
                      t = o > 0 ? r.slice(0, o).toString("utf-8") : null;
                    } else "undefined" != typeof window && "function" == typeof window.prompt ? null !== (t = window.prompt("Input: ")) && (t += "\n") : "function" == typeof readline && null !== (t = readline()) && (t += "\n");
                    if (!t) return null;
                    e.input = je(t, !0);
                  }
                  return e.input.shift();
                },
                put_char: function(e, t) {
                  null === t || 10 === t ? (T(B(e.output, 0)), e.output = []) : 0 != t && e.output.push(t);
                },
                flush: function(e) {
                  e.output && e.output.length > 0 && (T(B(e.output, 0)), e.output = []);
                }
              },
              default_tty1_ops: {
                put_char: function(e, t) {
                  null === t || 10 === t ? (y(B(e.output, 0)), e.output = []) : 0 != t && e.output.push(t);
                },
                flush: function(e) {
                  e.output && e.output.length > 0 && (y(B(e.output, 0)), e.output = []);
                }
              }
            }, Me = {
              ops_table: null,
              mount: function(e) {
                return Me.createNode(null, "/", 16895, 0);
              },
              createNode: function(e, t, r, o) {
                if (Ae.isBlkdev(r) || Ae.isFIFO(r)) throw new Ae.ErrnoError(63);
                Me.ops_table || (Me.ops_table = {
                  dir: {
                    node: {
                      getattr: Me.node_ops.getattr,
                      setattr: Me.node_ops.setattr,
                      lookup: Me.node_ops.lookup,
                      mknod: Me.node_ops.mknod,
                      rename: Me.node_ops.rename,
                      unlink: Me.node_ops.unlink,
                      rmdir: Me.node_ops.rmdir,
                      readdir: Me.node_ops.readdir,
                      symlink: Me.node_ops.symlink
                    },
                    stream: {
                      llseek: Me.stream_ops.llseek
                    }
                  },
                  file: {
                    node: {
                      getattr: Me.node_ops.getattr,
                      setattr: Me.node_ops.setattr
                    },
                    stream: {
                      llseek: Me.stream_ops.llseek,
                      read: Me.stream_ops.read,
                      write: Me.stream_ops.write,
                      allocate: Me.stream_ops.allocate,
                      mmap: Me.stream_ops.mmap,
                      msync: Me.stream_ops.msync
                    }
                  },
                  link: {
                    node: {
                      getattr: Me.node_ops.getattr,
                      setattr: Me.node_ops.setattr,
                      readlink: Me.node_ops.readlink
                    },
                    stream: {}
                  },
                  chrdev: {
                    node: {
                      getattr: Me.node_ops.getattr,
                      setattr: Me.node_ops.setattr
                    },
                    stream: Ae.chrdev_stream_ops
                  }
                });
                var n = Ae.createNode(e, t, r, o);
                return Ae.isDir(n.mode) ? (n.node_ops = Me.ops_table.dir.node, n.stream_ops = Me.ops_table.dir.stream, 
                n.contents = {}) : Ae.isFile(n.mode) ? (n.node_ops = Me.ops_table.file.node, n.stream_ops = Me.ops_table.file.stream, 
                n.usedBytes = 0, n.contents = null) : Ae.isLink(n.mode) ? (n.node_ops = Me.ops_table.link.node, 
                n.stream_ops = Me.ops_table.link.stream) : Ae.isChrdev(n.mode) && (n.node_ops = Me.ops_table.chrdev.node, 
                n.stream_ops = Me.ops_table.chrdev.stream), n.timestamp = Date.now(), e && (e.contents[t] = n, 
                e.timestamp = n.timestamp), n;
              },
              getFileDataAsTypedArray: function(e) {
                return e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array(0);
              },
              expandFileStorage: function(e, t) {
                var r = e.contents ? e.contents.length : 0;
                if (!(r >= t)) {
                  t = Math.max(t, r * (r < 1048576 ? 2 : 1.125) >>> 0), 0 != r && (t = Math.max(t, 256));
                  var o = e.contents;
                  e.contents = new Uint8Array(t), e.usedBytes > 0 && e.contents.set(o.subarray(0, e.usedBytes), 0);
                }
              },
              resizeFileStorage: function(e, t) {
                if (e.usedBytes != t) if (0 == t) e.contents = null, e.usedBytes = 0; else {
                  var r = e.contents;
                  e.contents = new Uint8Array(t), r && e.contents.set(r.subarray(0, Math.min(t, e.usedBytes))), 
                  e.usedBytes = t;
                }
              },
              node_ops: {
                getattr: function(e) {
                  var t = {};
                  return t.dev = Ae.isChrdev(e.mode) ? e.id : 1, t.ino = e.id, t.mode = e.mode, t.nlink = 1, 
                  t.uid = 0, t.gid = 0, t.rdev = e.rdev, Ae.isDir(e.mode) ? t.size = 4096 : Ae.isFile(e.mode) ? t.size = e.usedBytes : Ae.isLink(e.mode) ? t.size = e.link.length : t.size = 0, 
                  t.atime = new Date(e.timestamp), t.mtime = new Date(e.timestamp), t.ctime = new Date(e.timestamp), 
                  t.blksize = 4096, t.blocks = Math.ceil(t.size / t.blksize), t;
                },
                setattr: function(e, t) {
                  void 0 !== t.mode && (e.mode = t.mode), void 0 !== t.timestamp && (e.timestamp = t.timestamp), 
                  void 0 !== t.size && Me.resizeFileStorage(e, t.size);
                },
                lookup: function(e, t) {
                  throw Ae.genericErrors[44];
                },
                mknod: function(e, t, r, o) {
                  return Me.createNode(e, t, r, o);
                },
                rename: function(e, t, r) {
                  if (Ae.isDir(e.mode)) {
                    var o;
                    try {
                      o = Ae.lookupNode(t, r);
                    } catch (e) {}
                    if (o) for (var n in o.contents) throw new Ae.ErrnoError(55);
                  }
                  delete e.parent.contents[e.name], e.parent.timestamp = Date.now(), e.name = r, t.contents[r] = e, 
                  t.timestamp = e.parent.timestamp, e.parent = t;
                },
                unlink: function(e, t) {
                  delete e.contents[t], e.timestamp = Date.now();
                },
                rmdir: function(e, t) {
                  var r = Ae.lookupNode(e, t);
                  for (var o in r.contents) throw new Ae.ErrnoError(55);
                  delete e.contents[t], e.timestamp = Date.now();
                },
                readdir: function(e) {
                  var t = [ ".", ".." ];
                  for (var r in e.contents) e.contents.hasOwnProperty(r) && t.push(r);
                  return t;
                },
                symlink: function(e, t, r) {
                  var o = Me.createNode(e, t, 41471, 0);
                  return o.link = r, o;
                },
                readlink: function(e) {
                  if (!Ae.isLink(e.mode)) throw new Ae.ErrnoError(28);
                  return e.link;
                }
              },
              stream_ops: {
                read: function(e, t, r, o, n) {
                  var i = e.node.contents;
                  if (n >= e.node.usedBytes) return 0;
                  var a = Math.min(e.node.usedBytes - n, o);
                  if (I(a >= 0), a > 8 && i.subarray) t.set(i.subarray(n, n + a), r); else for (var s = 0; s < a; s++) t[r + s] = i[n + s];
                  return a;
                },
                write: function(e, t, r, o, n, i) {
                  if (I(!(t instanceof ArrayBuffer)), t.buffer === U.buffer && (i = !1), !o) return 0;
                  var a = e.node;
                  if (a.timestamp = Date.now(), t.subarray && (!a.contents || a.contents.subarray)) {
                    if (i) return I(0 === n, "canOwn must imply no weird position inside the file"), 
                    a.contents = t.subarray(r, r + o), a.usedBytes = o, o;
                    if (0 === a.usedBytes && 0 === n) return a.contents = t.slice(r, r + o), a.usedBytes = o, 
                    o;
                    if (n + o <= a.usedBytes) return a.contents.set(t.subarray(r, r + o), n), o;
                  }
                  if (Me.expandFileStorage(a, n + o), a.contents.subarray && t.subarray) a.contents.set(t.subarray(r, r + o), n); else for (var s = 0; s < o; s++) a.contents[n + s] = t[r + s];
                  return a.usedBytes = Math.max(a.usedBytes, n + o), o;
                },
                llseek: function(e, t, r) {
                  var o = t;
                  if (1 === r ? o += e.position : 2 === r && Ae.isFile(e.node.mode) && (o += e.node.usedBytes), 
                  o < 0) throw new Ae.ErrnoError(28);
                  return o;
                },
                allocate: function(e, t, r) {
                  Me.expandFileStorage(e.node, t + r), e.node.usedBytes = Math.max(e.node.usedBytes, t + r);
                },
                mmap: function(e, t, r, o, n, i) {
                  if (0 !== t) throw new Ae.ErrnoError(28);
                  if (!Ae.isFile(e.node.mode)) throw new Ae.ErrnoError(43);
                  var a, s, d = e.node.contents;
                  if (2 & i || d.buffer !== N) {
                    if ((o > 0 || o + r < d.length) && (d = d.subarray ? d.subarray(o, o + r) : Array.prototype.slice.call(d, o, o + r)), 
                    s = !0, !(a = void Ee("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported"))) throw new Ae.ErrnoError(48);
                    U.set(d, a);
                  } else s = !1, a = d.byteOffset;
                  return {
                    ptr: a,
                    allocated: s
                  };
                },
                msync: function(e, t, r, o, n) {
                  if (!Ae.isFile(e.node.mode)) throw new Ae.ErrnoError(43);
                  return 2 & n || Me.stream_ops.write(e, t, 0, o, r, !1), 0;
                }
              }
            }, Re = {
              0: "Success",
              1: "Arg list too long",
              2: "Permission denied",
              3: "Address already in use",
              4: "Address not available",
              5: "Address family not supported by protocol family",
              6: "No more processes",
              7: "Socket already connected",
              8: "Bad file number",
              9: "Trying to read unreadable message",
              10: "Mount device busy",
              11: "Operation canceled",
              12: "No children",
              13: "Connection aborted",
              14: "Connection refused",
              15: "Connection reset by peer",
              16: "File locking deadlock error",
              17: "Destination address required",
              18: "Math arg out of domain of func",
              19: "Quota exceeded",
              20: "File exists",
              21: "Bad address",
              22: "File too large",
              23: "Host is unreachable",
              24: "Identifier removed",
              25: "Illegal byte sequence",
              26: "Connection already in progress",
              27: "Interrupted system call",
              28: "Invalid argument",
              29: "I/O error",
              30: "Socket is already connected",
              31: "Is a directory",
              32: "Too many symbolic links",
              33: "Too many open files",
              34: "Too many links",
              35: "Message too long",
              36: "Multihop attempted",
              37: "File or path name too long",
              38: "Network interface is not configured",
              39: "Connection reset by network",
              40: "Network is unreachable",
              41: "Too many open files in system",
              42: "No buffer space available",
              43: "No such device",
              44: "No such file or directory",
              45: "Exec format error",
              46: "No record locks available",
              47: "The link has been severed",
              48: "Not enough core",
              49: "No message of desired type",
              50: "Protocol not available",
              51: "No space left on device",
              52: "Function not implemented",
              53: "Socket is not connected",
              54: "Not a directory",
              55: "Directory not empty",
              56: "State not recoverable",
              57: "Socket operation on non-socket",
              59: "Not a typewriter",
              60: "No such device or address",
              61: "Value too large for defined data type",
              62: "Previous owner died",
              63: "Not super-user",
              64: "Broken pipe",
              65: "Protocol error",
              66: "Unknown protocol",
              67: "Protocol wrong type for socket",
              68: "Math result not representable",
              69: "Read only file system",
              70: "Illegal seek",
              71: "No such process",
              72: "Stale file handle",
              73: "Connection timed out",
              74: "Text file busy",
              75: "Cross-device link",
              100: "Device not a stream",
              101: "Bad font file fmt",
              102: "Invalid slot",
              103: "Invalid request code",
              104: "No anode",
              105: "Block device required",
              106: "Channel number out of range",
              107: "Level 3 halted",
              108: "Level 3 reset",
              109: "Link number out of range",
              110: "Protocol driver not attached",
              111: "No CSI structure available",
              112: "Level 2 halted",
              113: "Invalid exchange",
              114: "Invalid request descriptor",
              115: "Exchange full",
              116: "No data (for no delay io)",
              117: "Timer expired",
              118: "Out of streams resources",
              119: "Machine is not on the network",
              120: "Package not installed",
              121: "The object is remote",
              122: "Advertise error",
              123: "Srmount error",
              124: "Communication error on send",
              125: "Cross mount point (not really error)",
              126: "Given log. name not unique",
              127: "f.d. invalid for this operation",
              128: "Remote address changed",
              129: "Can   access a needed shared lib",
              130: "Accessing a corrupted shared lib",
              131: ".lib section in a.out corrupted",
              132: "Attempting to link in too many libs",
              133: "Attempting to exec a shared library",
              135: "Streams pipe error",
              136: "Too many users",
              137: "Socket type not supported",
              138: "Not supported",
              139: "Protocol family not supported",
              140: "Can't send after socket shutdown",
              141: "Too many references",
              142: "Host is down",
              148: "No medium (in tape drive)",
              156: "Level 2 not synchronized"
            }, Se = {}, Ae = {
              root: null,
              mounts: [],
              devices: {},
              streams: [],
              nextInode: 1,
              nameTable: null,
              currentPath: "/",
              initialized: !1,
              ignorePermissions: !0,
              ErrnoError: null,
              genericErrors: {},
              filesystems: null,
              syncFSRequests: 0,
              lookupPath: (e, t = {}) => {
                if (!(e = ve.resolve(Ae.cwd(), e))) return {
                  path: "",
                  node: null
                };
                var r = {
                  follow_mount: !0,
                  recurse_count: 0
                };
                for (var o in r) void 0 === t[o] && (t[o] = r[o]);
                if (t.recurse_count > 8) throw new Ae.ErrnoError(32);
                for (var n = be.normalizeArray(e.split("/").filter((e => !!e)), !1), i = Ae.root, a = "/", s = 0; s < n.length; s++) {
                  var d = s === n.length - 1;
                  if (d && t.parent) break;
                  if (i = Ae.lookupNode(i, n[s]), a = be.join2(a, n[s]), Ae.isMountpoint(i) && (!d || d && t.follow_mount) && (i = i.mounted.root), 
                  !d || t.follow) for (var c = 0; Ae.isLink(i.mode); ) {
                    var l = Ae.readlink(a);
                    if (a = ve.resolve(be.dirname(a), l), i = Ae.lookupPath(a, {
                      recurse_count: t.recurse_count
                    }).node, c++ > 40) throw new Ae.ErrnoError(32);
                  }
                }
                return {
                  path: a,
                  node: i
                };
              },
              getPath: e => {
                for (var t; ;) {
                  if (Ae.isRoot(e)) {
                    var r = e.mount.mountpoint;
                    return t ? "/" !== r[r.length - 1] ? r + "/" + t : r + t : r;
                  }
                  t = t ? e.name + "/" + t : e.name, e = e.parent;
                }
              },
              hashName: (e, t) => {
                for (var r = 0, o = 0; o < t.length; o++) r = (r << 5) - r + t.charCodeAt(o) | 0;
                return (e + r >>> 0) % Ae.nameTable.length;
              },
              hashAddNode: e => {
                var t = Ae.hashName(e.parent.id, e.name);
                e.name_next = Ae.nameTable[t], Ae.nameTable[t] = e;
              },
              hashRemoveNode: e => {
                var t = Ae.hashName(e.parent.id, e.name);
                if (Ae.nameTable[t] === e) Ae.nameTable[t] = e.name_next; else for (var r = Ae.nameTable[t]; r; ) {
                  if (r.name_next === e) {
                    r.name_next = e.name_next;
                    break;
                  }
                  r = r.name_next;
                }
              },
              lookupNode: (e, t) => {
                var r = Ae.mayLookup(e);
                if (r) throw new Ae.ErrnoError(r, e);
                for (var o = Ae.hashName(e.id, t), n = Ae.nameTable[o]; n; n = n.name_next) {
                  var i = n.name;
                  if (n.parent.id === e.id && i === t) return n;
                }
                return Ae.lookup(e, t);
              },
              createNode: (e, t, r, o) => {
                I("object" == typeof e);
                var n = new Ae.FSNode(e, t, r, o);
                return Ae.hashAddNode(n), n;
              },
              destroyNode: e => {
                Ae.hashRemoveNode(e);
              },
              isRoot: e => e === e.parent,
              isMountpoint: e => !!e.mounted,
              isFile: e => 32768 == (61440 & e),
              isDir: e => 16384 == (61440 & e),
              isLink: e => 40960 == (61440 & e),
              isChrdev: e => 8192 == (61440 & e),
              isBlkdev: e => 24576 == (61440 & e),
              isFIFO: e => 4096 == (61440 & e),
              isSocket: e => !(49152 & ~e),
              flagModes: {
                r: 0,
                "r+": 2,
                w: 577,
                "w+": 578,
                a: 1089,
                "a+": 1090
              },
              modeStringToFlags: e => {
                var t = Ae.flagModes[e];
                if (void 0 === t) throw new Error("Unknown file open mode: " + e);
                return t;
              },
              flagsToPermissionString: e => {
                var t = [ "r", "w", "rw" ][3 & e];
                return 512 & e && (t += "w"), t;
              },
              nodePermissions: (e, t) => Ae.ignorePermissions || (!t.includes("r") || 292 & e.mode) && (!t.includes("w") || 146 & e.mode) && (!t.includes("x") || 73 & e.mode) ? 0 : 2,
              mayLookup: e => {
                var t = Ae.nodePermissions(e, "x");
                return t || (e.node_ops.lookup ? 0 : 2);
              },
              mayCreate: (e, t) => {
                try {
                  return Ae.lookupNode(e, t), 20;
                } catch (e) {}
                return Ae.nodePermissions(e, "wx");
              },
              mayDelete: (e, t, r) => {
                var o;
                try {
                  o = Ae.lookupNode(e, t);
                } catch (e) {
                  return e.errno;
                }
                var n = Ae.nodePermissions(e, "wx");
                if (n) return n;
                if (r) {
                  if (!Ae.isDir(o.mode)) return 54;
                  if (Ae.isRoot(o) || Ae.getPath(o) === Ae.cwd()) return 10;
                } else if (Ae.isDir(o.mode)) return 31;
                return 0;
              },
              mayOpen: (e, t) => e ? Ae.isLink(e.mode) ? 32 : Ae.isDir(e.mode) && ("r" !== Ae.flagsToPermissionString(t) || 512 & t) ? 31 : Ae.nodePermissions(e, Ae.flagsToPermissionString(t)) : 44,
              MAX_OPEN_FDS: 4096,
              nextfd: (e = 0, t = Ae.MAX_OPEN_FDS) => {
                for (var r = e; r <= t; r++) if (!Ae.streams[r]) return r;
                throw new Ae.ErrnoError(33);
              },
              getStream: e => Ae.streams[e],
              createStream: (e, t, r) => {
                Ae.FSStream || (Ae.FSStream = function() {}, Ae.FSStream.prototype = {
                  object: {
                    get: function() {
                      return this.node;
                    },
                    set: function(e) {
                      this.node = e;
                    }
                  },
                  isRead: {
                    get: function() {
                      return 1 != (2097155 & this.flags);
                    }
                  },
                  isWrite: {
                    get: function() {
                      return !!(2097155 & this.flags);
                    }
                  },
                  isAppend: {
                    get: function() {
                      return 1024 & this.flags;
                    }
                  }
                }), e = Object.assign(new Ae.FSStream, e);
                var o = Ae.nextfd(t, r);
                return e.fd = o, Ae.streams[o] = e, e;
              },
              closeStream: e => {
                Ae.streams[e] = null;
              },
              chrdev_stream_ops: {
                open: e => {
                  var t = Ae.getDevice(e.node.rdev);
                  e.stream_ops = t.stream_ops, e.stream_ops.open && e.stream_ops.open(e);
                },
                llseek: () => {
                  throw new Ae.ErrnoError(70);
                }
              },
              major: e => e >> 8,
              minor: e => 255 & e,
              makedev: (e, t) => e << 8 | t,
              registerDevice: (e, t) => {
                Ae.devices[e] = {
                  stream_ops: t
                };
              },
              getDevice: e => Ae.devices[e],
              getMounts: e => {
                for (var t = [], r = [ e ]; r.length; ) {
                  var o = r.pop();
                  t.push(o), r.push.apply(r, o.mounts);
                }
                return t;
              },
              syncfs: (e, t) => {
                "function" == typeof e && (t = e, e = !1), Ae.syncFSRequests++, Ae.syncFSRequests > 1 && y("warning: " + Ae.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");
                var r = Ae.getMounts(Ae.root.mount), o = 0;
                function n(e) {
                  return I(Ae.syncFSRequests > 0), Ae.syncFSRequests--, t(e);
                }
                function i(e) {
                  if (e) return i.errored ? void 0 : (i.errored = !0, n(e));
                  ++o >= r.length && n(null);
                }
                r.forEach((t => {
                  if (!t.type.syncfs) return i(null);
                  t.type.syncfs(t, e, i);
                }));
              },
              mount: (e, t, r) => {
                if ("string" == typeof e) throw e;
                var o, n = "/" === r, i = !r;
                if (n && Ae.root) throw new Ae.ErrnoError(10);
                if (!n && !i) {
                  var a = Ae.lookupPath(r, {
                    follow_mount: !1
                  });
                  if (r = a.path, o = a.node, Ae.isMountpoint(o)) throw new Ae.ErrnoError(10);
                  if (!Ae.isDir(o.mode)) throw new Ae.ErrnoError(54);
                }
                var s = {
                  type: e,
                  opts: t,
                  mountpoint: r,
                  mounts: []
                }, d = e.mount(s);
                return d.mount = s, s.root = d, n ? Ae.root = d : o && (o.mounted = s, o.mount && o.mount.mounts.push(s)), 
                d;
              },
              unmount: e => {
                var t = Ae.lookupPath(e, {
                  follow_mount: !1
                });
                if (!Ae.isMountpoint(t.node)) throw new Ae.ErrnoError(28);
                var r = t.node, o = r.mounted, n = Ae.getMounts(o);
                Object.keys(Ae.nameTable).forEach((e => {
                  for (var t = Ae.nameTable[e]; t; ) {
                    var r = t.name_next;
                    n.includes(t.mount) && Ae.destroyNode(t), t = r;
                  }
                })), r.mounted = null;
                var i = r.mount.mounts.indexOf(o);
                I(-1 !== i), r.mount.mounts.splice(i, 1);
              },
              lookup: (e, t) => e.node_ops.lookup(e, t),
              mknod: (e, t, r) => {
                var o = Ae.lookupPath(e, {
                  parent: !0
                }).node, n = be.basename(e);
                if (!n || "." === n || ".." === n) throw new Ae.ErrnoError(28);
                var i = Ae.mayCreate(o, n);
                if (i) throw new Ae.ErrnoError(i);
                if (!o.node_ops.mknod) throw new Ae.ErrnoError(63);
                return o.node_ops.mknod(o, n, t, r);
              },
              create: (e, t) => (t = void 0 !== t ? t : 438, t &= 4095, t |= 32768, Ae.mknod(e, t, 0)),
              mkdir: (e, t) => (t = void 0 !== t ? t : 511, t &= 1023, t |= 16384, Ae.mknod(e, t, 0)),
              mkdirTree: (e, t) => {
                for (var r = e.split("/"), o = "", n = 0; n < r.length; ++n) if (r[n]) {
                  o += "/" + r[n];
                  try {
                    Ae.mkdir(o, t);
                  } catch (e) {
                    if (20 != e.errno) throw e;
                  }
                }
              },
              mkdev: (e, t, r) => (void 0 === r && (r = t, t = 438), t |= 8192, Ae.mknod(e, t, r)),
              symlink: (e, t) => {
                if (!ve.resolve(e)) throw new Ae.ErrnoError(44);
                var r = Ae.lookupPath(t, {
                  parent: !0
                }).node;
                if (!r) throw new Ae.ErrnoError(44);
                var o = be.basename(t), n = Ae.mayCreate(r, o);
                if (n) throw new Ae.ErrnoError(n);
                if (!r.node_ops.symlink) throw new Ae.ErrnoError(63);
                return r.node_ops.symlink(r, o, e);
              },
              rename: (e, t) => {
                var r, o, n = be.dirname(e), i = be.dirname(t), a = be.basename(e), s = be.basename(t);
                if (r = Ae.lookupPath(e, {
                  parent: !0
                }).node, o = Ae.lookupPath(t, {
                  parent: !0
                }).node, !r || !o) throw new Ae.ErrnoError(44);
                if (r.mount !== o.mount) throw new Ae.ErrnoError(75);
                var d, c = Ae.lookupNode(r, a), l = ve.relative(e, i);
                if ("." !== l.charAt(0)) throw new Ae.ErrnoError(28);
                if ("." !== (l = ve.relative(t, n)).charAt(0)) throw new Ae.ErrnoError(55);
                try {
                  d = Ae.lookupNode(o, s);
                } catch (e) {}
                if (c !== d) {
                  var p = Ae.isDir(c.mode), E = Ae.mayDelete(r, a, p);
                  if (E) throw new Ae.ErrnoError(E);
                  if (E = d ? Ae.mayDelete(o, s, p) : Ae.mayCreate(o, s)) throw new Ae.ErrnoError(E);
                  if (!r.node_ops.rename) throw new Ae.ErrnoError(63);
                  if (Ae.isMountpoint(c) || d && Ae.isMountpoint(d)) throw new Ae.ErrnoError(10);
                  if (o !== r && (E = Ae.nodePermissions(r, "w"))) throw new Ae.ErrnoError(E);
                  Ae.hashRemoveNode(c);
                  try {
                    r.node_ops.rename(c, o, s);
                  } catch (e) {
                    throw e;
                  } finally {
                    Ae.hashAddNode(c);
                  }
                }
              },
              rmdir: e => {
                var t = Ae.lookupPath(e, {
                  parent: !0
                }).node, r = be.basename(e), o = Ae.lookupNode(t, r), n = Ae.mayDelete(t, r, !0);
                if (n) throw new Ae.ErrnoError(n);
                if (!t.node_ops.rmdir) throw new Ae.ErrnoError(63);
                if (Ae.isMountpoint(o)) throw new Ae.ErrnoError(10);
                t.node_ops.rmdir(t, r), Ae.destroyNode(o);
              },
              readdir: e => {
                var t = Ae.lookupPath(e, {
                  follow: !0
                }).node;
                if (!t.node_ops.readdir) throw new Ae.ErrnoError(54);
                return t.node_ops.readdir(t);
              },
              unlink: e => {
                var t = Ae.lookupPath(e, {
                  parent: !0
                }).node;
                if (!t) throw new Ae.ErrnoError(44);
                var r = be.basename(e), o = Ae.lookupNode(t, r), n = Ae.mayDelete(t, r, !1);
                if (n) throw new Ae.ErrnoError(n);
                if (!t.node_ops.unlink) throw new Ae.ErrnoError(63);
                if (Ae.isMountpoint(o)) throw new Ae.ErrnoError(10);
                t.node_ops.unlink(t, r), Ae.destroyNode(o);
              },
              readlink: e => {
                var t = Ae.lookupPath(e).node;
                if (!t) throw new Ae.ErrnoError(44);
                if (!t.node_ops.readlink) throw new Ae.ErrnoError(28);
                return ve.resolve(Ae.getPath(t.parent), t.node_ops.readlink(t));
              },
              stat: (e, t) => {
                var r = Ae.lookupPath(e, {
                  follow: !t
                }).node;
                if (!r) throw new Ae.ErrnoError(44);
                if (!r.node_ops.getattr) throw new Ae.ErrnoError(63);
                return r.node_ops.getattr(r);
              },
              lstat: e => Ae.stat(e, !0),
              chmod: (e, t, r) => {
                var o;
                if (!(o = "string" == typeof e ? Ae.lookupPath(e, {
                  follow: !r
                }).node : e).node_ops.setattr) throw new Ae.ErrnoError(63);
                o.node_ops.setattr(o, {
                  mode: 4095 & t | -4096 & o.mode,
                  timestamp: Date.now()
                });
              },
              lchmod: (e, t) => {
                Ae.chmod(e, t, !0);
              },
              fchmod: (e, t) => {
                var r = Ae.getStream(e);
                if (!r) throw new Ae.ErrnoError(8);
                Ae.chmod(r.node, t);
              },
              chown: (e, t, r, o) => {
                var n;
                if (!(n = "string" == typeof e ? Ae.lookupPath(e, {
                  follow: !o
                }).node : e).node_ops.setattr) throw new Ae.ErrnoError(63);
                n.node_ops.setattr(n, {
                  timestamp: Date.now()
                });
              },
              lchown: (e, t, r) => {
                Ae.chown(e, t, r, !0);
              },
              fchown: (e, t, r) => {
                var o = Ae.getStream(e);
                if (!o) throw new Ae.ErrnoError(8);
                Ae.chown(o.node, t, r);
              },
              truncate: (e, t) => {
                if (t < 0) throw new Ae.ErrnoError(28);
                var r;
                if (!(r = "string" == typeof e ? Ae.lookupPath(e, {
                  follow: !0
                }).node : e).node_ops.setattr) throw new Ae.ErrnoError(63);
                if (Ae.isDir(r.mode)) throw new Ae.ErrnoError(31);
                if (!Ae.isFile(r.mode)) throw new Ae.ErrnoError(28);
                var o = Ae.nodePermissions(r, "w");
                if (o) throw new Ae.ErrnoError(o);
                r.node_ops.setattr(r, {
                  size: t,
                  timestamp: Date.now()
                });
              },
              ftruncate: (e, t) => {
                var r = Ae.getStream(e);
                if (!r) throw new Ae.ErrnoError(8);
                if (!(2097155 & r.flags)) throw new Ae.ErrnoError(28);
                Ae.truncate(r.node, t);
              },
              utime: (e, t, r) => {
                var o = Ae.lookupPath(e, {
                  follow: !0
                }).node;
                o.node_ops.setattr(o, {
                  timestamp: Math.max(t, r)
                });
              },
              open: (e, t, r, o, n) => {
                if ("" === e) throw new Ae.ErrnoError(44);
                var a;
                if (r = void 0 === r ? 438 : r, r = 64 & (t = "string" == typeof t ? Ae.modeStringToFlags(t) : t) ? 4095 & r | 32768 : 0, 
                "object" == typeof e) a = e; else {
                  e = be.normalize(e);
                  try {
                    a = Ae.lookupPath(e, {
                      follow: !(131072 & t)
                    }).node;
                  } catch (e) {}
                }
                var s = !1;
                if (64 & t) if (a) {
                  if (128 & t) throw new Ae.ErrnoError(20);
                } else a = Ae.mknod(e, r, 0), s = !0;
                if (!a) throw new Ae.ErrnoError(44);
                if (Ae.isChrdev(a.mode) && (t &= -513), 65536 & t && !Ae.isDir(a.mode)) throw new Ae.ErrnoError(54);
                if (!s) {
                  var d = Ae.mayOpen(a, t);
                  if (d) throw new Ae.ErrnoError(d);
                }
                512 & t && Ae.truncate(a, 0), t &= -131713;
                var c = Ae.createStream({
                  node: a,
                  path: Ae.getPath(a),
                  flags: t,
                  seekable: !0,
                  position: 0,
                  stream_ops: a.stream_ops,
                  ungotten: [],
                  error: !1
                }, o, n);
                return c.stream_ops.open && c.stream_ops.open(c), !i.logReadFiles || 1 & t || (Ae.readFiles || (Ae.readFiles = {}), 
                e in Ae.readFiles || (Ae.readFiles[e] = 1)), c;
              },
              close: e => {
                if (Ae.isClosed(e)) throw new Ae.ErrnoError(8);
                e.getdents && (e.getdents = null);
                try {
                  e.stream_ops.close && e.stream_ops.close(e);
                } catch (e) {
                  throw e;
                } finally {
                  Ae.closeStream(e.fd);
                }
                e.fd = null;
              },
              isClosed: e => null === e.fd,
              llseek: (e, t, r) => {
                if (Ae.isClosed(e)) throw new Ae.ErrnoError(8);
                if (!e.seekable || !e.stream_ops.llseek) throw new Ae.ErrnoError(70);
                if (0 != r && 1 != r && 2 != r) throw new Ae.ErrnoError(28);
                return e.position = e.stream_ops.llseek(e, t, r), e.ungotten = [], e.position;
              },
              read: (e, t, r, o, n) => {
                if (o < 0 || n < 0) throw new Ae.ErrnoError(28);
                if (Ae.isClosed(e)) throw new Ae.ErrnoError(8);
                if (1 == (2097155 & e.flags)) throw new Ae.ErrnoError(8);
                if (Ae.isDir(e.node.mode)) throw new Ae.ErrnoError(31);
                if (!e.stream_ops.read) throw new Ae.ErrnoError(28);
                var i = void 0 !== n;
                if (i) {
                  if (!e.seekable) throw new Ae.ErrnoError(70);
                } else n = e.position;
                var a = e.stream_ops.read(e, t, r, o, n);
                return i || (e.position += a), a;
              },
              write: (e, t, r, o, n, i) => {
                if (o < 0 || n < 0) throw new Ae.ErrnoError(28);
                if (Ae.isClosed(e)) throw new Ae.ErrnoError(8);
                if (!(2097155 & e.flags)) throw new Ae.ErrnoError(8);
                if (Ae.isDir(e.node.mode)) throw new Ae.ErrnoError(31);
                if (!e.stream_ops.write) throw new Ae.ErrnoError(28);
                e.seekable && 1024 & e.flags && Ae.llseek(e, 0, 2);
                var a = void 0 !== n;
                if (a) {
                  if (!e.seekable) throw new Ae.ErrnoError(70);
                } else n = e.position;
                var s = e.stream_ops.write(e, t, r, o, n, i);
                return a || (e.position += s), s;
              },
              allocate: (e, t, r) => {
                if (Ae.isClosed(e)) throw new Ae.ErrnoError(8);
                if (t < 0 || r <= 0) throw new Ae.ErrnoError(28);
                if (!(2097155 & e.flags)) throw new Ae.ErrnoError(8);
                if (!Ae.isFile(e.node.mode) && !Ae.isDir(e.node.mode)) throw new Ae.ErrnoError(43);
                if (!e.stream_ops.allocate) throw new Ae.ErrnoError(138);
                e.stream_ops.allocate(e, t, r);
              },
              mmap: (e, t, r, o, n, i) => {
                if (2 & n && !(2 & i) && 2 != (2097155 & e.flags)) throw new Ae.ErrnoError(2);
                if (1 == (2097155 & e.flags)) throw new Ae.ErrnoError(2);
                if (!e.stream_ops.mmap) throw new Ae.ErrnoError(43);
                return e.stream_ops.mmap(e, t, r, o, n, i);
              },
              msync: (e, t, r, o, n) => e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, o, n) : 0,
              munmap: e => 0,
              ioctl: (e, t, r) => {
                if (!e.stream_ops.ioctl) throw new Ae.ErrnoError(59);
                return e.stream_ops.ioctl(e, t, r);
              },
              readFile: (e, t = {}) => {
                if (t.flags = t.flags || 0, t.encoding = t.encoding || "binary", "utf8" !== t.encoding && "binary" !== t.encoding) throw new Error('Invalid encoding type "' + t.encoding + '"');
                var r, o = Ae.open(e, t.flags), n = Ae.stat(e).size, i = new Uint8Array(n);
                return Ae.read(o, i, 0, n, 0), "utf8" === t.encoding ? r = B(i, 0) : "binary" === t.encoding && (r = i), 
                Ae.close(o), r;
              },
              writeFile: (e, t, r = {}) => {
                r.flags = r.flags || 577;
                var o = Ae.open(e, r.flags, r.mode);
                if ("string" == typeof t) {
                  var n = new Uint8Array(K(t) + 1), i = z(t, n, 0, n.length);
                  Ae.write(o, n, 0, i, void 0, r.canOwn);
                } else {
                  if (!ArrayBuffer.isView(t)) throw new Error("Unsupported data type");
                  Ae.write(o, t, 0, t.byteLength, void 0, r.canOwn);
                }
                Ae.close(o);
              },
              cwd: () => Ae.currentPath,
              chdir: e => {
                var t = Ae.lookupPath(e, {
                  follow: !0
                });
                if (null === t.node) throw new Ae.ErrnoError(44);
                if (!Ae.isDir(t.node.mode)) throw new Ae.ErrnoError(54);
                var r = Ae.nodePermissions(t.node, "x");
                if (r) throw new Ae.ErrnoError(r);
                Ae.currentPath = t.path;
              },
              createDefaultDirectories: () => {
                Ae.mkdir("/tmp"), Ae.mkdir("/home"), Ae.mkdir("/home/web_user");
              },
              createDefaultDevices: () => {
                Ae.mkdir("/dev"), Ae.registerDevice(Ae.makedev(1, 3), {
                  read: () => 0,
                  write: (e, t, r, o, n) => o
                }), Ae.mkdev("/dev/null", Ae.makedev(1, 3)), Pe.register(Ae.makedev(5, 0), Pe.default_tty_ops), 
                Pe.register(Ae.makedev(6, 0), Pe.default_tty1_ops), Ae.mkdev("/dev/tty", Ae.makedev(5, 0)), 
                Ae.mkdev("/dev/tty1", Ae.makedev(6, 0));
                var e = function() {
                  if ("object" == typeof crypto && "function" == typeof crypto.getRandomValues) {
                    var e = new Uint8Array(1);
                    return function() {
                      return crypto.getRandomValues(e), e[0];
                    };
                  }
                  if (l) try {
                    var t = r(349);
                    return function() {
                      return t.randomBytes(1)[0];
                    };
                  } catch (e) {}
                  return function() {
                    Ee("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };");
                  };
                }();
                Ae.createDevice("/dev", "random", e), Ae.createDevice("/dev", "urandom", e), Ae.mkdir("/dev/shm"), 
                Ae.mkdir("/dev/shm/tmp");
              },
              createSpecialDirectories: () => {
                Ae.mkdir("/proc");
                var e = Ae.mkdir("/proc/self");
                Ae.mkdir("/proc/self/fd"), Ae.mount({
                  mount: () => {
                    var t = Ae.createNode(e, "fd", 16895, 73);
                    return t.node_ops = {
                      lookup: (e, t) => {
                        var r = +t, o = Ae.getStream(r);
                        if (!o) throw new Ae.ErrnoError(8);
                        var n = {
                          parent: null,
                          mount: {
                            mountpoint: "fake"
                          },
                          node_ops: {
                            readlink: () => o.path
                          }
                        };
                        return n.parent = n, n;
                      }
                    }, t;
                  }
                }, {}, "/proc/self/fd");
              },
              createStandardStreams: () => {
                i.stdin ? Ae.createDevice("/dev", "stdin", i.stdin) : Ae.symlink("/dev/tty", "/dev/stdin"), 
                i.stdout ? Ae.createDevice("/dev", "stdout", null, i.stdout) : Ae.symlink("/dev/tty", "/dev/stdout"), 
                i.stderr ? Ae.createDevice("/dev", "stderr", null, i.stderr) : Ae.symlink("/dev/tty1", "/dev/stderr");
                var e = Ae.open("/dev/stdin", 0), t = Ae.open("/dev/stdout", 1), r = Ae.open("/dev/stderr", 1);
                I(0 === e.fd, "invalid handle for stdin (" + e.fd + ")"), I(1 === t.fd, "invalid handle for stdout (" + t.fd + ")"), 
                I(2 === r.fd, "invalid handle for stderr (" + r.fd + ")");
              },
              ensureErrnoError: () => {
                Ae.ErrnoError || (Ae.ErrnoError = function(e, t) {
                  this.node = t, this.setErrno = function(e) {
                    for (var t in this.errno = e, Se) if (Se[t] === e) {
                      this.code = t;
                      break;
                    }
                  }, this.setErrno(e), this.message = Re[e], this.stack && (Object.defineProperty(this, "stack", {
                    value: (new Error).stack,
                    writable: !0
                  }), this.stack = ye(this.stack));
                }, Ae.ErrnoError.prototype = new Error, Ae.ErrnoError.prototype.constructor = Ae.ErrnoError, 
                [ 44 ].forEach((e => {
                  Ae.genericErrors[e] = new Ae.ErrnoError(e), Ae.genericErrors[e].stack = "<generic error, no stack>";
                })));
              },
              staticInit: () => {
                Ae.ensureErrnoError(), Ae.nameTable = new Array(4096), Ae.mount(Me, {}, "/"), Ae.createDefaultDirectories(), 
                Ae.createDefaultDevices(), Ae.createSpecialDirectories(), Ae.filesystems = {
                  MEMFS: Me
                };
              },
              init: (e, t, r) => {
                I(!Ae.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"), 
                Ae.init.initialized = !0, Ae.ensureErrnoError(), i.stdin = e || i.stdin, i.stdout = t || i.stdout, 
                i.stderr = r || i.stderr, Ae.createStandardStreams();
              },
              quit: () => {
                Ae.init.initialized = !1, He();
                for (var e = 0; e < Ae.streams.length; e++) {
                  var t = Ae.streams[e];
                  t && Ae.close(t);
                }
              },
              getMode: (e, t) => {
                var r = 0;
                return e && (r |= 365), t && (r |= 146), r;
              },
              findObject: (e, t) => {
                var r = Ae.analyzePath(e, t);
                return r.exists ? r.object : null;
              },
              analyzePath: (e, t) => {
                try {
                  e = (o = Ae.lookupPath(e, {
                    follow: !t
                  })).path;
                } catch (e) {}
                var r = {
                  isRoot: !1,
                  exists: !1,
                  error: 0,
                  name: null,
                  path: null,
                  object: null,
                  parentExists: !1,
                  parentPath: null,
                  parentObject: null
                };
                try {
                  var o = Ae.lookupPath(e, {
                    parent: !0
                  });
                  r.parentExists = !0, r.parentPath = o.path, r.parentObject = o.node, r.name = be.basename(e), 
                  o = Ae.lookupPath(e, {
                    follow: !t
                  }), r.exists = !0, r.path = o.path, r.object = o.node, r.name = o.node.name, r.isRoot = "/" === o.path;
                } catch (e) {
                  r.error = e.errno;
                }
                return r;
              },
              createPath: (e, t, r, o) => {
                e = "string" == typeof e ? e : Ae.getPath(e);
                for (var n = t.split("/").reverse(); n.length; ) {
                  var i = n.pop();
                  if (i) {
                    var a = be.join2(e, i);
                    try {
                      Ae.mkdir(a);
                    } catch (e) {}
                    e = a;
                  }
                }
                return a;
              },
              createFile: (e, t, r, o, n) => {
                var i = be.join2("string" == typeof e ? e : Ae.getPath(e), t), a = Ae.getMode(o, n);
                return Ae.create(i, a);
              },
              createDataFile: (e, t, r, o, n, i) => {
                var a = t;
                e && (e = "string" == typeof e ? e : Ae.getPath(e), a = t ? be.join2(e, t) : e);
                var s = Ae.getMode(o, n), d = Ae.create(a, s);
                if (r) {
                  if ("string" == typeof r) {
                    for (var c = new Array(r.length), l = 0, p = r.length; l < p; ++l) c[l] = r.charCodeAt(l);
                    r = c;
                  }
                  Ae.chmod(d, 146 | s);
                  var E = Ae.open(d, 577);
                  Ae.write(E, r, 0, r.length, 0, i), Ae.close(E), Ae.chmod(d, s);
                }
                return d;
              },
              createDevice: (e, t, r, o) => {
                var n = be.join2("string" == typeof e ? e : Ae.getPath(e), t), i = Ae.getMode(!!r, !!o);
                Ae.createDevice.major || (Ae.createDevice.major = 64);
                var a = Ae.makedev(Ae.createDevice.major++, 0);
                return Ae.registerDevice(a, {
                  open: e => {
                    e.seekable = !1;
                  },
                  close: e => {
                    o && o.buffer && o.buffer.length && o(10);
                  },
                  read: (e, t, o, n, i) => {
                    for (var a = 0, s = 0; s < n; s++) {
                      var d;
                      try {
                        d = r();
                      } catch (e) {
                        throw new Ae.ErrnoError(29);
                      }
                      if (void 0 === d && 0 === a) throw new Ae.ErrnoError(6);
                      if (null == d) break;
                      a++, t[o + s] = d;
                    }
                    return a && (e.node.timestamp = Date.now()), a;
                  },
                  write: (e, t, r, n, i) => {
                    for (var a = 0; a < n; a++) try {
                      o(t[r + a]);
                    } catch (e) {
                      throw new Ae.ErrnoError(29);
                    }
                    return n && (e.node.timestamp = Date.now()), a;
                  }
                }), Ae.mkdev(n, i, a);
              },
              forceLoadFile: e => {
                if (e.isDevice || e.isFolder || e.link || e.contents) return !0;
                if ("undefined" != typeof XMLHttpRequest) throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
                if (!E) throw new Error("Cannot load without read() or XMLHttpRequest.");
                try {
                  e.contents = je(E(e.url), !0), e.usedBytes = e.contents.length;
                } catch (e) {
                  throw new Ae.ErrnoError(29);
                }
              },
              createLazyFile: (e, t, r, o, n) => {
                function i() {
                  this.lengthKnown = !1, this.chunks = [];
                }
                if (i.prototype.get = function(e) {
                  if (!(e > this.length - 1 || e < 0)) {
                    var t = e % this.chunkSize, r = e / this.chunkSize | 0;
                    return this.getter(r)[t];
                  }
                }, i.prototype.setDataGetter = function(e) {
                  this.getter = e;
                }, i.prototype.cacheLength = function() {
                  var e = new XMLHttpRequest;
                  if (e.open("HEAD", r, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + r + ". Status: " + e.status);
                  var t, o = Number(e.getResponseHeader("Content-length")), n = (t = e.getResponseHeader("Accept-Ranges")) && "bytes" === t, i = (t = e.getResponseHeader("Content-Encoding")) && "gzip" === t, a = 1048576;
                  n || (a = o);
                  var s = this;
                  s.setDataGetter((e => {
                    var t = e * a, n = (e + 1) * a - 1;
                    if (n = Math.min(n, o - 1), void 0 === s.chunks[e] && (s.chunks[e] = ((e, t) => {
                      if (e > t) throw new Error("invalid range (" + e + ", " + t + ") or no bytes requested!");
                      if (t > o - 1) throw new Error("only " + o + " bytes available! programmer error!");
                      var n = new XMLHttpRequest;
                      if (n.open("GET", r, !1), o !== a && n.setRequestHeader("Range", "bytes=" + e + "-" + t), 
                      n.responseType = "arraybuffer", n.overrideMimeType && n.overrideMimeType("text/plain; charset=x-user-defined"), 
                      n.send(null), !(n.status >= 200 && n.status < 300 || 304 === n.status)) throw new Error("Couldn't load " + r + ". Status: " + n.status);
                      return void 0 !== n.response ? new Uint8Array(n.response || []) : je(n.responseText || "", !0);
                    })(t, n)), void 0 === s.chunks[e]) throw new Error("doXHR failed!");
                    return s.chunks[e];
                  })), !i && o || (a = o = 1, o = this.getter(0).length, a = o, T("LazyFiles on gzip forces download of the whole file when length is accessed")), 
                  this._length = o, this._chunkSize = a, this.lengthKnown = !0;
                }, "undefined" != typeof XMLHttpRequest) {
                  if (!c) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
                  var a = new i;
                  Object.defineProperties(a, {
                    length: {
                      get: function() {
                        return this.lengthKnown || this.cacheLength(), this._length;
                      }
                    },
                    chunkSize: {
                      get: function() {
                        return this.lengthKnown || this.cacheLength(), this._chunkSize;
                      }
                    }
                  });
                  var s = {
                    isDevice: !1,
                    contents: a
                  };
                } else s = {
                  isDevice: !1,
                  url: r
                };
                var d = Ae.createFile(e, t, s, o, n);
                s.contents ? d.contents = s.contents : s.url && (d.contents = null, d.url = s.url), 
                Object.defineProperties(d, {
                  usedBytes: {
                    get: function() {
                      return this.contents.length;
                    }
                  }
                });
                var l = {};
                return Object.keys(d.stream_ops).forEach((e => {
                  var t = d.stream_ops[e];
                  l[e] = function() {
                    return Ae.forceLoadFile(d), t.apply(null, arguments);
                  };
                })), l.read = (e, t, r, o, n) => {
                  Ae.forceLoadFile(d);
                  var i = e.node.contents;
                  if (n >= i.length) return 0;
                  var a = Math.min(i.length - n, o);
                  if (I(a >= 0), i.slice) for (var s = 0; s < a; s++) t[r + s] = i[n + s]; else for (s = 0; s < a; s++) t[r + s] = i.get(n + s);
                  return a;
                }, d.stream_ops = l, d;
              },
              createPreloadedFile: (e, t, r, o, n, i, a, s, d, c) => {
                var l = t ? ve.resolve(be.join2(e, t)) : e, p = ce("cp " + l);
                function E(r) {
                  function E(r) {
                    c && c(), s || Ae.createDataFile(e, t, r, o, n, d), i && i(), pe(p);
                  }
                  Browser.handledByPreloadPlugin(r, l, E, (() => {
                    a && a(), pe(p);
                  })) || E(r);
                }
                le(p), "string" == typeof r ? function(e, t, r, o) {
                  var n = o ? "" : ce("al " + e);
                  u(e, (function(r) {
                    I(r, 'Loading data file "' + e + '" failed (no arrayBuffer).'), t(new Uint8Array(r)), 
                    n && pe(n);
                  }), (function(t) {
                    if (!r) throw 'Loading data file "' + e + '" failed.';
                    r();
                  })), n && le(n);
                }(r, (e => E(e)), a) : E(r);
              },
              indexedDB: () => window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB,
              DB_NAME: () => "EM_FS_" + window.location.pathname,
              DB_VERSION: 20,
              DB_STORE_NAME: "FILE_DATA",
              saveFilesToDB: (e, t, r) => {
                t = t || (() => {}), r = r || (() => {});
                var o = Ae.indexedDB();
                try {
                  var n = o.open(Ae.DB_NAME(), Ae.DB_VERSION);
                } catch (e) {
                  return r(e);
                }
                n.onupgradeneeded = () => {
                  T("creating db"), n.result.createObjectStore(Ae.DB_STORE_NAME);
                }, n.onsuccess = () => {
                  var o = n.result.transaction([ Ae.DB_STORE_NAME ], "readwrite"), i = o.objectStore(Ae.DB_STORE_NAME), a = 0, s = 0, d = e.length;
                  function c() {
                    0 == s ? t() : r();
                  }
                  e.forEach((e => {
                    var t = i.put(Ae.analyzePath(e).object.contents, e);
                    t.onsuccess = () => {
                      ++a + s == d && c();
                    }, t.onerror = () => {
                      s++, a + s == d && c();
                    };
                  })), o.onerror = r;
                }, n.onerror = r;
              },
              loadFilesFromDB: (e, t, r) => {
                t = t || (() => {}), r = r || (() => {});
                var o = Ae.indexedDB();
                try {
                  var n = o.open(Ae.DB_NAME(), Ae.DB_VERSION);
                } catch (e) {
                  return r(e);
                }
                n.onupgradeneeded = r, n.onsuccess = () => {
                  var o = n.result;
                  try {
                    var i = o.transaction([ Ae.DB_STORE_NAME ], "readonly");
                  } catch (e) {
                    return void r(e);
                  }
                  var a = i.objectStore(Ae.DB_STORE_NAME), s = 0, d = 0, c = e.length;
                  function l() {
                    0 == d ? t() : r();
                  }
                  e.forEach((e => {
                    var t = a.get(e);
                    t.onsuccess = () => {
                      Ae.analyzePath(e).exists && Ae.unlink(e), Ae.createDataFile(be.dirname(e), be.basename(e), t.result, !0, !0, !0), 
                      ++s + d == c && l();
                    }, t.onerror = () => {
                      d++, s + d == c && l();
                    };
                  })), i.onerror = r;
                }, n.onerror = r;
              },
              absolutePath: () => {
                Ee("FS.absolutePath has been removed; use PATH_FS.resolve instead");
              },
              createFolder: () => {
                Ee("FS.createFolder has been removed; use FS.mkdir instead");
              },
              createLink: () => {
                Ee("FS.createLink has been removed; use FS.symlink instead");
              },
              joinPath: () => {
                Ee("FS.joinPath has been removed; use PATH.join instead");
              },
              mmapAlloc: () => {
                Ee("FS.mmapAlloc has been replaced by the top level function mmapAlloc");
              },
              standardizePath: () => {
                Ee("FS.standardizePath has been removed; use PATH.normalize instead");
              }
            }, Fe = {
              DEFAULT_POLLMASK: 5,
              calculateAt: function(e, t, r) {
                if ("/" === t[0]) return t;
                var o;
                if (-100 === e) o = Ae.cwd(); else {
                  var n = Ae.getStream(e);
                  if (!n) throw new Ae.ErrnoError(8);
                  o = n.path;
                }
                if (0 == t.length) {
                  if (!r) throw new Ae.ErrnoError(44);
                  return o;
                }
                return be.join2(o, t);
              },
              doStat: function(e, t, r) {
                try {
                  var o = e(t);
                } catch (e) {
                  if (e && e.node && be.normalize(t) !== be.normalize(Ae.getPath(e.node))) return -54;
                  throw e;
                }
                return M(0 | r, 0 | o.dev, 4), M(r + 4 | 0, 0, 4), M(r + 8 | 0, 0 | o.ino, 4), M(r + 12 | 0, 0 | o.mode, 4), 
                M(r + 16 | 0, 0 | o.nlink, 4), M(r + 20 | 0, 0 | o.uid, 4), M(r + 24 | 0, 0 | o.gid, 4), 
                M(r + 28 | 0, 0 | o.rdev, 4), M(r + 32 | 0, 0, 4), M(r + 40 | 0, 0 | o.size, 8), 
                M(r + 48 | 0, 4096, 4), M(r + 52 | 0, 0 | o.blocks, 4), M(r + 56 | 0, o.atime.getTime() / 1e3 | 0, 4), 
                M(r + 60 | 0, 0, 4), M(r + 64 | 0, o.mtime.getTime() / 1e3 | 0, 4), M(r + 68 | 0, 0, 4), 
                M(r + 72 | 0, o.ctime.getTime() / 1e3 | 0, 4), M(r + 76 | 0, 0, 4), M(r + 80 | 0, 0 | o.ino, 8), 
                0;
              },
              doMsync: function(e, t, r, o, n) {
                var i = j.slice(e, e + r);
                Ae.msync(t, i, n, r, o);
              },
              doMkdir: function(e, t) {
                return "/" === (e = be.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), 
                Ae.mkdir(e, t, 0), 0;
              },
              doMknod: function(e, t, r) {
                switch (61440 & t) {
                 case 32768:
                 case 8192:
                 case 24576:
                 case 4096:
                 case 49152:
                  break;

                 default:
                  return -28;
                }
                return Ae.mknod(e, t, r), 0;
              },
              doReadlink: function(e, t, r) {
                if (r <= 0) return -28;
                var o = Ae.readlink(e), n = Math.min(r, K(o)), i = S(t + n, 1, 0);
                return W(o, t, r + 1), M(t + n, i, 1), n;
              },
              doAccess: function(e, t) {
                if (-8 & t) return -28;
                var r = Ae.lookupPath(e, {
                  follow: !0
                }).node;
                if (!r) return -44;
                var o = "";
                return 4 & t && (o += "r"), 2 & t && (o += "w"), 1 & t && (o += "x"), o && Ae.nodePermissions(r, o) ? -2 : 0;
              },
              doDup: function(e, t, r) {
                var o = Ae.getStream(r);
                return o && Ae.close(o), Ae.open(e, t, 0, r, r).fd;
              },
              doReadv: function(e, t, r, o) {
                for (var n = 0, i = 0; i < r; i++) {
                  var a = 0 | S(t + 8 * i | 0, 4, 0), s = 0 | S(t + (8 * i + 4) | 0, 4, 0), d = Ae.read(e, U, a, s, o);
                  if (d < 0) return -1;
                  if (n += d, d < s) break;
                }
                return n;
              },
              doWritev: function(e, t, r, o) {
                for (var n = 0, i = 0; i < r; i++) {
                  var a = 0 | S(t + 8 * i | 0, 4, 0), s = 0 | S(t + (8 * i + 4) | 0, 4, 0), d = Ae.write(e, U, a, s, o);
                  if (d < 0) return -1;
                  n += d;
                }
                return n;
              },
              varargs: void 0,
              get: function() {
                return I(null != Fe.varargs), Fe.varargs += 4, 0 | S(Fe.varargs - 4 | 0, 4, 0);
              },
              getStr: function(e) {
                return Y(e);
              },
              getStreamFromFD: function(e) {
                var t = Ae.getStream(e);
                if (!t) throw new Ae.ErrnoError(8);
                return t;
              },
              get64: function(e, t) {
                return I(e >= 0 ? 0 === t : -1 === t), e;
              }
            };
            function Ie(e) {
              try {
                return D.grow(e - N.byteLength + 65535 >>> 16), V(D.buffer), 1;
              } catch (t) {
                y("emscripten_realloc_buffer: Attempted to grow heap from " + N.byteLength + " bytes to " + e + " bytes, but got error: " + t);
              }
            }
            var ke = function(e, t, r, o) {
              e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = Ae.nextInode++, 
              this.name = t, this.mode = r, this.node_ops = {}, this.stream_ops = {}, this.rdev = o;
            }, Ne = 365, Ue = 146;
            function je(e, t, r) {
              var o = r > 0 ? r : K(e) + 1, n = new Array(o), i = z(e, n, 0, n.length);
              return t && (n.length = i), n;
            }
            Object.defineProperties(ke.prototype, {
              read: {
                get: function() {
                  return (this.mode & Ne) === Ne;
                },
                set: function(e) {
                  e ? this.mode |= Ne : this.mode &= -366;
                }
              },
              write: {
                get: function() {
                  return (this.mode & Ue) === Ue;
                },
                set: function(e) {
                  e ? this.mode |= Ue : this.mode &= -147;
                }
              },
              isFolder: {
                get: function() {
                  return Ae.isDir(this.mode);
                }
              },
              isDevice: {
                get: function() {
                  return Ae.isChrdev(this.mode);
                }
              }
            }), Ae.FSNode = ke, Ae.staticInit(), Se = {
              EPERM: 63,
              ENOENT: 44,
              ESRCH: 71,
              EINTR: 27,
              EIO: 29,
              ENXIO: 60,
              E2BIG: 1,
              ENOEXEC: 45,
              EBADF: 8,
              ECHILD: 12,
              EAGAIN: 6,
              EWOULDBLOCK: 6,
              ENOMEM: 48,
              EACCES: 2,
              EFAULT: 21,
              ENOTBLK: 105,
              EBUSY: 10,
              EEXIST: 20,
              EXDEV: 75,
              ENODEV: 43,
              ENOTDIR: 54,
              EISDIR: 31,
              EINVAL: 28,
              ENFILE: 41,
              EMFILE: 33,
              ENOTTY: 59,
              ETXTBSY: 74,
              EFBIG: 22,
              ENOSPC: 51,
              ESPIPE: 70,
              EROFS: 69,
              EMLINK: 34,
              EPIPE: 64,
              EDOM: 18,
              ERANGE: 68,
              ENOMSG: 49,
              EIDRM: 24,
              ECHRNG: 106,
              EL2NSYNC: 156,
              EL3HLT: 107,
              EL3RST: 108,
              ELNRNG: 109,
              EUNATCH: 110,
              ENOCSI: 111,
              EL2HLT: 112,
              EDEADLK: 16,
              ENOLCK: 46,
              EBADE: 113,
              EBADR: 114,
              EXFULL: 115,
              ENOANO: 104,
              EBADRQC: 103,
              EBADSLT: 102,
              EDEADLOCK: 16,
              EBFONT: 101,
              ENOSTR: 100,
              ENODATA: 116,
              ETIME: 117,
              ENOSR: 118,
              ENONET: 119,
              ENOPKG: 120,
              EREMOTE: 121,
              ENOLINK: 47,
              EADV: 122,
              ESRMNT: 123,
              ECOMM: 124,
              EPROTO: 65,
              EMULTIHOP: 36,
              EDOTDOT: 125,
              EBADMSG: 9,
              ENOTUNIQ: 126,
              EBADFD: 127,
              EREMCHG: 128,
              ELIBACC: 129,
              ELIBBAD: 130,
              ELIBSCN: 131,
              ELIBMAX: 132,
              ELIBEXEC: 133,
              ENOSYS: 52,
              ENOTEMPTY: 55,
              ENAMETOOLONG: 37,
              ELOOP: 32,
              EOPNOTSUPP: 138,
              EPFNOSUPPORT: 139,
              ECONNRESET: 15,
              ENOBUFS: 42,
              EAFNOSUPPORT: 5,
              EPROTOTYPE: 67,
              ENOTSOCK: 57,
              ENOPROTOOPT: 50,
              ESHUTDOWN: 140,
              ECONNREFUSED: 14,
              EADDRINUSE: 3,
              ECONNABORTED: 13,
              ENETUNREACH: 40,
              ENETDOWN: 38,
              ETIMEDOUT: 73,
              EHOSTDOWN: 142,
              EHOSTUNREACH: 23,
              EINPROGRESS: 26,
              EALREADY: 7,
              EDESTADDRREQ: 17,
              EMSGSIZE: 35,
              EPROTONOSUPPORT: 66,
              ESOCKTNOSUPPORT: 137,
              EADDRNOTAVAIL: 4,
              ENETRESET: 39,
              EISCONN: 30,
              ENOTCONN: 53,
              ETOOMANYREFS: 141,
              EUSERS: 136,
              EDQUOT: 19,
              ESTALE: 72,
              ENOTSUP: 138,
              ENOMEDIUM: 148,
              EILSEQ: 25,
              EOVERFLOW: 61,
              ECANCELED: 11,
              ENOTRECOVERABLE: 56,
              EOWNERDEAD: 62,
              ESTRPIPE: 135
            };
            var xe, Ce = {
              __assert_fail: function(e, t, r, o) {
                Ee("Assertion failed: " + Y(e) + ", at: " + [ t ? Y(t) : "unknown filename", r, o ? Y(o) : "unknown function" ]);
              },
              __syscall_open: function(e, t, r) {
                Fe.varargs = r;
                try {
                  var o = Fe.getStr(e), n = r ? Fe.get() : 0;
                  return Ae.open(o, t, n).fd;
                } catch (e) {
                  if (void 0 === Ae || !(e instanceof Ae.ErrnoError)) throw e;
                  return -e.errno;
                }
              },
              alignfault: function() {
                Ee("alignment fault");
              },
              emscripten_memcpy_big: function(e, t, r) {
                j.copyWithin(e, t, t + r);
              },
              emscripten_resize_heap: function(e) {
                var t = j.length;
                I((e >>>= 0) > t);
                var r, o, n = 2147483648;
                if (e > n) return y("Cannot enlarge memory, asked to go up to " + e + " bytes, but the limit is " + n + " bytes!"), 
                !1;
                for (var i = 1; i <= 4; i *= 2) {
                  var a = t * (1 + .2 / i);
                  a = Math.min(a, e + 100663296);
                  var s = Math.min(n, ((r = Math.max(e, a)) % (o = 65536) > 0 && (r += o - r % o), 
                  r));
                  if (Ie(s)) return !0;
                }
                return y("Failed to grow the heap from " + t + " bytes to " + s + " bytes, not enough memory!"), 
                !1;
              },
              fd_read: function(e, t, r, o) {
                try {
                  var n = Fe.getStreamFromFD(e);
                  return M(0 | o, 0 | Fe.doReadv(n, t, r), 4), 0;
                } catch (e) {
                  if (void 0 === Ae || !(e instanceof Ae.ErrnoError)) throw e;
                  return e.errno;
                }
              },
              fd_write: function(e, t, r, o) {
                try {
                  var n = Fe.getStreamFromFD(e);
                  return M(0 | o, 0 | Fe.doWritev(n, t, r), 4), 0;
                } catch (e) {
                  if (void 0 === Ae || !(e instanceof Ae.ErrnoError)) throw e;
                  return e.errno;
                }
              },
              segfault: function() {
                Ee("segmentation fault");
              }
            }, He = (function() {
              var e = {
                env: Ce,
                wasi_snapshot_preview1: Ce
              };
              function t(e, t) {
                var r, o = e.exports;
                i.asm = o, I(D = i.asm.memory, "memory not found in wasm exports"), V(D.buffer), 
                I(q = i.asm.__indirect_function_table, "table not found in wasm exports"), r = i.asm.__wasm_call_ctors, 
                te.unshift(r), pe("wasm-instantiate");
              }
              le("wasm-instantiate");
              var r = i;
              function o(e) {
                I(i === r, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"), 
                r = null, t(e.instance);
              }
              function a(t) {
                return function() {
                  if (!w && (d || c)) {
                    if ("function" == typeof fetch && !ge(ue)) return fetch(ue, {
                      credentials: "same-origin"
                    }).then((function(e) {
                      if (!e.ok) throw "failed to load wasm binary file at '" + ue + "'";
                      return e.arrayBuffer();
                    })).catch((function() {
                      return we(ue);
                    }));
                    if (u) return new Promise((function(e, t) {
                      u(ue, (function(t) {
                        e(new Uint8Array(t));
                      }), t);
                    }));
                  }
                  return Promise.resolve().then((function() {
                    return we(ue);
                  }));
                }().then((function(t) {
                  return WebAssembly.instantiate(t, e);
                })).then((function(e) {
                  return e;
                })).then(t, (function(e) {
                  y("failed to asynchronously prepare wasm: " + e), ge(ue) && y("warning: Loading from a file URI (" + ue + ") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"), 
                  Ee(e);
                }));
              }
              if (i.instantiateWasm) try {
                return i.instantiateWasm(e, t);
              } catch (e) {
                return y("Module.instantiateWasm callback failed with error: " + e), !1;
              }
              (w || "function" != typeof WebAssembly.instantiateStreaming || Oe(ue) || ge(ue) || "function" != typeof fetch ? a(o) : fetch(ue, {
                credentials: "same-origin"
              }).then((function(t) {
                return WebAssembly.instantiateStreaming(t, e).then(o, (function(e) {
                  return y("wasm streaming compile failed: " + e), y("falling back to ArrayBuffer instantiation"), 
                  a(o);
                }));
              }))).catch(n);
            }(), i.___wasm_call_ctors = me("__wasm_call_ctors"), i._dilithium_keygen = me("dilithium_keygen"), 
            i._malloc = me("malloc"), i._free = me("free"), i._dilithium_sign = me("dilithium_sign"), 
            i._dilithium_verify = me("dilithium_verify"), i._SHA3_256 = me("SHA3_256"), i._randombytes = me("randombytes"), 
            i.___errno_location = me("__errno_location"), i.___stdio_exit = me("__stdio_exit")), Le = i._sbrk = me("sbrk"), Xe = (i._emscripten_get_sbrk_ptr = me("emscripten_get_sbrk_ptr"), 
            i._emscripten_stack_init = function() {
              return (Xe = i._emscripten_stack_init = i.asm.emscripten_stack_init).apply(null, arguments);
            }), Qe = (i._emscripten_stack_get_free = function() {
              return (i._emscripten_stack_get_free = i.asm.emscripten_stack_get_free).apply(null, arguments);
            }, i._emscripten_stack_get_base = function() {
              return (Qe = i._emscripten_stack_get_base = i.asm.emscripten_stack_get_base).apply(null, arguments);
            }), Be = i._emscripten_stack_get_end = function() {
              return (Be = i._emscripten_stack_get_end = i.asm.emscripten_stack_get_end).apply(null, arguments);
            }, Ye = i.stackSave = me("stackSave"), ze = i.stackRestore = me("stackRestore"), We = i.stackAlloc = me("stackAlloc");
            function Ke(e) {
              this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", 
              this.status = e;
            }
            function Ve(e) {
              function r() {
                xe || (xe = !0, i.calledRun = !0, F || ($(), I(!oe), oe = !0, i.noFSInit || Ae.init.initialized || Ae.init(), 
                Ae.ignorePermissions = !1, Pe.init(), Te(te), t(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), 
                I(!i._main, 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'), 
                function() {
                  if ($(), i.postRun) for ("function" == typeof i.postRun && (i.postRun = [ i.postRun ]); i.postRun.length; ) e = i.postRun.shift(), 
                  re.unshift(e);
                  var e;
                  Te(re);
                }()));
              }
              e = e || s, ie > 0 || (Xe(), J(), function() {
                if (i.preRun) for ("function" == typeof i.preRun && (i.preRun = [ i.preRun ]); i.preRun.length; ) e = i.preRun.shift(), 
                ee.unshift(e);
                var e;
                Te(ee);
              }(), ie > 0 || (i.setStatus ? (i.setStatus("Running..."), setTimeout((function() {
                setTimeout((function() {
                  i.setStatus("");
                }), 1), r();
              }), 1)) : r(), $()));
            }
            if (Object.getOwnPropertyDescriptor(i, "intArrayFromString") || (i.intArrayFromString = () => Ee("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "intArrayToString") || (i.intArrayToString = () => Ee("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            i.ccall = k, i.cwrap = function(e, t, r, o) {
              return function() {
                return k(e, t, r, arguments);
              };
            }, i.setValue = b, i.getValue = v, Object.getOwnPropertyDescriptor(i, "allocate") || (i.allocate = () => Ee("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "UTF8ArrayToString") || (i.UTF8ArrayToString = () => Ee("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "UTF8ToString") || (i.UTF8ToString = () => Ee("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToUTF8Array") || (i.stringToUTF8Array = () => Ee("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToUTF8") || (i.stringToUTF8 = () => Ee("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "lengthBytesUTF8") || (i.lengthBytesUTF8 = () => Ee("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stackTrace") || (i.stackTrace = () => Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addOnPreRun") || (i.addOnPreRun = () => Ee("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addOnInit") || (i.addOnInit = () => Ee("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addOnPreMain") || (i.addOnPreMain = () => Ee("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addOnExit") || (i.addOnExit = () => Ee("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addOnPostRun") || (i.addOnPostRun = () => Ee("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeStringToMemory") || (i.writeStringToMemory = () => Ee("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeArrayToMemory") || (i.writeArrayToMemory = () => Ee("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeAsciiToMemory") || (i.writeAsciiToMemory = () => Ee("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addRunDependency") || (i.addRunDependency = () => Ee("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "removeRunDependency") || (i.removeRunDependency = () => Ee("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_createFolder") || (i.FS_createFolder = () => Ee("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "FS_createPath") || (i.FS_createPath = () => Ee("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_createDataFile") || (i.FS_createDataFile = () => Ee("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_createPreloadedFile") || (i.FS_createPreloadedFile = () => Ee("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_createLazyFile") || (i.FS_createLazyFile = () => Ee("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_createLink") || (i.FS_createLink = () => Ee("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "FS_createDevice") || (i.FS_createDevice = () => Ee("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "FS_unlink") || (i.FS_unlink = () => Ee("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")), 
            Object.getOwnPropertyDescriptor(i, "getLEB") || (i.getLEB = () => Ee("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getFunctionTables") || (i.getFunctionTables = () => Ee("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "alignFunctionTables") || (i.alignFunctionTables = () => Ee("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerFunctions") || (i.registerFunctions = () => Ee("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "addFunction") || (i.addFunction = () => Ee("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "removeFunction") || (i.removeFunction = () => Ee("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getFuncWrapper") || (i.getFuncWrapper = () => Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "prettyPrint") || (i.prettyPrint = () => Ee("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "dynCall") || (i.dynCall = () => Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getCompilerSetting") || (i.getCompilerSetting = () => Ee("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "print") || (i.print = () => Ee("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "printErr") || (i.printErr = () => Ee("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getTempRet0") || (i.getTempRet0 = () => Ee("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setTempRet0") || (i.setTempRet0 = () => Ee("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "callMain") || (i.callMain = () => Ee("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "abort") || (i.abort = () => Ee("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "keepRuntimeAlive") || (i.keepRuntimeAlive = () => Ee("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "zeroMemory") || (i.zeroMemory = () => Ee("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToNewUTF8") || (i.stringToNewUTF8 = () => Ee("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "emscripten_realloc_buffer") || (i.emscripten_realloc_buffer = () => Ee("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "ENV") || (i.ENV = () => Ee("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "withStackSave") || (i.withStackSave = () => Ee("'withStackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "ERRNO_CODES") || (i.ERRNO_CODES = () => Ee("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "ERRNO_MESSAGES") || (i.ERRNO_MESSAGES = () => Ee("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setErrNo") || (i.setErrNo = () => Ee("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "inetPton4") || (i.inetPton4 = () => Ee("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "inetNtop4") || (i.inetNtop4 = () => Ee("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "inetPton6") || (i.inetPton6 = () => Ee("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "inetNtop6") || (i.inetNtop6 = () => Ee("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "readSockaddr") || (i.readSockaddr = () => Ee("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeSockaddr") || (i.writeSockaddr = () => Ee("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "DNS") || (i.DNS = () => Ee("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getHostByName") || (i.getHostByName = () => Ee("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "Protocols") || (i.Protocols = () => Ee("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "Sockets") || (i.Sockets = () => Ee("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getRandomDevice") || (i.getRandomDevice = () => Ee("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "traverseStack") || (i.traverseStack = () => Ee("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "convertFrameToPC") || (i.convertFrameToPC = () => Ee("'convertFrameToPC' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "UNWIND_CACHE") || (i.UNWIND_CACHE = () => Ee("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "saveInUnwindCache") || (i.saveInUnwindCache = () => Ee("'saveInUnwindCache' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "convertPCtoSourceLocation") || (i.convertPCtoSourceLocation = () => Ee("'convertPCtoSourceLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "readAsmConstArgsArray") || (i.readAsmConstArgsArray = () => Ee("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "readAsmConstArgs") || (i.readAsmConstArgs = () => Ee("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "mainThreadEM_ASM") || (i.mainThreadEM_ASM = () => Ee("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "jstoi_q") || (i.jstoi_q = () => Ee("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "jstoi_s") || (i.jstoi_s = () => Ee("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getExecutableName") || (i.getExecutableName = () => Ee("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "listenOnce") || (i.listenOnce = () => Ee("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "autoResumeAudioContext") || (i.autoResumeAudioContext = () => Ee("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "dynCall") || (i.dynCall = () => Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "callRuntimeCallbacks") || (i.callRuntimeCallbacks = () => Ee("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "wasmTableMirror") || (i.wasmTableMirror = () => Ee("'wasmTableMirror' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setWasmTableEntry") || (i.setWasmTableEntry = () => Ee("'setWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getWasmTableEntry") || (i.getWasmTableEntry = () => Ee("'getWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "handleException") || (i.handleException = () => Ee("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "runtimeKeepalivePush") || (i.runtimeKeepalivePush = () => Ee("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "runtimeKeepalivePop") || (i.runtimeKeepalivePop = () => Ee("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "callUserCallback") || (i.callUserCallback = () => Ee("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "maybeExit") || (i.maybeExit = () => Ee("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "safeSetTimeout") || (i.safeSetTimeout = () => Ee("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "asmjsMangle") || (i.asmjsMangle = () => Ee("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "asyncLoad") || (i.asyncLoad = () => Ee("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "alignMemory") || (i.alignMemory = () => Ee("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "mmapAlloc") || (i.mmapAlloc = () => Ee("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "reallyNegative") || (i.reallyNegative = () => Ee("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "unSign") || (i.unSign = () => Ee("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "reSign") || (i.reSign = () => Ee("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "formatString") || (i.formatString = () => Ee("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "PATH") || (i.PATH = () => Ee("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "PATH_FS") || (i.PATH_FS = () => Ee("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "SYSCALLS") || (i.SYSCALLS = () => Ee("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getSocketFromFD") || (i.getSocketFromFD = () => Ee("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getSocketAddress") || (i.getSocketAddress = () => Ee("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "JSEvents") || (i.JSEvents = () => Ee("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerKeyEventCallback") || (i.registerKeyEventCallback = () => Ee("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "specialHTMLTargets") || (i.specialHTMLTargets = () => Ee("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "maybeCStringToJsString") || (i.maybeCStringToJsString = () => Ee("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "findEventTarget") || (i.findEventTarget = () => Ee("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "findCanvasEventTarget") || (i.findCanvasEventTarget = () => Ee("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getBoundingClientRect") || (i.getBoundingClientRect = () => Ee("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillMouseEventData") || (i.fillMouseEventData = () => Ee("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerMouseEventCallback") || (i.registerMouseEventCallback = () => Ee("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerWheelEventCallback") || (i.registerWheelEventCallback = () => Ee("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerUiEventCallback") || (i.registerUiEventCallback = () => Ee("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerFocusEventCallback") || (i.registerFocusEventCallback = () => Ee("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillDeviceOrientationEventData") || (i.fillDeviceOrientationEventData = () => Ee("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerDeviceOrientationEventCallback") || (i.registerDeviceOrientationEventCallback = () => Ee("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillDeviceMotionEventData") || (i.fillDeviceMotionEventData = () => Ee("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerDeviceMotionEventCallback") || (i.registerDeviceMotionEventCallback = () => Ee("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "screenOrientation") || (i.screenOrientation = () => Ee("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillOrientationChangeEventData") || (i.fillOrientationChangeEventData = () => Ee("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerOrientationChangeEventCallback") || (i.registerOrientationChangeEventCallback = () => Ee("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillFullscreenChangeEventData") || (i.fillFullscreenChangeEventData = () => Ee("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerFullscreenChangeEventCallback") || (i.registerFullscreenChangeEventCallback = () => Ee("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerRestoreOldStyle") || (i.registerRestoreOldStyle = () => Ee("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "hideEverythingExceptGivenElement") || (i.hideEverythingExceptGivenElement = () => Ee("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "restoreHiddenElements") || (i.restoreHiddenElements = () => Ee("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setLetterbox") || (i.setLetterbox = () => Ee("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "currentFullscreenStrategy") || (i.currentFullscreenStrategy = () => Ee("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "restoreOldWindowedStyle") || (i.restoreOldWindowedStyle = () => Ee("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "softFullscreenResizeWebGLRenderTarget") || (i.softFullscreenResizeWebGLRenderTarget = () => Ee("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "doRequestFullscreen") || (i.doRequestFullscreen = () => Ee("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillPointerlockChangeEventData") || (i.fillPointerlockChangeEventData = () => Ee("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerPointerlockChangeEventCallback") || (i.registerPointerlockChangeEventCallback = () => Ee("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerPointerlockErrorEventCallback") || (i.registerPointerlockErrorEventCallback = () => Ee("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "requestPointerLock") || (i.requestPointerLock = () => Ee("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillVisibilityChangeEventData") || (i.fillVisibilityChangeEventData = () => Ee("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerVisibilityChangeEventCallback") || (i.registerVisibilityChangeEventCallback = () => Ee("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerTouchEventCallback") || (i.registerTouchEventCallback = () => Ee("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillGamepadEventData") || (i.fillGamepadEventData = () => Ee("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerGamepadEventCallback") || (i.registerGamepadEventCallback = () => Ee("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerBeforeUnloadEventCallback") || (i.registerBeforeUnloadEventCallback = () => Ee("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "fillBatteryEventData") || (i.fillBatteryEventData = () => Ee("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "battery") || (i.battery = () => Ee("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "registerBatteryEventCallback") || (i.registerBatteryEventCallback = () => Ee("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setCanvasElementSize") || (i.setCanvasElementSize = () => Ee("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getCanvasElementSize") || (i.getCanvasElementSize = () => Ee("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "demangle") || (i.demangle = () => Ee("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "demangleAll") || (i.demangleAll = () => Ee("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "jsStackTrace") || (i.jsStackTrace = () => Ee("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stackTrace") || (i.stackTrace = () => Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getEnvStrings") || (i.getEnvStrings = () => Ee("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "checkWasiClock") || (i.checkWasiClock = () => Ee("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeI53ToI64") || (i.writeI53ToI64 = () => Ee("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeI53ToI64Clamped") || (i.writeI53ToI64Clamped = () => Ee("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeI53ToI64Signaling") || (i.writeI53ToI64Signaling = () => Ee("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeI53ToU64Clamped") || (i.writeI53ToU64Clamped = () => Ee("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "writeI53ToU64Signaling") || (i.writeI53ToU64Signaling = () => Ee("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "readI53FromI64") || (i.readI53FromI64 = () => Ee("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "readI53FromU64") || (i.readI53FromU64 = () => Ee("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "convertI32PairToI53") || (i.convertI32PairToI53 = () => Ee("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "convertU32PairToI53") || (i.convertU32PairToI53 = () => Ee("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setImmediateWrapped") || (i.setImmediateWrapped = () => Ee("'setImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "clearImmediateWrapped") || (i.clearImmediateWrapped = () => Ee("'clearImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "polyfillSetImmediate") || (i.polyfillSetImmediate = () => Ee("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "Browser") || (i.Browser = () => Ee("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "funcWrappers") || (i.funcWrappers = () => Ee("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "getFuncWrapper") || (i.getFuncWrapper = () => Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "setMainLoop") || (i.setMainLoop = () => Ee("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "wget") || (i.wget = () => Ee("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "FS") || (i.FS = () => Ee("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "MEMFS") || (i.MEMFS = () => Ee("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "TTY") || (i.TTY = () => Ee("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "PIPEFS") || (i.PIPEFS = () => Ee("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "SOCKFS") || (i.SOCKFS = () => Ee("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "_setNetworkCallback") || (i._setNetworkCallback = () => Ee("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "warnOnce") || (i.warnOnce = () => Ee("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stackSave") || (i.stackSave = () => Ee("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stackRestore") || (i.stackRestore = () => Ee("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stackAlloc") || (i.stackAlloc = () => Ee("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "AsciiToString") || (i.AsciiToString = () => Ee("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToAscii") || (i.stringToAscii = () => Ee("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "UTF16ToString") || (i.UTF16ToString = () => Ee("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToUTF16") || (i.stringToUTF16 = () => Ee("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "lengthBytesUTF16") || (i.lengthBytesUTF16 = () => Ee("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "UTF32ToString") || (i.UTF32ToString = () => Ee("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "stringToUTF32") || (i.stringToUTF32 = () => Ee("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "lengthBytesUTF32") || (i.lengthBytesUTF32 = () => Ee("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "allocateUTF8") || (i.allocateUTF8 = () => Ee("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            Object.getOwnPropertyDescriptor(i, "allocateUTF8OnStack") || (i.allocateUTF8OnStack = () => Ee("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")), 
            i.writeStackCookie = J, i.checkStackCookie = $, Object.getOwnPropertyDescriptor(i, "ALLOC_NORMAL") || Object.defineProperty(i, "ALLOC_NORMAL", {
              configurable: !0,
              get: function() {
                Ee("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)");
              }
            }), Object.getOwnPropertyDescriptor(i, "ALLOC_STACK") || Object.defineProperty(i, "ALLOC_STACK", {
              configurable: !0,
              get: function() {
                Ee("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)");
              }
            }), se = function e() {
              xe || Ve(), xe || (se = e);
            }, i.run = Ve, i.preInit) for ("function" == typeof i.preInit && (i.preInit = [ i.preInit ]); i.preInit.length > 0; ) i.preInit.pop()();
            return Ve(), e.ready;
          });
          e.exports = n;
        },
        727: e => {
          const t = [ {
            CRYPTO_PUBLICKEYBYTES: 896,
            CRYPTO_SECRETKEYBYTES: 2096,
            CRYPTO_BYTES: 1387
          }, {
            CRYPTO_PUBLICKEYBYTES: 1184,
            CRYPTO_SECRETKEYBYTES: 2800,
            CRYPTO_BYTES: 2044
          }, {
            CRYPTO_PUBLICKEYBYTES: 1472,
            CRYPTO_SECRETKEYBYTES: 3504,
            CRYPTO_BYTES: 2701
          }, {
            CRYPTO_PUBLICKEYBYTES: 1760,
            CRYPTO_SECRETKEYBYTES: 3856,
            CRYPTO_BYTES: 3366
          } ];
          e.exports = {
            DILITHIUM_PARAMS: t,
            generateKeys: function(e, r, o) {
              if (r < 0 || r > 3) return -1;
              const n = o ? o.length : 0, i = o ? e._malloc(n) : 0;
              o && e.HEAPU8.set(new Uint8Array(o), i);
              const a = t[r].CRYPTO_SECRETKEYBYTES, s = t[r].CRYPTO_PUBLICKEYBYTES, d = e._malloc(s), c = e._malloc(a), l = e.ccall("dilithium_keygen", "number", [ "number", "number", "number", "number", "number" ], [ d, c, r, i, n ]);
              let p, E;
              return 0 === l && (p = new Uint8Array(e.HEAPU8.subarray(d, d + s)), E = new Uint8Array(e.HEAPU8.subarray(c, c + a))), 
              i && e._free(i), e._free(d), e._free(c), {
                result: l,
                publicKey: p,
                privateKey: E
              };
            },
            sign: function(e, r, o, n) {
              if (n < 0 || n > 3) throw new Error("Invalid Dilithium kind");
              const i = t[n], a = i.CRYPTO_BYTES, s = r.length, d = e._malloc(s);
              e.HEAPU8.set(new Uint8Array(r), d);
              const c = o.length;
              if (c !== i.CRYPTO_SECRETKEYBYTES) throw new Error(`Invalid private key size. Expected: ${i.CRYPTO_SECRETKEYBYTES}, Provided: ${c}`);
              const l = e._malloc(c);
              e.HEAPU8.set(new Uint8Array(o), l);
              const p = a + s, E = e._malloc(p), u = e._malloc(4);
              e.setValue(u, p, "i32");
              const f = e.ccall("dilithium_sign", "number", [ "number", "number", "number", "number", "number", "number", "number" ], [ E, u, d, s, l, c, n ]), h = e.getValue(u, "i32"), O = new Uint8Array(e.HEAPU8.buffer, E, h), g = new Uint8Array(O);
              return e._free(d), e._free(l), e._free(E), e._free(u), {
                result: f,
                signature: g,
                signatureLength: h
              };
            },
            verify: function(e, r, o, n, i) {
              const a = t[i], s = a.CRYPTO_BYTES + o.length, d = a.CRYPTO_PUBLICKEYBYTES;
              if (r.length !== s) throw new Error(`Invalid signature size. Expected ${s}, got ${r.length}`);
              if (n.length !== d) throw new Error(`Invalid public key size. Expected ${d}, got ${n.length}`);
              const c = e._malloc(s), l = e._malloc(o.length), p = e._malloc(d);
              e.HEAPU8.set(new Uint8Array(r), c), e.HEAPU8.set(new Uint8Array(o), l), e.HEAPU8.set(new Uint8Array(n), p);
              try {
                return {
                  result: e.ccall("dilithium_verify", "number", [ "number", "number", "number", "bigint", "number", "number", "number" ], [ c, s, l, BigInt(o.length), p, d, i ]),
                  signatureLength: r.length,
                  expectedSignatureSize: s,
                  messageLength: o.length,
                  publicKeyLength: n.length,
                  expectedPublicKeySize: d,
                  kind: i
                };
              } finally {
                e._free(c), e._free(l), e._free(p);
              }
            }
          };
        },
        349: () => {},
        175: () => {},
        507: () => {}
      }, t = {};
      function r(o) {
        var n = t[o];
        if (void 0 !== n) return n.exports;
        var i = t[o] = {
          exports: {}
        };
        return e[o](i, i.exports, r), i.exports;
      }
      r.n = e => {
        var t = e && e.__esModule ? () => e.default : () => e;
        return r.d(t, {
          a: t
        }), t;
      }, r.d = (e, t) => {
        for (var o in t) r.o(t, o) && !r.o(e, o) && Object.defineProperty(e, o, {
          enumerable: !0,
          get: t[o]
        });
      }, r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t);
      var o = {};
      r.d(o, {
        G: () => s
      });
      var n = r(944), i = r.n(n), a = r(727);
      const s = () => async function() {
        const e = chrome.runtime.getURL("dilithium.wasm");
        console.log(`Fetching wasm from ${e}`);
        const t = await fetch(e);
        return await t.arrayBuffer();
      }().then((e => i()({
        wasmBinary: e,
        locateFile: e => e.endsWith(".wasm") ? chrome.runtime.getURL("dilithium.wasm") : e
      }))).then((e => ({
        generateKeys: (t, r) => (0, a.generateKeys)(e, t, r),
        sign: (t, r, o) => (0, a.sign)(e, t, r, o),
        verify: (t, r, o, n) => (0, a.verify)(e, t, r, o, n),
        DILITHIUM_PARAMS: a.DILITHIUM_PARAMS
      })));
      var d = o.G;
    },
    7176(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var callBind = __webpack_require__(3126);
      var gOPD = __webpack_require__(5795);
      var hasProtoAccessor;
      try {
        hasProtoAccessor = [].__proto__ === Array.prototype;
      } catch (e) {
        if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") {
          throw e;
        }
      }
      var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, "__proto__");
      var $Object = Object;
      var $getPrototypeOf = $Object.getPrototypeOf;
      module.exports = desc && typeof desc.get === "function" ? callBind([ desc.get ]) : typeof $getPrototypeOf === "function" ? function getDunder(value) {
        return $getPrototypeOf(value == null ? value : $Object(value));
      } : false;
    },
    6729(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var elliptic = exports;
      elliptic.version = __webpack_require__(1636).rE;
      elliptic.utils = __webpack_require__(7011);
      elliptic.rand = __webpack_require__(5037);
      elliptic.curve = __webpack_require__(894);
      elliptic.curves = __webpack_require__(480);
      elliptic.ec = __webpack_require__(7447);
      elliptic.eddsa = __webpack_require__(8650);
    },
    6677(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var utils = __webpack_require__(7011);
      var getNAF = utils.getNAF;
      var getJSF = utils.getJSF;
      var assert = utils.assert;
      function BaseCurve(type, conf) {
        this.type = type;
        this.p = new BN(conf.p, 16);
        this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
        this.zero = new BN(0).toRed(this.red);
        this.one = new BN(1).toRed(this.red);
        this.two = new BN(2).toRed(this.red);
        this.n = conf.n && new BN(conf.n, 16);
        this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
        this._wnafT1 = new Array(4);
        this._wnafT2 = new Array(4);
        this._wnafT3 = new Array(4);
        this._wnafT4 = new Array(4);
        this._bitLength = this.n ? this.n.bitLength() : 0;
        var adjustCount = this.n && this.p.div(this.n);
        if (!adjustCount || adjustCount.cmpn(100) > 0) {
          this.redN = null;
        } else {
          this._maxwellTrick = true;
          this.redN = this.n.toRed(this.red);
        }
      }
      module.exports = BaseCurve;
      BaseCurve.prototype.point = function point() {
        throw new Error("Not implemented");
      };
      BaseCurve.prototype.validate = function validate() {
        throw new Error("Not implemented");
      };
      BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
        assert(p.precomputed);
        var doubles = p._getDoubles();
        var naf = getNAF(k, 1, this._bitLength);
        var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);
        I /= 3;
        var repr = [];
        var j;
        var nafW;
        for (j = 0; j < naf.length; j += doubles.step) {
          nafW = 0;
          for (var l = j + doubles.step - 1; l >= j; l--) nafW = (nafW << 1) + naf[l];
          repr.push(nafW);
        }
        var a = this.jpoint(null, null, null);
        var b = this.jpoint(null, null, null);
        for (var i = I; i > 0; i--) {
          for (j = 0; j < repr.length; j++) {
            nafW = repr[j];
            if (nafW === i) b = b.mixedAdd(doubles.points[j]); else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());
          }
          a = a.add(b);
        }
        return a.toP();
      };
      BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
        var w = 4;
        var nafPoints = p._getNAFPoints(w);
        w = nafPoints.wnd;
        var wnd = nafPoints.points;
        var naf = getNAF(k, w, this._bitLength);
        var acc = this.jpoint(null, null, null);
        for (var i = naf.length - 1; i >= 0; i--) {
          for (var l = 0; i >= 0 && naf[i] === 0; i--) l++;
          if (i >= 0) l++;
          acc = acc.dblp(l);
          if (i < 0) break;
          var z = naf[i];
          assert(z !== 0);
          if (p.type === "affine") {
            if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]); else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());
          } else {
            if (z > 0) acc = acc.add(wnd[z - 1 >> 1]); else acc = acc.add(wnd[-z - 1 >> 1].neg());
          }
        }
        return p.type === "affine" ? acc.toP() : acc;
      };
      BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {
        var wndWidth = this._wnafT1;
        var wnd = this._wnafT2;
        var naf = this._wnafT3;
        var max = 0;
        var i;
        var j;
        var p;
        for (i = 0; i < len; i++) {
          p = points[i];
          var nafPoints = p._getNAFPoints(defW);
          wndWidth[i] = nafPoints.wnd;
          wnd[i] = nafPoints.points;
        }
        for (i = len - 1; i >= 1; i -= 2) {
          var a = i - 1;
          var b = i;
          if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
            naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);
            naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);
            max = Math.max(naf[a].length, max);
            max = Math.max(naf[b].length, max);
            continue;
          }
          var comb = [ points[a], null, null, points[b] ];
          if (points[a].y.cmp(points[b].y) === 0) {
            comb[1] = points[a].add(points[b]);
            comb[2] = points[a].toJ().mixedAdd(points[b].neg());
          } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
            comb[1] = points[a].toJ().mixedAdd(points[b]);
            comb[2] = points[a].add(points[b].neg());
          } else {
            comb[1] = points[a].toJ().mixedAdd(points[b]);
            comb[2] = points[a].toJ().mixedAdd(points[b].neg());
          }
          var index = [ -3, -1, -5, -7, 0, 7, 5, 1, 3 ];
          var jsf = getJSF(coeffs[a], coeffs[b]);
          max = Math.max(jsf[0].length, max);
          naf[a] = new Array(max);
          naf[b] = new Array(max);
          for (j = 0; j < max; j++) {
            var ja = jsf[0][j] | 0;
            var jb = jsf[1][j] | 0;
            naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
            naf[b][j] = 0;
            wnd[a] = comb;
          }
        }
        var acc = this.jpoint(null, null, null);
        var tmp = this._wnafT4;
        for (i = max; i >= 0; i--) {
          var k = 0;
          while (i >= 0) {
            var zero = true;
            for (j = 0; j < len; j++) {
              tmp[j] = naf[j][i] | 0;
              if (tmp[j] !== 0) zero = false;
            }
            if (!zero) break;
            k++;
            i--;
          }
          if (i >= 0) k++;
          acc = acc.dblp(k);
          if (i < 0) break;
          for (j = 0; j < len; j++) {
            var z = tmp[j];
            p;
            if (z === 0) continue; else if (z > 0) p = wnd[j][z - 1 >> 1]; else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();
            if (p.type === "affine") acc = acc.mixedAdd(p); else acc = acc.add(p);
          }
        }
        for (i = 0; i < len; i++) wnd[i] = null;
        if (jacobianResult) return acc; else return acc.toP();
      };
      function BasePoint(curve, type) {
        this.curve = curve;
        this.type = type;
        this.precomputed = null;
      }
      BaseCurve.BasePoint = BasePoint;
      BasePoint.prototype.eq = function eq() {
        throw new Error("Not implemented");
      };
      BasePoint.prototype.validate = function validate() {
        return this.curve.validate(this);
      };
      BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
        bytes = utils.toArray(bytes, enc);
        var len = this.p.byteLength();
        if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {
          if (bytes[0] === 6) assert(bytes[bytes.length - 1] % 2 === 0); else if (bytes[0] === 7) assert(bytes[bytes.length - 1] % 2 === 1);
          var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));
          return res;
        } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {
          return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);
        }
        throw new Error("Unknown point format");
      };
      BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
        return this.encode(enc, true);
      };
      BasePoint.prototype._encode = function _encode(compact) {
        var len = this.curve.p.byteLength();
        var x = this.getX().toArray("be", len);
        if (compact) return [ this.getY().isEven() ? 2 : 3 ].concat(x);
        return [ 4 ].concat(x, this.getY().toArray("be", len));
      };
      BasePoint.prototype.encode = function encode(enc, compact) {
        return utils.encode(this._encode(compact), enc);
      };
      BasePoint.prototype.precompute = function precompute(power) {
        if (this.precomputed) return this;
        var precomputed = {
          doubles: null,
          naf: null,
          beta: null
        };
        precomputed.naf = this._getNAFPoints(8);
        precomputed.doubles = this._getDoubles(4, power);
        precomputed.beta = this._getBeta();
        this.precomputed = precomputed;
        return this;
      };
      BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
        if (!this.precomputed) return false;
        var doubles = this.precomputed.doubles;
        if (!doubles) return false;
        return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
      };
      BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
        if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;
        var doubles = [ this ];
        var acc = this;
        for (var i = 0; i < power; i += step) {
          for (var j = 0; j < step; j++) acc = acc.dbl();
          doubles.push(acc);
        }
        return {
          step,
          points: doubles
        };
      };
      BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
        if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;
        var res = [ this ];
        var max = (1 << wnd) - 1;
        var dbl = max === 1 ? null : this.dbl();
        for (var i = 1; i < max; i++) res[i] = res[i - 1].add(dbl);
        return {
          wnd,
          points: res
        };
      };
      BasePoint.prototype._getBeta = function _getBeta() {
        return null;
      };
      BasePoint.prototype.dblp = function dblp(k) {
        var r = this;
        for (var i = 0; i < k; i++) r = r.dbl();
        return r;
      };
    },
    1298(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7011);
      var BN = __webpack_require__(8490);
      var inherits = __webpack_require__(6698);
      var Base = __webpack_require__(6677);
      var assert = utils.assert;
      function EdwardsCurve(conf) {
        this.twisted = (conf.a | 0) !== 1;
        this.mOneA = this.twisted && (conf.a | 0) === -1;
        this.extended = this.mOneA;
        Base.call(this, "edwards", conf);
        this.a = new BN(conf.a, 16).umod(this.red.m);
        this.a = this.a.toRed(this.red);
        this.c = new BN(conf.c, 16).toRed(this.red);
        this.c2 = this.c.redSqr();
        this.d = new BN(conf.d, 16).toRed(this.red);
        this.dd = this.d.redAdd(this.d);
        assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
        this.oneC = (conf.c | 0) === 1;
      }
      inherits(EdwardsCurve, Base);
      module.exports = EdwardsCurve;
      EdwardsCurve.prototype._mulA = function _mulA(num) {
        if (this.mOneA) return num.redNeg(); else return this.a.redMul(num);
      };
      EdwardsCurve.prototype._mulC = function _mulC(num) {
        if (this.oneC) return num; else return this.c.redMul(num);
      };
      EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
        return this.point(x, y, z, t);
      };
      EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
        x = new BN(x, 16);
        if (!x.red) x = x.toRed(this.red);
        var x2 = x.redSqr();
        var rhs = this.c2.redSub(this.a.redMul(x2));
        var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
        var y2 = rhs.redMul(lhs.redInvm());
        var y = y2.redSqrt();
        if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error("invalid point");
        var isOdd = y.fromRed().isOdd();
        if (odd && !isOdd || !odd && isOdd) y = y.redNeg();
        return this.point(x, y);
      };
      EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
        y = new BN(y, 16);
        if (!y.red) y = y.toRed(this.red);
        var y2 = y.redSqr();
        var lhs = y2.redSub(this.c2);
        var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);
        var x2 = lhs.redMul(rhs.redInvm());
        if (x2.cmp(this.zero) === 0) {
          if (odd) throw new Error("invalid point"); else return this.point(this.zero, y);
        }
        var x = x2.redSqrt();
        if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error("invalid point");
        if (x.fromRed().isOdd() !== odd) x = x.redNeg();
        return this.point(x, y);
      };
      EdwardsCurve.prototype.validate = function validate(point) {
        if (point.isInfinity()) return true;
        point.normalize();
        var x2 = point.x.redSqr();
        var y2 = point.y.redSqr();
        var lhs = x2.redMul(this.a).redAdd(y2);
        var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
        return lhs.cmp(rhs) === 0;
      };
      function Point(curve, x, y, z, t) {
        Base.BasePoint.call(this, curve, "projective");
        if (x === null && y === null && z === null) {
          this.x = this.curve.zero;
          this.y = this.curve.one;
          this.z = this.curve.one;
          this.t = this.curve.zero;
          this.zOne = true;
        } else {
          this.x = new BN(x, 16);
          this.y = new BN(y, 16);
          this.z = z ? new BN(z, 16) : this.curve.one;
          this.t = t && new BN(t, 16);
          if (!this.x.red) this.x = this.x.toRed(this.curve.red);
          if (!this.y.red) this.y = this.y.toRed(this.curve.red);
          if (!this.z.red) this.z = this.z.toRed(this.curve.red);
          if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);
          this.zOne = this.z === this.curve.one;
          if (this.curve.extended && !this.t) {
            this.t = this.x.redMul(this.y);
            if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());
          }
        }
      }
      inherits(Point, Base.BasePoint);
      EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
        return Point.fromJSON(this, obj);
      };
      EdwardsCurve.prototype.point = function point(x, y, z, t) {
        return new Point(this, x, y, z, t);
      };
      Point.fromJSON = function fromJSON(curve, obj) {
        return new Point(curve, obj[0], obj[1], obj[2]);
      };
      Point.prototype.inspect = function inspect() {
        if (this.isInfinity()) return "<EC Point Infinity>";
        return "<EC Point x: " + this.x.fromRed().toString(16, 2) + " y: " + this.y.fromRed().toString(16, 2) + " z: " + this.z.fromRed().toString(16, 2) + ">";
      };
      Point.prototype.isInfinity = function isInfinity() {
        return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);
      };
      Point.prototype._extDbl = function _extDbl() {
        var a = this.x.redSqr();
        var b = this.y.redSqr();
        var c = this.z.redSqr();
        c = c.redIAdd(c);
        var d = this.curve._mulA(a);
        var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
        var g = d.redAdd(b);
        var f = g.redSub(c);
        var h = d.redSub(b);
        var nx = e.redMul(f);
        var ny = g.redMul(h);
        var nt = e.redMul(h);
        var nz = f.redMul(g);
        return this.curve.point(nx, ny, nz, nt);
      };
      Point.prototype._projDbl = function _projDbl() {
        var b = this.x.redAdd(this.y).redSqr();
        var c = this.x.redSqr();
        var d = this.y.redSqr();
        var nx;
        var ny;
        var nz;
        var e;
        var h;
        var j;
        if (this.curve.twisted) {
          e = this.curve._mulA(c);
          var f = e.redAdd(d);
          if (this.zOne) {
            nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
            ny = f.redMul(e.redSub(d));
            nz = f.redSqr().redSub(f).redSub(f);
          } else {
            h = this.z.redSqr();
            j = f.redSub(h).redISub(h);
            nx = b.redSub(c).redISub(d).redMul(j);
            ny = f.redMul(e.redSub(d));
            nz = f.redMul(j);
          }
        } else {
          e = c.redAdd(d);
          h = this.curve._mulC(this.z).redSqr();
          j = e.redSub(h).redSub(h);
          nx = this.curve._mulC(b.redISub(e)).redMul(j);
          ny = this.curve._mulC(e).redMul(c.redISub(d));
          nz = e.redMul(j);
        }
        return this.curve.point(nx, ny, nz);
      };
      Point.prototype.dbl = function dbl() {
        if (this.isInfinity()) return this;
        if (this.curve.extended) return this._extDbl(); else return this._projDbl();
      };
      Point.prototype._extAdd = function _extAdd(p) {
        var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
        var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
        var c = this.t.redMul(this.curve.dd).redMul(p.t);
        var d = this.z.redMul(p.z.redAdd(p.z));
        var e = b.redSub(a);
        var f = d.redSub(c);
        var g = d.redAdd(c);
        var h = b.redAdd(a);
        var nx = e.redMul(f);
        var ny = g.redMul(h);
        var nt = e.redMul(h);
        var nz = f.redMul(g);
        return this.curve.point(nx, ny, nz, nt);
      };
      Point.prototype._projAdd = function _projAdd(p) {
        var a = this.z.redMul(p.z);
        var b = a.redSqr();
        var c = this.x.redMul(p.x);
        var d = this.y.redMul(p.y);
        var e = this.curve.d.redMul(c).redMul(d);
        var f = b.redSub(e);
        var g = b.redAdd(e);
        var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
        var nx = a.redMul(f).redMul(tmp);
        var ny;
        var nz;
        if (this.curve.twisted) {
          ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
          nz = f.redMul(g);
        } else {
          ny = a.redMul(g).redMul(d.redSub(c));
          nz = this.curve._mulC(f).redMul(g);
        }
        return this.curve.point(nx, ny, nz);
      };
      Point.prototype.add = function add(p) {
        if (this.isInfinity()) return p;
        if (p.isInfinity()) return this;
        if (this.curve.extended) return this._extAdd(p); else return this._projAdd(p);
      };
      Point.prototype.mul = function mul(k) {
        if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k); else return this.curve._wnafMul(this, k);
      };
      Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
        return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
      };
      Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
        return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
      };
      Point.prototype.normalize = function normalize() {
        if (this.zOne) return this;
        var zi = this.z.redInvm();
        this.x = this.x.redMul(zi);
        this.y = this.y.redMul(zi);
        if (this.t) this.t = this.t.redMul(zi);
        this.z = this.curve.one;
        this.zOne = true;
        return this;
      };
      Point.prototype.neg = function neg() {
        return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());
      };
      Point.prototype.getX = function getX() {
        this.normalize();
        return this.x.fromRed();
      };
      Point.prototype.getY = function getY() {
        this.normalize();
        return this.y.fromRed();
      };
      Point.prototype.eq = function eq(other) {
        return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;
      };
      Point.prototype.eqXToP = function eqXToP(x) {
        var rx = x.toRed(this.curve.red).redMul(this.z);
        if (this.x.cmp(rx) === 0) return true;
        var xc = x.clone();
        var t = this.curve.redN.redMul(this.z);
        for (;;) {
          xc.iadd(this.curve.n);
          if (xc.cmp(this.curve.p) >= 0) return false;
          rx.redIAdd(t);
          if (this.x.cmp(rx) === 0) return true;
        }
      };
      Point.prototype.toP = Point.prototype.normalize;
      Point.prototype.mixedAdd = Point.prototype.add;
    },
    894(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var curve = exports;
      curve.base = __webpack_require__(6677);
      curve.short = __webpack_require__(9188);
      curve.mont = __webpack_require__(370);
      curve.edwards = __webpack_require__(1298);
    },
    370(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var inherits = __webpack_require__(6698);
      var Base = __webpack_require__(6677);
      var utils = __webpack_require__(7011);
      function MontCurve(conf) {
        Base.call(this, "mont", conf);
        this.a = new BN(conf.a, 16).toRed(this.red);
        this.b = new BN(conf.b, 16).toRed(this.red);
        this.i4 = new BN(4).toRed(this.red).redInvm();
        this.two = new BN(2).toRed(this.red);
        this.a24 = this.i4.redMul(this.a.redAdd(this.two));
      }
      inherits(MontCurve, Base);
      module.exports = MontCurve;
      MontCurve.prototype.validate = function validate(point) {
        var x = point.normalize().x;
        var x2 = x.redSqr();
        var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
        var y = rhs.redSqrt();
        return y.redSqr().cmp(rhs) === 0;
      };
      function Point(curve, x, z) {
        Base.BasePoint.call(this, curve, "projective");
        if (x === null && z === null) {
          this.x = this.curve.one;
          this.z = this.curve.zero;
        } else {
          this.x = new BN(x, 16);
          this.z = new BN(z, 16);
          if (!this.x.red) this.x = this.x.toRed(this.curve.red);
          if (!this.z.red) this.z = this.z.toRed(this.curve.red);
        }
      }
      inherits(Point, Base.BasePoint);
      MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
        return this.point(utils.toArray(bytes, enc), 1);
      };
      MontCurve.prototype.point = function point(x, z) {
        return new Point(this, x, z);
      };
      MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
        return Point.fromJSON(this, obj);
      };
      Point.prototype.precompute = function precompute() {};
      Point.prototype._encode = function _encode() {
        return this.getX().toArray("be", this.curve.p.byteLength());
      };
      Point.fromJSON = function fromJSON(curve, obj) {
        return new Point(curve, obj[0], obj[1] || curve.one);
      };
      Point.prototype.inspect = function inspect() {
        if (this.isInfinity()) return "<EC Point Infinity>";
        return "<EC Point x: " + this.x.fromRed().toString(16, 2) + " z: " + this.z.fromRed().toString(16, 2) + ">";
      };
      Point.prototype.isInfinity = function isInfinity() {
        return this.z.cmpn(0) === 0;
      };
      Point.prototype.dbl = function dbl() {
        var a = this.x.redAdd(this.z);
        var aa = a.redSqr();
        var b = this.x.redSub(this.z);
        var bb = b.redSqr();
        var c = aa.redSub(bb);
        var nx = aa.redMul(bb);
        var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
        return this.curve.point(nx, nz);
      };
      Point.prototype.add = function add() {
        throw new Error("Not supported on Montgomery curve");
      };
      Point.prototype.diffAdd = function diffAdd(p, diff) {
        var a = this.x.redAdd(this.z);
        var b = this.x.redSub(this.z);
        var c = p.x.redAdd(p.z);
        var d = p.x.redSub(p.z);
        var da = d.redMul(a);
        var cb = c.redMul(b);
        var nx = diff.z.redMul(da.redAdd(cb).redSqr());
        var nz = diff.x.redMul(da.redISub(cb).redSqr());
        return this.curve.point(nx, nz);
      };
      Point.prototype.mul = function mul(k) {
        var t = k.clone();
        var a = this;
        var b = this.curve.point(null, null);
        var c = this;
        for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) bits.push(t.andln(1));
        for (var i = bits.length - 1; i >= 0; i--) {
          if (bits[i] === 0) {
            a = a.diffAdd(b, c);
            b = b.dbl();
          } else {
            b = a.diffAdd(b, c);
            a = a.dbl();
          }
        }
        return b;
      };
      Point.prototype.mulAdd = function mulAdd() {
        throw new Error("Not supported on Montgomery curve");
      };
      Point.prototype.jumlAdd = function jumlAdd() {
        throw new Error("Not supported on Montgomery curve");
      };
      Point.prototype.eq = function eq(other) {
        return this.getX().cmp(other.getX()) === 0;
      };
      Point.prototype.normalize = function normalize() {
        this.x = this.x.redMul(this.z.redInvm());
        this.z = this.curve.one;
        return this;
      };
      Point.prototype.getX = function getX() {
        this.normalize();
        return this.x.fromRed();
      };
    },
    9188(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7011);
      var BN = __webpack_require__(8490);
      var inherits = __webpack_require__(6698);
      var Base = __webpack_require__(6677);
      var assert = utils.assert;
      function ShortCurve(conf) {
        Base.call(this, "short", conf);
        this.a = new BN(conf.a, 16).toRed(this.red);
        this.b = new BN(conf.b, 16).toRed(this.red);
        this.tinv = this.two.redInvm();
        this.zeroA = this.a.fromRed().cmpn(0) === 0;
        this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
        this.endo = this._getEndomorphism(conf);
        this._endoWnafT1 = new Array(4);
        this._endoWnafT2 = new Array(4);
      }
      inherits(ShortCurve, Base);
      module.exports = ShortCurve;
      ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
        if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;
        var beta;
        var lambda;
        if (conf.beta) {
          beta = new BN(conf.beta, 16).toRed(this.red);
        } else {
          var betas = this._getEndoRoots(this.p);
          beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
          beta = beta.toRed(this.red);
        }
        if (conf.lambda) {
          lambda = new BN(conf.lambda, 16);
        } else {
          var lambdas = this._getEndoRoots(this.n);
          if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
            lambda = lambdas[0];
          } else {
            lambda = lambdas[1];
            assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
          }
        }
        var basis;
        if (conf.basis) {
          basis = conf.basis.map((function(vec) {
            return {
              a: new BN(vec.a, 16),
              b: new BN(vec.b, 16)
            };
          }));
        } else {
          basis = this._getEndoBasis(lambda);
        }
        return {
          beta,
          lambda,
          basis
        };
      };
      ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
        var red = num === this.p ? this.red : BN.mont(num);
        var tinv = new BN(2).toRed(red).redInvm();
        var ntinv = tinv.redNeg();
        var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
        var l1 = ntinv.redAdd(s).fromRed();
        var l2 = ntinv.redSub(s).fromRed();
        return [ l1, l2 ];
      };
      ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
        var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
        var u = lambda;
        var v = this.n.clone();
        var x1 = new BN(1);
        var y1 = new BN(0);
        var x2 = new BN(0);
        var y2 = new BN(1);
        var a0;
        var b0;
        var a1;
        var b1;
        var a2;
        var b2;
        var prevR;
        var i = 0;
        var r;
        var x;
        while (u.cmpn(0) !== 0) {
          var q = v.div(u);
          r = v.sub(q.mul(u));
          x = x2.sub(q.mul(x1));
          var y = y2.sub(q.mul(y1));
          if (!a1 && r.cmp(aprxSqrt) < 0) {
            a0 = prevR.neg();
            b0 = x1;
            a1 = r.neg();
            b1 = x;
          } else if (a1 && ++i === 2) {
            break;
          }
          prevR = r;
          v = u;
          u = r;
          x2 = x1;
          x1 = x;
          y2 = y1;
          y1 = y;
        }
        a2 = r.neg();
        b2 = x;
        var len1 = a1.sqr().add(b1.sqr());
        var len2 = a2.sqr().add(b2.sqr());
        if (len2.cmp(len1) >= 0) {
          a2 = a0;
          b2 = b0;
        }
        if (a1.negative) {
          a1 = a1.neg();
          b1 = b1.neg();
        }
        if (a2.negative) {
          a2 = a2.neg();
          b2 = b2.neg();
        }
        return [ {
          a: a1,
          b: b1
        }, {
          a: a2,
          b: b2
        } ];
      };
      ShortCurve.prototype._endoSplit = function _endoSplit(k) {
        var basis = this.endo.basis;
        var v1 = basis[0];
        var v2 = basis[1];
        var c1 = v2.b.mul(k).divRound(this.n);
        var c2 = v1.b.neg().mul(k).divRound(this.n);
        var p1 = c1.mul(v1.a);
        var p2 = c2.mul(v2.a);
        var q1 = c1.mul(v1.b);
        var q2 = c2.mul(v2.b);
        var k1 = k.sub(p1).sub(p2);
        var k2 = q1.add(q2).neg();
        return {
          k1,
          k2
        };
      };
      ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
        x = new BN(x, 16);
        if (!x.red) x = x.toRed(this.red);
        var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
        var y = y2.redSqrt();
        if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error("invalid point");
        var isOdd = y.fromRed().isOdd();
        if (odd && !isOdd || !odd && isOdd) y = y.redNeg();
        return this.point(x, y);
      };
      ShortCurve.prototype.validate = function validate(point) {
        if (point.inf) return true;
        var x = point.x;
        var y = point.y;
        var ax = this.a.redMul(x);
        var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
        return y.redSqr().redISub(rhs).cmpn(0) === 0;
      };
      ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {
        var npoints = this._endoWnafT1;
        var ncoeffs = this._endoWnafT2;
        for (var i = 0; i < points.length; i++) {
          var split = this._endoSplit(coeffs[i]);
          var p = points[i];
          var beta = p._getBeta();
          if (split.k1.negative) {
            split.k1.ineg();
            p = p.neg(true);
          }
          if (split.k2.negative) {
            split.k2.ineg();
            beta = beta.neg(true);
          }
          npoints[i * 2] = p;
          npoints[i * 2 + 1] = beta;
          ncoeffs[i * 2] = split.k1;
          ncoeffs[i * 2 + 1] = split.k2;
        }
        var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
        for (var j = 0; j < i * 2; j++) {
          npoints[j] = null;
          ncoeffs[j] = null;
        }
        return res;
      };
      function Point(curve, x, y, isRed) {
        Base.BasePoint.call(this, curve, "affine");
        if (x === null && y === null) {
          this.x = null;
          this.y = null;
          this.inf = true;
        } else {
          this.x = new BN(x, 16);
          this.y = new BN(y, 16);
          if (isRed) {
            this.x.forceRed(this.curve.red);
            this.y.forceRed(this.curve.red);
          }
          if (!this.x.red) this.x = this.x.toRed(this.curve.red);
          if (!this.y.red) this.y = this.y.toRed(this.curve.red);
          this.inf = false;
        }
      }
      inherits(Point, Base.BasePoint);
      ShortCurve.prototype.point = function point(x, y, isRed) {
        return new Point(this, x, y, isRed);
      };
      ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
        return Point.fromJSON(this, obj, red);
      };
      Point.prototype._getBeta = function _getBeta() {
        if (!this.curve.endo) return;
        var pre = this.precomputed;
        if (pre && pre.beta) return pre.beta;
        var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
        if (pre) {
          var curve = this.curve;
          var endoMul = function(p) {
            return curve.point(p.x.redMul(curve.endo.beta), p.y);
          };
          pre.beta = beta;
          beta.precomputed = {
            beta: null,
            naf: pre.naf && {
              wnd: pre.naf.wnd,
              points: pre.naf.points.map(endoMul)
            },
            doubles: pre.doubles && {
              step: pre.doubles.step,
              points: pre.doubles.points.map(endoMul)
            }
          };
        }
        return beta;
      };
      Point.prototype.toJSON = function toJSON() {
        if (!this.precomputed) return [ this.x, this.y ];
        return [ this.x, this.y, this.precomputed && {
          doubles: this.precomputed.doubles && {
            step: this.precomputed.doubles.step,
            points: this.precomputed.doubles.points.slice(1)
          },
          naf: this.precomputed.naf && {
            wnd: this.precomputed.naf.wnd,
            points: this.precomputed.naf.points.slice(1)
          }
        } ];
      };
      Point.fromJSON = function fromJSON(curve, obj, red) {
        if (typeof obj === "string") obj = JSON.parse(obj);
        var res = curve.point(obj[0], obj[1], red);
        if (!obj[2]) return res;
        function obj2point(obj) {
          return curve.point(obj[0], obj[1], red);
        }
        var pre = obj[2];
        res.precomputed = {
          beta: null,
          doubles: pre.doubles && {
            step: pre.doubles.step,
            points: [ res ].concat(pre.doubles.points.map(obj2point))
          },
          naf: pre.naf && {
            wnd: pre.naf.wnd,
            points: [ res ].concat(pre.naf.points.map(obj2point))
          }
        };
        return res;
      };
      Point.prototype.inspect = function inspect() {
        if (this.isInfinity()) return "<EC Point Infinity>";
        return "<EC Point x: " + this.x.fromRed().toString(16, 2) + " y: " + this.y.fromRed().toString(16, 2) + ">";
      };
      Point.prototype.isInfinity = function isInfinity() {
        return this.inf;
      };
      Point.prototype.add = function add(p) {
        if (this.inf) return p;
        if (p.inf) return this;
        if (this.eq(p)) return this.dbl();
        if (this.neg().eq(p)) return this.curve.point(null, null);
        if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);
        var c = this.y.redSub(p.y);
        if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());
        var nx = c.redSqr().redISub(this.x).redISub(p.x);
        var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
        return this.curve.point(nx, ny);
      };
      Point.prototype.dbl = function dbl() {
        if (this.inf) return this;
        var ys1 = this.y.redAdd(this.y);
        if (ys1.cmpn(0) === 0) return this.curve.point(null, null);
        var a = this.curve.a;
        var x2 = this.x.redSqr();
        var dyinv = ys1.redInvm();
        var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
        var nx = c.redSqr().redISub(this.x.redAdd(this.x));
        var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
        return this.curve.point(nx, ny);
      };
      Point.prototype.getX = function getX() {
        return this.x.fromRed();
      };
      Point.prototype.getY = function getY() {
        return this.y.fromRed();
      };
      Point.prototype.mul = function mul(k) {
        k = new BN(k, 16);
        if (this.isInfinity()) return this; else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k); else if (this.curve.endo) return this.curve._endoWnafMulAdd([ this ], [ k ]); else return this.curve._wnafMul(this, k);
      };
      Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
        var points = [ this, p2 ];
        var coeffs = [ k1, k2 ];
        if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs); else return this.curve._wnafMulAdd(1, points, coeffs, 2);
      };
      Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
        var points = [ this, p2 ];
        var coeffs = [ k1, k2 ];
        if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true); else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
      };
      Point.prototype.eq = function eq(p) {
        return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
      };
      Point.prototype.neg = function neg(_precompute) {
        if (this.inf) return this;
        var res = this.curve.point(this.x, this.y.redNeg());
        if (_precompute && this.precomputed) {
          var pre = this.precomputed;
          var negate = function(p) {
            return p.neg();
          };
          res.precomputed = {
            naf: pre.naf && {
              wnd: pre.naf.wnd,
              points: pre.naf.points.map(negate)
            },
            doubles: pre.doubles && {
              step: pre.doubles.step,
              points: pre.doubles.points.map(negate)
            }
          };
        }
        return res;
      };
      Point.prototype.toJ = function toJ() {
        if (this.inf) return this.curve.jpoint(null, null, null);
        var res = this.curve.jpoint(this.x, this.y, this.curve.one);
        return res;
      };
      function JPoint(curve, x, y, z) {
        Base.BasePoint.call(this, curve, "jacobian");
        if (x === null && y === null && z === null) {
          this.x = this.curve.one;
          this.y = this.curve.one;
          this.z = new BN(0);
        } else {
          this.x = new BN(x, 16);
          this.y = new BN(y, 16);
          this.z = new BN(z, 16);
        }
        if (!this.x.red) this.x = this.x.toRed(this.curve.red);
        if (!this.y.red) this.y = this.y.toRed(this.curve.red);
        if (!this.z.red) this.z = this.z.toRed(this.curve.red);
        this.zOne = this.z === this.curve.one;
      }
      inherits(JPoint, Base.BasePoint);
      ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
        return new JPoint(this, x, y, z);
      };
      JPoint.prototype.toP = function toP() {
        if (this.isInfinity()) return this.curve.point(null, null);
        var zinv = this.z.redInvm();
        var zinv2 = zinv.redSqr();
        var ax = this.x.redMul(zinv2);
        var ay = this.y.redMul(zinv2).redMul(zinv);
        return this.curve.point(ax, ay);
      };
      JPoint.prototype.neg = function neg() {
        return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
      };
      JPoint.prototype.add = function add(p) {
        if (this.isInfinity()) return p;
        if (p.isInfinity()) return this;
        var pz2 = p.z.redSqr();
        var z2 = this.z.redSqr();
        var u1 = this.x.redMul(pz2);
        var u2 = p.x.redMul(z2);
        var s1 = this.y.redMul(pz2.redMul(p.z));
        var s2 = p.y.redMul(z2.redMul(this.z));
        var h = u1.redSub(u2);
        var r = s1.redSub(s2);
        if (h.cmpn(0) === 0) {
          if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null); else return this.dbl();
        }
        var h2 = h.redSqr();
        var h3 = h2.redMul(h);
        var v = u1.redMul(h2);
        var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
        var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
        var nz = this.z.redMul(p.z).redMul(h);
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype.mixedAdd = function mixedAdd(p) {
        if (this.isInfinity()) return p.toJ();
        if (p.isInfinity()) return this;
        var z2 = this.z.redSqr();
        var u1 = this.x;
        var u2 = p.x.redMul(z2);
        var s1 = this.y;
        var s2 = p.y.redMul(z2).redMul(this.z);
        var h = u1.redSub(u2);
        var r = s1.redSub(s2);
        if (h.cmpn(0) === 0) {
          if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null); else return this.dbl();
        }
        var h2 = h.redSqr();
        var h3 = h2.redMul(h);
        var v = u1.redMul(h2);
        var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
        var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
        var nz = this.z.redMul(h);
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype.dblp = function dblp(pow) {
        if (pow === 0) return this;
        if (this.isInfinity()) return this;
        if (!pow) return this.dbl();
        var i;
        if (this.curve.zeroA || this.curve.threeA) {
          var r = this;
          for (i = 0; i < pow; i++) r = r.dbl();
          return r;
        }
        var a = this.curve.a;
        var tinv = this.curve.tinv;
        var jx = this.x;
        var jy = this.y;
        var jz = this.z;
        var jz4 = jz.redSqr().redSqr();
        var jyd = jy.redAdd(jy);
        for (i = 0; i < pow; i++) {
          var jx2 = jx.redSqr();
          var jyd2 = jyd.redSqr();
          var jyd4 = jyd2.redSqr();
          var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
          var t1 = jx.redMul(jyd2);
          var nx = c.redSqr().redISub(t1.redAdd(t1));
          var t2 = t1.redISub(nx);
          var dny = c.redMul(t2);
          dny = dny.redIAdd(dny).redISub(jyd4);
          var nz = jyd.redMul(jz);
          if (i + 1 < pow) jz4 = jz4.redMul(jyd4);
          jx = nx;
          jz = nz;
          jyd = dny;
        }
        return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
      };
      JPoint.prototype.dbl = function dbl() {
        if (this.isInfinity()) return this;
        if (this.curve.zeroA) return this._zeroDbl(); else if (this.curve.threeA) return this._threeDbl(); else return this._dbl();
      };
      JPoint.prototype._zeroDbl = function _zeroDbl() {
        var nx;
        var ny;
        var nz;
        if (this.zOne) {
          var xx = this.x.redSqr();
          var yy = this.y.redSqr();
          var yyyy = yy.redSqr();
          var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
          s = s.redIAdd(s);
          var m = xx.redAdd(xx).redIAdd(xx);
          var t = m.redSqr().redISub(s).redISub(s);
          var yyyy8 = yyyy.redIAdd(yyyy);
          yyyy8 = yyyy8.redIAdd(yyyy8);
          yyyy8 = yyyy8.redIAdd(yyyy8);
          nx = t;
          ny = m.redMul(s.redISub(t)).redISub(yyyy8);
          nz = this.y.redAdd(this.y);
        } else {
          var a = this.x.redSqr();
          var b = this.y.redSqr();
          var c = b.redSqr();
          var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
          d = d.redIAdd(d);
          var e = a.redAdd(a).redIAdd(a);
          var f = e.redSqr();
          var c8 = c.redIAdd(c);
          c8 = c8.redIAdd(c8);
          c8 = c8.redIAdd(c8);
          nx = f.redISub(d).redISub(d);
          ny = e.redMul(d.redISub(nx)).redISub(c8);
          nz = this.y.redMul(this.z);
          nz = nz.redIAdd(nz);
        }
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype._threeDbl = function _threeDbl() {
        var nx;
        var ny;
        var nz;
        if (this.zOne) {
          var xx = this.x.redSqr();
          var yy = this.y.redSqr();
          var yyyy = yy.redSqr();
          var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
          s = s.redIAdd(s);
          var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
          var t = m.redSqr().redISub(s).redISub(s);
          nx = t;
          var yyyy8 = yyyy.redIAdd(yyyy);
          yyyy8 = yyyy8.redIAdd(yyyy8);
          yyyy8 = yyyy8.redIAdd(yyyy8);
          ny = m.redMul(s.redISub(t)).redISub(yyyy8);
          nz = this.y.redAdd(this.y);
        } else {
          var delta = this.z.redSqr();
          var gamma = this.y.redSqr();
          var beta = this.x.redMul(gamma);
          var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
          alpha = alpha.redAdd(alpha).redIAdd(alpha);
          var beta4 = beta.redIAdd(beta);
          beta4 = beta4.redIAdd(beta4);
          var beta8 = beta4.redAdd(beta4);
          nx = alpha.redSqr().redISub(beta8);
          nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
          var ggamma8 = gamma.redSqr();
          ggamma8 = ggamma8.redIAdd(ggamma8);
          ggamma8 = ggamma8.redIAdd(ggamma8);
          ggamma8 = ggamma8.redIAdd(ggamma8);
          ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
        }
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype._dbl = function _dbl() {
        var a = this.curve.a;
        var jx = this.x;
        var jy = this.y;
        var jz = this.z;
        var jz4 = jz.redSqr().redSqr();
        var jx2 = jx.redSqr();
        var jy2 = jy.redSqr();
        var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
        var jxd4 = jx.redAdd(jx);
        jxd4 = jxd4.redIAdd(jxd4);
        var t1 = jxd4.redMul(jy2);
        var nx = c.redSqr().redISub(t1.redAdd(t1));
        var t2 = t1.redISub(nx);
        var jyd8 = jy2.redSqr();
        jyd8 = jyd8.redIAdd(jyd8);
        jyd8 = jyd8.redIAdd(jyd8);
        jyd8 = jyd8.redIAdd(jyd8);
        var ny = c.redMul(t2).redISub(jyd8);
        var nz = jy.redAdd(jy).redMul(jz);
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype.trpl = function trpl() {
        if (!this.curve.zeroA) return this.dbl().add(this);
        var xx = this.x.redSqr();
        var yy = this.y.redSqr();
        var zz = this.z.redSqr();
        var yyyy = yy.redSqr();
        var m = xx.redAdd(xx).redIAdd(xx);
        var mm = m.redSqr();
        var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
        e = e.redIAdd(e);
        e = e.redAdd(e).redIAdd(e);
        e = e.redISub(mm);
        var ee = e.redSqr();
        var t = yyyy.redIAdd(yyyy);
        t = t.redIAdd(t);
        t = t.redIAdd(t);
        t = t.redIAdd(t);
        var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
        var yyu4 = yy.redMul(u);
        yyu4 = yyu4.redIAdd(yyu4);
        yyu4 = yyu4.redIAdd(yyu4);
        var nx = this.x.redMul(ee).redISub(yyu4);
        nx = nx.redIAdd(nx);
        nx = nx.redIAdd(nx);
        var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
        ny = ny.redIAdd(ny);
        ny = ny.redIAdd(ny);
        ny = ny.redIAdd(ny);
        var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
        return this.curve.jpoint(nx, ny, nz);
      };
      JPoint.prototype.mul = function mul(k, kbase) {
        k = new BN(k, kbase);
        return this.curve._wnafMul(this, k);
      };
      JPoint.prototype.eq = function eq(p) {
        if (p.type === "affine") return this.eq(p.toJ());
        if (this === p) return true;
        var z2 = this.z.redSqr();
        var pz2 = p.z.redSqr();
        if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false;
        var z3 = z2.redMul(this.z);
        var pz3 = pz2.redMul(p.z);
        return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
      };
      JPoint.prototype.eqXToP = function eqXToP(x) {
        var zs = this.z.redSqr();
        var rx = x.toRed(this.curve.red).redMul(zs);
        if (this.x.cmp(rx) === 0) return true;
        var xc = x.clone();
        var t = this.curve.redN.redMul(zs);
        for (;;) {
          xc.iadd(this.curve.n);
          if (xc.cmp(this.curve.p) >= 0) return false;
          rx.redIAdd(t);
          if (this.x.cmp(rx) === 0) return true;
        }
      };
      JPoint.prototype.inspect = function inspect() {
        if (this.isInfinity()) return "<EC JPoint Infinity>";
        return "<EC JPoint x: " + this.x.toString(16, 2) + " y: " + this.y.toString(16, 2) + " z: " + this.z.toString(16, 2) + ">";
      };
      JPoint.prototype.isInfinity = function isInfinity() {
        return this.z.cmpn(0) === 0;
      };
    },
    480(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var curves = exports;
      var hash = __webpack_require__(7952);
      var curve = __webpack_require__(894);
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      function PresetCurve(options) {
        if (options.type === "short") this.curve = new curve.short(options); else if (options.type === "edwards") this.curve = new curve.edwards(options); else this.curve = new curve.mont(options);
        this.g = this.curve.g;
        this.n = this.curve.n;
        this.hash = options.hash;
        assert(this.g.validate(), "Invalid curve");
        assert(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O");
      }
      curves.PresetCurve = PresetCurve;
      function defineCurve(name, options) {
        Object.defineProperty(curves, name, {
          configurable: true,
          enumerable: true,
          get: function() {
            var curve = new PresetCurve(options);
            Object.defineProperty(curves, name, {
              configurable: true,
              enumerable: true,
              value: curve
            });
            return curve;
          }
        });
      }
      defineCurve("p192", {
        type: "short",
        prime: "p192",
        p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",
        a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",
        b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",
        n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",
        hash: hash.sha256,
        gRed: false,
        g: [ "188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811" ]
      });
      defineCurve("p224", {
        type: "short",
        prime: "p224",
        p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",
        a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",
        b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",
        n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",
        hash: hash.sha256,
        gRed: false,
        g: [ "b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34" ]
      });
      defineCurve("p256", {
        type: "short",
        prime: null,
        p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",
        a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",
        b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",
        n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",
        hash: hash.sha256,
        gRed: false,
        g: [ "6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5" ]
      });
      defineCurve("p384", {
        type: "short",
        prime: null,
        p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff " + "fffffffe ffffffff 00000000 00000000 ffffffff",
        a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff " + "fffffffe ffffffff 00000000 00000000 fffffffc",
        b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f " + "5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",
        n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 " + "f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",
        hash: hash.sha384,
        gRed: false,
        g: [ "aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 " + "5502f25d bf55296c 3a545e38 72760ab7", "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 " + "0a60b1ce 1d7e819d 7a431d7c 90ea0e5f" ]
      });
      defineCurve("p521", {
        type: "short",
        prime: null,
        p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff " + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff " + "ffffffff ffffffff ffffffff ffffffff ffffffff",
        a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff " + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff " + "ffffffff ffffffff ffffffff ffffffff fffffffc",
        b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b " + "99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd " + "3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",
        n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff " + "ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 " + "f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",
        hash: hash.sha512,
        gRed: false,
        g: [ "000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 " + "053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 " + "a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 " + "579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 " + "3fad0761 353c7086 a272c240 88be9476 9fd16650" ]
      });
      defineCurve("curve25519", {
        type: "mont",
        prime: "p25519",
        p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",
        a: "76d06",
        b: "1",
        n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",
        hash: hash.sha256,
        gRed: false,
        g: [ "9" ]
      });
      defineCurve("ed25519", {
        type: "edwards",
        prime: "p25519",
        p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",
        a: "-1",
        c: "1",
        d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",
        n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",
        hash: hash.sha256,
        gRed: false,
        g: [ "216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", "6666666666666666666666666666666666666666666666666666666666666658" ]
      });
      var pre;
      try {
        pre = __webpack_require__(4011);
      } catch (e) {
        pre = undefined;
      }
      defineCurve("secp256k1", {
        type: "short",
        prime: "k256",
        p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",
        a: "0",
        b: "7",
        n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",
        h: "1",
        hash: hash.sha256,
        beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",
        lambda: "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",
        basis: [ {
          a: "3086d221a7d46bcde86c90e49284eb15",
          b: "-e4437ed6010e88286f547fa90abfe4c3"
        }, {
          a: "114ca50f7a8e2f3f657c1108d9d44cfd8",
          b: "3086d221a7d46bcde86c90e49284eb15"
        } ],
        gRed: false,
        g: [ "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", pre ]
      });
    },
    7447(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var HmacDRBG = __webpack_require__(2723);
      var utils = __webpack_require__(7011);
      var curves = __webpack_require__(480);
      var rand = __webpack_require__(5037);
      var assert = utils.assert;
      var KeyPair = __webpack_require__(1200);
      var Signature = __webpack_require__(8545);
      function EC(options) {
        if (!(this instanceof EC)) return new EC(options);
        if (typeof options === "string") {
          assert(Object.prototype.hasOwnProperty.call(curves, options), "Unknown curve " + options);
          options = curves[options];
        }
        if (options instanceof curves.PresetCurve) options = {
          curve: options
        };
        this.curve = options.curve.curve;
        this.n = this.curve.n;
        this.nh = this.n.ushrn(1);
        this.g = this.curve.g;
        this.g = options.curve.g;
        this.g.precompute(options.curve.n.bitLength() + 1);
        this.hash = options.hash || options.curve.hash;
      }
      module.exports = EC;
      EC.prototype.keyPair = function keyPair(options) {
        return new KeyPair(this, options);
      };
      EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
        return KeyPair.fromPrivate(this, priv, enc);
      };
      EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
        return KeyPair.fromPublic(this, pub, enc);
      };
      EC.prototype.genKeyPair = function genKeyPair(options) {
        if (!options) options = {};
        var drbg = new HmacDRBG({
          hash: this.hash,
          pers: options.pers,
          persEnc: options.persEnc || "utf8",
          entropy: options.entropy || rand(this.hash.hmacStrength),
          entropyEnc: options.entropy && options.entropyEnc || "utf8",
          nonce: this.n.toArray()
        });
        var bytes = this.n.byteLength();
        var ns2 = this.n.sub(new BN(2));
        for (;;) {
          var priv = new BN(drbg.generate(bytes));
          if (priv.cmp(ns2) > 0) continue;
          priv.iaddn(1);
          return this.keyFromPrivate(priv);
        }
      };
      EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {
        var byteLength;
        if (BN.isBN(msg) || typeof msg === "number") {
          msg = new BN(msg, 16);
          byteLength = msg.byteLength();
        } else if (typeof msg === "object") {
          byteLength = msg.length;
          msg = new BN(msg, 16);
        } else {
          var str = msg.toString();
          byteLength = str.length + 1 >>> 1;
          msg = new BN(str, 16);
        }
        if (typeof bitLength !== "number") {
          bitLength = byteLength * 8;
        }
        var delta = bitLength - this.n.bitLength();
        if (delta > 0) msg = msg.ushrn(delta);
        if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n); else return msg;
      };
      EC.prototype.sign = function sign(msg, key, enc, options) {
        if (typeof enc === "object") {
          options = enc;
          enc = null;
        }
        if (!options) options = {};
        if (typeof msg !== "string" && typeof msg !== "number" && !BN.isBN(msg)) {
          assert(typeof msg === "object" && msg && typeof msg.length === "number", "Expected message to be an array-like, a hex string, or a BN instance");
          assert(msg.length >>> 0 === msg.length);
          for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);
        }
        key = this.keyFromPrivate(key, enc);
        msg = this._truncateToN(msg, false, options.msgBitLength);
        assert(!msg.isNeg(), "Can not sign a negative message");
        var bytes = this.n.byteLength();
        var bkey = key.getPrivate().toArray("be", bytes);
        var nonce = msg.toArray("be", bytes);
        assert(new BN(nonce).eq(msg), "Can not sign message");
        var drbg = new HmacDRBG({
          hash: this.hash,
          entropy: bkey,
          nonce,
          pers: options.pers,
          persEnc: options.persEnc || "utf8"
        });
        var ns1 = this.n.sub(new BN(1));
        for (var iter = 0; ;iter++) {
          var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));
          k = this._truncateToN(k, true);
          if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;
          var kp = this.g.mul(k);
          if (kp.isInfinity()) continue;
          var kpX = kp.getX();
          var r = kpX.umod(this.n);
          if (r.cmpn(0) === 0) continue;
          var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
          s = s.umod(this.n);
          if (s.cmpn(0) === 0) continue;
          var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0);
          if (options.canonical && s.cmp(this.nh) > 0) {
            s = this.n.sub(s);
            recoveryParam ^= 1;
          }
          return new Signature({
            r,
            s,
            recoveryParam
          });
        }
      };
      EC.prototype.verify = function verify(msg, signature, key, enc, options) {
        if (!options) options = {};
        msg = this._truncateToN(msg, false, options.msgBitLength);
        key = this.keyFromPublic(key, enc);
        signature = new Signature(signature, "hex");
        var r = signature.r;
        var s = signature.s;
        if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;
        if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false;
        var sinv = s.invm(this.n);
        var u1 = sinv.mul(msg).umod(this.n);
        var u2 = sinv.mul(r).umod(this.n);
        var p;
        if (!this.curve._maxwellTrick) {
          p = this.g.mulAdd(u1, key.getPublic(), u2);
          if (p.isInfinity()) return false;
          return p.getX().umod(this.n).cmp(r) === 0;
        }
        p = this.g.jmulAdd(u1, key.getPublic(), u2);
        if (p.isInfinity()) return false;
        return p.eqXToP(r);
      };
      EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
        assert((3 & j) === j, "The recovery param is more than two bits");
        signature = new Signature(signature, enc);
        var n = this.n;
        var e = new BN(msg);
        var r = signature.r;
        var s = signature.s;
        var isYOdd = j & 1;
        var isSecondKey = j >> 1;
        if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error("Unable to find sencond key candinate");
        if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); else r = this.curve.pointFromX(r, isYOdd);
        var rInv = signature.r.invm(n);
        var s1 = n.sub(e).mul(rInv).umod(n);
        var s2 = s.mul(rInv).umod(n);
        return this.g.mulAdd(s1, r, s2);
      };
      EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
        signature = new Signature(signature, enc);
        if (signature.recoveryParam !== null) return signature.recoveryParam;
        for (var i = 0; i < 4; i++) {
          var Qprime;
          try {
            Qprime = this.recoverPubKey(e, signature, i);
          } catch (e) {
            continue;
          }
          if (Qprime.eq(Q)) return i;
        }
        throw new Error("Unable to find valid recovery factor");
      };
    },
    1200(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      function KeyPair(ec, options) {
        this.ec = ec;
        this.priv = null;
        this.pub = null;
        if (options.priv) this._importPrivate(options.priv, options.privEnc);
        if (options.pub) this._importPublic(options.pub, options.pubEnc);
      }
      module.exports = KeyPair;
      KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
        if (pub instanceof KeyPair) return pub;
        return new KeyPair(ec, {
          pub,
          pubEnc: enc
        });
      };
      KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
        if (priv instanceof KeyPair) return priv;
        return new KeyPair(ec, {
          priv,
          privEnc: enc
        });
      };
      KeyPair.prototype.validate = function validate() {
        var pub = this.getPublic();
        if (pub.isInfinity()) return {
          result: false,
          reason: "Invalid public key"
        };
        if (!pub.validate()) return {
          result: false,
          reason: "Public key is not a point"
        };
        if (!pub.mul(this.ec.curve.n).isInfinity()) return {
          result: false,
          reason: "Public key * N != O"
        };
        return {
          result: true,
          reason: null
        };
      };
      KeyPair.prototype.getPublic = function getPublic(compact, enc) {
        if (typeof compact === "string") {
          enc = compact;
          compact = null;
        }
        if (!this.pub) this.pub = this.ec.g.mul(this.priv);
        if (!enc) return this.pub;
        return this.pub.encode(enc, compact);
      };
      KeyPair.prototype.getPrivate = function getPrivate(enc) {
        if (enc === "hex") return this.priv.toString(16, 2); else return this.priv;
      };
      KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
        this.priv = new BN(key, enc || 16);
        this.priv = this.priv.umod(this.ec.curve.n);
      };
      KeyPair.prototype._importPublic = function _importPublic(key, enc) {
        if (key.x || key.y) {
          if (this.ec.curve.type === "mont") {
            assert(key.x, "Need x coordinate");
          } else if (this.ec.curve.type === "short" || this.ec.curve.type === "edwards") {
            assert(key.x && key.y, "Need both x and y coordinate");
          }
          this.pub = this.ec.curve.point(key.x, key.y);
          return;
        }
        this.pub = this.ec.curve.decodePoint(key, enc);
      };
      KeyPair.prototype.derive = function derive(pub) {
        if (!pub.validate()) {
          assert(pub.validate(), "public point not validated");
        }
        return pub.mul(this.priv).getX();
      };
      KeyPair.prototype.sign = function sign(msg, enc, options) {
        return this.ec.sign(msg, this, enc, options);
      };
      KeyPair.prototype.verify = function verify(msg, signature, options) {
        return this.ec.verify(msg, signature, this, undefined, options);
      };
      KeyPair.prototype.inspect = function inspect() {
        return "<Key priv: " + (this.priv && this.priv.toString(16, 2)) + " pub: " + (this.pub && this.pub.inspect()) + " >";
      };
    },
    8545(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      function Signature(options, enc) {
        if (options instanceof Signature) return options;
        if (this._importDER(options, enc)) return;
        assert(options.r && options.s, "Signature without r or s");
        this.r = new BN(options.r, 16);
        this.s = new BN(options.s, 16);
        if (options.recoveryParam === undefined) this.recoveryParam = null; else this.recoveryParam = options.recoveryParam;
      }
      module.exports = Signature;
      function Position() {
        this.place = 0;
      }
      function getLength(buf, p) {
        var initial = buf[p.place++];
        if (!(initial & 128)) {
          return initial;
        }
        var octetLen = initial & 15;
        if (octetLen === 0 || octetLen > 4) {
          return false;
        }
        if (buf[p.place] === 0) {
          return false;
        }
        var val = 0;
        for (var i = 0, off = p.place; i < octetLen; i++, off++) {
          val <<= 8;
          val |= buf[off];
          val >>>= 0;
        }
        if (val <= 127) {
          return false;
        }
        p.place = off;
        return val;
      }
      function rmPadding(buf) {
        var i = 0;
        var len = buf.length - 1;
        while (!buf[i] && !(buf[i + 1] & 128) && i < len) {
          i++;
        }
        if (i === 0) {
          return buf;
        }
        return buf.slice(i);
      }
      Signature.prototype._importDER = function _importDER(data, enc) {
        data = utils.toArray(data, enc);
        var p = new Position;
        if (data[p.place++] !== 48) {
          return false;
        }
        var len = getLength(data, p);
        if (len === false) {
          return false;
        }
        if (len + p.place !== data.length) {
          return false;
        }
        if (data[p.place++] !== 2) {
          return false;
        }
        var rlen = getLength(data, p);
        if (rlen === false) {
          return false;
        }
        if ((data[p.place] & 128) !== 0) {
          return false;
        }
        var r = data.slice(p.place, rlen + p.place);
        p.place += rlen;
        if (data[p.place++] !== 2) {
          return false;
        }
        var slen = getLength(data, p);
        if (slen === false) {
          return false;
        }
        if (data.length !== slen + p.place) {
          return false;
        }
        if ((data[p.place] & 128) !== 0) {
          return false;
        }
        var s = data.slice(p.place, slen + p.place);
        if (r[0] === 0) {
          if (r[1] & 128) {
            r = r.slice(1);
          } else {
            return false;
          }
        }
        if (s[0] === 0) {
          if (s[1] & 128) {
            s = s.slice(1);
          } else {
            return false;
          }
        }
        this.r = new BN(r);
        this.s = new BN(s);
        this.recoveryParam = null;
        return true;
      };
      function constructLength(arr, len) {
        if (len < 128) {
          arr.push(len);
          return;
        }
        var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
        arr.push(octets | 128);
        while (--octets) {
          arr.push(len >>> (octets << 3) & 255);
        }
        arr.push(len);
      }
      Signature.prototype.toDER = function toDER(enc) {
        var r = this.r.toArray();
        var s = this.s.toArray();
        if (r[0] & 128) r = [ 0 ].concat(r);
        if (s[0] & 128) s = [ 0 ].concat(s);
        r = rmPadding(r);
        s = rmPadding(s);
        while (!s[0] && !(s[1] & 128)) {
          s = s.slice(1);
        }
        var arr = [ 2 ];
        constructLength(arr, r.length);
        arr = arr.concat(r);
        arr.push(2);
        constructLength(arr, s.length);
        var backHalf = arr.concat(s);
        var res = [ 48 ];
        constructLength(res, backHalf.length);
        res = res.concat(backHalf);
        return utils.encode(res, enc);
      };
    },
    8650(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var hash = __webpack_require__(7952);
      var curves = __webpack_require__(480);
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      var parseBytes = utils.parseBytes;
      var KeyPair = __webpack_require__(6661);
      var Signature = __webpack_require__(220);
      function EDDSA(curve) {
        assert(curve === "ed25519", "only tested with ed25519 so far");
        if (!(this instanceof EDDSA)) return new EDDSA(curve);
        curve = curves[curve].curve;
        this.curve = curve;
        this.g = curve.g;
        this.g.precompute(curve.n.bitLength() + 1);
        this.pointClass = curve.point().constructor;
        this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
        this.hash = hash.sha512;
      }
      module.exports = EDDSA;
      EDDSA.prototype.sign = function sign(message, secret) {
        message = parseBytes(message);
        var key = this.keyFromSecret(secret);
        var r = this.hashInt(key.messagePrefix(), message);
        var R = this.g.mul(r);
        var Rencoded = this.encodePoint(R);
        var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());
        var S = r.add(s_).umod(this.curve.n);
        return this.makeSignature({
          R,
          S,
          Rencoded
        });
      };
      EDDSA.prototype.verify = function verify(message, sig, pub) {
        message = parseBytes(message);
        sig = this.makeSignature(sig);
        if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {
          return false;
        }
        var key = this.keyFromPublic(pub);
        var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
        var SG = this.g.mul(sig.S());
        var RplusAh = sig.R().add(key.pub().mul(h));
        return RplusAh.eq(SG);
      };
      EDDSA.prototype.hashInt = function hashInt() {
        var hash = this.hash();
        for (var i = 0; i < arguments.length; i++) hash.update(arguments[i]);
        return utils.intFromLE(hash.digest()).umod(this.curve.n);
      };
      EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
        return KeyPair.fromPublic(this, pub);
      };
      EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
        return KeyPair.fromSecret(this, secret);
      };
      EDDSA.prototype.makeSignature = function makeSignature(sig) {
        if (sig instanceof Signature) return sig;
        return new Signature(this, sig);
      };
      EDDSA.prototype.encodePoint = function encodePoint(point) {
        var enc = point.getY().toArray("le", this.encodingLength);
        enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0;
        return enc;
      };
      EDDSA.prototype.decodePoint = function decodePoint(bytes) {
        bytes = utils.parseBytes(bytes);
        var lastIx = bytes.length - 1;
        var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128);
        var xIsOdd = (bytes[lastIx] & 128) !== 0;
        var y = utils.intFromLE(normed);
        return this.curve.pointFromY(y, xIsOdd);
      };
      EDDSA.prototype.encodeInt = function encodeInt(num) {
        return num.toArray("le", this.encodingLength);
      };
      EDDSA.prototype.decodeInt = function decodeInt(bytes) {
        return utils.intFromLE(bytes);
      };
      EDDSA.prototype.isPoint = function isPoint(val) {
        return val instanceof this.pointClass;
      };
    },
    6661(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      var parseBytes = utils.parseBytes;
      var cachedProperty = utils.cachedProperty;
      function KeyPair(eddsa, params) {
        this.eddsa = eddsa;
        this._secret = parseBytes(params.secret);
        if (eddsa.isPoint(params.pub)) this._pub = params.pub; else this._pubBytes = parseBytes(params.pub);
      }
      KeyPair.fromPublic = function fromPublic(eddsa, pub) {
        if (pub instanceof KeyPair) return pub;
        return new KeyPair(eddsa, {
          pub
        });
      };
      KeyPair.fromSecret = function fromSecret(eddsa, secret) {
        if (secret instanceof KeyPair) return secret;
        return new KeyPair(eddsa, {
          secret
        });
      };
      KeyPair.prototype.secret = function secret() {
        return this._secret;
      };
      cachedProperty(KeyPair, "pubBytes", (function pubBytes() {
        return this.eddsa.encodePoint(this.pub());
      }));
      cachedProperty(KeyPair, "pub", (function pub() {
        if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);
        return this.eddsa.g.mul(this.priv());
      }));
      cachedProperty(KeyPair, "privBytes", (function privBytes() {
        var eddsa = this.eddsa;
        var hash = this.hash();
        var lastIx = eddsa.encodingLength - 1;
        var a = hash.slice(0, eddsa.encodingLength);
        a[0] &= 248;
        a[lastIx] &= 127;
        a[lastIx] |= 64;
        return a;
      }));
      cachedProperty(KeyPair, "priv", (function priv() {
        return this.eddsa.decodeInt(this.privBytes());
      }));
      cachedProperty(KeyPair, "hash", (function hash() {
        return this.eddsa.hash().update(this.secret()).digest();
      }));
      cachedProperty(KeyPair, "messagePrefix", (function messagePrefix() {
        return this.hash().slice(this.eddsa.encodingLength);
      }));
      KeyPair.prototype.sign = function sign(message) {
        assert(this._secret, "KeyPair can only verify");
        return this.eddsa.sign(message, this);
      };
      KeyPair.prototype.verify = function verify(message, sig) {
        return this.eddsa.verify(message, sig, this);
      };
      KeyPair.prototype.getSecret = function getSecret(enc) {
        assert(this._secret, "KeyPair is public only");
        return utils.encode(this.secret(), enc);
      };
      KeyPair.prototype.getPublic = function getPublic(enc) {
        return utils.encode(this.pubBytes(), enc);
      };
      module.exports = KeyPair;
    },
    220(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var BN = __webpack_require__(8490);
      var utils = __webpack_require__(7011);
      var assert = utils.assert;
      var cachedProperty = utils.cachedProperty;
      var parseBytes = utils.parseBytes;
      function Signature(eddsa, sig) {
        this.eddsa = eddsa;
        if (typeof sig !== "object") sig = parseBytes(sig);
        if (Array.isArray(sig)) {
          assert(sig.length === eddsa.encodingLength * 2, "Signature has invalid size");
          sig = {
            R: sig.slice(0, eddsa.encodingLength),
            S: sig.slice(eddsa.encodingLength)
          };
        }
        assert(sig.R && sig.S, "Signature without R or S");
        if (eddsa.isPoint(sig.R)) this._R = sig.R;
        if (sig.S instanceof BN) this._S = sig.S;
        this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
        this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
      }
      cachedProperty(Signature, "S", (function S() {
        return this.eddsa.decodeInt(this.Sencoded());
      }));
      cachedProperty(Signature, "R", (function R() {
        return this.eddsa.decodePoint(this.Rencoded());
      }));
      cachedProperty(Signature, "Rencoded", (function Rencoded() {
        return this.eddsa.encodePoint(this.R());
      }));
      cachedProperty(Signature, "Sencoded", (function Sencoded() {
        return this.eddsa.encodeInt(this.S());
      }));
      Signature.prototype.toBytes = function toBytes() {
        return this.Rencoded().concat(this.Sencoded());
      };
      Signature.prototype.toHex = function toHex() {
        return utils.encode(this.toBytes(), "hex").toUpperCase();
      };
      module.exports = Signature;
    },
    4011(module) {
      module.exports = {
        doubles: {
          step: 4,
          points: [ [ "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821" ], [ "8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf" ], [ "175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695" ], [ "363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9" ], [ "8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36" ], [ "723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f" ], [ "eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999" ], [ "100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09" ], [ "e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d" ], [ "feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088" ], [ "da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d" ], [ "53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8" ], [ "8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a" ], [ "385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453" ], [ "6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160" ], [ "3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0" ], [ "85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6" ], [ "948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589" ], [ "6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17" ], [ "e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda" ], [ "e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd" ], [ "213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2" ], [ "4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6" ], [ "fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f" ], [ "76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01" ], [ "c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3" ], [ "d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f" ], [ "b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7" ], [ "e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78" ], [ "a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1" ], [ "90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150" ], [ "8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82" ], [ "e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc" ], [ "8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b" ], [ "e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51" ], [ "b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45" ], [ "d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120" ], [ "324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84" ], [ "4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d" ], [ "9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d" ], [ "6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8" ], [ "a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8" ], [ "7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac" ], [ "928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f" ], [ "85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962" ], [ "ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907" ], [ "827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec" ], [ "eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d" ], [ "e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414" ], [ "1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd" ], [ "146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0" ], [ "fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811" ], [ "da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1" ], [ "a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c" ], [ "174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73" ], [ "959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd" ], [ "d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405" ], [ "64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589" ], [ "8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e" ], [ "13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27" ], [ "bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1" ], [ "8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482" ], [ "8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945" ], [ "dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573" ], [ "f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82" ] ]
        },
        naf: {
          wnd: 7,
          points: [ [ "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672" ], [ "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6" ], [ "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da" ], [ "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37" ], [ "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b" ], [ "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81" ], [ "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58" ], [ "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77" ], [ "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a" ], [ "352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c" ], [ "2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67" ], [ "9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402" ], [ "daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55" ], [ "c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482" ], [ "6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82" ], [ "1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396" ], [ "605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49" ], [ "62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf" ], [ "80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a" ], [ "7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7" ], [ "d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933" ], [ "49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a" ], [ "77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6" ], [ "f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37" ], [ "463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e" ], [ "f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6" ], [ "caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476" ], [ "2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40" ], [ "7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61" ], [ "754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683" ], [ "e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5" ], [ "186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b" ], [ "df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417" ], [ "5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868" ], [ "290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a" ], [ "af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6" ], [ "766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996" ], [ "59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e" ], [ "f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d" ], [ "7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2" ], [ "948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e" ], [ "7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437" ], [ "3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311" ], [ "d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4" ], [ "1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575" ], [ "733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d" ], [ "15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d" ], [ "a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629" ], [ "e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06" ], [ "311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374" ], [ "34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee" ], [ "f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1" ], [ "d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b" ], [ "32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661" ], [ "7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6" ], [ "ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e" ], [ "16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d" ], [ "eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc" ], [ "78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4" ], [ "494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c" ], [ "a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b" ], [ "c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913" ], [ "841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154" ], [ "5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865" ], [ "36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc" ], [ "336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224" ], [ "8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e" ], [ "1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6" ], [ "85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511" ], [ "29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b" ], [ "a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2" ], [ "4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c" ], [ "d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3" ], [ "ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d" ], [ "af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700" ], [ "e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4" ], [ "591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196" ], [ "11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4" ], [ "3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257" ], [ "cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13" ], [ "c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096" ], [ "c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38" ], [ "a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f" ], [ "347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448" ], [ "da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a" ], [ "c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4" ], [ "4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437" ], [ "3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7" ], [ "cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d" ], [ "b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a" ], [ "d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54" ], [ "48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77" ], [ "dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517" ], [ "6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10" ], [ "e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125" ], [ "eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e" ], [ "13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1" ], [ "ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2" ], [ "b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423" ], [ "ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8" ], [ "8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758" ], [ "52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375" ], [ "e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d" ], [ "7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec" ], [ "5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0" ], [ "32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c" ], [ "e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4" ], [ "8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f" ], [ "4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649" ], [ "3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826" ], [ "674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5" ], [ "d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87" ], [ "30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b" ], [ "be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc" ], [ "93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c" ], [ "b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f" ], [ "d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a" ], [ "d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46" ], [ "463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f" ], [ "7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03" ], [ "74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08" ], [ "30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8" ], [ "9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373" ], [ "176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3" ], [ "75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8" ], [ "809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1" ], [ "1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9" ] ]
        }
      };
    },
    7011(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var utils = exports;
      var BN = __webpack_require__(8490);
      var minAssert = __webpack_require__(3349);
      var minUtils = __webpack_require__(4367);
      utils.assert = minAssert;
      utils.toArray = minUtils.toArray;
      utils.zero2 = minUtils.zero2;
      utils.toHex = minUtils.toHex;
      utils.encode = minUtils.encode;
      function getNAF(num, w, bits) {
        var naf = new Array(Math.max(num.bitLength(), bits) + 1);
        var i;
        for (i = 0; i < naf.length; i += 1) {
          naf[i] = 0;
        }
        var ws = 1 << w + 1;
        var k = num.clone();
        for (i = 0; i < naf.length; i++) {
          var z;
          var mod = k.andln(ws - 1);
          if (k.isOdd()) {
            if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod; else z = mod;
            k.isubn(z);
          } else {
            z = 0;
          }
          naf[i] = z;
          k.iushrn(1);
        }
        return naf;
      }
      utils.getNAF = getNAF;
      function getJSF(k1, k2) {
        var jsf = [ [], [] ];
        k1 = k1.clone();
        k2 = k2.clone();
        var d1 = 0;
        var d2 = 0;
        var m8;
        while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
          var m14 = k1.andln(3) + d1 & 3;
          var m24 = k2.andln(3) + d2 & 3;
          if (m14 === 3) m14 = -1;
          if (m24 === 3) m24 = -1;
          var u1;
          if ((m14 & 1) === 0) {
            u1 = 0;
          } else {
            m8 = k1.andln(7) + d1 & 7;
            if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14; else u1 = m14;
          }
          jsf[0].push(u1);
          var u2;
          if ((m24 & 1) === 0) {
            u2 = 0;
          } else {
            m8 = k2.andln(7) + d2 & 7;
            if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24; else u2 = m24;
          }
          jsf[1].push(u2);
          if (2 * d1 === u1 + 1) d1 = 1 - d1;
          if (2 * d2 === u2 + 1) d2 = 1 - d2;
          k1.iushrn(1);
          k2.iushrn(1);
        }
        return jsf;
      }
      utils.getJSF = getJSF;
      function cachedProperty(obj, name, computer) {
        var key = "_" + name;
        obj.prototype[name] = function cachedProperty() {
          return this[key] !== undefined ? this[key] : this[key] = computer.call(this);
        };
      }
      utils.cachedProperty = cachedProperty;
      function parseBytes(bytes) {
        return typeof bytes === "string" ? utils.toArray(bytes, "hex") : bytes;
      }
      utils.parseBytes = parseBytes;
      function intFromLE(bytes) {
        return new BN(bytes, "hex", "le");
      }
      utils.intFromLE = intFromLE;
    },
    8490(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(9368).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    655(module) {
      "use strict";
      var $defineProperty = Object.defineProperty || false;
      if ($defineProperty) {
        try {
          $defineProperty({}, "a", {
            value: 1
          });
        } catch (e) {
          $defineProperty = false;
        }
      }
      module.exports = $defineProperty;
    },
    1237(module) {
      "use strict";
      module.exports = EvalError;
    },
    9383(module) {
      "use strict";
      module.exports = Error;
    },
    9290(module) {
      "use strict";
      module.exports = RangeError;
    },
    9538(module) {
      "use strict";
      module.exports = ReferenceError;
    },
    8068(module) {
      "use strict";
      module.exports = SyntaxError;
    },
    9675(module) {
      "use strict";
      module.exports = TypeError;
    },
    5345(module) {
      "use strict";
      module.exports = URIError;
    },
    9612(module) {
      "use strict";
      module.exports = Object;
    },
    7007(module) {
      "use strict";
      var R = typeof Reflect === "object" ? Reflect : null;
      var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply(target, receiver, args) {
        return Function.prototype.apply.call(target, receiver, args);
      };
      var ReflectOwnKeys;
      if (R && typeof R.ownKeys === "function") {
        ReflectOwnKeys = R.ownKeys;
      } else if (Object.getOwnPropertySymbols) {
        ReflectOwnKeys = function ReflectOwnKeys(target) {
          return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
        };
      } else {
        ReflectOwnKeys = function ReflectOwnKeys(target) {
          return Object.getOwnPropertyNames(target);
        };
      }
      function ProcessEmitWarning(warning) {
        if (console && console.warn) console.warn(warning);
      }
      var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
        return value !== value;
      };
      function EventEmitter() {
        EventEmitter.init.call(this);
      }
      module.exports = EventEmitter;
      module.exports.once = once;
      EventEmitter.EventEmitter = EventEmitter;
      EventEmitter.prototype._events = undefined;
      EventEmitter.prototype._eventsCount = 0;
      EventEmitter.prototype._maxListeners = undefined;
      var defaultMaxListeners = 10;
      function checkListener(listener) {
        if (typeof listener !== "function") {
          throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
        }
      }
      Object.defineProperty(EventEmitter, "defaultMaxListeners", {
        enumerable: true,
        get: function() {
          return defaultMaxListeners;
        },
        set: function(arg) {
          if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) {
            throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + ".");
          }
          defaultMaxListeners = arg;
        }
      });
      EventEmitter.init = function() {
        if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {
          this._events = Object.create(null);
          this._eventsCount = 0;
        }
        this._maxListeners = this._maxListeners || undefined;
      };
      EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
        if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) {
          throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + ".");
        }
        this._maxListeners = n;
        return this;
      };
      function _getMaxListeners(that) {
        if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;
        return that._maxListeners;
      }
      EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
        return _getMaxListeners(this);
      };
      EventEmitter.prototype.emit = function emit(type) {
        var args = [];
        for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
        var doError = type === "error";
        var events = this._events;
        if (events !== undefined) doError = doError && events.error === undefined; else if (!doError) return false;
        if (doError) {
          var er;
          if (args.length > 0) er = args[0];
          if (er instanceof Error) {
            throw er;
          }
          var err = new Error("Unhandled error." + (er ? " (" + er.message + ")" : ""));
          err.context = er;
          throw err;
        }
        var handler = events[type];
        if (handler === undefined) return false;
        if (typeof handler === "function") {
          ReflectApply(handler, this, args);
        } else {
          var len = handler.length;
          var listeners = arrayClone(handler, len);
          for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);
        }
        return true;
      };
      function _addListener(target, type, listener, prepend) {
        var m;
        var events;
        var existing;
        checkListener(listener);
        events = target._events;
        if (events === undefined) {
          events = target._events = Object.create(null);
          target._eventsCount = 0;
        } else {
          if (events.newListener !== undefined) {
            target.emit("newListener", type, listener.listener ? listener.listener : listener);
            events = target._events;
          }
          existing = events[type];
        }
        if (existing === undefined) {
          existing = events[type] = listener;
          ++target._eventsCount;
        } else {
          if (typeof existing === "function") {
            existing = events[type] = prepend ? [ listener, existing ] : [ existing, listener ];
          } else if (prepend) {
            existing.unshift(listener);
          } else {
            existing.push(listener);
          }
          m = _getMaxListeners(target);
          if (m > 0 && existing.length > m && !existing.warned) {
            existing.warned = true;
            var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners " + "added. Use emitter.setMaxListeners() to " + "increase limit");
            w.name = "MaxListenersExceededWarning";
            w.emitter = target;
            w.type = type;
            w.count = existing.length;
            ProcessEmitWarning(w);
          }
        }
        return target;
      }
      EventEmitter.prototype.addListener = function addListener(type, listener) {
        return _addListener(this, type, listener, false);
      };
      EventEmitter.prototype.on = EventEmitter.prototype.addListener;
      EventEmitter.prototype.prependListener = function prependListener(type, listener) {
        return _addListener(this, type, listener, true);
      };
      function onceWrapper() {
        if (!this.fired) {
          this.target.removeListener(this.type, this.wrapFn);
          this.fired = true;
          if (arguments.length === 0) return this.listener.call(this.target);
          return this.listener.apply(this.target, arguments);
        }
      }
      function _onceWrap(target, type, listener) {
        var state = {
          fired: false,
          wrapFn: undefined,
          target,
          type,
          listener
        };
        var wrapped = onceWrapper.bind(state);
        wrapped.listener = listener;
        state.wrapFn = wrapped;
        return wrapped;
      }
      EventEmitter.prototype.once = function once(type, listener) {
        checkListener(listener);
        this.on(type, _onceWrap(this, type, listener));
        return this;
      };
      EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {
        checkListener(listener);
        this.prependListener(type, _onceWrap(this, type, listener));
        return this;
      };
      EventEmitter.prototype.removeListener = function removeListener(type, listener) {
        var list, events, position, i, originalListener;
        checkListener(listener);
        events = this._events;
        if (events === undefined) return this;
        list = events[type];
        if (list === undefined) return this;
        if (list === listener || list.listener === listener) {
          if (--this._eventsCount === 0) this._events = Object.create(null); else {
            delete events[type];
            if (events.removeListener) this.emit("removeListener", type, list.listener || listener);
          }
        } else if (typeof list !== "function") {
          position = -1;
          for (i = list.length - 1; i >= 0; i--) {
            if (list[i] === listener || list[i].listener === listener) {
              originalListener = list[i].listener;
              position = i;
              break;
            }
          }
          if (position < 0) return this;
          if (position === 0) list.shift(); else {
            spliceOne(list, position);
          }
          if (list.length === 1) events[type] = list[0];
          if (events.removeListener !== undefined) this.emit("removeListener", type, originalListener || listener);
        }
        return this;
      };
      EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
      EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {
        var listeners, events, i;
        events = this._events;
        if (events === undefined) return this;
        if (events.removeListener === undefined) {
          if (arguments.length === 0) {
            this._events = Object.create(null);
            this._eventsCount = 0;
          } else if (events[type] !== undefined) {
            if (--this._eventsCount === 0) this._events = Object.create(null); else delete events[type];
          }
          return this;
        }
        if (arguments.length === 0) {
          var keys = Object.keys(events);
          var key;
          for (i = 0; i < keys.length; ++i) {
            key = keys[i];
            if (key === "removeListener") continue;
            this.removeAllListeners(key);
          }
          this.removeAllListeners("removeListener");
          this._events = Object.create(null);
          this._eventsCount = 0;
          return this;
        }
        listeners = events[type];
        if (typeof listeners === "function") {
          this.removeListener(type, listeners);
        } else if (listeners !== undefined) {
          for (i = listeners.length - 1; i >= 0; i--) {
            this.removeListener(type, listeners[i]);
          }
        }
        return this;
      };
      function _listeners(target, type, unwrap) {
        var events = target._events;
        if (events === undefined) return [];
        var evlistener = events[type];
        if (evlistener === undefined) return [];
        if (typeof evlistener === "function") return unwrap ? [ evlistener.listener || evlistener ] : [ evlistener ];
        return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
      }
      EventEmitter.prototype.listeners = function listeners(type) {
        return _listeners(this, type, true);
      };
      EventEmitter.prototype.rawListeners = function rawListeners(type) {
        return _listeners(this, type, false);
      };
      EventEmitter.listenerCount = function(emitter, type) {
        if (typeof emitter.listenerCount === "function") {
          return emitter.listenerCount(type);
        } else {
          return listenerCount.call(emitter, type);
        }
      };
      EventEmitter.prototype.listenerCount = listenerCount;
      function listenerCount(type) {
        var events = this._events;
        if (events !== undefined) {
          var evlistener = events[type];
          if (typeof evlistener === "function") {
            return 1;
          } else if (evlistener !== undefined) {
            return evlistener.length;
          }
        }
        return 0;
      }
      EventEmitter.prototype.eventNames = function eventNames() {
        return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
      };
      function arrayClone(arr, n) {
        var copy = new Array(n);
        for (var i = 0; i < n; ++i) copy[i] = arr[i];
        return copy;
      }
      function spliceOne(list, index) {
        for (;index + 1 < list.length; index++) list[index] = list[index + 1];
        list.pop();
      }
      function unwrapListeners(arr) {
        var ret = new Array(arr.length);
        for (var i = 0; i < ret.length; ++i) {
          ret[i] = arr[i].listener || arr[i];
        }
        return ret;
      }
      function once(emitter, name) {
        return new Promise((function(resolve, reject) {
          function errorListener(err) {
            emitter.removeListener(name, resolver);
            reject(err);
          }
          function resolver() {
            if (typeof emitter.removeListener === "function") {
              emitter.removeListener("error", errorListener);
            }
            resolve([].slice.call(arguments));
          }
          eventTargetAgnosticAddListener(emitter, name, resolver, {
            once: true
          });
          if (name !== "error") {
            addErrorHandlerIfEventEmitter(emitter, errorListener, {
              once: true
            });
          }
        }));
      }
      function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
        if (typeof emitter.on === "function") {
          eventTargetAgnosticAddListener(emitter, "error", handler, flags);
        }
      }
      function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
        if (typeof emitter.on === "function") {
          if (flags.once) {
            emitter.once(name, listener);
          } else {
            emitter.on(name, listener);
          }
        } else if (typeof emitter.addEventListener === "function") {
          emitter.addEventListener(name, (function wrapListener(arg) {
            if (flags.once) {
              emitter.removeEventListener(name, wrapListener);
            }
            listener(arg);
          }));
        } else {
          throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
        }
      }
    },
    8078(module, __unused_webpack_exports, __webpack_require__) {
      var Buffer = __webpack_require__(2861).Buffer;
      var MD5 = __webpack_require__(8276);
      function EVP_BytesToKey(password, salt, keyBits, ivLen) {
        if (!Buffer.isBuffer(password)) password = Buffer.from(password, "binary");
        if (salt) {
          if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, "binary");
          if (salt.length !== 8) throw new RangeError("salt should be Buffer with 8 byte length");
        }
        var keyLen = keyBits / 8;
        var key = Buffer.alloc(keyLen);
        var iv = Buffer.alloc(ivLen || 0);
        var tmp = Buffer.alloc(0);
        while (keyLen > 0 || ivLen > 0) {
          var hash = new MD5;
          hash.update(tmp);
          hash.update(password);
          if (salt) hash.update(salt);
          tmp = hash.digest();
          var used = 0;
          if (keyLen > 0) {
            var keyStart = key.length - keyLen;
            used = Math.min(keyLen, tmp.length);
            tmp.copy(key, keyStart, 0, used);
            keyLen -= used;
          }
          if (used < tmp.length && ivLen > 0) {
            var ivStart = iv.length - ivLen;
            var length = Math.min(ivLen, tmp.length - used);
            tmp.copy(iv, ivStart, used, used + length);
            ivLen -= length;
          }
        }
        tmp.fill(0);
        return {
          key,
          iv
        };
      }
      module.exports = EVP_BytesToKey;
    },
    2682(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var isCallable = __webpack_require__(9600);
      var toStr = Object.prototype.toString;
      var hasOwnProperty = Object.prototype.hasOwnProperty;
      var forEachArray = function forEachArray(array, iterator, receiver) {
        for (var i = 0, len = array.length; i < len; i++) {
          if (hasOwnProperty.call(array, i)) {
            if (receiver == null) {
              iterator(array[i], i, array);
            } else {
              iterator.call(receiver, array[i], i, array);
            }
          }
        }
      };
      var forEachString = function forEachString(string, iterator, receiver) {
        for (var i = 0, len = string.length; i < len; i++) {
          if (receiver == null) {
            iterator(string.charAt(i), i, string);
          } else {
            iterator.call(receiver, string.charAt(i), i, string);
          }
        }
      };
      var forEachObject = function forEachObject(object, iterator, receiver) {
        for (var k in object) {
          if (hasOwnProperty.call(object, k)) {
            if (receiver == null) {
              iterator(object[k], k, object);
            } else {
              iterator.call(receiver, object[k], k, object);
            }
          }
        }
      };
      function isArray(x) {
        return toStr.call(x) === "[object Array]";
      }
      module.exports = function forEach(list, iterator, thisArg) {
        if (!isCallable(iterator)) {
          throw new TypeError("iterator must be a function");
        }
        var receiver;
        if (arguments.length >= 3) {
          receiver = thisArg;
        }
        if (isArray(list)) {
          forEachArray(list, iterator, receiver);
        } else if (typeof list === "string") {
          forEachString(list, iterator, receiver);
        } else {
          forEachObject(list, iterator, receiver);
        }
      };
    },
    9353(module) {
      "use strict";
      var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
      var toStr = Object.prototype.toString;
      var max = Math.max;
      var funcType = "[object Function]";
      var concatty = function concatty(a, b) {
        var arr = [];
        for (var i = 0; i < a.length; i += 1) {
          arr[i] = a[i];
        }
        for (var j = 0; j < b.length; j += 1) {
          arr[j + a.length] = b[j];
        }
        return arr;
      };
      var slicy = function slicy(arrLike, offset) {
        var arr = [];
        for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
          arr[j] = arrLike[i];
        }
        return arr;
      };
      var joiny = function(arr, joiner) {
        var str = "";
        for (var i = 0; i < arr.length; i += 1) {
          str += arr[i];
          if (i + 1 < arr.length) {
            str += joiner;
          }
        }
        return str;
      };
      module.exports = function bind(that) {
        var target = this;
        if (typeof target !== "function" || toStr.apply(target) !== funcType) {
          throw new TypeError(ERROR_MESSAGE + target);
        }
        var args = slicy(arguments, 1);
        var bound;
        var binder = function() {
          if (this instanceof bound) {
            var result = target.apply(this, concatty(args, arguments));
            if (Object(result) === result) {
              return result;
            }
            return this;
          }
          return target.apply(that, concatty(args, arguments));
        };
        var boundLength = max(0, target.length - args.length);
        var boundArgs = [];
        for (var i = 0; i < boundLength; i++) {
          boundArgs[i] = "$" + i;
        }
        bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
        if (target.prototype) {
          var Empty = function Empty() {};
          Empty.prototype = target.prototype;
          bound.prototype = new Empty;
          Empty.prototype = null;
        }
        return bound;
      };
    },
    6743(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var implementation = __webpack_require__(9353);
      module.exports = Function.prototype.bind || implementation;
    },
    453(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var undefined;
      var $Object = __webpack_require__(9612);
      var $Error = __webpack_require__(9383);
      var $EvalError = __webpack_require__(1237);
      var $RangeError = __webpack_require__(9290);
      var $ReferenceError = __webpack_require__(9538);
      var $SyntaxError = __webpack_require__(8068);
      var $TypeError = __webpack_require__(9675);
      var $URIError = __webpack_require__(5345);
      var abs = __webpack_require__(1514);
      var floor = __webpack_require__(8968);
      var max = __webpack_require__(6188);
      var min = __webpack_require__(8002);
      var pow = __webpack_require__(5880);
      var round = __webpack_require__(414);
      var sign = __webpack_require__(3093);
      var $Function = Function;
      var getEvalledConstructor = function(expressionSyntax) {
        try {
          return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")();
        } catch (e) {}
      };
      var $gOPD = __webpack_require__(5795);
      var $defineProperty = __webpack_require__(655);
      var throwTypeError = function() {
        throw new $TypeError;
      };
      var ThrowTypeError = $gOPD ? function() {
        try {
          arguments.callee;
          return throwTypeError;
        } catch (calleeThrows) {
          try {
            return $gOPD(arguments, "callee").get;
          } catch (gOPDthrows) {
            return throwTypeError;
          }
        }
      }() : throwTypeError;
      var hasSymbols = __webpack_require__(4039)();
      var getProto = __webpack_require__(3628);
      var $ObjectGPO = __webpack_require__(1064);
      var $ReflectGPO = __webpack_require__(8648);
      var $apply = __webpack_require__(1002);
      var $call = __webpack_require__(76);
      var needsEval = {};
      var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined : getProto(Uint8Array);
      var INTRINSICS = {
        __proto__: null,
        "%AggregateError%": typeof AggregateError === "undefined" ? undefined : AggregateError,
        "%Array%": Array,
        "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined : ArrayBuffer,
        "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
        "%AsyncFromSyncIteratorPrototype%": undefined,
        "%AsyncFunction%": needsEval,
        "%AsyncGenerator%": needsEval,
        "%AsyncGeneratorFunction%": needsEval,
        "%AsyncIteratorPrototype%": needsEval,
        "%Atomics%": typeof Atomics === "undefined" ? undefined : Atomics,
        "%BigInt%": typeof BigInt === "undefined" ? undefined : BigInt,
        "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined : BigInt64Array,
        "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined : BigUint64Array,
        "%Boolean%": Boolean,
        "%DataView%": typeof DataView === "undefined" ? undefined : DataView,
        "%Date%": Date,
        "%decodeURI%": decodeURI,
        "%decodeURIComponent%": decodeURIComponent,
        "%encodeURI%": encodeURI,
        "%encodeURIComponent%": encodeURIComponent,
        "%Error%": $Error,
        "%eval%": eval,
        "%EvalError%": $EvalError,
        "%Float16Array%": typeof Float16Array === "undefined" ? undefined : Float16Array,
        "%Float32Array%": typeof Float32Array === "undefined" ? undefined : Float32Array,
        "%Float64Array%": typeof Float64Array === "undefined" ? undefined : Float64Array,
        "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined : FinalizationRegistry,
        "%Function%": $Function,
        "%GeneratorFunction%": needsEval,
        "%Int8Array%": typeof Int8Array === "undefined" ? undefined : Int8Array,
        "%Int16Array%": typeof Int16Array === "undefined" ? undefined : Int16Array,
        "%Int32Array%": typeof Int32Array === "undefined" ? undefined : Int32Array,
        "%isFinite%": isFinite,
        "%isNaN%": isNaN,
        "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
        "%JSON%": typeof JSON === "object" ? JSON : undefined,
        "%Map%": typeof Map === "undefined" ? undefined : Map,
        "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined : getProto((new Map)[Symbol.iterator]()),
        "%Math%": Math,
        "%Number%": Number,
        "%Object%": $Object,
        "%Object.getOwnPropertyDescriptor%": $gOPD,
        "%parseFloat%": parseFloat,
        "%parseInt%": parseInt,
        "%Promise%": typeof Promise === "undefined" ? undefined : Promise,
        "%Proxy%": typeof Proxy === "undefined" ? undefined : Proxy,
        "%RangeError%": $RangeError,
        "%ReferenceError%": $ReferenceError,
        "%Reflect%": typeof Reflect === "undefined" ? undefined : Reflect,
        "%RegExp%": RegExp,
        "%Set%": typeof Set === "undefined" ? undefined : Set,
        "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined : getProto((new Set)[Symbol.iterator]()),
        "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined : SharedArrayBuffer,
        "%String%": String,
        "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined,
        "%Symbol%": hasSymbols ? Symbol : undefined,
        "%SyntaxError%": $SyntaxError,
        "%ThrowTypeError%": ThrowTypeError,
        "%TypedArray%": TypedArray,
        "%TypeError%": $TypeError,
        "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined : Uint8Array,
        "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined : Uint8ClampedArray,
        "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined : Uint16Array,
        "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined : Uint32Array,
        "%URIError%": $URIError,
        "%WeakMap%": typeof WeakMap === "undefined" ? undefined : WeakMap,
        "%WeakRef%": typeof WeakRef === "undefined" ? undefined : WeakRef,
        "%WeakSet%": typeof WeakSet === "undefined" ? undefined : WeakSet,
        "%Function.prototype.call%": $call,
        "%Function.prototype.apply%": $apply,
        "%Object.defineProperty%": $defineProperty,
        "%Object.getPrototypeOf%": $ObjectGPO,
        "%Math.abs%": abs,
        "%Math.floor%": floor,
        "%Math.max%": max,
        "%Math.min%": min,
        "%Math.pow%": pow,
        "%Math.round%": round,
        "%Math.sign%": sign,
        "%Reflect.getPrototypeOf%": $ReflectGPO
      };
      if (getProto) {
        try {
          null.error;
        } catch (e) {
          var errorProto = getProto(getProto(e));
          INTRINSICS["%Error.prototype%"] = errorProto;
        }
      }
      var doEval = function doEval(name) {
        var value;
        if (name === "%AsyncFunction%") {
          value = getEvalledConstructor("async function () {}");
        } else if (name === "%GeneratorFunction%") {
          value = getEvalledConstructor("function* () {}");
        } else if (name === "%AsyncGeneratorFunction%") {
          value = getEvalledConstructor("async function* () {}");
        } else if (name === "%AsyncGenerator%") {
          var fn = doEval("%AsyncGeneratorFunction%");
          if (fn) {
            value = fn.prototype;
          }
        } else if (name === "%AsyncIteratorPrototype%") {
          var gen = doEval("%AsyncGenerator%");
          if (gen && getProto) {
            value = getProto(gen.prototype);
          }
        }
        INTRINSICS[name] = value;
        return value;
      };
      var LEGACY_ALIASES = {
        __proto__: null,
        "%ArrayBufferPrototype%": [ "ArrayBuffer", "prototype" ],
        "%ArrayPrototype%": [ "Array", "prototype" ],
        "%ArrayProto_entries%": [ "Array", "prototype", "entries" ],
        "%ArrayProto_forEach%": [ "Array", "prototype", "forEach" ],
        "%ArrayProto_keys%": [ "Array", "prototype", "keys" ],
        "%ArrayProto_values%": [ "Array", "prototype", "values" ],
        "%AsyncFunctionPrototype%": [ "AsyncFunction", "prototype" ],
        "%AsyncGenerator%": [ "AsyncGeneratorFunction", "prototype" ],
        "%AsyncGeneratorPrototype%": [ "AsyncGeneratorFunction", "prototype", "prototype" ],
        "%BooleanPrototype%": [ "Boolean", "prototype" ],
        "%DataViewPrototype%": [ "DataView", "prototype" ],
        "%DatePrototype%": [ "Date", "prototype" ],
        "%ErrorPrototype%": [ "Error", "prototype" ],
        "%EvalErrorPrototype%": [ "EvalError", "prototype" ],
        "%Float32ArrayPrototype%": [ "Float32Array", "prototype" ],
        "%Float64ArrayPrototype%": [ "Float64Array", "prototype" ],
        "%FunctionPrototype%": [ "Function", "prototype" ],
        "%Generator%": [ "GeneratorFunction", "prototype" ],
        "%GeneratorPrototype%": [ "GeneratorFunction", "prototype", "prototype" ],
        "%Int8ArrayPrototype%": [ "Int8Array", "prototype" ],
        "%Int16ArrayPrototype%": [ "Int16Array", "prototype" ],
        "%Int32ArrayPrototype%": [ "Int32Array", "prototype" ],
        "%JSONParse%": [ "JSON", "parse" ],
        "%JSONStringify%": [ "JSON", "stringify" ],
        "%MapPrototype%": [ "Map", "prototype" ],
        "%NumberPrototype%": [ "Number", "prototype" ],
        "%ObjectPrototype%": [ "Object", "prototype" ],
        "%ObjProto_toString%": [ "Object", "prototype", "toString" ],
        "%ObjProto_valueOf%": [ "Object", "prototype", "valueOf" ],
        "%PromisePrototype%": [ "Promise", "prototype" ],
        "%PromiseProto_then%": [ "Promise", "prototype", "then" ],
        "%Promise_all%": [ "Promise", "all" ],
        "%Promise_reject%": [ "Promise", "reject" ],
        "%Promise_resolve%": [ "Promise", "resolve" ],
        "%RangeErrorPrototype%": [ "RangeError", "prototype" ],
        "%ReferenceErrorPrototype%": [ "ReferenceError", "prototype" ],
        "%RegExpPrototype%": [ "RegExp", "prototype" ],
        "%SetPrototype%": [ "Set", "prototype" ],
        "%SharedArrayBufferPrototype%": [ "SharedArrayBuffer", "prototype" ],
        "%StringPrototype%": [ "String", "prototype" ],
        "%SymbolPrototype%": [ "Symbol", "prototype" ],
        "%SyntaxErrorPrototype%": [ "SyntaxError", "prototype" ],
        "%TypedArrayPrototype%": [ "TypedArray", "prototype" ],
        "%TypeErrorPrototype%": [ "TypeError", "prototype" ],
        "%Uint8ArrayPrototype%": [ "Uint8Array", "prototype" ],
        "%Uint8ClampedArrayPrototype%": [ "Uint8ClampedArray", "prototype" ],
        "%Uint16ArrayPrototype%": [ "Uint16Array", "prototype" ],
        "%Uint32ArrayPrototype%": [ "Uint32Array", "prototype" ],
        "%URIErrorPrototype%": [ "URIError", "prototype" ],
        "%WeakMapPrototype%": [ "WeakMap", "prototype" ],
        "%WeakSetPrototype%": [ "WeakSet", "prototype" ]
      };
      var bind = __webpack_require__(6743);
      var hasOwn = __webpack_require__(9957);
      var $concat = bind.call($call, Array.prototype.concat);
      var $spliceApply = bind.call($apply, Array.prototype.splice);
      var $replace = bind.call($call, String.prototype.replace);
      var $strSlice = bind.call($call, String.prototype.slice);
      var $exec = bind.call($call, RegExp.prototype.exec);
      var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
      var reEscapeChar = /\\(\\)?/g;
      var stringToPath = function stringToPath(string) {
        var first = $strSlice(string, 0, 1);
        var last = $strSlice(string, -1);
        if (first === "%" && last !== "%") {
          throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");
        } else if (last === "%" && first !== "%") {
          throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");
        }
        var result = [];
        $replace(string, rePropName, (function(match, number, quote, subString) {
          result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match;
        }));
        return result;
      };
      var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
        var intrinsicName = name;
        var alias;
        if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
          alias = LEGACY_ALIASES[intrinsicName];
          intrinsicName = "%" + alias[0] + "%";
        }
        if (hasOwn(INTRINSICS, intrinsicName)) {
          var value = INTRINSICS[intrinsicName];
          if (value === needsEval) {
            value = doEval(intrinsicName);
          }
          if (typeof value === "undefined" && !allowMissing) {
            throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!");
          }
          return {
            alias,
            name: intrinsicName,
            value
          };
        }
        throw new $SyntaxError("intrinsic " + name + " does not exist!");
      };
      module.exports = function GetIntrinsic(name, allowMissing) {
        if (typeof name !== "string" || name.length === 0) {
          throw new $TypeError("intrinsic name must be a non-empty string");
        }
        if (arguments.length > 1 && typeof allowMissing !== "boolean") {
          throw new $TypeError('"allowMissing" argument must be a boolean');
        }
        if ($exec(/^%?[^%]*%?$/, name) === null) {
          throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
        }
        var parts = stringToPath(name);
        var intrinsicBaseName = parts.length > 0 ? parts[0] : "";
        var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing);
        var intrinsicRealName = intrinsic.name;
        var value = intrinsic.value;
        var skipFurtherCaching = false;
        var alias = intrinsic.alias;
        if (alias) {
          intrinsicBaseName = alias[0];
          $spliceApply(parts, $concat([ 0, 1 ], alias));
        }
        for (var i = 1, isOwn = true; i < parts.length; i += 1) {
          var part = parts[i];
          var first = $strSlice(part, 0, 1);
          var last = $strSlice(part, -1);
          if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) {
            throw new $SyntaxError("property names with quotes must have matching quotes");
          }
          if (part === "constructor" || !isOwn) {
            skipFurtherCaching = true;
          }
          intrinsicBaseName += "." + part;
          intrinsicRealName = "%" + intrinsicBaseName + "%";
          if (hasOwn(INTRINSICS, intrinsicRealName)) {
            value = INTRINSICS[intrinsicRealName];
          } else if (value != null) {
            if (!(part in value)) {
              if (!allowMissing) {
                throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available.");
              }
              return void undefined;
            }
            if ($gOPD && i + 1 >= parts.length) {
              var desc = $gOPD(value, part);
              isOwn = !!desc;
              if (isOwn && "get" in desc && !("originalValue" in desc.get)) {
                value = desc.get;
              } else {
                value = value[part];
              }
            } else {
              isOwn = hasOwn(value, part);
              value = value[part];
            }
            if (isOwn && !skipFurtherCaching) {
              INTRINSICS[intrinsicRealName] = value;
            }
          }
        }
        return value;
      };
    },
    1064(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $Object = __webpack_require__(9612);
      module.exports = $Object.getPrototypeOf || null;
    },
    8648(module) {
      "use strict";
      module.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null;
    },
    3628(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var reflectGetProto = __webpack_require__(8648);
      var originalGetProto = __webpack_require__(1064);
      var getDunderProto = __webpack_require__(7176);
      module.exports = reflectGetProto ? function getProto(O) {
        return reflectGetProto(O);
      } : originalGetProto ? function getProto(O) {
        if (!O || typeof O !== "object" && typeof O !== "function") {
          throw new TypeError("getProto: not an object");
        }
        return originalGetProto(O);
      } : getDunderProto ? function getProto(O) {
        return getDunderProto(O);
      } : null;
    },
    6549(module) {
      "use strict";
      module.exports = Object.getOwnPropertyDescriptor;
    },
    5795(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $gOPD = __webpack_require__(6549);
      if ($gOPD) {
        try {
          $gOPD([], "length");
        } catch (e) {
          $gOPD = null;
        }
      }
      module.exports = $gOPD;
    },
    592(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $defineProperty = __webpack_require__(655);
      var hasPropertyDescriptors = function hasPropertyDescriptors() {
        return !!$defineProperty;
      };
      hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
        if (!$defineProperty) {
          return null;
        }
        try {
          return $defineProperty([], "length", {
            value: 1
          }).length !== 1;
        } catch (e) {
          return true;
        }
      };
      module.exports = hasPropertyDescriptors;
    },
    4039(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var origSymbol = typeof Symbol !== "undefined" && Symbol;
      var hasSymbolSham = __webpack_require__(1333);
      module.exports = function hasNativeSymbols() {
        if (typeof origSymbol !== "function") {
          return false;
        }
        if (typeof Symbol !== "function") {
          return false;
        }
        if (typeof origSymbol("foo") !== "symbol") {
          return false;
        }
        if (typeof Symbol("bar") !== "symbol") {
          return false;
        }
        return hasSymbolSham();
      };
    },
    1333(module) {
      "use strict";
      module.exports = function hasSymbols() {
        if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") {
          return false;
        }
        if (typeof Symbol.iterator === "symbol") {
          return true;
        }
        var obj = {};
        var sym = Symbol("test");
        var symObj = Object(sym);
        if (typeof sym === "string") {
          return false;
        }
        if (Object.prototype.toString.call(sym) !== "[object Symbol]") {
          return false;
        }
        if (Object.prototype.toString.call(symObj) !== "[object Symbol]") {
          return false;
        }
        var symVal = 42;
        obj[sym] = symVal;
        for (var _ in obj) {
          return false;
        }
        if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) {
          return false;
        }
        if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) {
          return false;
        }
        var syms = Object.getOwnPropertySymbols(obj);
        if (syms.length !== 1 || syms[0] !== sym) {
          return false;
        }
        if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {
          return false;
        }
        if (typeof Object.getOwnPropertyDescriptor === "function") {
          var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
          if (descriptor.value !== symVal || descriptor.enumerable !== true) {
            return false;
          }
        }
        return true;
      };
    },
    9092(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var hasSymbols = __webpack_require__(1333);
      module.exports = function hasToStringTagShams() {
        return hasSymbols() && !!Symbol.toStringTag;
      };
    },
    4729(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var Transform = __webpack_require__(8310).Transform;
      var inherits = __webpack_require__(6698);
      function HashBase(blockSize) {
        Transform.call(this);
        this._block = Buffer.allocUnsafe(blockSize);
        this._blockSize = blockSize;
        this._blockOffset = 0;
        this._length = [ 0, 0, 0, 0 ];
        this._finalized = false;
      }
      inherits(HashBase, Transform);
      HashBase.prototype._transform = function(chunk, encoding, callback) {
        var error = null;
        try {
          this.update(chunk, encoding);
        } catch (err) {
          error = err;
        }
        callback(error);
      };
      HashBase.prototype._flush = function(callback) {
        var error = null;
        try {
          this.push(this.digest());
        } catch (err) {
          error = err;
        }
        callback(error);
      };
      var useUint8Array = typeof Uint8Array !== "undefined";
      var useArrayBuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && ArrayBuffer.isView && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);
      function toBuffer(data, encoding) {
        if (data instanceof Buffer) return data;
        if (typeof data === "string") return Buffer.from(data, encoding);
        if (useArrayBuffer && ArrayBuffer.isView(data)) {
          if (data.byteLength === 0) return Buffer.alloc(0);
          var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
          if (res.byteLength === data.byteLength) return res;
        }
        if (useUint8Array && data instanceof Uint8Array) return Buffer.from(data);
        if (Buffer.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === "function" && data.constructor.isBuffer(data)) {
          return Buffer.from(data);
        }
        throw new TypeError('The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');
      }
      HashBase.prototype.update = function(data, encoding) {
        if (this._finalized) throw new Error("Digest already called");
        data = toBuffer(data, encoding);
        var block = this._block;
        var offset = 0;
        while (this._blockOffset + data.length - offset >= this._blockSize) {
          for (var i = this._blockOffset; i < this._blockSize; ) block[i++] = data[offset++];
          this._update();
          this._blockOffset = 0;
        }
        while (offset < data.length) block[this._blockOffset++] = data[offset++];
        for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
          this._length[j] += carry;
          carry = this._length[j] / 4294967296 | 0;
          if (carry > 0) this._length[j] -= 4294967296 * carry;
        }
        return this;
      };
      HashBase.prototype._update = function() {
        throw new Error("_update is not implemented");
      };
      HashBase.prototype.digest = function(encoding) {
        if (this._finalized) throw new Error("Digest already called");
        this._finalized = true;
        var digest = this._digest();
        if (encoding !== undefined) digest = digest.toString(encoding);
        this._block.fill(0);
        this._blockOffset = 0;
        for (var i = 0; i < 4; ++i) this._length[i] = 0;
        return digest;
      };
      HashBase.prototype._digest = function() {
        throw new Error("_digest is not implemented");
      };
      module.exports = HashBase;
    },
    7952(__unused_webpack_module, exports, __webpack_require__) {
      var hash = exports;
      hash.utils = __webpack_require__(7426);
      hash.common = __webpack_require__(6166);
      hash.sha = __webpack_require__(8610);
      hash.ripemd = __webpack_require__(6784);
      hash.hmac = __webpack_require__(8948);
      hash.sha1 = hash.sha.sha1;
      hash.sha256 = hash.sha.sha256;
      hash.sha224 = hash.sha.sha224;
      hash.sha384 = hash.sha.sha384;
      hash.sha512 = hash.sha.sha512;
      hash.ripemd160 = hash.ripemd.ripemd160;
    },
    6166(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var assert = __webpack_require__(3349);
      function BlockHash() {
        this.pending = null;
        this.pendingTotal = 0;
        this.blockSize = this.constructor.blockSize;
        this.outSize = this.constructor.outSize;
        this.hmacStrength = this.constructor.hmacStrength;
        this.padLength = this.constructor.padLength / 8;
        this.endian = "big";
        this._delta8 = this.blockSize / 8;
        this._delta32 = this.blockSize / 32;
      }
      exports.BlockHash = BlockHash;
      BlockHash.prototype.update = function update(msg, enc) {
        msg = utils.toArray(msg, enc);
        if (!this.pending) this.pending = msg; else this.pending = this.pending.concat(msg);
        this.pendingTotal += msg.length;
        if (this.pending.length >= this._delta8) {
          msg = this.pending;
          var r = msg.length % this._delta8;
          this.pending = msg.slice(msg.length - r, msg.length);
          if (this.pending.length === 0) this.pending = null;
          msg = utils.join32(msg, 0, msg.length - r, this.endian);
          for (var i = 0; i < msg.length; i += this._delta32) this._update(msg, i, i + this._delta32);
        }
        return this;
      };
      BlockHash.prototype.digest = function digest(enc) {
        this.update(this._pad());
        assert(this.pending === null);
        return this._digest(enc);
      };
      BlockHash.prototype._pad = function pad() {
        var len = this.pendingTotal;
        var bytes = this._delta8;
        var k = bytes - (len + this.padLength) % bytes;
        var res = new Array(k + this.padLength);
        res[0] = 128;
        for (var i = 1; i < k; i++) res[i] = 0;
        len <<= 3;
        if (this.endian === "big") {
          for (var t = 8; t < this.padLength; t++) res[i++] = 0;
          res[i++] = 0;
          res[i++] = 0;
          res[i++] = 0;
          res[i++] = 0;
          res[i++] = len >>> 24 & 255;
          res[i++] = len >>> 16 & 255;
          res[i++] = len >>> 8 & 255;
          res[i++] = len & 255;
        } else {
          res[i++] = len & 255;
          res[i++] = len >>> 8 & 255;
          res[i++] = len >>> 16 & 255;
          res[i++] = len >>> 24 & 255;
          res[i++] = 0;
          res[i++] = 0;
          res[i++] = 0;
          res[i++] = 0;
          for (t = 8; t < this.padLength; t++) res[i++] = 0;
        }
        return res;
      };
    },
    8948(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var assert = __webpack_require__(3349);
      function Hmac(hash, key, enc) {
        if (!(this instanceof Hmac)) return new Hmac(hash, key, enc);
        this.Hash = hash;
        this.blockSize = hash.blockSize / 8;
        this.outSize = hash.outSize / 8;
        this.inner = null;
        this.outer = null;
        this._init(utils.toArray(key, enc));
      }
      module.exports = Hmac;
      Hmac.prototype._init = function init(key) {
        if (key.length > this.blockSize) key = (new this.Hash).update(key).digest();
        assert(key.length <= this.blockSize);
        for (var i = key.length; i < this.blockSize; i++) key.push(0);
        for (i = 0; i < key.length; i++) key[i] ^= 54;
        this.inner = (new this.Hash).update(key);
        for (i = 0; i < key.length; i++) key[i] ^= 106;
        this.outer = (new this.Hash).update(key);
      };
      Hmac.prototype.update = function update(msg, enc) {
        this.inner.update(msg, enc);
        return this;
      };
      Hmac.prototype.digest = function digest(enc) {
        this.outer.update(this.inner.digest());
        return this.outer.digest(enc);
      };
    },
    6784(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var common = __webpack_require__(6166);
      var rotl32 = utils.rotl32;
      var sum32 = utils.sum32;
      var sum32_3 = utils.sum32_3;
      var sum32_4 = utils.sum32_4;
      var BlockHash = common.BlockHash;
      function RIPEMD160() {
        if (!(this instanceof RIPEMD160)) return new RIPEMD160;
        BlockHash.call(this);
        this.h = [ 1732584193, 4023233417, 2562383102, 271733878, 3285377520 ];
        this.endian = "little";
      }
      utils.inherits(RIPEMD160, BlockHash);
      exports.ripemd160 = RIPEMD160;
      RIPEMD160.blockSize = 512;
      RIPEMD160.outSize = 160;
      RIPEMD160.hmacStrength = 192;
      RIPEMD160.padLength = 64;
      RIPEMD160.prototype._update = function update(msg, start) {
        var A = this.h[0];
        var B = this.h[1];
        var C = this.h[2];
        var D = this.h[3];
        var E = this.h[4];
        var Ah = A;
        var Bh = B;
        var Ch = C;
        var Dh = D;
        var Eh = E;
        for (var j = 0; j < 80; j++) {
          var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);
          A = E;
          E = D;
          D = rotl32(C, 10);
          C = B;
          B = T;
          T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);
          Ah = Eh;
          Eh = Dh;
          Dh = rotl32(Ch, 10);
          Ch = Bh;
          Bh = T;
        }
        T = sum32_3(this.h[1], C, Dh);
        this.h[1] = sum32_3(this.h[2], D, Eh);
        this.h[2] = sum32_3(this.h[3], E, Ah);
        this.h[3] = sum32_3(this.h[4], A, Bh);
        this.h[4] = sum32_3(this.h[0], B, Ch);
        this.h[0] = T;
      };
      RIPEMD160.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h, "little"); else return utils.split32(this.h, "little");
      };
      function f(j, x, y, z) {
        if (j <= 15) return x ^ y ^ z; else if (j <= 31) return x & y | ~x & z; else if (j <= 47) return (x | ~y) ^ z; else if (j <= 63) return x & z | y & ~z; else return x ^ (y | ~z);
      }
      function K(j) {
        if (j <= 15) return 0; else if (j <= 31) return 1518500249; else if (j <= 47) return 1859775393; else if (j <= 63) return 2400959708; else return 2840853838;
      }
      function Kh(j) {
        if (j <= 15) return 1352829926; else if (j <= 31) return 1548603684; else if (j <= 47) return 1836072691; else if (j <= 63) return 2053994217; else return 0;
      }
      var r = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 ];
      var rh = [ 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 ];
      var s = [ 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ];
      var sh = [ 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ];
    },
    8610(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      exports.sha1 = __webpack_require__(3917);
      exports.sha224 = __webpack_require__(7714);
      exports.sha256 = __webpack_require__(2287);
      exports.sha384 = __webpack_require__(1911);
      exports.sha512 = __webpack_require__(7766);
    },
    3917(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var common = __webpack_require__(6166);
      var shaCommon = __webpack_require__(6225);
      var rotl32 = utils.rotl32;
      var sum32 = utils.sum32;
      var sum32_5 = utils.sum32_5;
      var ft_1 = shaCommon.ft_1;
      var BlockHash = common.BlockHash;
      var sha1_K = [ 1518500249, 1859775393, 2400959708, 3395469782 ];
      function SHA1() {
        if (!(this instanceof SHA1)) return new SHA1;
        BlockHash.call(this);
        this.h = [ 1732584193, 4023233417, 2562383102, 271733878, 3285377520 ];
        this.W = new Array(80);
      }
      utils.inherits(SHA1, BlockHash);
      module.exports = SHA1;
      SHA1.blockSize = 512;
      SHA1.outSize = 160;
      SHA1.hmacStrength = 80;
      SHA1.padLength = 64;
      SHA1.prototype._update = function _update(msg, start) {
        var W = this.W;
        for (var i = 0; i < 16; i++) W[i] = msg[start + i];
        for (;i < W.length; i++) W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
        var a = this.h[0];
        var b = this.h[1];
        var c = this.h[2];
        var d = this.h[3];
        var e = this.h[4];
        for (i = 0; i < W.length; i++) {
          var s = ~~(i / 20);
          var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
          e = d;
          d = c;
          c = rotl32(b, 30);
          b = a;
          a = t;
        }
        this.h[0] = sum32(this.h[0], a);
        this.h[1] = sum32(this.h[1], b);
        this.h[2] = sum32(this.h[2], c);
        this.h[3] = sum32(this.h[3], d);
        this.h[4] = sum32(this.h[4], e);
      };
      SHA1.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h, "big"); else return utils.split32(this.h, "big");
      };
    },
    7714(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var SHA256 = __webpack_require__(2287);
      function SHA224() {
        if (!(this instanceof SHA224)) return new SHA224;
        SHA256.call(this);
        this.h = [ 3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428 ];
      }
      utils.inherits(SHA224, SHA256);
      module.exports = SHA224;
      SHA224.blockSize = 512;
      SHA224.outSize = 224;
      SHA224.hmacStrength = 192;
      SHA224.padLength = 64;
      SHA224.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h.slice(0, 7), "big"); else return utils.split32(this.h.slice(0, 7), "big");
      };
    },
    2287(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var common = __webpack_require__(6166);
      var shaCommon = __webpack_require__(6225);
      var assert = __webpack_require__(3349);
      var sum32 = utils.sum32;
      var sum32_4 = utils.sum32_4;
      var sum32_5 = utils.sum32_5;
      var ch32 = shaCommon.ch32;
      var maj32 = shaCommon.maj32;
      var s0_256 = shaCommon.s0_256;
      var s1_256 = shaCommon.s1_256;
      var g0_256 = shaCommon.g0_256;
      var g1_256 = shaCommon.g1_256;
      var BlockHash = common.BlockHash;
      var sha256_K = [ 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 ];
      function SHA256() {
        if (!(this instanceof SHA256)) return new SHA256;
        BlockHash.call(this);
        this.h = [ 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225 ];
        this.k = sha256_K;
        this.W = new Array(64);
      }
      utils.inherits(SHA256, BlockHash);
      module.exports = SHA256;
      SHA256.blockSize = 512;
      SHA256.outSize = 256;
      SHA256.hmacStrength = 192;
      SHA256.padLength = 64;
      SHA256.prototype._update = function _update(msg, start) {
        var W = this.W;
        for (var i = 0; i < 16; i++) W[i] = msg[start + i];
        for (;i < W.length; i++) W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
        var a = this.h[0];
        var b = this.h[1];
        var c = this.h[2];
        var d = this.h[3];
        var e = this.h[4];
        var f = this.h[5];
        var g = this.h[6];
        var h = this.h[7];
        assert(this.k.length === W.length);
        for (i = 0; i < W.length; i++) {
          var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
          var T2 = sum32(s0_256(a), maj32(a, b, c));
          h = g;
          g = f;
          f = e;
          e = sum32(d, T1);
          d = c;
          c = b;
          b = a;
          a = sum32(T1, T2);
        }
        this.h[0] = sum32(this.h[0], a);
        this.h[1] = sum32(this.h[1], b);
        this.h[2] = sum32(this.h[2], c);
        this.h[3] = sum32(this.h[3], d);
        this.h[4] = sum32(this.h[4], e);
        this.h[5] = sum32(this.h[5], f);
        this.h[6] = sum32(this.h[6], g);
        this.h[7] = sum32(this.h[7], h);
      };
      SHA256.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h, "big"); else return utils.split32(this.h, "big");
      };
    },
    1911(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var SHA512 = __webpack_require__(7766);
      function SHA384() {
        if (!(this instanceof SHA384)) return new SHA384;
        SHA512.call(this);
        this.h = [ 3418070365, 3238371032, 1654270250, 914150663, 2438529370, 812702999, 355462360, 4144912697, 1731405415, 4290775857, 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, 3204075428 ];
      }
      utils.inherits(SHA384, SHA512);
      module.exports = SHA384;
      SHA384.blockSize = 1024;
      SHA384.outSize = 384;
      SHA384.hmacStrength = 192;
      SHA384.padLength = 128;
      SHA384.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h.slice(0, 12), "big"); else return utils.split32(this.h.slice(0, 12), "big");
      };
    },
    7766(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var common = __webpack_require__(6166);
      var assert = __webpack_require__(3349);
      var rotr64_hi = utils.rotr64_hi;
      var rotr64_lo = utils.rotr64_lo;
      var shr64_hi = utils.shr64_hi;
      var shr64_lo = utils.shr64_lo;
      var sum64 = utils.sum64;
      var sum64_hi = utils.sum64_hi;
      var sum64_lo = utils.sum64_lo;
      var sum64_4_hi = utils.sum64_4_hi;
      var sum64_4_lo = utils.sum64_4_lo;
      var sum64_5_hi = utils.sum64_5_hi;
      var sum64_5_lo = utils.sum64_5_lo;
      var BlockHash = common.BlockHash;
      var sha512_K = [ 1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591 ];
      function SHA512() {
        if (!(this instanceof SHA512)) return new SHA512;
        BlockHash.call(this);
        this.h = [ 1779033703, 4089235720, 3144134277, 2227873595, 1013904242, 4271175723, 2773480762, 1595750129, 1359893119, 2917565137, 2600822924, 725511199, 528734635, 4215389547, 1541459225, 327033209 ];
        this.k = sha512_K;
        this.W = new Array(160);
      }
      utils.inherits(SHA512, BlockHash);
      module.exports = SHA512;
      SHA512.blockSize = 1024;
      SHA512.outSize = 512;
      SHA512.hmacStrength = 192;
      SHA512.padLength = 128;
      SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
        var W = this.W;
        for (var i = 0; i < 32; i++) W[i] = msg[start + i];
        for (;i < W.length; i += 2) {
          var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);
          var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
          var c1_hi = W[i - 14];
          var c1_lo = W[i - 13];
          var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);
          var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
          var c3_hi = W[i - 32];
          var c3_lo = W[i - 31];
          W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);
          W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);
        }
      };
      SHA512.prototype._update = function _update(msg, start) {
        this._prepareBlock(msg, start);
        var W = this.W;
        var ah = this.h[0];
        var al = this.h[1];
        var bh = this.h[2];
        var bl = this.h[3];
        var ch = this.h[4];
        var cl = this.h[5];
        var dh = this.h[6];
        var dl = this.h[7];
        var eh = this.h[8];
        var el = this.h[9];
        var fh = this.h[10];
        var fl = this.h[11];
        var gh = this.h[12];
        var gl = this.h[13];
        var hh = this.h[14];
        var hl = this.h[15];
        assert(this.k.length === W.length);
        for (var i = 0; i < W.length; i += 2) {
          var c0_hi = hh;
          var c0_lo = hl;
          var c1_hi = s1_512_hi(eh, el);
          var c1_lo = s1_512_lo(eh, el);
          var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
          var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
          var c3_hi = this.k[i];
          var c3_lo = this.k[i + 1];
          var c4_hi = W[i];
          var c4_lo = W[i + 1];
          var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);
          var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);
          c0_hi = s0_512_hi(ah, al);
          c0_lo = s0_512_lo(ah, al);
          c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
          c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
          var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
          var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
          hh = gh;
          hl = gl;
          gh = fh;
          gl = fl;
          fh = eh;
          fl = el;
          eh = sum64_hi(dh, dl, T1_hi, T1_lo);
          el = sum64_lo(dl, dl, T1_hi, T1_lo);
          dh = ch;
          dl = cl;
          ch = bh;
          cl = bl;
          bh = ah;
          bl = al;
          ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
          al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
        }
        sum64(this.h, 0, ah, al);
        sum64(this.h, 2, bh, bl);
        sum64(this.h, 4, ch, cl);
        sum64(this.h, 6, dh, dl);
        sum64(this.h, 8, eh, el);
        sum64(this.h, 10, fh, fl);
        sum64(this.h, 12, gh, gl);
        sum64(this.h, 14, hh, hl);
      };
      SHA512.prototype._digest = function digest(enc) {
        if (enc === "hex") return utils.toHex32(this.h, "big"); else return utils.split32(this.h, "big");
      };
      function ch64_hi(xh, xl, yh, yl, zh) {
        var r = xh & yh ^ ~xh & zh;
        if (r < 0) r += 4294967296;
        return r;
      }
      function ch64_lo(xh, xl, yh, yl, zh, zl) {
        var r = xl & yl ^ ~xl & zl;
        if (r < 0) r += 4294967296;
        return r;
      }
      function maj64_hi(xh, xl, yh, yl, zh) {
        var r = xh & yh ^ xh & zh ^ yh & zh;
        if (r < 0) r += 4294967296;
        return r;
      }
      function maj64_lo(xh, xl, yh, yl, zh, zl) {
        var r = xl & yl ^ xl & zl ^ yl & zl;
        if (r < 0) r += 4294967296;
        return r;
      }
      function s0_512_hi(xh, xl) {
        var c0_hi = rotr64_hi(xh, xl, 28);
        var c1_hi = rotr64_hi(xl, xh, 2);
        var c2_hi = rotr64_hi(xl, xh, 7);
        var r = c0_hi ^ c1_hi ^ c2_hi;
        if (r < 0) r += 4294967296;
        return r;
      }
      function s0_512_lo(xh, xl) {
        var c0_lo = rotr64_lo(xh, xl, 28);
        var c1_lo = rotr64_lo(xl, xh, 2);
        var c2_lo = rotr64_lo(xl, xh, 7);
        var r = c0_lo ^ c1_lo ^ c2_lo;
        if (r < 0) r += 4294967296;
        return r;
      }
      function s1_512_hi(xh, xl) {
        var c0_hi = rotr64_hi(xh, xl, 14);
        var c1_hi = rotr64_hi(xh, xl, 18);
        var c2_hi = rotr64_hi(xl, xh, 9);
        var r = c0_hi ^ c1_hi ^ c2_hi;
        if (r < 0) r += 4294967296;
        return r;
      }
      function s1_512_lo(xh, xl) {
        var c0_lo = rotr64_lo(xh, xl, 14);
        var c1_lo = rotr64_lo(xh, xl, 18);
        var c2_lo = rotr64_lo(xl, xh, 9);
        var r = c0_lo ^ c1_lo ^ c2_lo;
        if (r < 0) r += 4294967296;
        return r;
      }
      function g0_512_hi(xh, xl) {
        var c0_hi = rotr64_hi(xh, xl, 1);
        var c1_hi = rotr64_hi(xh, xl, 8);
        var c2_hi = shr64_hi(xh, xl, 7);
        var r = c0_hi ^ c1_hi ^ c2_hi;
        if (r < 0) r += 4294967296;
        return r;
      }
      function g0_512_lo(xh, xl) {
        var c0_lo = rotr64_lo(xh, xl, 1);
        var c1_lo = rotr64_lo(xh, xl, 8);
        var c2_lo = shr64_lo(xh, xl, 7);
        var r = c0_lo ^ c1_lo ^ c2_lo;
        if (r < 0) r += 4294967296;
        return r;
      }
      function g1_512_hi(xh, xl) {
        var c0_hi = rotr64_hi(xh, xl, 19);
        var c1_hi = rotr64_hi(xl, xh, 29);
        var c2_hi = shr64_hi(xh, xl, 6);
        var r = c0_hi ^ c1_hi ^ c2_hi;
        if (r < 0) r += 4294967296;
        return r;
      }
      function g1_512_lo(xh, xl) {
        var c0_lo = rotr64_lo(xh, xl, 19);
        var c1_lo = rotr64_lo(xl, xh, 29);
        var c2_lo = shr64_lo(xh, xl, 6);
        var r = c0_lo ^ c1_lo ^ c2_lo;
        if (r < 0) r += 4294967296;
        return r;
      }
    },
    6225(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var utils = __webpack_require__(7426);
      var rotr32 = utils.rotr32;
      function ft_1(s, x, y, z) {
        if (s === 0) return ch32(x, y, z);
        if (s === 1 || s === 3) return p32(x, y, z);
        if (s === 2) return maj32(x, y, z);
      }
      exports.ft_1 = ft_1;
      function ch32(x, y, z) {
        return x & y ^ ~x & z;
      }
      exports.ch32 = ch32;
      function maj32(x, y, z) {
        return x & y ^ x & z ^ y & z;
      }
      exports.maj32 = maj32;
      function p32(x, y, z) {
        return x ^ y ^ z;
      }
      exports.p32 = p32;
      function s0_256(x) {
        return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
      }
      exports.s0_256 = s0_256;
      function s1_256(x) {
        return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
      }
      exports.s1_256 = s1_256;
      function g0_256(x) {
        return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;
      }
      exports.g0_256 = g0_256;
      function g1_256(x) {
        return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;
      }
      exports.g1_256 = g1_256;
    },
    7426(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var assert = __webpack_require__(3349);
      var inherits = __webpack_require__(6698);
      exports.inherits = inherits;
      function isSurrogatePair(msg, i) {
        if ((msg.charCodeAt(i) & 64512) !== 55296) {
          return false;
        }
        if (i < 0 || i + 1 >= msg.length) {
          return false;
        }
        return (msg.charCodeAt(i + 1) & 64512) === 56320;
      }
      function toArray(msg, enc) {
        if (Array.isArray(msg)) return msg.slice();
        if (!msg) return [];
        var res = [];
        if (typeof msg === "string") {
          if (!enc) {
            var p = 0;
            for (var i = 0; i < msg.length; i++) {
              var c = msg.charCodeAt(i);
              if (c < 128) {
                res[p++] = c;
              } else if (c < 2048) {
                res[p++] = c >> 6 | 192;
                res[p++] = c & 63 | 128;
              } else if (isSurrogatePair(msg, i)) {
                c = 65536 + ((c & 1023) << 10) + (msg.charCodeAt(++i) & 1023);
                res[p++] = c >> 18 | 240;
                res[p++] = c >> 12 & 63 | 128;
                res[p++] = c >> 6 & 63 | 128;
                res[p++] = c & 63 | 128;
              } else {
                res[p++] = c >> 12 | 224;
                res[p++] = c >> 6 & 63 | 128;
                res[p++] = c & 63 | 128;
              }
            }
          } else if (enc === "hex") {
            msg = msg.replace(/[^a-z0-9]+/gi, "");
            if (msg.length % 2 !== 0) msg = "0" + msg;
            for (i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));
          }
        } else {
          for (i = 0; i < msg.length; i++) res[i] = msg[i] | 0;
        }
        return res;
      }
      exports.toArray = toArray;
      function toHex(msg) {
        var res = "";
        for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));
        return res;
      }
      exports.toHex = toHex;
      function htonl(w) {
        var res = w >>> 24 | w >>> 8 & 65280 | w << 8 & 16711680 | (w & 255) << 24;
        return res >>> 0;
      }
      exports.htonl = htonl;
      function toHex32(msg, endian) {
        var res = "";
        for (var i = 0; i < msg.length; i++) {
          var w = msg[i];
          if (endian === "little") w = htonl(w);
          res += zero8(w.toString(16));
        }
        return res;
      }
      exports.toHex32 = toHex32;
      function zero2(word) {
        if (word.length === 1) return "0" + word; else return word;
      }
      exports.zero2 = zero2;
      function zero8(word) {
        if (word.length === 7) return "0" + word; else if (word.length === 6) return "00" + word; else if (word.length === 5) return "000" + word; else if (word.length === 4) return "0000" + word; else if (word.length === 3) return "00000" + word; else if (word.length === 2) return "000000" + word; else if (word.length === 1) return "0000000" + word; else return word;
      }
      exports.zero8 = zero8;
      function join32(msg, start, end, endian) {
        var len = end - start;
        assert(len % 4 === 0);
        var res = new Array(len / 4);
        for (var i = 0, k = start; i < res.length; i++, k += 4) {
          var w;
          if (endian === "big") w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3]; else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];
          res[i] = w >>> 0;
        }
        return res;
      }
      exports.join32 = join32;
      function split32(msg, endian) {
        var res = new Array(msg.length * 4);
        for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
          var m = msg[i];
          if (endian === "big") {
            res[k] = m >>> 24;
            res[k + 1] = m >>> 16 & 255;
            res[k + 2] = m >>> 8 & 255;
            res[k + 3] = m & 255;
          } else {
            res[k + 3] = m >>> 24;
            res[k + 2] = m >>> 16 & 255;
            res[k + 1] = m >>> 8 & 255;
            res[k] = m & 255;
          }
        }
        return res;
      }
      exports.split32 = split32;
      function rotr32(w, b) {
        return w >>> b | w << 32 - b;
      }
      exports.rotr32 = rotr32;
      function rotl32(w, b) {
        return w << b | w >>> 32 - b;
      }
      exports.rotl32 = rotl32;
      function sum32(a, b) {
        return a + b >>> 0;
      }
      exports.sum32 = sum32;
      function sum32_3(a, b, c) {
        return a + b + c >>> 0;
      }
      exports.sum32_3 = sum32_3;
      function sum32_4(a, b, c, d) {
        return a + b + c + d >>> 0;
      }
      exports.sum32_4 = sum32_4;
      function sum32_5(a, b, c, d, e) {
        return a + b + c + d + e >>> 0;
      }
      exports.sum32_5 = sum32_5;
      function sum64(buf, pos, ah, al) {
        var bh = buf[pos];
        var bl = buf[pos + 1];
        var lo = al + bl >>> 0;
        var hi = (lo < al ? 1 : 0) + ah + bh;
        buf[pos] = hi >>> 0;
        buf[pos + 1] = lo;
      }
      exports.sum64 = sum64;
      function sum64_hi(ah, al, bh, bl) {
        var lo = al + bl >>> 0;
        var hi = (lo < al ? 1 : 0) + ah + bh;
        return hi >>> 0;
      }
      exports.sum64_hi = sum64_hi;
      function sum64_lo(ah, al, bh, bl) {
        var lo = al + bl;
        return lo >>> 0;
      }
      exports.sum64_lo = sum64_lo;
      function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
        var carry = 0;
        var lo = al;
        lo = lo + bl >>> 0;
        carry += lo < al ? 1 : 0;
        lo = lo + cl >>> 0;
        carry += lo < cl ? 1 : 0;
        lo = lo + dl >>> 0;
        carry += lo < dl ? 1 : 0;
        var hi = ah + bh + ch + dh + carry;
        return hi >>> 0;
      }
      exports.sum64_4_hi = sum64_4_hi;
      function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
        var lo = al + bl + cl + dl;
        return lo >>> 0;
      }
      exports.sum64_4_lo = sum64_4_lo;
      function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
        var carry = 0;
        var lo = al;
        lo = lo + bl >>> 0;
        carry += lo < al ? 1 : 0;
        lo = lo + cl >>> 0;
        carry += lo < cl ? 1 : 0;
        lo = lo + dl >>> 0;
        carry += lo < dl ? 1 : 0;
        lo = lo + el >>> 0;
        carry += lo < el ? 1 : 0;
        var hi = ah + bh + ch + dh + eh + carry;
        return hi >>> 0;
      }
      exports.sum64_5_hi = sum64_5_hi;
      function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
        var lo = al + bl + cl + dl + el;
        return lo >>> 0;
      }
      exports.sum64_5_lo = sum64_5_lo;
      function rotr64_hi(ah, al, num) {
        var r = al << 32 - num | ah >>> num;
        return r >>> 0;
      }
      exports.rotr64_hi = rotr64_hi;
      function rotr64_lo(ah, al, num) {
        var r = ah << 32 - num | al >>> num;
        return r >>> 0;
      }
      exports.rotr64_lo = rotr64_lo;
      function shr64_hi(ah, al, num) {
        return ah >>> num;
      }
      exports.shr64_hi = shr64_hi;
      function shr64_lo(ah, al, num) {
        var r = ah << 32 - num | al >>> num;
        return r >>> 0;
      }
      exports.shr64_lo = shr64_lo;
    },
    9957(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var call = Function.prototype.call;
      var $hasOwn = Object.prototype.hasOwnProperty;
      var bind = __webpack_require__(6743);
      module.exports = bind.call(call, $hasOwn);
    },
    2723(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var hash = __webpack_require__(7952);
      var utils = __webpack_require__(4367);
      var assert = __webpack_require__(3349);
      function HmacDRBG(options) {
        if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);
        this.hash = options.hash;
        this.predResist = !!options.predResist;
        this.outLen = this.hash.outSize;
        this.minEntropy = options.minEntropy || this.hash.hmacStrength;
        this._reseed = null;
        this.reseedInterval = null;
        this.K = null;
        this.V = null;
        var entropy = utils.toArray(options.entropy, options.entropyEnc || "hex");
        var nonce = utils.toArray(options.nonce, options.nonceEnc || "hex");
        var pers = utils.toArray(options.pers, options.persEnc || "hex");
        assert(entropy.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits");
        this._init(entropy, nonce, pers);
      }
      module.exports = HmacDRBG;
      HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
        var seed = entropy.concat(nonce).concat(pers);
        this.K = new Array(this.outLen / 8);
        this.V = new Array(this.outLen / 8);
        for (var i = 0; i < this.V.length; i++) {
          this.K[i] = 0;
          this.V[i] = 1;
        }
        this._update(seed);
        this._reseed = 1;
        this.reseedInterval = 281474976710656;
      };
      HmacDRBG.prototype._hmac = function hmac() {
        return new hash.hmac(this.hash, this.K);
      };
      HmacDRBG.prototype._update = function update(seed) {
        var kmac = this._hmac().update(this.V).update([ 0 ]);
        if (seed) kmac = kmac.update(seed);
        this.K = kmac.digest();
        this.V = this._hmac().update(this.V).digest();
        if (!seed) return;
        this.K = this._hmac().update(this.V).update([ 1 ]).update(seed).digest();
        this.V = this._hmac().update(this.V).digest();
      };
      HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
        if (typeof entropyEnc !== "string") {
          addEnc = add;
          add = entropyEnc;
          entropyEnc = null;
        }
        entropy = utils.toArray(entropy, entropyEnc);
        add = utils.toArray(add, addEnc);
        assert(entropy.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits");
        this._update(entropy.concat(add || []));
        this._reseed = 1;
      };
      HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
        if (this._reseed > this.reseedInterval) throw new Error("Reseed is required");
        if (typeof enc !== "string") {
          addEnc = add;
          add = enc;
          enc = null;
        }
        if (add) {
          add = utils.toArray(add, addEnc || "hex");
          this._update(add);
        }
        var temp = [];
        while (temp.length < len) {
          this.V = this._hmac().update(this.V).digest();
          temp = temp.concat(this.V);
        }
        var res = temp.slice(0, len);
        this._update(add);
        this._reseed++;
        return utils.encode(res, enc);
      };
    },
    1765(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var reactIs = __webpack_require__(3404);
      var REACT_STATICS = {
        childContextTypes: true,
        contextType: true,
        contextTypes: true,
        defaultProps: true,
        displayName: true,
        getDefaultProps: true,
        getDerivedStateFromError: true,
        getDerivedStateFromProps: true,
        mixins: true,
        propTypes: true,
        type: true
      };
      var KNOWN_STATICS = {
        name: true,
        length: true,
        prototype: true,
        caller: true,
        callee: true,
        arguments: true,
        arity: true
      };
      var FORWARD_REF_STATICS = {
        $$typeof: true,
        render: true,
        defaultProps: true,
        displayName: true,
        propTypes: true
      };
      var MEMO_STATICS = {
        $$typeof: true,
        compare: true,
        defaultProps: true,
        displayName: true,
        propTypes: true,
        type: true
      };
      var TYPE_STATICS = {};
      TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
      TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
      function getStatics(component) {
        if (reactIs.isMemo(component)) {
          return MEMO_STATICS;
        }
        return TYPE_STATICS[component["$$typeof"]] || REACT_STATICS;
      }
      var defineProperty = Object.defineProperty;
      var getOwnPropertyNames = Object.getOwnPropertyNames;
      var getOwnPropertySymbols = Object.getOwnPropertySymbols;
      var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
      var getPrototypeOf = Object.getPrototypeOf;
      var objectPrototype = Object.prototype;
      function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
        if (typeof sourceComponent !== "string") {
          if (objectPrototype) {
            var inheritedComponent = getPrototypeOf(sourceComponent);
            if (inheritedComponent && inheritedComponent !== objectPrototype) {
              hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
            }
          }
          var keys = getOwnPropertyNames(sourceComponent);
          if (getOwnPropertySymbols) {
            keys = keys.concat(getOwnPropertySymbols(sourceComponent));
          }
          var targetStatics = getStatics(targetComponent);
          var sourceStatics = getStatics(sourceComponent);
          for (var i = 0; i < keys.length; ++i) {
            var key = keys[i];
            if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
              var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
              try {
                defineProperty(targetComponent, key, descriptor);
              } catch (e) {}
            }
          }
        }
        return targetComponent;
      }
      module.exports = hoistNonReactStatics;
    },
    3072(__unused_webpack_module, exports) {
      "use strict";
      var b = "function" === typeof Symbol && Symbol.for, c = b ? Symbol.for("react.element") : 60103, d = b ? Symbol.for("react.portal") : 60106, e = b ? Symbol.for("react.fragment") : 60107, f = b ? Symbol.for("react.strict_mode") : 60108, g = b ? Symbol.for("react.profiler") : 60114, h = b ? Symbol.for("react.provider") : 60109, k = b ? Symbol.for("react.context") : 60110, l = b ? Symbol.for("react.async_mode") : 60111, m = b ? Symbol.for("react.concurrent_mode") : 60111, n = b ? Symbol.for("react.forward_ref") : 60112, p = b ? Symbol.for("react.suspense") : 60113, q = b ? Symbol.for("react.suspense_list") : 60120, r = b ? Symbol.for("react.memo") : 60115, t = b ? Symbol.for("react.lazy") : 60116, v = b ? Symbol.for("react.block") : 60121, w = b ? Symbol.for("react.fundamental") : 60117, x = b ? Symbol.for("react.responder") : 60118, y = b ? Symbol.for("react.scope") : 60119;
      function z(a) {
        if ("object" === typeof a && null !== a) {
          var u = a.$$typeof;
          switch (u) {
           case c:
            switch (a = a.type, a) {
             case l:
             case m:
             case e:
             case g:
             case f:
             case p:
              return a;

             default:
              switch (a = a && a.$$typeof, a) {
               case k:
               case n:
               case t:
               case r:
               case h:
                return a;

               default:
                return u;
              }
            }

           case d:
            return u;
          }
        }
      }
      function A(a) {
        return z(a) === m;
      }
      exports.AsyncMode = l;
      exports.ConcurrentMode = m;
      exports.ContextConsumer = k;
      exports.ContextProvider = h;
      exports.Element = c;
      exports.ForwardRef = n;
      exports.Fragment = e;
      exports.Lazy = t;
      exports.Memo = r;
      exports.Portal = d;
      exports.Profiler = g;
      exports.StrictMode = f;
      exports.Suspense = p;
      exports.isAsyncMode = function(a) {
        return A(a) || z(a) === l;
      };
      exports.isConcurrentMode = A;
      exports.isContextConsumer = function(a) {
        return z(a) === k;
      };
      exports.isContextProvider = function(a) {
        return z(a) === h;
      };
      exports.isElement = function(a) {
        return "object" === typeof a && null !== a && a.$$typeof === c;
      };
      exports.isForwardRef = function(a) {
        return z(a) === n;
      };
      exports.isFragment = function(a) {
        return z(a) === e;
      };
      exports.isLazy = function(a) {
        return z(a) === t;
      };
      exports.isMemo = function(a) {
        return z(a) === r;
      };
      exports.isPortal = function(a) {
        return z(a) === d;
      };
      exports.isProfiler = function(a) {
        return z(a) === g;
      };
      exports.isStrictMode = function(a) {
        return z(a) === f;
      };
      exports.isSuspense = function(a) {
        return z(a) === p;
      };
      exports.isValidElementType = function(a) {
        return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
      };
      exports.typeOf = z;
    },
    3404(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      if (true) {
        module.exports = __webpack_require__(3072);
      } else {}
    },
    251(__unused_webpack_module, exports) {
      exports.read = function(buffer, offset, isLE, mLen, nBytes) {
        var e, m;
        var eLen = nBytes * 8 - mLen - 1;
        var eMax = (1 << eLen) - 1;
        var eBias = eMax >> 1;
        var nBits = -7;
        var i = isLE ? nBytes - 1 : 0;
        var d = isLE ? -1 : 1;
        var s = buffer[offset + i];
        i += d;
        e = s & (1 << -nBits) - 1;
        s >>= -nBits;
        nBits += eLen;
        for (;nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
        m = e & (1 << -nBits) - 1;
        e >>= -nBits;
        nBits += mLen;
        for (;nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
        if (e === 0) {
          e = 1 - eBias;
        } else if (e === eMax) {
          return m ? NaN : (s ? -1 : 1) * Infinity;
        } else {
          m = m + Math.pow(2, mLen);
          e = e - eBias;
        }
        return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
      };
      exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
        var e, m, c;
        var eLen = nBytes * 8 - mLen - 1;
        var eMax = (1 << eLen) - 1;
        var eBias = eMax >> 1;
        var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
        var i = isLE ? 0 : nBytes - 1;
        var d = isLE ? 1 : -1;
        var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
        value = Math.abs(value);
        if (isNaN(value) || value === Infinity) {
          m = isNaN(value) ? 1 : 0;
          e = eMax;
        } else {
          e = Math.floor(Math.log(value) / Math.LN2);
          if (value * (c = Math.pow(2, -e)) < 1) {
            e--;
            c *= 2;
          }
          if (e + eBias >= 1) {
            value += rt / c;
          } else {
            value += rt * Math.pow(2, 1 - eBias);
          }
          if (value * c >= 2) {
            e++;
            c /= 2;
          }
          if (e + eBias >= eMax) {
            m = 0;
            e = eMax;
          } else if (e + eBias >= 1) {
            m = (value * c - 1) * Math.pow(2, mLen);
            e = e + eBias;
          } else {
            m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
            e = 0;
          }
        }
        for (;mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}
        e = e << mLen | m;
        eLen += mLen;
        for (;eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}
        buffer[offset + i - d] |= s * 128;
      };
    },
    6698(module) {
      if (typeof Object.create === "function") {
        module.exports = function inherits(ctor, superCtor) {
          if (superCtor) {
            ctor.super_ = superCtor;
            ctor.prototype = Object.create(superCtor.prototype, {
              constructor: {
                value: ctor,
                enumerable: false,
                writable: true,
                configurable: true
              }
            });
          }
        };
      } else {
        module.exports = function inherits(ctor, superCtor) {
          if (superCtor) {
            ctor.super_ = superCtor;
            var TempCtor = function() {};
            TempCtor.prototype = superCtor.prototype;
            ctor.prototype = new TempCtor;
            ctor.prototype.constructor = ctor;
          }
        };
      }
    },
    9600(module) {
      "use strict";
      var fnToStr = Function.prototype.toString;
      var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply;
      var badArrayLike;
      var isCallableMarker;
      if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") {
        try {
          badArrayLike = Object.defineProperty({}, "length", {
            get: function() {
              throw isCallableMarker;
            }
          });
          isCallableMarker = {};
          reflectApply((function() {
            throw 42;
          }), null, badArrayLike);
        } catch (_) {
          if (_ !== isCallableMarker) {
            reflectApply = null;
          }
        }
      } else {
        reflectApply = null;
      }
      var constructorRegex = /^\s*class\b/;
      var isES6ClassFn = function isES6ClassFunction(value) {
        try {
          var fnStr = fnToStr.call(value);
          return constructorRegex.test(fnStr);
        } catch (e) {
          return false;
        }
      };
      var tryFunctionObject = function tryFunctionToStr(value) {
        try {
          if (isES6ClassFn(value)) {
            return false;
          }
          fnToStr.call(value);
          return true;
        } catch (e) {
          return false;
        }
      };
      var toStr = Object.prototype.toString;
      var objectClass = "[object Object]";
      var fnClass = "[object Function]";
      var genClass = "[object GeneratorFunction]";
      var ddaClass = "[object HTMLAllCollection]";
      var ddaClass2 = "[object HTML document.all class]";
      var ddaClass3 = "[object HTMLCollection]";
      var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag;
      var isIE68 = !(0 in [ ,  ]);
      var isDDA = function isDocumentDotAll() {
        return false;
      };
      if (typeof document === "object") {
        var all = document.all;
        if (toStr.call(all) === toStr.call(document.all)) {
          isDDA = function isDocumentDotAll(value) {
            if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) {
              try {
                var str = toStr.call(value);
                return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null;
              } catch (e) {}
            }
            return false;
          };
        }
      }
      module.exports = reflectApply ? function isCallable(value) {
        if (isDDA(value)) {
          return true;
        }
        if (!value) {
          return false;
        }
        if (typeof value !== "function" && typeof value !== "object") {
          return false;
        }
        try {
          reflectApply(value, null, badArrayLike);
        } catch (e) {
          if (e !== isCallableMarker) {
            return false;
          }
        }
        return !isES6ClassFn(value) && tryFunctionObject(value);
      } : function isCallable(value) {
        if (isDDA(value)) {
          return true;
        }
        if (!value) {
          return false;
        }
        if (typeof value !== "function" && typeof value !== "object") {
          return false;
        }
        if (hasToStringTag) {
          return tryFunctionObject(value);
        }
        if (isES6ClassFn(value)) {
          return false;
        }
        var strClass = toStr.call(value);
        if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) {
          return false;
        }
        return tryFunctionObject(value);
      };
    },
    5680(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var whichTypedArray = __webpack_require__(5767);
      module.exports = function isTypedArray(value) {
        return !!whichTypedArray(value);
      };
    },
    4634(module) {
      var toString = {}.toString;
      module.exports = Array.isArray || function(arr) {
        return toString.call(arr) == "[object Array]";
      };
    },
    1176(module, exports, __webpack_require__) {
      var process = __webpack_require__(5606);
      var __WEBPACK_AMD_DEFINE_RESULT__;
      (function() {
        "use strict";
        var INPUT_ERROR = "input is invalid type";
        var FINALIZE_ERROR = "finalize already called";
        var WINDOW = typeof window === "object";
        var root = WINDOW ? window : {};
        if (root.JS_SHA3_NO_WINDOW) {
          WINDOW = false;
        }
        var WEB_WORKER = !WINDOW && typeof self === "object";
        var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
        if (NODE_JS) {
          root = __webpack_require__.g;
        } else if (WEB_WORKER) {
          root = self;
        }
        var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && "object" === "object" && module.exports;
        var AMD = true && __webpack_require__.amdO;
        var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
        var HEX_CHARS = "0123456789abcdef".split("");
        var SHAKE_PADDING = [ 31, 7936, 2031616, 520093696 ];
        var CSHAKE_PADDING = [ 4, 1024, 262144, 67108864 ];
        var KECCAK_PADDING = [ 1, 256, 65536, 16777216 ];
        var PADDING = [ 6, 1536, 393216, 100663296 ];
        var SHIFT = [ 0, 8, 16, 24 ];
        var RC = [ 1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648 ];
        var BITS = [ 224, 256, 384, 512 ];
        var SHAKE_BITS = [ 128, 256 ];
        var OUTPUT_TYPES = [ "hex", "buffer", "arrayBuffer", "array", "digest" ];
        var CSHAKE_BYTEPAD = {
          128: 168,
          256: 136
        };
        if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {
          Array.isArray = function(obj) {
            return Object.prototype.toString.call(obj) === "[object Array]";
          };
        }
        if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
          ArrayBuffer.isView = function(obj) {
            return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
          };
        }
        var createOutputMethod = function(bits, padding, outputType) {
          return function(message) {
            return new Keccak(bits, padding, bits).update(message)[outputType]();
          };
        };
        var createShakeOutputMethod = function(bits, padding, outputType) {
          return function(message, outputBits) {
            return new Keccak(bits, padding, outputBits).update(message)[outputType]();
          };
        };
        var createCshakeOutputMethod = function(bits, padding, outputType) {
          return function(message, outputBits, n, s) {
            return methods["cshake" + bits].update(message, outputBits, n, s)[outputType]();
          };
        };
        var createKmacOutputMethod = function(bits, padding, outputType) {
          return function(key, message, outputBits, s) {
            return methods["kmac" + bits].update(key, message, outputBits, s)[outputType]();
          };
        };
        var createOutputMethods = function(method, createMethod, bits, padding) {
          for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
            var type = OUTPUT_TYPES[i];
            method[type] = createMethod(bits, padding, type);
          }
          return method;
        };
        var createMethod = function(bits, padding) {
          var method = createOutputMethod(bits, padding, "hex");
          method.create = function() {
            return new Keccak(bits, padding, bits);
          };
          method.update = function(message) {
            return method.create().update(message);
          };
          return createOutputMethods(method, createOutputMethod, bits, padding);
        };
        var createShakeMethod = function(bits, padding) {
          var method = createShakeOutputMethod(bits, padding, "hex");
          method.create = function(outputBits) {
            return new Keccak(bits, padding, outputBits);
          };
          method.update = function(message, outputBits) {
            return method.create(outputBits).update(message);
          };
          return createOutputMethods(method, createShakeOutputMethod, bits, padding);
        };
        var createCshakeMethod = function(bits, padding) {
          var w = CSHAKE_BYTEPAD[bits];
          var method = createCshakeOutputMethod(bits, padding, "hex");
          method.create = function(outputBits, n, s) {
            if (!n && !s) {
              return methods["shake" + bits].create(outputBits);
            } else {
              return new Keccak(bits, padding, outputBits).bytepad([ n, s ], w);
            }
          };
          method.update = function(message, outputBits, n, s) {
            return method.create(outputBits, n, s).update(message);
          };
          return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
        };
        var createKmacMethod = function(bits, padding) {
          var w = CSHAKE_BYTEPAD[bits];
          var method = createKmacOutputMethod(bits, padding, "hex");
          method.create = function(key, outputBits, s) {
            return new Kmac(bits, padding, outputBits).bytepad([ "KMAC", s ], w).bytepad([ key ], w);
          };
          method.update = function(key, message, outputBits, s) {
            return method.create(key, outputBits, s).update(message);
          };
          return createOutputMethods(method, createKmacOutputMethod, bits, padding);
        };
        var algorithms = [ {
          name: "keccak",
          padding: KECCAK_PADDING,
          bits: BITS,
          createMethod
        }, {
          name: "sha3",
          padding: PADDING,
          bits: BITS,
          createMethod
        }, {
          name: "shake",
          padding: SHAKE_PADDING,
          bits: SHAKE_BITS,
          createMethod: createShakeMethod
        }, {
          name: "cshake",
          padding: CSHAKE_PADDING,
          bits: SHAKE_BITS,
          createMethod: createCshakeMethod
        }, {
          name: "kmac",
          padding: CSHAKE_PADDING,
          bits: SHAKE_BITS,
          createMethod: createKmacMethod
        } ];
        var methods = {}, methodNames = [];
        for (var i = 0; i < algorithms.length; ++i) {
          var algorithm = algorithms[i];
          var bits = algorithm.bits;
          for (var j = 0; j < bits.length; ++j) {
            var methodName = algorithm.name + "_" + bits[j];
            methodNames.push(methodName);
            methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
            if (algorithm.name !== "sha3") {
              var newMethodName = algorithm.name + bits[j];
              methodNames.push(newMethodName);
              methods[newMethodName] = methods[methodName];
            }
          }
        }
        function Keccak(bits, padding, outputBits) {
          this.blocks = [];
          this.s = [];
          this.padding = padding;
          this.outputBits = outputBits;
          this.reset = true;
          this.finalized = false;
          this.block = 0;
          this.start = 0;
          this.blockCount = 1600 - (bits << 1) >> 5;
          this.byteCount = this.blockCount << 2;
          this.outputBlocks = outputBits >> 5;
          this.extraBytes = (outputBits & 31) >> 3;
          for (var i = 0; i < 50; ++i) {
            this.s[i] = 0;
          }
        }
        Keccak.prototype.update = function(message) {
          if (this.finalized) {
            throw new Error(FINALIZE_ERROR);
          }
          var notString, type = typeof message;
          if (type !== "string") {
            if (type === "object") {
              if (message === null) {
                throw new Error(INPUT_ERROR);
              } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
                message = new Uint8Array(message);
              } else if (!Array.isArray(message)) {
                if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
                  throw new Error(INPUT_ERROR);
                }
              }
            } else {
              throw new Error(INPUT_ERROR);
            }
            notString = true;
          }
          var blocks = this.blocks, byteCount = this.byteCount, length = message.length, blockCount = this.blockCount, index = 0, s = this.s, i, code;
          while (index < length) {
            if (this.reset) {
              this.reset = false;
              blocks[0] = this.block;
              for (i = 1; i < blockCount + 1; ++i) {
                blocks[i] = 0;
              }
            }
            if (notString) {
              for (i = this.start; index < length && i < byteCount; ++index) {
                blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
              }
            } else {
              for (i = this.start; index < length && i < byteCount; ++index) {
                code = message.charCodeAt(index);
                if (code < 128) {
                  blocks[i >> 2] |= code << SHIFT[i++ & 3];
                } else if (code < 2048) {
                  blocks[i >> 2] |= (192 | code >> 6) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                } else if (code < 55296 || code >= 57344) {
                  blocks[i >> 2] |= (224 | code >> 12) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                } else {
                  code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
                  blocks[i >> 2] |= (240 | code >> 18) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code >> 12 & 63) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[i++ & 3];
                  blocks[i >> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                }
              }
            }
            this.lastByteIndex = i;
            if (i >= byteCount) {
              this.start = i - byteCount;
              this.block = blocks[blockCount];
              for (i = 0; i < blockCount; ++i) {
                s[i] ^= blocks[i];
              }
              f(s);
              this.reset = true;
            } else {
              this.start = i;
            }
          }
          return this;
        };
        Keccak.prototype.encode = function(x, right) {
          var o = x & 255, n = 1;
          var bytes = [ o ];
          x = x >> 8;
          o = x & 255;
          while (o > 0) {
            bytes.unshift(o);
            x = x >> 8;
            o = x & 255;
            ++n;
          }
          if (right) {
            bytes.push(n);
          } else {
            bytes.unshift(n);
          }
          this.update(bytes);
          return bytes.length;
        };
        Keccak.prototype.encodeString = function(str) {
          var notString, type = typeof str;
          if (type !== "string") {
            if (type === "object") {
              if (str === null) {
                throw new Error(INPUT_ERROR);
              } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {
                str = new Uint8Array(str);
              } else if (!Array.isArray(str)) {
                if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {
                  throw new Error(INPUT_ERROR);
                }
              }
            } else {
              throw new Error(INPUT_ERROR);
            }
            notString = true;
          }
          var bytes = 0, length = str.length;
          if (notString) {
            bytes = length;
          } else {
            for (var i = 0; i < str.length; ++i) {
              var code = str.charCodeAt(i);
              if (code < 128) {
                bytes += 1;
              } else if (code < 2048) {
                bytes += 2;
              } else if (code < 55296 || code >= 57344) {
                bytes += 3;
              } else {
                code = 65536 + ((code & 1023) << 10 | str.charCodeAt(++i) & 1023);
                bytes += 4;
              }
            }
          }
          bytes += this.encode(bytes * 8);
          this.update(str);
          return bytes;
        };
        Keccak.prototype.bytepad = function(strs, w) {
          var bytes = this.encode(w);
          for (var i = 0; i < strs.length; ++i) {
            bytes += this.encodeString(strs[i]);
          }
          var paddingBytes = w - bytes % w;
          var zeros = [];
          zeros.length = paddingBytes;
          this.update(zeros);
          return this;
        };
        Keccak.prototype.finalize = function() {
          if (this.finalized) {
            return;
          }
          this.finalized = true;
          var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
          blocks[i >> 2] |= this.padding[i & 3];
          if (this.lastByteIndex === this.byteCount) {
            blocks[0] = blocks[blockCount];
            for (i = 1; i < blockCount + 1; ++i) {
              blocks[i] = 0;
            }
          }
          blocks[blockCount - 1] |= 2147483648;
          for (i = 0; i < blockCount; ++i) {
            s[i] ^= blocks[i];
          }
          f(s);
        };
        Keccak.prototype.toString = Keccak.prototype.hex = function() {
          this.finalize();
          var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
          var hex = "", block;
          while (j < outputBlocks) {
            for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
              block = s[i];
              hex += HEX_CHARS[block >> 4 & 15] + HEX_CHARS[block & 15] + HEX_CHARS[block >> 12 & 15] + HEX_CHARS[block >> 8 & 15] + HEX_CHARS[block >> 20 & 15] + HEX_CHARS[block >> 16 & 15] + HEX_CHARS[block >> 28 & 15] + HEX_CHARS[block >> 24 & 15];
            }
            if (j % blockCount === 0) {
              f(s);
              i = 0;
            }
          }
          if (extraBytes) {
            block = s[i];
            hex += HEX_CHARS[block >> 4 & 15] + HEX_CHARS[block & 15];
            if (extraBytes > 1) {
              hex += HEX_CHARS[block >> 12 & 15] + HEX_CHARS[block >> 8 & 15];
            }
            if (extraBytes > 2) {
              hex += HEX_CHARS[block >> 20 & 15] + HEX_CHARS[block >> 16 & 15];
            }
          }
          return hex;
        };
        Keccak.prototype.arrayBuffer = function() {
          this.finalize();
          var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
          var bytes = this.outputBits >> 3;
          var buffer;
          if (extraBytes) {
            buffer = new ArrayBuffer(outputBlocks + 1 << 2);
          } else {
            buffer = new ArrayBuffer(bytes);
          }
          var array = new Uint32Array(buffer);
          while (j < outputBlocks) {
            for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
              array[j] = s[i];
            }
            if (j % blockCount === 0) {
              f(s);
            }
          }
          if (extraBytes) {
            array[i] = s[i];
            buffer = buffer.slice(0, bytes);
          }
          return buffer;
        };
        Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
        Keccak.prototype.digest = Keccak.prototype.array = function() {
          this.finalize();
          var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
          var array = [], offset, block;
          while (j < outputBlocks) {
            for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
              offset = j << 2;
              block = s[i];
              array[offset] = block & 255;
              array[offset + 1] = block >> 8 & 255;
              array[offset + 2] = block >> 16 & 255;
              array[offset + 3] = block >> 24 & 255;
            }
            if (j % blockCount === 0) {
              f(s);
            }
          }
          if (extraBytes) {
            offset = j << 2;
            block = s[i];
            array[offset] = block & 255;
            if (extraBytes > 1) {
              array[offset + 1] = block >> 8 & 255;
            }
            if (extraBytes > 2) {
              array[offset + 2] = block >> 16 & 255;
            }
          }
          return array;
        };
        function Kmac(bits, padding, outputBits) {
          Keccak.call(this, bits, padding, outputBits);
        }
        Kmac.prototype = new Keccak;
        Kmac.prototype.finalize = function() {
          this.encode(this.outputBits, true);
          return Keccak.prototype.finalize.call(this);
        };
        var f = function(s) {
          var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
          for (n = 0; n < 48; n += 2) {
            c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
            c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
            c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
            c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
            c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
            c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
            c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
            c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
            c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
            c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
            h = c8 ^ (c2 << 1 | c3 >>> 31);
            l = c9 ^ (c3 << 1 | c2 >>> 31);
            s[0] ^= h;
            s[1] ^= l;
            s[10] ^= h;
            s[11] ^= l;
            s[20] ^= h;
            s[21] ^= l;
            s[30] ^= h;
            s[31] ^= l;
            s[40] ^= h;
            s[41] ^= l;
            h = c0 ^ (c4 << 1 | c5 >>> 31);
            l = c1 ^ (c5 << 1 | c4 >>> 31);
            s[2] ^= h;
            s[3] ^= l;
            s[12] ^= h;
            s[13] ^= l;
            s[22] ^= h;
            s[23] ^= l;
            s[32] ^= h;
            s[33] ^= l;
            s[42] ^= h;
            s[43] ^= l;
            h = c2 ^ (c6 << 1 | c7 >>> 31);
            l = c3 ^ (c7 << 1 | c6 >>> 31);
            s[4] ^= h;
            s[5] ^= l;
            s[14] ^= h;
            s[15] ^= l;
            s[24] ^= h;
            s[25] ^= l;
            s[34] ^= h;
            s[35] ^= l;
            s[44] ^= h;
            s[45] ^= l;
            h = c4 ^ (c8 << 1 | c9 >>> 31);
            l = c5 ^ (c9 << 1 | c8 >>> 31);
            s[6] ^= h;
            s[7] ^= l;
            s[16] ^= h;
            s[17] ^= l;
            s[26] ^= h;
            s[27] ^= l;
            s[36] ^= h;
            s[37] ^= l;
            s[46] ^= h;
            s[47] ^= l;
            h = c6 ^ (c0 << 1 | c1 >>> 31);
            l = c7 ^ (c1 << 1 | c0 >>> 31);
            s[8] ^= h;
            s[9] ^= l;
            s[18] ^= h;
            s[19] ^= l;
            s[28] ^= h;
            s[29] ^= l;
            s[38] ^= h;
            s[39] ^= l;
            s[48] ^= h;
            s[49] ^= l;
            b0 = s[0];
            b1 = s[1];
            b32 = s[11] << 4 | s[10] >>> 28;
            b33 = s[10] << 4 | s[11] >>> 28;
            b14 = s[20] << 3 | s[21] >>> 29;
            b15 = s[21] << 3 | s[20] >>> 29;
            b46 = s[31] << 9 | s[30] >>> 23;
            b47 = s[30] << 9 | s[31] >>> 23;
            b28 = s[40] << 18 | s[41] >>> 14;
            b29 = s[41] << 18 | s[40] >>> 14;
            b20 = s[2] << 1 | s[3] >>> 31;
            b21 = s[3] << 1 | s[2] >>> 31;
            b2 = s[13] << 12 | s[12] >>> 20;
            b3 = s[12] << 12 | s[13] >>> 20;
            b34 = s[22] << 10 | s[23] >>> 22;
            b35 = s[23] << 10 | s[22] >>> 22;
            b16 = s[33] << 13 | s[32] >>> 19;
            b17 = s[32] << 13 | s[33] >>> 19;
            b48 = s[42] << 2 | s[43] >>> 30;
            b49 = s[43] << 2 | s[42] >>> 30;
            b40 = s[5] << 30 | s[4] >>> 2;
            b41 = s[4] << 30 | s[5] >>> 2;
            b22 = s[14] << 6 | s[15] >>> 26;
            b23 = s[15] << 6 | s[14] >>> 26;
            b4 = s[25] << 11 | s[24] >>> 21;
            b5 = s[24] << 11 | s[25] >>> 21;
            b36 = s[34] << 15 | s[35] >>> 17;
            b37 = s[35] << 15 | s[34] >>> 17;
            b18 = s[45] << 29 | s[44] >>> 3;
            b19 = s[44] << 29 | s[45] >>> 3;
            b10 = s[6] << 28 | s[7] >>> 4;
            b11 = s[7] << 28 | s[6] >>> 4;
            b42 = s[17] << 23 | s[16] >>> 9;
            b43 = s[16] << 23 | s[17] >>> 9;
            b24 = s[26] << 25 | s[27] >>> 7;
            b25 = s[27] << 25 | s[26] >>> 7;
            b6 = s[36] << 21 | s[37] >>> 11;
            b7 = s[37] << 21 | s[36] >>> 11;
            b38 = s[47] << 24 | s[46] >>> 8;
            b39 = s[46] << 24 | s[47] >>> 8;
            b30 = s[8] << 27 | s[9] >>> 5;
            b31 = s[9] << 27 | s[8] >>> 5;
            b12 = s[18] << 20 | s[19] >>> 12;
            b13 = s[19] << 20 | s[18] >>> 12;
            b44 = s[29] << 7 | s[28] >>> 25;
            b45 = s[28] << 7 | s[29] >>> 25;
            b26 = s[38] << 8 | s[39] >>> 24;
            b27 = s[39] << 8 | s[38] >>> 24;
            b8 = s[48] << 14 | s[49] >>> 18;
            b9 = s[49] << 14 | s[48] >>> 18;
            s[0] = b0 ^ ~b2 & b4;
            s[1] = b1 ^ ~b3 & b5;
            s[10] = b10 ^ ~b12 & b14;
            s[11] = b11 ^ ~b13 & b15;
            s[20] = b20 ^ ~b22 & b24;
            s[21] = b21 ^ ~b23 & b25;
            s[30] = b30 ^ ~b32 & b34;
            s[31] = b31 ^ ~b33 & b35;
            s[40] = b40 ^ ~b42 & b44;
            s[41] = b41 ^ ~b43 & b45;
            s[2] = b2 ^ ~b4 & b6;
            s[3] = b3 ^ ~b5 & b7;
            s[12] = b12 ^ ~b14 & b16;
            s[13] = b13 ^ ~b15 & b17;
            s[22] = b22 ^ ~b24 & b26;
            s[23] = b23 ^ ~b25 & b27;
            s[32] = b32 ^ ~b34 & b36;
            s[33] = b33 ^ ~b35 & b37;
            s[42] = b42 ^ ~b44 & b46;
            s[43] = b43 ^ ~b45 & b47;
            s[4] = b4 ^ ~b6 & b8;
            s[5] = b5 ^ ~b7 & b9;
            s[14] = b14 ^ ~b16 & b18;
            s[15] = b15 ^ ~b17 & b19;
            s[24] = b24 ^ ~b26 & b28;
            s[25] = b25 ^ ~b27 & b29;
            s[34] = b34 ^ ~b36 & b38;
            s[35] = b35 ^ ~b37 & b39;
            s[44] = b44 ^ ~b46 & b48;
            s[45] = b45 ^ ~b47 & b49;
            s[6] = b6 ^ ~b8 & b0;
            s[7] = b7 ^ ~b9 & b1;
            s[16] = b16 ^ ~b18 & b10;
            s[17] = b17 ^ ~b19 & b11;
            s[26] = b26 ^ ~b28 & b20;
            s[27] = b27 ^ ~b29 & b21;
            s[36] = b36 ^ ~b38 & b30;
            s[37] = b37 ^ ~b39 & b31;
            s[46] = b46 ^ ~b48 & b40;
            s[47] = b47 ^ ~b49 & b41;
            s[8] = b8 ^ ~b0 & b2;
            s[9] = b9 ^ ~b1 & b3;
            s[18] = b18 ^ ~b10 & b12;
            s[19] = b19 ^ ~b11 & b13;
            s[28] = b28 ^ ~b20 & b22;
            s[29] = b29 ^ ~b21 & b23;
            s[38] = b38 ^ ~b30 & b32;
            s[39] = b39 ^ ~b31 & b33;
            s[48] = b48 ^ ~b40 & b42;
            s[49] = b49 ^ ~b41 & b43;
            s[0] ^= RC[n];
            s[1] ^= RC[n + 1];
          }
        };
        if (COMMON_JS) {
          module.exports = methods;
        } else {
          for (i = 0; i < methodNames.length; ++i) {
            root[methodNames[i]] = methods[methodNames[i]];
          }
          if (AMD) {
            !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
              return methods;
            }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
          }
        }
      })();
    },
    6230() {},
    1562(__unused_webpack_module, exports, __webpack_require__) {
      (function(global, factory) {
        true ? factory(exports, __webpack_require__(6230)) : 0;
      })(this, (function(exports, chalk) {
        "use strict";
        chalk = chalk && chalk.hasOwnProperty("default") ? chalk["default"] : chalk;
        var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
          return typeof obj;
        } : function(obj) {
          return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
        };
        var classCallCheck = function(instance, Constructor) {
          if (!(instance instanceof Constructor)) {
            throw new TypeError("Cannot call a class as a function");
          }
        };
        var createClass = function() {
          function defineProperties(target, props) {
            for (var i = 0; i < props.length; i++) {
              var descriptor = props[i];
              descriptor.enumerable = descriptor.enumerable || false;
              descriptor.configurable = true;
              if ("value" in descriptor) descriptor.writable = true;
              Object.defineProperty(target, descriptor.key, descriptor);
            }
          }
          return function(Constructor, protoProps, staticProps) {
            if (protoProps) defineProperties(Constructor.prototype, protoProps);
            if (staticProps) defineProperties(Constructor, staticProps);
            return Constructor;
          };
        }();
        var get = function get(object, property, receiver) {
          if (object === null) object = Function.prototype;
          var desc = Object.getOwnPropertyDescriptor(object, property);
          if (desc === undefined) {
            var parent = Object.getPrototypeOf(object);
            if (parent === null) {
              return undefined;
            } else {
              return get(parent, property, receiver);
            }
          } else if ("value" in desc) {
            return desc.value;
          } else {
            var getter = desc.get;
            if (getter === undefined) {
              return undefined;
            }
            return getter.call(receiver);
          }
        };
        var inherits = function(subClass, superClass) {
          if (typeof superClass !== "function" && superClass !== null) {
            throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
          }
          subClass.prototype = Object.create(superClass && superClass.prototype, {
            constructor: {
              value: subClass,
              enumerable: false,
              writable: true,
              configurable: true
            }
          });
          if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
        };
        var possibleConstructorReturn = function(self, call) {
          if (!self) {
            throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
          }
          return call && (typeof call === "object" || typeof call === "function") ? call : self;
        };
        var slicedToArray = function() {
          function sliceIterator(arr, i) {
            var _arr = [];
            var _n = true;
            var _d = false;
            var _e = undefined;
            try {
              for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
                _arr.push(_s.value);
                if (i && _arr.length === i) break;
              }
            } catch (err) {
              _d = true;
              _e = err;
            } finally {
              try {
                if (!_n && _i["return"]) _i["return"]();
              } finally {
                if (_d) throw _e;
              }
            }
            return _arr;
          }
          return function(arr, i) {
            if (Array.isArray(arr)) {
              return arr;
            } else if (Symbol.iterator in Object(arr)) {
              return sliceIterator(arr, i);
            } else {
              throw new TypeError("Invalid attempt to destructure non-iterable instance");
            }
          };
        }();
        var toConsumableArray = function(arr) {
          if (Array.isArray(arr)) {
            for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
            return arr2;
          } else {
            return Array.from(arr);
          }
        };
        var Processor = function() {
          function Processor(options) {
            classCallCheck(this, Processor);
            this.selfOptions = options || {};
            this.pipes = {};
          }
          createClass(Processor, [ {
            key: "options",
            value: function options(_options) {
              if (_options) {
                this.selfOptions = _options;
              }
              return this.selfOptions;
            }
          }, {
            key: "pipe",
            value: function pipe(name, pipeArg) {
              var pipe = pipeArg;
              if (typeof name === "string") {
                if (typeof pipe === "undefined") {
                  return this.pipes[name];
                } else {
                  this.pipes[name] = pipe;
                }
              }
              if (name && name.name) {
                pipe = name;
                if (pipe.processor === this) {
                  return pipe;
                }
                this.pipes[pipe.name] = pipe;
              }
              pipe.processor = this;
              return pipe;
            }
          }, {
            key: "process",
            value: function process(input, pipe) {
              var context = input;
              context.options = this.options();
              var nextPipe = pipe || input.pipe || "default";
              var lastPipe = void 0;
              var lastContext = void 0;
              while (nextPipe) {
                if (typeof context.nextAfterChildren !== "undefined") {
                  context.next = context.nextAfterChildren;
                  context.nextAfterChildren = null;
                }
                if (typeof nextPipe === "string") {
                  nextPipe = this.pipe(nextPipe);
                }
                nextPipe.process(context);
                lastContext = context;
                lastPipe = nextPipe;
                nextPipe = null;
                if (context) {
                  if (context.next) {
                    context = context.next;
                    nextPipe = lastContext.nextPipe || context.pipe || lastPipe;
                  }
                }
              }
              return context.hasResult ? context.result : undefined;
            }
          } ]);
          return Processor;
        }();
        var Pipe = function() {
          function Pipe(name) {
            classCallCheck(this, Pipe);
            this.name = name;
            this.filters = [];
          }
          createClass(Pipe, [ {
            key: "process",
            value: function process(input) {
              if (!this.processor) {
                throw new Error("add this pipe to a processor before using it");
              }
              var debug = this.debug;
              var length = this.filters.length;
              var context = input;
              for (var index = 0; index < length; index++) {
                var filter = this.filters[index];
                if (debug) {
                  this.log("filter: " + filter.filterName);
                }
                filter(context);
                if ((typeof context === "undefined" ? "undefined" : _typeof(context)) === "object" && context.exiting) {
                  context.exiting = false;
                  break;
                }
              }
              if (!context.next && this.resultCheck) {
                this.resultCheck(context);
              }
            }
          }, {
            key: "log",
            value: function log(msg) {
              console.log("[jsondiffpatch] " + this.name + " pipe, " + msg);
            }
          }, {
            key: "append",
            value: function append() {
              var _filters;
              (_filters = this.filters).push.apply(_filters, arguments);
              return this;
            }
          }, {
            key: "prepend",
            value: function prepend() {
              var _filters2;
              (_filters2 = this.filters).unshift.apply(_filters2, arguments);
              return this;
            }
          }, {
            key: "indexOf",
            value: function indexOf(filterName) {
              if (!filterName) {
                throw new Error("a filter name is required");
              }
              for (var index = 0; index < this.filters.length; index++) {
                var filter = this.filters[index];
                if (filter.filterName === filterName) {
                  return index;
                }
              }
              throw new Error("filter not found: " + filterName);
            }
          }, {
            key: "list",
            value: function list() {
              return this.filters.map((function(f) {
                return f.filterName;
              }));
            }
          }, {
            key: "after",
            value: function after(filterName) {
              var index = this.indexOf(filterName);
              var params = Array.prototype.slice.call(arguments, 1);
              if (!params.length) {
                throw new Error("a filter is required");
              }
              params.unshift(index + 1, 0);
              Array.prototype.splice.apply(this.filters, params);
              return this;
            }
          }, {
            key: "before",
            value: function before(filterName) {
              var index = this.indexOf(filterName);
              var params = Array.prototype.slice.call(arguments, 1);
              if (!params.length) {
                throw new Error("a filter is required");
              }
              params.unshift(index, 0);
              Array.prototype.splice.apply(this.filters, params);
              return this;
            }
          }, {
            key: "replace",
            value: function replace(filterName) {
              var index = this.indexOf(filterName);
              var params = Array.prototype.slice.call(arguments, 1);
              if (!params.length) {
                throw new Error("a filter is required");
              }
              params.unshift(index, 1);
              Array.prototype.splice.apply(this.filters, params);
              return this;
            }
          }, {
            key: "remove",
            value: function remove(filterName) {
              var index = this.indexOf(filterName);
              this.filters.splice(index, 1);
              return this;
            }
          }, {
            key: "clear",
            value: function clear() {
              this.filters.length = 0;
              return this;
            }
          }, {
            key: "shouldHaveResult",
            value: function shouldHaveResult(should) {
              if (should === false) {
                this.resultCheck = null;
                return;
              }
              if (this.resultCheck) {
                return;
              }
              var pipe = this;
              this.resultCheck = function(context) {
                if (!context.hasResult) {
                  console.log(context);
                  var error = new Error(pipe.name + " failed");
                  error.noResult = true;
                  throw error;
                }
              };
              return this;
            }
          } ]);
          return Pipe;
        }();
        var Context = function() {
          function Context() {
            classCallCheck(this, Context);
          }
          createClass(Context, [ {
            key: "setResult",
            value: function setResult(result) {
              this.result = result;
              this.hasResult = true;
              return this;
            }
          }, {
            key: "exit",
            value: function exit() {
              this.exiting = true;
              return this;
            }
          }, {
            key: "switchTo",
            value: function switchTo(next, pipe) {
              if (typeof next === "string" || next instanceof Pipe) {
                this.nextPipe = next;
              } else {
                this.next = next;
                if (pipe) {
                  this.nextPipe = pipe;
                }
              }
              return this;
            }
          }, {
            key: "push",
            value: function push(child, name) {
              child.parent = this;
              if (typeof name !== "undefined") {
                child.childName = name;
              }
              child.root = this.root || this;
              child.options = child.options || this.options;
              if (!this.children) {
                this.children = [ child ];
                this.nextAfterChildren = this.next || null;
                this.next = child;
              } else {
                this.children[this.children.length - 1].next = child;
                this.children.push(child);
              }
              child.next = this;
              return this;
            }
          } ]);
          return Context;
        }();
        var isArray = typeof Array.isArray === "function" ? Array.isArray : function(a) {
          return a instanceof Array;
        };
        function cloneRegExp(re) {
          var regexMatch = /^\/(.*)\/([gimyu]*)$/.exec(re.toString());
          return new RegExp(regexMatch[1], regexMatch[2]);
        }
        function clone(arg) {
          if ((typeof arg === "undefined" ? "undefined" : _typeof(arg)) !== "object") {
            return arg;
          }
          if (arg === null) {
            return null;
          }
          if (isArray(arg)) {
            return arg.map(clone);
          }
          if (arg instanceof Date) {
            return new Date(arg.getTime());
          }
          if (arg instanceof RegExp) {
            return cloneRegExp(arg);
          }
          var cloned = {};
          for (var name in arg) {
            if (Object.prototype.hasOwnProperty.call(arg, name)) {
              cloned[name] = clone(arg[name]);
            }
          }
          return cloned;
        }
        var DiffContext = function(_Context) {
          inherits(DiffContext, _Context);
          function DiffContext(left, right) {
            classCallCheck(this, DiffContext);
            var _this = possibleConstructorReturn(this, (DiffContext.__proto__ || Object.getPrototypeOf(DiffContext)).call(this));
            _this.left = left;
            _this.right = right;
            _this.pipe = "diff";
            return _this;
          }
          createClass(DiffContext, [ {
            key: "setResult",
            value: function setResult(result) {
              if (this.options.cloneDiffValues && (typeof result === "undefined" ? "undefined" : _typeof(result)) === "object") {
                var clone$$1 = typeof this.options.cloneDiffValues === "function" ? this.options.cloneDiffValues : clone;
                if (_typeof(result[0]) === "object") {
                  result[0] = clone$$1(result[0]);
                }
                if (_typeof(result[1]) === "object") {
                  result[1] = clone$$1(result[1]);
                }
              }
              return Context.prototype.setResult.apply(this, arguments);
            }
          } ]);
          return DiffContext;
        }(Context);
        var PatchContext = function(_Context) {
          inherits(PatchContext, _Context);
          function PatchContext(left, delta) {
            classCallCheck(this, PatchContext);
            var _this = possibleConstructorReturn(this, (PatchContext.__proto__ || Object.getPrototypeOf(PatchContext)).call(this));
            _this.left = left;
            _this.delta = delta;
            _this.pipe = "patch";
            return _this;
          }
          return PatchContext;
        }(Context);
        var ReverseContext = function(_Context) {
          inherits(ReverseContext, _Context);
          function ReverseContext(delta) {
            classCallCheck(this, ReverseContext);
            var _this = possibleConstructorReturn(this, (ReverseContext.__proto__ || Object.getPrototypeOf(ReverseContext)).call(this));
            _this.delta = delta;
            _this.pipe = "reverse";
            return _this;
          }
          return ReverseContext;
        }(Context);
        var isArray$1 = typeof Array.isArray === "function" ? Array.isArray : function(a) {
          return a instanceof Array;
        };
        var diffFilter = function trivialMatchesDiffFilter(context) {
          if (context.left === context.right) {
            context.setResult(undefined).exit();
            return;
          }
          if (typeof context.left === "undefined") {
            if (typeof context.right === "function") {
              throw new Error("functions are not supported");
            }
            context.setResult([ context.right ]).exit();
            return;
          }
          if (typeof context.right === "undefined") {
            context.setResult([ context.left, 0, 0 ]).exit();
            return;
          }
          if (typeof context.left === "function" || typeof context.right === "function") {
            throw new Error("functions are not supported");
          }
          context.leftType = context.left === null ? "null" : _typeof(context.left);
          context.rightType = context.right === null ? "null" : _typeof(context.right);
          if (context.leftType !== context.rightType) {
            context.setResult([ context.left, context.right ]).exit();
            return;
          }
          if (context.leftType === "boolean" || context.leftType === "number") {
            context.setResult([ context.left, context.right ]).exit();
            return;
          }
          if (context.leftType === "object") {
            context.leftIsArray = isArray$1(context.left);
          }
          if (context.rightType === "object") {
            context.rightIsArray = isArray$1(context.right);
          }
          if (context.leftIsArray !== context.rightIsArray) {
            context.setResult([ context.left, context.right ]).exit();
            return;
          }
          if (context.left instanceof RegExp) {
            if (context.right instanceof RegExp) {
              context.setResult([ context.left.toString(), context.right.toString() ]).exit();
            } else {
              context.setResult([ context.left, context.right ]).exit();
            }
          }
        };
        diffFilter.filterName = "trivial";
        var patchFilter = function trivialMatchesPatchFilter(context) {
          if (typeof context.delta === "undefined") {
            context.setResult(context.left).exit();
            return;
          }
          context.nested = !isArray$1(context.delta);
          if (context.nested) {
            return;
          }
          if (context.delta.length === 1) {
            context.setResult(context.delta[0]).exit();
            return;
          }
          if (context.delta.length === 2) {
            if (context.left instanceof RegExp) {
              var regexArgs = /^\/(.*)\/([gimyu]+)$/.exec(context.delta[1]);
              if (regexArgs) {
                context.setResult(new RegExp(regexArgs[1], regexArgs[2])).exit();
                return;
              }
            }
            context.setResult(context.delta[1]).exit();
            return;
          }
          if (context.delta.length === 3 && context.delta[2] === 0) {
            context.setResult(undefined).exit();
          }
        };
        patchFilter.filterName = "trivial";
        var reverseFilter = function trivialReferseFilter(context) {
          if (typeof context.delta === "undefined") {
            context.setResult(context.delta).exit();
            return;
          }
          context.nested = !isArray$1(context.delta);
          if (context.nested) {
            return;
          }
          if (context.delta.length === 1) {
            context.setResult([ context.delta[0], 0, 0 ]).exit();
            return;
          }
          if (context.delta.length === 2) {
            context.setResult([ context.delta[1], context.delta[0] ]).exit();
            return;
          }
          if (context.delta.length === 3 && context.delta[2] === 0) {
            context.setResult([ context.delta[0] ]).exit();
          }
        };
        reverseFilter.filterName = "trivial";
        function collectChildrenDiffFilter(context) {
          if (!context || !context.children) {
            return;
          }
          var length = context.children.length;
          var child = void 0;
          var result = context.result;
          for (var index = 0; index < length; index++) {
            child = context.children[index];
            if (typeof child.result === "undefined") {
              continue;
            }
            result = result || {};
            result[child.childName] = child.result;
          }
          if (result && context.leftIsArray) {
            result._t = "a";
          }
          context.setResult(result).exit();
        }
        collectChildrenDiffFilter.filterName = "collectChildren";
        function objectsDiffFilter(context) {
          if (context.leftIsArray || context.leftType !== "object") {
            return;
          }
          var name = void 0;
          var child = void 0;
          var propertyFilter = context.options.propertyFilter;
          for (name in context.left) {
            if (!Object.prototype.hasOwnProperty.call(context.left, name)) {
              continue;
            }
            if (propertyFilter && !propertyFilter(name, context)) {
              continue;
            }
            child = new DiffContext(context.left[name], context.right[name]);
            context.push(child, name);
          }
          for (name in context.right) {
            if (!Object.prototype.hasOwnProperty.call(context.right, name)) {
              continue;
            }
            if (propertyFilter && !propertyFilter(name, context)) {
              continue;
            }
            if (typeof context.left[name] === "undefined") {
              child = new DiffContext(undefined, context.right[name]);
              context.push(child, name);
            }
          }
          if (!context.children || context.children.length === 0) {
            context.setResult(undefined).exit();
            return;
          }
          context.exit();
        }
        objectsDiffFilter.filterName = "objects";
        var patchFilter$1 = function nestedPatchFilter(context) {
          if (!context.nested) {
            return;
          }
          if (context.delta._t) {
            return;
          }
          var name = void 0;
          var child = void 0;
          for (name in context.delta) {
            child = new PatchContext(context.left[name], context.delta[name]);
            context.push(child, name);
          }
          context.exit();
        };
        patchFilter$1.filterName = "objects";
        var collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {
          if (!context || !context.children) {
            return;
          }
          if (context.delta._t) {
            return;
          }
          var length = context.children.length;
          var child = void 0;
          for (var index = 0; index < length; index++) {
            child = context.children[index];
            if (Object.prototype.hasOwnProperty.call(context.left, child.childName) && child.result === undefined) {
              delete context.left[child.childName];
            } else if (context.left[child.childName] !== child.result) {
              context.left[child.childName] = child.result;
            }
          }
          context.setResult(context.left).exit();
        };
        collectChildrenPatchFilter.filterName = "collectChildren";
        var reverseFilter$1 = function nestedReverseFilter(context) {
          if (!context.nested) {
            return;
          }
          if (context.delta._t) {
            return;
          }
          var name = void 0;
          var child = void 0;
          for (name in context.delta) {
            child = new ReverseContext(context.delta[name]);
            context.push(child, name);
          }
          context.exit();
        };
        reverseFilter$1.filterName = "objects";
        function collectChildrenReverseFilter(context) {
          if (!context || !context.children) {
            return;
          }
          if (context.delta._t) {
            return;
          }
          var length = context.children.length;
          var child = void 0;
          var delta = {};
          for (var index = 0; index < length; index++) {
            child = context.children[index];
            if (delta[child.childName] !== child.result) {
              delta[child.childName] = child.result;
            }
          }
          context.setResult(delta).exit();
        }
        collectChildrenReverseFilter.filterName = "collectChildren";
        var defaultMatch = function defaultMatch(array1, array2, index1, index2) {
          return array1[index1] === array2[index2];
        };
        var lengthMatrix = function lengthMatrix(array1, array2, match, context) {
          var len1 = array1.length;
          var len2 = array2.length;
          var x = void 0, y = void 0;
          var matrix = [ len1 + 1 ];
          for (x = 0; x < len1 + 1; x++) {
            matrix[x] = [ len2 + 1 ];
            for (y = 0; y < len2 + 1; y++) {
              matrix[x][y] = 0;
            }
          }
          matrix.match = match;
          for (x = 1; x < len1 + 1; x++) {
            for (y = 1; y < len2 + 1; y++) {
              if (match(array1, array2, x - 1, y - 1, context)) {
                matrix[x][y] = matrix[x - 1][y - 1] + 1;
              } else {
                matrix[x][y] = Math.max(matrix[x - 1][y], matrix[x][y - 1]);
              }
            }
          }
          return matrix;
        };
        var backtrack = function backtrack(matrix, array1, array2, context) {
          var index1 = array1.length;
          var index2 = array2.length;
          var subsequence = {
            sequence: [],
            indices1: [],
            indices2: []
          };
          while (index1 !== 0 && index2 !== 0) {
            var sameLetter = matrix.match(array1, array2, index1 - 1, index2 - 1, context);
            if (sameLetter) {
              subsequence.sequence.unshift(array1[index1 - 1]);
              subsequence.indices1.unshift(index1 - 1);
              subsequence.indices2.unshift(index2 - 1);
              --index1;
              --index2;
            } else {
              var valueAtMatrixAbove = matrix[index1][index2 - 1];
              var valueAtMatrixLeft = matrix[index1 - 1][index2];
              if (valueAtMatrixAbove > valueAtMatrixLeft) {
                --index2;
              } else {
                --index1;
              }
            }
          }
          return subsequence;
        };
        var get$1 = function get(array1, array2, match, context) {
          var innerContext = context || {};
          var matrix = lengthMatrix(array1, array2, match || defaultMatch, innerContext);
          var result = backtrack(matrix, array1, array2, innerContext);
          if (typeof array1 === "string" && typeof array2 === "string") {
            result.sequence = result.sequence.join("");
          }
          return result;
        };
        var lcs = {
          get: get$1
        };
        var ARRAY_MOVE = 3;
        var isArray$2 = typeof Array.isArray === "function" ? Array.isArray : function(a) {
          return a instanceof Array;
        };
        var arrayIndexOf = typeof Array.prototype.indexOf === "function" ? function(array, item) {
          return array.indexOf(item);
        } : function(array, item) {
          var length = array.length;
          for (var i = 0; i < length; i++) {
            if (array[i] === item) {
              return i;
            }
          }
          return -1;
        };
        function arraysHaveMatchByRef(array1, array2, len1, len2) {
          for (var index1 = 0; index1 < len1; index1++) {
            var val1 = array1[index1];
            for (var index2 = 0; index2 < len2; index2++) {
              var val2 = array2[index2];
              if (index1 !== index2 && val1 === val2) {
                return true;
              }
            }
          }
        }
        function matchItems(array1, array2, index1, index2, context) {
          var value1 = array1[index1];
          var value2 = array2[index2];
          if (value1 === value2) {
            return true;
          }
          if ((typeof value1 === "undefined" ? "undefined" : _typeof(value1)) !== "object" || (typeof value2 === "undefined" ? "undefined" : _typeof(value2)) !== "object") {
            return false;
          }
          var objectHash = context.objectHash;
          if (!objectHash) {
            return context.matchByPosition && index1 === index2;
          }
          var hash1 = void 0;
          var hash2 = void 0;
          if (typeof index1 === "number") {
            context.hashCache1 = context.hashCache1 || [];
            hash1 = context.hashCache1[index1];
            if (typeof hash1 === "undefined") {
              context.hashCache1[index1] = hash1 = objectHash(value1, index1);
            }
          } else {
            hash1 = objectHash(value1);
          }
          if (typeof hash1 === "undefined") {
            return false;
          }
          if (typeof index2 === "number") {
            context.hashCache2 = context.hashCache2 || [];
            hash2 = context.hashCache2[index2];
            if (typeof hash2 === "undefined") {
              context.hashCache2[index2] = hash2 = objectHash(value2, index2);
            }
          } else {
            hash2 = objectHash(value2);
          }
          if (typeof hash2 === "undefined") {
            return false;
          }
          return hash1 === hash2;
        }
        var diffFilter$1 = function arraysDiffFilter(context) {
          if (!context.leftIsArray) {
            return;
          }
          var matchContext = {
            objectHash: context.options && context.options.objectHash,
            matchByPosition: context.options && context.options.matchByPosition
          };
          var commonHead = 0;
          var commonTail = 0;
          var index = void 0;
          var index1 = void 0;
          var index2 = void 0;
          var array1 = context.left;
          var array2 = context.right;
          var len1 = array1.length;
          var len2 = array2.length;
          var child = void 0;
          if (len1 > 0 && len2 > 0 && !matchContext.objectHash && typeof matchContext.matchByPosition !== "boolean") {
            matchContext.matchByPosition = !arraysHaveMatchByRef(array1, array2, len1, len2);
          }
          while (commonHead < len1 && commonHead < len2 && matchItems(array1, array2, commonHead, commonHead, matchContext)) {
            index = commonHead;
            child = new DiffContext(context.left[index], context.right[index]);
            context.push(child, index);
            commonHead++;
          }
          while (commonTail + commonHead < len1 && commonTail + commonHead < len2 && matchItems(array1, array2, len1 - 1 - commonTail, len2 - 1 - commonTail, matchContext)) {
            index1 = len1 - 1 - commonTail;
            index2 = len2 - 1 - commonTail;
            child = new DiffContext(context.left[index1], context.right[index2]);
            context.push(child, index2);
            commonTail++;
          }
          var result = void 0;
          if (commonHead + commonTail === len1) {
            if (len1 === len2) {
              context.setResult(undefined).exit();
              return;
            }
            result = result || {
              _t: "a"
            };
            for (index = commonHead; index < len2 - commonTail; index++) {
              result[index] = [ array2[index] ];
            }
            context.setResult(result).exit();
            return;
          }
          if (commonHead + commonTail === len2) {
            result = result || {
              _t: "a"
            };
            for (index = commonHead; index < len1 - commonTail; index++) {
              result["_" + index] = [ array1[index], 0, 0 ];
            }
            context.setResult(result).exit();
            return;
          }
          delete matchContext.hashCache1;
          delete matchContext.hashCache2;
          var trimmed1 = array1.slice(commonHead, len1 - commonTail);
          var trimmed2 = array2.slice(commonHead, len2 - commonTail);
          var seq = lcs.get(trimmed1, trimmed2, matchItems, matchContext);
          var removedItems = [];
          result = result || {
            _t: "a"
          };
          for (index = commonHead; index < len1 - commonTail; index++) {
            if (arrayIndexOf(seq.indices1, index - commonHead) < 0) {
              result["_" + index] = [ array1[index], 0, 0 ];
              removedItems.push(index);
            }
          }
          var detectMove = true;
          if (context.options && context.options.arrays && context.options.arrays.detectMove === false) {
            detectMove = false;
          }
          var includeValueOnMove = false;
          if (context.options && context.options.arrays && context.options.arrays.includeValueOnMove) {
            includeValueOnMove = true;
          }
          var removedItemsLength = removedItems.length;
          for (index = commonHead; index < len2 - commonTail; index++) {
            var indexOnArray2 = arrayIndexOf(seq.indices2, index - commonHead);
            if (indexOnArray2 < 0) {
              var isMove = false;
              if (detectMove && removedItemsLength > 0) {
                for (var removeItemIndex1 = 0; removeItemIndex1 < removedItemsLength; removeItemIndex1++) {
                  index1 = removedItems[removeItemIndex1];
                  if (matchItems(trimmed1, trimmed2, index1 - commonHead, index - commonHead, matchContext)) {
                    result["_" + index1].splice(1, 2, index, ARRAY_MOVE);
                    if (!includeValueOnMove) {
                      result["_" + index1][0] = "";
                    }
                    index2 = index;
                    child = new DiffContext(context.left[index1], context.right[index2]);
                    context.push(child, index2);
                    removedItems.splice(removeItemIndex1, 1);
                    isMove = true;
                    break;
                  }
                }
              }
              if (!isMove) {
                result[index] = [ array2[index] ];
              }
            } else {
              index1 = seq.indices1[indexOnArray2] + commonHead;
              index2 = seq.indices2[indexOnArray2] + commonHead;
              child = new DiffContext(context.left[index1], context.right[index2]);
              context.push(child, index2);
            }
          }
          context.setResult(result).exit();
        };
        diffFilter$1.filterName = "arrays";
        var compare = {
          numerically: function numerically(a, b) {
            return a - b;
          },
          numericallyBy: function numericallyBy(name) {
            return function(a, b) {
              return a[name] - b[name];
            };
          }
        };
        var patchFilter$2 = function nestedPatchFilter(context) {
          if (!context.nested) {
            return;
          }
          if (context.delta._t !== "a") {
            return;
          }
          var index = void 0;
          var index1 = void 0;
          var delta = context.delta;
          var array = context.left;
          var toRemove = [];
          var toInsert = [];
          var toModify = [];
          for (index in delta) {
            if (index !== "_t") {
              if (index[0] === "_") {
                if (delta[index][2] === 0 || delta[index][2] === ARRAY_MOVE) {
                  toRemove.push(parseInt(index.slice(1), 10));
                } else {
                  throw new Error("only removal or move can be applied at original array indices," + (" invalid diff type: " + delta[index][2]));
                }
              } else {
                if (delta[index].length === 1) {
                  toInsert.push({
                    index: parseInt(index, 10),
                    value: delta[index][0]
                  });
                } else {
                  toModify.push({
                    index: parseInt(index, 10),
                    delta: delta[index]
                  });
                }
              }
            }
          }
          toRemove = toRemove.sort(compare.numerically);
          for (index = toRemove.length - 1; index >= 0; index--) {
            index1 = toRemove[index];
            var indexDiff = delta["_" + index1];
            var removedValue = array.splice(index1, 1)[0];
            if (indexDiff[2] === ARRAY_MOVE) {
              toInsert.push({
                index: indexDiff[1],
                value: removedValue
              });
            }
          }
          toInsert = toInsert.sort(compare.numericallyBy("index"));
          var toInsertLength = toInsert.length;
          for (index = 0; index < toInsertLength; index++) {
            var insertion = toInsert[index];
            array.splice(insertion.index, 0, insertion.value);
          }
          var toModifyLength = toModify.length;
          var child = void 0;
          if (toModifyLength > 0) {
            for (index = 0; index < toModifyLength; index++) {
              var modification = toModify[index];
              child = new PatchContext(context.left[modification.index], modification.delta);
              context.push(child, modification.index);
            }
          }
          if (!context.children) {
            context.setResult(context.left).exit();
            return;
          }
          context.exit();
        };
        patchFilter$2.filterName = "arrays";
        var collectChildrenPatchFilter$1 = function collectChildrenPatchFilter(context) {
          if (!context || !context.children) {
            return;
          }
          if (context.delta._t !== "a") {
            return;
          }
          var length = context.children.length;
          var child = void 0;
          for (var index = 0; index < length; index++) {
            child = context.children[index];
            context.left[child.childName] = child.result;
          }
          context.setResult(context.left).exit();
        };
        collectChildrenPatchFilter$1.filterName = "arraysCollectChildren";
        var reverseFilter$2 = function arraysReverseFilter(context) {
          if (!context.nested) {
            if (context.delta[2] === ARRAY_MOVE) {
              context.newName = "_" + context.delta[1];
              context.setResult([ context.delta[0], parseInt(context.childName.substr(1), 10), ARRAY_MOVE ]).exit();
            }
            return;
          }
          if (context.delta._t !== "a") {
            return;
          }
          var name = void 0;
          var child = void 0;
          for (name in context.delta) {
            if (name === "_t") {
              continue;
            }
            child = new ReverseContext(context.delta[name]);
            context.push(child, name);
          }
          context.exit();
        };
        reverseFilter$2.filterName = "arrays";
        var reverseArrayDeltaIndex = function reverseArrayDeltaIndex(delta, index, itemDelta) {
          if (typeof index === "string" && index[0] === "_") {
            return parseInt(index.substr(1), 10);
          } else if (isArray$2(itemDelta) && itemDelta[2] === 0) {
            return "_" + index;
          }
          var reverseIndex = +index;
          for (var deltaIndex in delta) {
            var deltaItem = delta[deltaIndex];
            if (isArray$2(deltaItem)) {
              if (deltaItem[2] === ARRAY_MOVE) {
                var moveFromIndex = parseInt(deltaIndex.substr(1), 10);
                var moveToIndex = deltaItem[1];
                if (moveToIndex === +index) {
                  return moveFromIndex;
                }
                if (moveFromIndex <= reverseIndex && moveToIndex > reverseIndex) {
                  reverseIndex++;
                } else if (moveFromIndex >= reverseIndex && moveToIndex < reverseIndex) {
                  reverseIndex--;
                }
              } else if (deltaItem[2] === 0) {
                var deleteIndex = parseInt(deltaIndex.substr(1), 10);
                if (deleteIndex <= reverseIndex) {
                  reverseIndex++;
                }
              } else if (deltaItem.length === 1 && deltaIndex <= reverseIndex) {
                reverseIndex--;
              }
            }
          }
          return reverseIndex;
        };
        function collectChildrenReverseFilter$1(context) {
          if (!context || !context.children) {
            return;
          }
          if (context.delta._t !== "a") {
            return;
          }
          var length = context.children.length;
          var child = void 0;
          var delta = {
            _t: "a"
          };
          for (var index = 0; index < length; index++) {
            child = context.children[index];
            var name = child.newName;
            if (typeof name === "undefined") {
              name = reverseArrayDeltaIndex(context.delta, child.childName, child.result);
            }
            if (delta[name] !== child.result) {
              delta[name] = child.result;
            }
          }
          context.setResult(delta).exit();
        }
        collectChildrenReverseFilter$1.filterName = "arraysCollectChildren";
        var diffFilter$2 = function datesDiffFilter(context) {
          if (context.left instanceof Date) {
            if (context.right instanceof Date) {
              if (context.left.getTime() !== context.right.getTime()) {
                context.setResult([ context.left, context.right ]);
              } else {
                context.setResult(undefined);
              }
            } else {
              context.setResult([ context.left, context.right ]);
            }
            context.exit();
          } else if (context.right instanceof Date) {
            context.setResult([ context.left, context.right ]).exit();
          }
        };
        diffFilter$2.filterName = "dates";
        function createCommonjsModule(fn, module) {
          return module = {
            exports: {}
          }, fn(module, module.exports), module.exports;
        }
        var diffMatchPatch = createCommonjsModule((function(module) {
          function diff_match_patch() {
            this.Diff_Timeout = 1;
            this.Diff_EditCost = 4;
            this.Match_Threshold = .5;
            this.Match_Distance = 1e3;
            this.Patch_DeleteThreshold = .5;
            this.Patch_Margin = 4;
            this.Match_MaxBits = 32;
          }
          var DIFF_DELETE = -1;
          var DIFF_INSERT = 1;
          var DIFF_EQUAL = 0;
          diff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines, opt_deadline) {
            if (typeof opt_deadline == "undefined") {
              if (this.Diff_Timeout <= 0) {
                opt_deadline = Number.MAX_VALUE;
              } else {
                opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1e3;
              }
            }
            var deadline = opt_deadline;
            if (text1 == null || text2 == null) {
              throw new Error("Null input. (diff_main)");
            }
            if (text1 == text2) {
              if (text1) {
                return [ [ DIFF_EQUAL, text1 ] ];
              }
              return [];
            }
            if (typeof opt_checklines == "undefined") {
              opt_checklines = true;
            }
            var checklines = opt_checklines;
            var commonlength = this.diff_commonPrefix(text1, text2);
            var commonprefix = text1.substring(0, commonlength);
            text1 = text1.substring(commonlength);
            text2 = text2.substring(commonlength);
            commonlength = this.diff_commonSuffix(text1, text2);
            var commonsuffix = text1.substring(text1.length - commonlength);
            text1 = text1.substring(0, text1.length - commonlength);
            text2 = text2.substring(0, text2.length - commonlength);
            var diffs = this.diff_compute_(text1, text2, checklines, deadline);
            if (commonprefix) {
              diffs.unshift([ DIFF_EQUAL, commonprefix ]);
            }
            if (commonsuffix) {
              diffs.push([ DIFF_EQUAL, commonsuffix ]);
            }
            this.diff_cleanupMerge(diffs);
            return diffs;
          };
          diff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines, deadline) {
            var diffs;
            if (!text1) {
              return [ [ DIFF_INSERT, text2 ] ];
            }
            if (!text2) {
              return [ [ DIFF_DELETE, text1 ] ];
            }
            var longtext = text1.length > text2.length ? text1 : text2;
            var shorttext = text1.length > text2.length ? text2 : text1;
            var i = longtext.indexOf(shorttext);
            if (i != -1) {
              diffs = [ [ DIFF_INSERT, longtext.substring(0, i) ], [ DIFF_EQUAL, shorttext ], [ DIFF_INSERT, longtext.substring(i + shorttext.length) ] ];
              if (text1.length > text2.length) {
                diffs[0][0] = diffs[2][0] = DIFF_DELETE;
              }
              return diffs;
            }
            if (shorttext.length == 1) {
              return [ [ DIFF_DELETE, text1 ], [ DIFF_INSERT, text2 ] ];
            }
            var hm = this.diff_halfMatch_(text1, text2);
            if (hm) {
              var text1_a = hm[0];
              var text1_b = hm[1];
              var text2_a = hm[2];
              var text2_b = hm[3];
              var mid_common = hm[4];
              var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);
              var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);
              return diffs_a.concat([ [ DIFF_EQUAL, mid_common ] ], diffs_b);
            }
            if (checklines && text1.length > 100 && text2.length > 100) {
              return this.diff_lineMode_(text1, text2, deadline);
            }
            return this.diff_bisect_(text1, text2, deadline);
          };
          diff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {
            var a = this.diff_linesToChars_(text1, text2);
            text1 = a.chars1;
            text2 = a.chars2;
            var linearray = a.lineArray;
            var diffs = this.diff_main(text1, text2, false, deadline);
            this.diff_charsToLines_(diffs, linearray);
            this.diff_cleanupSemantic(diffs);
            diffs.push([ DIFF_EQUAL, "" ]);
            var pointer = 0;
            var count_delete = 0;
            var count_insert = 0;
            var text_delete = "";
            var text_insert = "";
            while (pointer < diffs.length) {
              switch (diffs[pointer][0]) {
               case DIFF_INSERT:
                count_insert++;
                text_insert += diffs[pointer][1];
                break;

               case DIFF_DELETE:
                count_delete++;
                text_delete += diffs[pointer][1];
                break;

               case DIFF_EQUAL:
                if (count_delete >= 1 && count_insert >= 1) {
                  diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert);
                  pointer = pointer - count_delete - count_insert;
                  var a = this.diff_main(text_delete, text_insert, false, deadline);
                  for (var j = a.length - 1; j >= 0; j--) {
                    diffs.splice(pointer, 0, a[j]);
                  }
                  pointer = pointer + a.length;
                }
                count_insert = 0;
                count_delete = 0;
                text_delete = "";
                text_insert = "";
                break;
              }
              pointer++;
            }
            diffs.pop();
            return diffs;
          };
          diff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {
            var text1_length = text1.length;
            var text2_length = text2.length;
            var max_d = Math.ceil((text1_length + text2_length) / 2);
            var v_offset = max_d;
            var v_length = 2 * max_d;
            var v1 = new Array(v_length);
            var v2 = new Array(v_length);
            for (var x = 0; x < v_length; x++) {
              v1[x] = -1;
              v2[x] = -1;
            }
            v1[v_offset + 1] = 0;
            v2[v_offset + 1] = 0;
            var delta = text1_length - text2_length;
            var front = delta % 2 != 0;
            var k1start = 0;
            var k1end = 0;
            var k2start = 0;
            var k2end = 0;
            for (var d = 0; d < max_d; d++) {
              if ((new Date).getTime() > deadline) {
                break;
              }
              for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
                var k1_offset = v_offset + k1;
                var x1;
                if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {
                  x1 = v1[k1_offset + 1];
                } else {
                  x1 = v1[k1_offset - 1] + 1;
                }
                var y1 = x1 - k1;
                while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {
                  x1++;
                  y1++;
                }
                v1[k1_offset] = x1;
                if (x1 > text1_length) {
                  k1end += 2;
                } else if (y1 > text2_length) {
                  k1start += 2;
                } else if (front) {
                  var k2_offset = v_offset + delta - k1;
                  if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
                    var x2 = text1_length - v2[k2_offset];
                    if (x1 >= x2) {
                      return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
                    }
                  }
                }
              }
              for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
                var k2_offset = v_offset + k2;
                var x2;
                if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {
                  x2 = v2[k2_offset + 1];
                } else {
                  x2 = v2[k2_offset - 1] + 1;
                }
                var y2 = x2 - k2;
                while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {
                  x2++;
                  y2++;
                }
                v2[k2_offset] = x2;
                if (x2 > text1_length) {
                  k2end += 2;
                } else if (y2 > text2_length) {
                  k2start += 2;
                } else if (!front) {
                  var k1_offset = v_offset + delta - k2;
                  if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
                    var x1 = v1[k1_offset];
                    var y1 = v_offset + x1 - k1_offset;
                    x2 = text1_length - x2;
                    if (x1 >= x2) {
                      return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);
                    }
                  }
                }
              }
            }
            return [ [ DIFF_DELETE, text1 ], [ DIFF_INSERT, text2 ] ];
          };
          diff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y, deadline) {
            var text1a = text1.substring(0, x);
            var text2a = text2.substring(0, y);
            var text1b = text1.substring(x);
            var text2b = text2.substring(y);
            var diffs = this.diff_main(text1a, text2a, false, deadline);
            var diffsb = this.diff_main(text1b, text2b, false, deadline);
            return diffs.concat(diffsb);
          };
          diff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {
            var lineArray = [];
            var lineHash = {};
            lineArray[0] = "";
            function diff_linesToCharsMunge_(text) {
              var chars = "";
              var lineStart = 0;
              var lineEnd = -1;
              var lineArrayLength = lineArray.length;
              while (lineEnd < text.length - 1) {
                lineEnd = text.indexOf("\n", lineStart);
                if (lineEnd == -1) {
                  lineEnd = text.length - 1;
                }
                var line = text.substring(lineStart, lineEnd + 1);
                lineStart = lineEnd + 1;
                if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) {
                  chars += String.fromCharCode(lineHash[line]);
                } else {
                  chars += String.fromCharCode(lineArrayLength);
                  lineHash[line] = lineArrayLength;
                  lineArray[lineArrayLength++] = line;
                }
              }
              return chars;
            }
            var chars1 = diff_linesToCharsMunge_(text1);
            var chars2 = diff_linesToCharsMunge_(text2);
            return {
              chars1,
              chars2,
              lineArray
            };
          };
          diff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {
            for (var x = 0; x < diffs.length; x++) {
              var chars = diffs[x][1];
              var text = [];
              for (var y = 0; y < chars.length; y++) {
                text[y] = lineArray[chars.charCodeAt(y)];
              }
              diffs[x][1] = text.join("");
            }
          };
          diff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {
            if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {
              return 0;
            }
            var pointermin = 0;
            var pointermax = Math.min(text1.length, text2.length);
            var pointermid = pointermax;
            var pointerstart = 0;
            while (pointermin < pointermid) {
              if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {
                pointermin = pointermid;
                pointerstart = pointermin;
              } else {
                pointermax = pointermid;
              }
              pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
            }
            return pointermid;
          };
          diff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {
            if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {
              return 0;
            }
            var pointermin = 0;
            var pointermax = Math.min(text1.length, text2.length);
            var pointermid = pointermax;
            var pointerend = 0;
            while (pointermin < pointermid) {
              if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {
                pointermin = pointermid;
                pointerend = pointermin;
              } else {
                pointermax = pointermid;
              }
              pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
            }
            return pointermid;
          };
          diff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {
            var text1_length = text1.length;
            var text2_length = text2.length;
            if (text1_length == 0 || text2_length == 0) {
              return 0;
            }
            if (text1_length > text2_length) {
              text1 = text1.substring(text1_length - text2_length);
            } else if (text1_length < text2_length) {
              text2 = text2.substring(0, text1_length);
            }
            var text_length = Math.min(text1_length, text2_length);
            if (text1 == text2) {
              return text_length;
            }
            var best = 0;
            var length = 1;
            while (true) {
              var pattern = text1.substring(text_length - length);
              var found = text2.indexOf(pattern);
              if (found == -1) {
                return best;
              }
              length += found;
              if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {
                best = length;
                length++;
              }
            }
          };
          diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {
            if (this.Diff_Timeout <= 0) {
              return null;
            }
            var longtext = text1.length > text2.length ? text1 : text2;
            var shorttext = text1.length > text2.length ? text2 : text1;
            if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
              return null;
            }
            var dmp = this;
            function diff_halfMatchI_(longtext, shorttext, i) {
              var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));
              var j = -1;
              var best_common = "";
              var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
              while ((j = shorttext.indexOf(seed, j + 1)) != -1) {
                var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), shorttext.substring(j));
                var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));
                if (best_common.length < suffixLength + prefixLength) {
                  best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);
                  best_longtext_a = longtext.substring(0, i - suffixLength);
                  best_longtext_b = longtext.substring(i + prefixLength);
                  best_shorttext_a = shorttext.substring(0, j - suffixLength);
                  best_shorttext_b = shorttext.substring(j + prefixLength);
                }
              }
              if (best_common.length * 2 >= longtext.length) {
                return [ best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common ];
              } else {
                return null;
              }
            }
            var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));
            var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));
            var hm;
            if (!hm1 && !hm2) {
              return null;
            } else if (!hm2) {
              hm = hm1;
            } else if (!hm1) {
              hm = hm2;
            } else {
              hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
            }
            var text1_a, text1_b, text2_a, text2_b;
            if (text1.length > text2.length) {
              text1_a = hm[0];
              text1_b = hm[1];
              text2_a = hm[2];
              text2_b = hm[3];
            } else {
              text2_a = hm[0];
              text2_b = hm[1];
              text1_a = hm[2];
              text1_b = hm[3];
            }
            var mid_common = hm[4];
            return [ text1_a, text1_b, text2_a, text2_b, mid_common ];
          };
          diff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {
            var changes = false;
            var equalities = [];
            var equalitiesLength = 0;
            var lastequality = null;
            var pointer = 0;
            var length_insertions1 = 0;
            var length_deletions1 = 0;
            var length_insertions2 = 0;
            var length_deletions2 = 0;
            while (pointer < diffs.length) {
              if (diffs[pointer][0] == DIFF_EQUAL) {
                equalities[equalitiesLength++] = pointer;
                length_insertions1 = length_insertions2;
                length_deletions1 = length_deletions2;
                length_insertions2 = 0;
                length_deletions2 = 0;
                lastequality = diffs[pointer][1];
              } else {
                if (diffs[pointer][0] == DIFF_INSERT) {
                  length_insertions2 += diffs[pointer][1].length;
                } else {
                  length_deletions2 += diffs[pointer][1].length;
                }
                if (lastequality && lastequality.length <= Math.max(length_insertions1, length_deletions1) && lastequality.length <= Math.max(length_insertions2, length_deletions2)) {
                  diffs.splice(equalities[equalitiesLength - 1], 0, [ DIFF_DELETE, lastequality ]);
                  diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
                  equalitiesLength--;
                  equalitiesLength--;
                  pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
                  length_insertions1 = 0;
                  length_deletions1 = 0;
                  length_insertions2 = 0;
                  length_deletions2 = 0;
                  lastequality = null;
                  changes = true;
                }
              }
              pointer++;
            }
            if (changes) {
              this.diff_cleanupMerge(diffs);
            }
            this.diff_cleanupSemanticLossless(diffs);
            pointer = 1;
            while (pointer < diffs.length) {
              if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {
                var deletion = diffs[pointer - 1][1];
                var insertion = diffs[pointer][1];
                var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);
                var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);
                if (overlap_length1 >= overlap_length2) {
                  if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {
                    diffs.splice(pointer, 0, [ DIFF_EQUAL, insertion.substring(0, overlap_length1) ]);
                    diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);
                    diffs[pointer + 1][1] = insertion.substring(overlap_length1);
                    pointer++;
                  }
                } else {
                  if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {
                    diffs.splice(pointer, 0, [ DIFF_EQUAL, deletion.substring(0, overlap_length2) ]);
                    diffs[pointer - 1][0] = DIFF_INSERT;
                    diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);
                    diffs[pointer + 1][0] = DIFF_DELETE;
                    diffs[pointer + 1][1] = deletion.substring(overlap_length2);
                    pointer++;
                  }
                }
                pointer++;
              }
              pointer++;
            }
          };
          diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {
            function diff_cleanupSemanticScore_(one, two) {
              if (!one || !two) {
                return 6;
              }
              var char1 = one.charAt(one.length - 1);
              var char2 = two.charAt(0);
              var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);
              var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);
              var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch.whitespaceRegex_);
              var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch.whitespaceRegex_);
              var lineBreak1 = whitespace1 && char1.match(diff_match_patch.linebreakRegex_);
              var lineBreak2 = whitespace2 && char2.match(diff_match_patch.linebreakRegex_);
              var blankLine1 = lineBreak1 && one.match(diff_match_patch.blanklineEndRegex_);
              var blankLine2 = lineBreak2 && two.match(diff_match_patch.blanklineStartRegex_);
              if (blankLine1 || blankLine2) {
                return 5;
              } else if (lineBreak1 || lineBreak2) {
                return 4;
              } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {
                return 3;
              } else if (whitespace1 || whitespace2) {
                return 2;
              } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {
                return 1;
              }
              return 0;
            }
            var pointer = 1;
            while (pointer < diffs.length - 1) {
              if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
                var equality1 = diffs[pointer - 1][1];
                var edit = diffs[pointer][1];
                var equality2 = diffs[pointer + 1][1];
                var commonOffset = this.diff_commonSuffix(equality1, edit);
                if (commonOffset) {
                  var commonString = edit.substring(edit.length - commonOffset);
                  equality1 = equality1.substring(0, equality1.length - commonOffset);
                  edit = commonString + edit.substring(0, edit.length - commonOffset);
                  equality2 = commonString + equality2;
                }
                var bestEquality1 = equality1;
                var bestEdit = edit;
                var bestEquality2 = equality2;
                var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);
                while (edit.charAt(0) === equality2.charAt(0)) {
                  equality1 += edit.charAt(0);
                  edit = edit.substring(1) + equality2.charAt(0);
                  equality2 = equality2.substring(1);
                  var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);
                  if (score >= bestScore) {
                    bestScore = score;
                    bestEquality1 = equality1;
                    bestEdit = edit;
                    bestEquality2 = equality2;
                  }
                }
                if (diffs[pointer - 1][1] != bestEquality1) {
                  if (bestEquality1) {
                    diffs[pointer - 1][1] = bestEquality1;
                  } else {
                    diffs.splice(pointer - 1, 1);
                    pointer--;
                  }
                  diffs[pointer][1] = bestEdit;
                  if (bestEquality2) {
                    diffs[pointer + 1][1] = bestEquality2;
                  } else {
                    diffs.splice(pointer + 1, 1);
                    pointer--;
                  }
                }
              }
              pointer++;
            }
          };
          diff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;
          diff_match_patch.whitespaceRegex_ = /\s/;
          diff_match_patch.linebreakRegex_ = /[\r\n]/;
          diff_match_patch.blanklineEndRegex_ = /\n\r?\n$/;
          diff_match_patch.blanklineStartRegex_ = /^\r?\n\r?\n/;
          diff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {
            var changes = false;
            var equalities = [];
            var equalitiesLength = 0;
            var lastequality = null;
            var pointer = 0;
            var pre_ins = false;
            var pre_del = false;
            var post_ins = false;
            var post_del = false;
            while (pointer < diffs.length) {
              if (diffs[pointer][0] == DIFF_EQUAL) {
                if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {
                  equalities[equalitiesLength++] = pointer;
                  pre_ins = post_ins;
                  pre_del = post_del;
                  lastequality = diffs[pointer][1];
                } else {
                  equalitiesLength = 0;
                  lastequality = null;
                }
                post_ins = post_del = false;
              } else {
                if (diffs[pointer][0] == DIFF_DELETE) {
                  post_del = true;
                } else {
                  post_ins = true;
                }
                if (lastequality && (pre_ins && pre_del && post_ins && post_del || lastequality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {
                  diffs.splice(equalities[equalitiesLength - 1], 0, [ DIFF_DELETE, lastequality ]);
                  diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;
                  equalitiesLength--;
                  lastequality = null;
                  if (pre_ins && pre_del) {
                    post_ins = post_del = true;
                    equalitiesLength = 0;
                  } else {
                    equalitiesLength--;
                    pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;
                    post_ins = post_del = false;
                  }
                  changes = true;
                }
              }
              pointer++;
            }
            if (changes) {
              this.diff_cleanupMerge(diffs);
            }
          };
          diff_match_patch.prototype.diff_cleanupMerge = function(diffs) {
            diffs.push([ DIFF_EQUAL, "" ]);
            var pointer = 0;
            var count_delete = 0;
            var count_insert = 0;
            var text_delete = "";
            var text_insert = "";
            var commonlength;
            while (pointer < diffs.length) {
              switch (diffs[pointer][0]) {
               case DIFF_INSERT:
                count_insert++;
                text_insert += diffs[pointer][1];
                pointer++;
                break;

               case DIFF_DELETE:
                count_delete++;
                text_delete += diffs[pointer][1];
                pointer++;
                break;

               case DIFF_EQUAL:
                if (count_delete + count_insert > 1) {
                  if (count_delete !== 0 && count_insert !== 0) {
                    commonlength = this.diff_commonPrefix(text_insert, text_delete);
                    if (commonlength !== 0) {
                      if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {
                        diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);
                      } else {
                        diffs.splice(0, 0, [ DIFF_EQUAL, text_insert.substring(0, commonlength) ]);
                        pointer++;
                      }
                      text_insert = text_insert.substring(commonlength);
                      text_delete = text_delete.substring(commonlength);
                    }
                    commonlength = this.diff_commonSuffix(text_insert, text_delete);
                    if (commonlength !== 0) {
                      diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];
                      text_insert = text_insert.substring(0, text_insert.length - commonlength);
                      text_delete = text_delete.substring(0, text_delete.length - commonlength);
                    }
                  }
                  if (count_delete === 0) {
                    diffs.splice(pointer - count_insert, count_delete + count_insert, [ DIFF_INSERT, text_insert ]);
                  } else if (count_insert === 0) {
                    diffs.splice(pointer - count_delete, count_delete + count_insert, [ DIFF_DELETE, text_delete ]);
                  } else {
                    diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert, [ DIFF_DELETE, text_delete ], [ DIFF_INSERT, text_insert ]);
                  }
                  pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
                } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {
                  diffs[pointer - 1][1] += diffs[pointer][1];
                  diffs.splice(pointer, 1);
                } else {
                  pointer++;
                }
                count_insert = 0;
                count_delete = 0;
                text_delete = "";
                text_insert = "";
                break;
              }
            }
            if (diffs[diffs.length - 1][1] === "") {
              diffs.pop();
            }
            var changes = false;
            pointer = 1;
            while (pointer < diffs.length - 1) {
              if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {
                if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {
                  diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);
                  diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
                  diffs.splice(pointer - 1, 1);
                  changes = true;
                } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {
                  diffs[pointer - 1][1] += diffs[pointer + 1][1];
                  diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];
                  diffs.splice(pointer + 1, 1);
                  changes = true;
                }
              }
              pointer++;
            }
            if (changes) {
              this.diff_cleanupMerge(diffs);
            }
          };
          diff_match_patch.prototype.diff_xIndex = function(diffs, loc) {
            var chars1 = 0;
            var chars2 = 0;
            var last_chars1 = 0;
            var last_chars2 = 0;
            var x;
            for (x = 0; x < diffs.length; x++) {
              if (diffs[x][0] !== DIFF_INSERT) {
                chars1 += diffs[x][1].length;
              }
              if (diffs[x][0] !== DIFF_DELETE) {
                chars2 += diffs[x][1].length;
              }
              if (chars1 > loc) {
                break;
              }
              last_chars1 = chars1;
              last_chars2 = chars2;
            }
            if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {
              return last_chars2;
            }
            return last_chars2 + (loc - last_chars1);
          };
          diff_match_patch.prototype.diff_prettyHtml = function(diffs) {
            var html = [];
            var pattern_amp = /&/g;
            var pattern_lt = /</g;
            var pattern_gt = />/g;
            var pattern_para = /\n/g;
            for (var x = 0; x < diffs.length; x++) {
              var op = diffs[x][0];
              var data = diffs[x][1];
              var text = data.replace(pattern_amp, "&amp;").replace(pattern_lt, "&lt;").replace(pattern_gt, "&gt;").replace(pattern_para, "&para;<br>");
              switch (op) {
               case DIFF_INSERT:
                html[x] = '<ins style="background:#e6ffe6;">' + text + "</ins>";
                break;

               case DIFF_DELETE:
                html[x] = '<del style="background:#ffe6e6;">' + text + "</del>";
                break;

               case DIFF_EQUAL:
                html[x] = "<span>" + text + "</span>";
                break;
              }
            }
            return html.join("");
          };
          diff_match_patch.prototype.diff_text1 = function(diffs) {
            var text = [];
            for (var x = 0; x < diffs.length; x++) {
              if (diffs[x][0] !== DIFF_INSERT) {
                text[x] = diffs[x][1];
              }
            }
            return text.join("");
          };
          diff_match_patch.prototype.diff_text2 = function(diffs) {
            var text = [];
            for (var x = 0; x < diffs.length; x++) {
              if (diffs[x][0] !== DIFF_DELETE) {
                text[x] = diffs[x][1];
              }
            }
            return text.join("");
          };
          diff_match_patch.prototype.diff_levenshtein = function(diffs) {
            var levenshtein = 0;
            var insertions = 0;
            var deletions = 0;
            for (var x = 0; x < diffs.length; x++) {
              var op = diffs[x][0];
              var data = diffs[x][1];
              switch (op) {
               case DIFF_INSERT:
                insertions += data.length;
                break;

               case DIFF_DELETE:
                deletions += data.length;
                break;

               case DIFF_EQUAL:
                levenshtein += Math.max(insertions, deletions);
                insertions = 0;
                deletions = 0;
                break;
              }
            }
            levenshtein += Math.max(insertions, deletions);
            return levenshtein;
          };
          diff_match_patch.prototype.diff_toDelta = function(diffs) {
            var text = [];
            for (var x = 0; x < diffs.length; x++) {
              switch (diffs[x][0]) {
               case DIFF_INSERT:
                text[x] = "+" + encodeURI(diffs[x][1]);
                break;

               case DIFF_DELETE:
                text[x] = "-" + diffs[x][1].length;
                break;

               case DIFF_EQUAL:
                text[x] = "=" + diffs[x][1].length;
                break;
              }
            }
            return text.join("\t").replace(/%20/g, " ");
          };
          diff_match_patch.prototype.diff_fromDelta = function(text1, delta) {
            var diffs = [];
            var diffsLength = 0;
            var pointer = 0;
            var tokens = delta.split(/\t/g);
            for (var x = 0; x < tokens.length; x++) {
              var param = tokens[x].substring(1);
              switch (tokens[x].charAt(0)) {
               case "+":
                try {
                  diffs[diffsLength++] = [ DIFF_INSERT, decodeURI(param) ];
                } catch (ex) {
                  throw new Error("Illegal escape in diff_fromDelta: " + param);
                }
                break;

               case "-":
               case "=":
                var n = parseInt(param, 10);
                if (isNaN(n) || n < 0) {
                  throw new Error("Invalid number in diff_fromDelta: " + param);
                }
                var text = text1.substring(pointer, pointer += n);
                if (tokens[x].charAt(0) == "=") {
                  diffs[diffsLength++] = [ DIFF_EQUAL, text ];
                } else {
                  diffs[diffsLength++] = [ DIFF_DELETE, text ];
                }
                break;

               default:
                if (tokens[x]) {
                  throw new Error("Invalid diff operation in diff_fromDelta: " + tokens[x]);
                }
              }
            }
            if (pointer != text1.length) {
              throw new Error("Delta length (" + pointer + ") does not equal source text length (" + text1.length + ").");
            }
            return diffs;
          };
          diff_match_patch.prototype.match_main = function(text, pattern, loc) {
            if (text == null || pattern == null || loc == null) {
              throw new Error("Null input. (match_main)");
            }
            loc = Math.max(0, Math.min(loc, text.length));
            if (text == pattern) {
              return 0;
            } else if (!text.length) {
              return -1;
            } else if (text.substring(loc, loc + pattern.length) == pattern) {
              return loc;
            } else {
              return this.match_bitap_(text, pattern, loc);
            }
          };
          diff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {
            if (pattern.length > this.Match_MaxBits) {
              throw new Error("Pattern too long for this browser.");
            }
            var s = this.match_alphabet_(pattern);
            var dmp = this;
            function match_bitapScore_(e, x) {
              var accuracy = e / pattern.length;
              var proximity = Math.abs(loc - x);
              if (!dmp.Match_Distance) {
                return proximity ? 1 : accuracy;
              }
              return accuracy + proximity / dmp.Match_Distance;
            }
            var score_threshold = this.Match_Threshold;
            var best_loc = text.indexOf(pattern, loc);
            if (best_loc != -1) {
              score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);
              best_loc = text.lastIndexOf(pattern, loc + pattern.length);
              if (best_loc != -1) {
                score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);
              }
            }
            var matchmask = 1 << pattern.length - 1;
            best_loc = -1;
            var bin_min, bin_mid;
            var bin_max = pattern.length + text.length;
            var last_rd;
            for (var d = 0; d < pattern.length; d++) {
              bin_min = 0;
              bin_mid = bin_max;
              while (bin_min < bin_mid) {
                if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {
                  bin_min = bin_mid;
                } else {
                  bin_max = bin_mid;
                }
                bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
              }
              bin_max = bin_mid;
              var start = Math.max(1, loc - bin_mid + 1);
              var finish = Math.min(loc + bin_mid, text.length) + pattern.length;
              var rd = Array(finish + 2);
              rd[finish + 1] = (1 << d) - 1;
              for (var j = finish; j >= start; j--) {
                var charMatch = s[text.charAt(j - 1)];
                if (d === 0) {
                  rd[j] = (rd[j + 1] << 1 | 1) & charMatch;
                } else {
                  rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];
                }
                if (rd[j] & matchmask) {
                  var score = match_bitapScore_(d, j - 1);
                  if (score <= score_threshold) {
                    score_threshold = score;
                    best_loc = j - 1;
                    if (best_loc > loc) {
                      start = Math.max(1, 2 * loc - best_loc);
                    } else {
                      break;
                    }
                  }
                }
              }
              if (match_bitapScore_(d + 1, loc) > score_threshold) {
                break;
              }
              last_rd = rd;
            }
            return best_loc;
          };
          diff_match_patch.prototype.match_alphabet_ = function(pattern) {
            var s = {};
            for (var i = 0; i < pattern.length; i++) {
              s[pattern.charAt(i)] = 0;
            }
            for (var i = 0; i < pattern.length; i++) {
              s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;
            }
            return s;
          };
          diff_match_patch.prototype.patch_addContext_ = function(patch, text) {
            if (text.length == 0) {
              return;
            }
            var pattern = text.substring(patch.start2, patch.start2 + patch.length1);
            var padding = 0;
            while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {
              padding += this.Patch_Margin;
              pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);
            }
            padding += this.Patch_Margin;
            var prefix = text.substring(patch.start2 - padding, patch.start2);
            if (prefix) {
              patch.diffs.unshift([ DIFF_EQUAL, prefix ]);
            }
            var suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding);
            if (suffix) {
              patch.diffs.push([ DIFF_EQUAL, suffix ]);
            }
            patch.start1 -= prefix.length;
            patch.start2 -= prefix.length;
            patch.length1 += prefix.length + suffix.length;
            patch.length2 += prefix.length + suffix.length;
          };
          diff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {
            var text1, diffs;
            if (typeof a == "string" && typeof opt_b == "string" && typeof opt_c == "undefined") {
              text1 = a;
              diffs = this.diff_main(text1, opt_b, true);
              if (diffs.length > 2) {
                this.diff_cleanupSemantic(diffs);
                this.diff_cleanupEfficiency(diffs);
              }
            } else if (a && typeof a == "object" && typeof opt_b == "undefined" && typeof opt_c == "undefined") {
              diffs = a;
              text1 = this.diff_text1(diffs);
            } else if (typeof a == "string" && opt_b && typeof opt_b == "object" && typeof opt_c == "undefined") {
              text1 = a;
              diffs = opt_b;
            } else if (typeof a == "string" && typeof opt_b == "string" && opt_c && typeof opt_c == "object") {
              text1 = a;
              diffs = opt_c;
            } else {
              throw new Error("Unknown call format to patch_make.");
            }
            if (diffs.length === 0) {
              return [];
            }
            var patches = [];
            var patch = new diff_match_patch.patch_obj;
            var patchDiffLength = 0;
            var char_count1 = 0;
            var char_count2 = 0;
            var prepatch_text = text1;
            var postpatch_text = text1;
            for (var x = 0; x < diffs.length; x++) {
              var diff_type = diffs[x][0];
              var diff_text = diffs[x][1];
              if (!patchDiffLength && diff_type !== DIFF_EQUAL) {
                patch.start1 = char_count1;
                patch.start2 = char_count2;
              }
              switch (diff_type) {
               case DIFF_INSERT:
                patch.diffs[patchDiffLength++] = diffs[x];
                patch.length2 += diff_text.length;
                postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
                break;

               case DIFF_DELETE:
                patch.length1 += diff_text.length;
                patch.diffs[patchDiffLength++] = diffs[x];
                postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
                break;

               case DIFF_EQUAL:
                if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {
                  patch.diffs[patchDiffLength++] = diffs[x];
                  patch.length1 += diff_text.length;
                  patch.length2 += diff_text.length;
                } else if (diff_text.length >= 2 * this.Patch_Margin) {
                  if (patchDiffLength) {
                    this.patch_addContext_(patch, prepatch_text);
                    patches.push(patch);
                    patch = new diff_match_patch.patch_obj;
                    patchDiffLength = 0;
                    prepatch_text = postpatch_text;
                    char_count1 = char_count2;
                  }
                }
                break;
              }
              if (diff_type !== DIFF_INSERT) {
                char_count1 += diff_text.length;
              }
              if (diff_type !== DIFF_DELETE) {
                char_count2 += diff_text.length;
              }
            }
            if (patchDiffLength) {
              this.patch_addContext_(patch, prepatch_text);
              patches.push(patch);
            }
            return patches;
          };
          diff_match_patch.prototype.patch_deepCopy = function(patches) {
            var patchesCopy = [];
            for (var x = 0; x < patches.length; x++) {
              var patch = patches[x];
              var patchCopy = new diff_match_patch.patch_obj;
              patchCopy.diffs = [];
              for (var y = 0; y < patch.diffs.length; y++) {
                patchCopy.diffs[y] = patch.diffs[y].slice();
              }
              patchCopy.start1 = patch.start1;
              patchCopy.start2 = patch.start2;
              patchCopy.length1 = patch.length1;
              patchCopy.length2 = patch.length2;
              patchesCopy[x] = patchCopy;
            }
            return patchesCopy;
          };
          diff_match_patch.prototype.patch_apply = function(patches, text) {
            if (patches.length == 0) {
              return [ text, [] ];
            }
            patches = this.patch_deepCopy(patches);
            var nullPadding = this.patch_addPadding(patches);
            text = nullPadding + text + nullPadding;
            this.patch_splitMax(patches);
            var delta = 0;
            var results = [];
            for (var x = 0; x < patches.length; x++) {
              var expected_loc = patches[x].start2 + delta;
              var text1 = this.diff_text1(patches[x].diffs);
              var start_loc;
              var end_loc = -1;
              if (text1.length > this.Match_MaxBits) {
                start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);
                if (start_loc != -1) {
                  end_loc = this.match_main(text, text1.substring(text1.length - this.Match_MaxBits), expected_loc + text1.length - this.Match_MaxBits);
                  if (end_loc == -1 || start_loc >= end_loc) {
                    start_loc = -1;
                  }
                }
              } else {
                start_loc = this.match_main(text, text1, expected_loc);
              }
              if (start_loc == -1) {
                results[x] = false;
                delta -= patches[x].length2 - patches[x].length1;
              } else {
                results[x] = true;
                delta = start_loc - expected_loc;
                var text2;
                if (end_loc == -1) {
                  text2 = text.substring(start_loc, start_loc + text1.length);
                } else {
                  text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);
                }
                if (text1 == text2) {
                  text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);
                } else {
                  var diffs = this.diff_main(text1, text2, false);
                  if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {
                    results[x] = false;
                  } else {
                    this.diff_cleanupSemanticLossless(diffs);
                    var index1 = 0;
                    var index2;
                    for (var y = 0; y < patches[x].diffs.length; y++) {
                      var mod = patches[x].diffs[y];
                      if (mod[0] !== DIFF_EQUAL) {
                        index2 = this.diff_xIndex(diffs, index1);
                      }
                      if (mod[0] === DIFF_INSERT) {
                        text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
                      } else if (mod[0] === DIFF_DELETE) {
                        text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(diffs, index1 + mod[1].length));
                      }
                      if (mod[0] !== DIFF_DELETE) {
                        index1 += mod[1].length;
                      }
                    }
                  }
                }
              }
            }
            text = text.substring(nullPadding.length, text.length - nullPadding.length);
            return [ text, results ];
          };
          diff_match_patch.prototype.patch_addPadding = function(patches) {
            var paddingLength = this.Patch_Margin;
            var nullPadding = "";
            for (var x = 1; x <= paddingLength; x++) {
              nullPadding += String.fromCharCode(x);
            }
            for (var x = 0; x < patches.length; x++) {
              patches[x].start1 += paddingLength;
              patches[x].start2 += paddingLength;
            }
            var patch = patches[0];
            var diffs = patch.diffs;
            if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {
              diffs.unshift([ DIFF_EQUAL, nullPadding ]);
              patch.start1 -= paddingLength;
              patch.start2 -= paddingLength;
              patch.length1 += paddingLength;
              patch.length2 += paddingLength;
            } else if (paddingLength > diffs[0][1].length) {
              var extraLength = paddingLength - diffs[0][1].length;
              diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];
              patch.start1 -= extraLength;
              patch.start2 -= extraLength;
              patch.length1 += extraLength;
              patch.length2 += extraLength;
            }
            patch = patches[patches.length - 1];
            diffs = patch.diffs;
            if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {
              diffs.push([ DIFF_EQUAL, nullPadding ]);
              patch.length1 += paddingLength;
              patch.length2 += paddingLength;
            } else if (paddingLength > diffs[diffs.length - 1][1].length) {
              var extraLength = paddingLength - diffs[diffs.length - 1][1].length;
              diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);
              patch.length1 += extraLength;
              patch.length2 += extraLength;
            }
            return nullPadding;
          };
          diff_match_patch.prototype.patch_splitMax = function(patches) {
            var patch_size = this.Match_MaxBits;
            for (var x = 0; x < patches.length; x++) {
              if (patches[x].length1 <= patch_size) {
                continue;
              }
              var bigpatch = patches[x];
              patches.splice(x--, 1);
              var start1 = bigpatch.start1;
              var start2 = bigpatch.start2;
              var precontext = "";
              while (bigpatch.diffs.length !== 0) {
                var patch = new diff_match_patch.patch_obj;
                var empty = true;
                patch.start1 = start1 - precontext.length;
                patch.start2 = start2 - precontext.length;
                if (precontext !== "") {
                  patch.length1 = patch.length2 = precontext.length;
                  patch.diffs.push([ DIFF_EQUAL, precontext ]);
                }
                while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {
                  var diff_type = bigpatch.diffs[0][0];
                  var diff_text = bigpatch.diffs[0][1];
                  if (diff_type === DIFF_INSERT) {
                    patch.length2 += diff_text.length;
                    start2 += diff_text.length;
                    patch.diffs.push(bigpatch.diffs.shift());
                    empty = false;
                  } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {
                    patch.length1 += diff_text.length;
                    start1 += diff_text.length;
                    empty = false;
                    patch.diffs.push([ diff_type, diff_text ]);
                    bigpatch.diffs.shift();
                  } else {
                    diff_text = diff_text.substring(0, patch_size - patch.length1 - this.Patch_Margin);
                    patch.length1 += diff_text.length;
                    start1 += diff_text.length;
                    if (diff_type === DIFF_EQUAL) {
                      patch.length2 += diff_text.length;
                      start2 += diff_text.length;
                    } else {
                      empty = false;
                    }
                    patch.diffs.push([ diff_type, diff_text ]);
                    if (diff_text == bigpatch.diffs[0][1]) {
                      bigpatch.diffs.shift();
                    } else {
                      bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
                    }
                  }
                }
                precontext = this.diff_text2(patch.diffs);
                precontext = precontext.substring(precontext.length - this.Patch_Margin);
                var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);
                if (postcontext !== "") {
                  patch.length1 += postcontext.length;
                  patch.length2 += postcontext.length;
                  if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {
                    patch.diffs[patch.diffs.length - 1][1] += postcontext;
                  } else {
                    patch.diffs.push([ DIFF_EQUAL, postcontext ]);
                  }
                }
                if (!empty) {
                  patches.splice(++x, 0, patch);
                }
              }
            }
          };
          diff_match_patch.prototype.patch_toText = function(patches) {
            var text = [];
            for (var x = 0; x < patches.length; x++) {
              text[x] = patches[x];
            }
            return text.join("");
          };
          diff_match_patch.prototype.patch_fromText = function(textline) {
            var patches = [];
            if (!textline) {
              return patches;
            }
            var text = textline.split("\n");
            var textPointer = 0;
            var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;
            while (textPointer < text.length) {
              var m = text[textPointer].match(patchHeader);
              if (!m) {
                throw new Error("Invalid patch string: " + text[textPointer]);
              }
              var patch = new diff_match_patch.patch_obj;
              patches.push(patch);
              patch.start1 = parseInt(m[1], 10);
              if (m[2] === "") {
                patch.start1--;
                patch.length1 = 1;
              } else if (m[2] == "0") {
                patch.length1 = 0;
              } else {
                patch.start1--;
                patch.length1 = parseInt(m[2], 10);
              }
              patch.start2 = parseInt(m[3], 10);
              if (m[4] === "") {
                patch.start2--;
                patch.length2 = 1;
              } else if (m[4] == "0") {
                patch.length2 = 0;
              } else {
                patch.start2--;
                patch.length2 = parseInt(m[4], 10);
              }
              textPointer++;
              while (textPointer < text.length) {
                var sign = text[textPointer].charAt(0);
                try {
                  var line = decodeURI(text[textPointer].substring(1));
                } catch (ex) {
                  throw new Error("Illegal escape in patch_fromText: " + line);
                }
                if (sign == "-") {
                  patch.diffs.push([ DIFF_DELETE, line ]);
                } else if (sign == "+") {
                  patch.diffs.push([ DIFF_INSERT, line ]);
                } else if (sign == " ") {
                  patch.diffs.push([ DIFF_EQUAL, line ]);
                } else if (sign == "@") {
                  break;
                } else if (sign === "") {} else {
                  throw new Error('Invalid patch mode "' + sign + '" in: ' + line);
                }
                textPointer++;
              }
            }
            return patches;
          };
          diff_match_patch.patch_obj = function() {
            this.diffs = [];
            this.start1 = null;
            this.start2 = null;
            this.length1 = 0;
            this.length2 = 0;
          };
          diff_match_patch.patch_obj.prototype.toString = function() {
            var coords1, coords2;
            if (this.length1 === 0) {
              coords1 = this.start1 + ",0";
            } else if (this.length1 == 1) {
              coords1 = this.start1 + 1;
            } else {
              coords1 = this.start1 + 1 + "," + this.length1;
            }
            if (this.length2 === 0) {
              coords2 = this.start2 + ",0";
            } else if (this.length2 == 1) {
              coords2 = this.start2 + 1;
            } else {
              coords2 = this.start2 + 1 + "," + this.length2;
            }
            var text = [ "@@ -" + coords1 + " +" + coords2 + " @@\n" ];
            var op;
            for (var x = 0; x < this.diffs.length; x++) {
              switch (this.diffs[x][0]) {
               case DIFF_INSERT:
                op = "+";
                break;

               case DIFF_DELETE:
                op = "-";
                break;

               case DIFF_EQUAL:
                op = " ";
                break;
              }
              text[x + 1] = op + encodeURI(this.diffs[x][1]) + "\n";
            }
            return text.join("").replace(/%20/g, " ");
          };
          module.exports = diff_match_patch;
          module.exports["diff_match_patch"] = diff_match_patch;
          module.exports["DIFF_DELETE"] = DIFF_DELETE;
          module.exports["DIFF_INSERT"] = DIFF_INSERT;
          module.exports["DIFF_EQUAL"] = DIFF_EQUAL;
        }));
        var TEXT_DIFF = 2;
        var DEFAULT_MIN_LENGTH = 60;
        var cachedDiffPatch = null;
        var getDiffMatchPatch = function getDiffMatchPatch(required) {
          if (!cachedDiffPatch) {
            var instance = void 0;
            if (typeof diff_match_patch !== "undefined") {
              instance = typeof diff_match_patch === "function" ? new diff_match_patch : new diff_match_patch.diff_match_patch;
            } else if (diffMatchPatch) {
              try {
                instance = diffMatchPatch && new diffMatchPatch;
              } catch (err) {
                instance = null;
              }
            }
            if (!instance) {
              if (!required) {
                return null;
              }
              var error = new Error("text diff_match_patch library not found");
              error.diff_match_patch_not_found = true;
              throw error;
            }
            cachedDiffPatch = {
              diff: function diff(txt1, txt2) {
                return instance.patch_toText(instance.patch_make(txt1, txt2));
              },
              patch: function patch(txt1, _patch) {
                var results = instance.patch_apply(instance.patch_fromText(_patch), txt1);
                for (var i = 0; i < results[1].length; i++) {
                  if (!results[1][i]) {
                    var _error = new Error("text patch failed");
                    _error.textPatchFailed = true;
                  }
                }
                return results[0];
              }
            };
          }
          return cachedDiffPatch;
        };
        var diffFilter$3 = function textsDiffFilter(context) {
          if (context.leftType !== "string") {
            return;
          }
          var minLength = context.options && context.options.textDiff && context.options.textDiff.minLength || DEFAULT_MIN_LENGTH;
          if (context.left.length < minLength || context.right.length < minLength) {
            context.setResult([ context.left, context.right ]).exit();
            return;
          }
          var diffMatchPatch$$1 = getDiffMatchPatch();
          if (!diffMatchPatch$$1) {
            context.setResult([ context.left, context.right ]).exit();
            return;
          }
          var diff = diffMatchPatch$$1.diff;
          context.setResult([ diff(context.left, context.right), 0, TEXT_DIFF ]).exit();
        };
        diffFilter$3.filterName = "texts";
        var patchFilter$3 = function textsPatchFilter(context) {
          if (context.nested) {
            return;
          }
          if (context.delta[2] !== TEXT_DIFF) {
            return;
          }
          var patch = getDiffMatchPatch(true).patch;
          context.setResult(patch(context.left, context.delta[0])).exit();
        };
        patchFilter$3.filterName = "texts";
        var textDeltaReverse = function textDeltaReverse(delta) {
          var i = void 0;
          var l = void 0;
          var lines = void 0;
          var line = void 0;
          var lineTmp = void 0;
          var header = null;
          var headerRegex = /^@@ +-(\d+),(\d+) +\+(\d+),(\d+) +@@$/;
          var lineHeader = void 0;
          lines = delta.split("\n");
          for (i = 0, l = lines.length; i < l; i++) {
            line = lines[i];
            var lineStart = line.slice(0, 1);
            if (lineStart === "@") {
              header = headerRegex.exec(line);
              lineHeader = i;
              lines[lineHeader] = "@@ -" + header[3] + "," + header[4] + " +" + header[1] + "," + header[2] + " @@";
            } else if (lineStart === "+") {
              lines[i] = "-" + lines[i].slice(1);
              if (lines[i - 1].slice(0, 1) === "+") {
                lineTmp = lines[i];
                lines[i] = lines[i - 1];
                lines[i - 1] = lineTmp;
              }
            } else if (lineStart === "-") {
              lines[i] = "+" + lines[i].slice(1);
            }
          }
          return lines.join("\n");
        };
        var reverseFilter$3 = function textsReverseFilter(context) {
          if (context.nested) {
            return;
          }
          if (context.delta[2] !== TEXT_DIFF) {
            return;
          }
          context.setResult([ textDeltaReverse(context.delta[0]), 0, TEXT_DIFF ]).exit();
        };
        reverseFilter$3.filterName = "texts";
        var DiffPatcher = function() {
          function DiffPatcher(options) {
            classCallCheck(this, DiffPatcher);
            this.processor = new Processor(options);
            this.processor.pipe(new Pipe("diff").append(collectChildrenDiffFilter, diffFilter, diffFilter$2, diffFilter$3, objectsDiffFilter, diffFilter$1).shouldHaveResult());
            this.processor.pipe(new Pipe("patch").append(collectChildrenPatchFilter, collectChildrenPatchFilter$1, patchFilter, patchFilter$3, patchFilter$1, patchFilter$2).shouldHaveResult());
            this.processor.pipe(new Pipe("reverse").append(collectChildrenReverseFilter, collectChildrenReverseFilter$1, reverseFilter, reverseFilter$3, reverseFilter$1, reverseFilter$2).shouldHaveResult());
          }
          createClass(DiffPatcher, [ {
            key: "options",
            value: function options() {
              var _processor;
              return (_processor = this.processor).options.apply(_processor, arguments);
            }
          }, {
            key: "diff",
            value: function diff(left, right) {
              return this.processor.process(new DiffContext(left, right));
            }
          }, {
            key: "patch",
            value: function patch(left, delta) {
              return this.processor.process(new PatchContext(left, delta));
            }
          }, {
            key: "reverse",
            value: function reverse(delta) {
              return this.processor.process(new ReverseContext(delta));
            }
          }, {
            key: "unpatch",
            value: function unpatch(right, delta) {
              return this.patch(right, this.reverse(delta));
            }
          }, {
            key: "clone",
            value: function clone$$1(value) {
              return clone(value);
            }
          } ]);
          return DiffPatcher;
        }();
        var isArray$3 = typeof Array.isArray === "function" ? Array.isArray : function(a) {
          return a instanceof Array;
        };
        var getObjectKeys = typeof Object.keys === "function" ? function(obj) {
          return Object.keys(obj);
        } : function(obj) {
          var names = [];
          for (var property in obj) {
            if (Object.prototype.hasOwnProperty.call(obj, property)) {
              names.push(property);
            }
          }
          return names;
        };
        var trimUnderscore = function trimUnderscore(str) {
          if (str.substr(0, 1) === "_") {
            return str.slice(1);
          }
          return str;
        };
        var arrayKeyToSortNumber = function arrayKeyToSortNumber(key) {
          if (key === "_t") {
            return -1;
          } else {
            if (key.substr(0, 1) === "_") {
              return parseInt(key.slice(1), 10);
            } else {
              return parseInt(key, 10) + .1;
            }
          }
        };
        var arrayKeyComparer = function arrayKeyComparer(key1, key2) {
          return arrayKeyToSortNumber(key1) - arrayKeyToSortNumber(key2);
        };
        var BaseFormatter = function() {
          function BaseFormatter() {
            classCallCheck(this, BaseFormatter);
          }
          createClass(BaseFormatter, [ {
            key: "format",
            value: function format(delta, left) {
              var context = {};
              this.prepareContext(context);
              this.recurse(context, delta, left);
              return this.finalize(context);
            }
          }, {
            key: "prepareContext",
            value: function prepareContext(context) {
              context.buffer = [];
              context.out = function() {
                var _buffer;
                (_buffer = this.buffer).push.apply(_buffer, arguments);
              };
            }
          }, {
            key: "typeFormattterNotFound",
            value: function typeFormattterNotFound(context, deltaType) {
              throw new Error("cannot format delta type: " + deltaType);
            }
          }, {
            key: "typeFormattterErrorFormatter",
            value: function typeFormattterErrorFormatter(context, err) {
              return err.toString();
            }
          }, {
            key: "finalize",
            value: function finalize(_ref) {
              var buffer = _ref.buffer;
              if (isArray$3(buffer)) {
                return buffer.join("");
              }
            }
          }, {
            key: "recurse",
            value: function recurse(context, delta, left, key, leftKey, movedFrom, isLast) {
              var useMoveOriginHere = delta && movedFrom;
              var leftValue = useMoveOriginHere ? movedFrom.value : left;
              if (typeof delta === "undefined" && typeof key === "undefined") {
                return undefined;
              }
              var type = this.getDeltaType(delta, movedFrom);
              var nodeType = type === "node" ? delta._t === "a" ? "array" : "object" : "";
              if (typeof key !== "undefined") {
                this.nodeBegin(context, key, leftKey, type, nodeType, isLast);
              } else {
                this.rootBegin(context, type, nodeType);
              }
              var typeFormattter = void 0;
              try {
                typeFormattter = this["format_" + type] || this.typeFormattterNotFound(context, type);
                typeFormattter.call(this, context, delta, leftValue, key, leftKey, movedFrom);
              } catch (err) {
                this.typeFormattterErrorFormatter(context, err, delta, leftValue, key, leftKey, movedFrom);
                if (typeof console !== "undefined" && console.error) {
                  console.error(err.stack);
                }
              }
              if (typeof key !== "undefined") {
                this.nodeEnd(context, key, leftKey, type, nodeType, isLast);
              } else {
                this.rootEnd(context, type, nodeType);
              }
            }
          }, {
            key: "formatDeltaChildren",
            value: function formatDeltaChildren(context, delta, left) {
              var self = this;
              this.forEachDeltaKey(delta, left, (function(key, leftKey, movedFrom, isLast) {
                self.recurse(context, delta[key], left ? left[leftKey] : undefined, key, leftKey, movedFrom, isLast);
              }));
            }
          }, {
            key: "forEachDeltaKey",
            value: function forEachDeltaKey(delta, left, fn) {
              var keys = getObjectKeys(delta);
              var arrayKeys = delta._t === "a";
              var moveDestinations = {};
              var name = void 0;
              if (typeof left !== "undefined") {
                for (name in left) {
                  if (Object.prototype.hasOwnProperty.call(left, name)) {
                    if (typeof delta[name] === "undefined" && (!arrayKeys || typeof delta["_" + name] === "undefined")) {
                      keys.push(name);
                    }
                  }
                }
              }
              for (name in delta) {
                if (Object.prototype.hasOwnProperty.call(delta, name)) {
                  var value = delta[name];
                  if (isArray$3(value) && value[2] === 3) {
                    moveDestinations[value[1].toString()] = {
                      key: name,
                      value: left && left[parseInt(name.substr(1))]
                    };
                    if (this.includeMoveDestinations !== false) {
                      if (typeof left === "undefined" && typeof delta[value[1]] === "undefined") {
                        keys.push(value[1].toString());
                      }
                    }
                  }
                }
              }
              if (arrayKeys) {
                keys.sort(arrayKeyComparer);
              } else {
                keys.sort();
              }
              for (var index = 0, length = keys.length; index < length; index++) {
                var key = keys[index];
                if (arrayKeys && key === "_t") {
                  continue;
                }
                var leftKey = arrayKeys ? typeof key === "number" ? key : parseInt(trimUnderscore(key), 10) : key;
                var isLast = index === length - 1;
                fn(key, leftKey, moveDestinations[leftKey], isLast);
              }
            }
          }, {
            key: "getDeltaType",
            value: function getDeltaType(delta, movedFrom) {
              if (typeof delta === "undefined") {
                if (typeof movedFrom !== "undefined") {
                  return "movedestination";
                }
                return "unchanged";
              }
              if (isArray$3(delta)) {
                if (delta.length === 1) {
                  return "added";
                }
                if (delta.length === 2) {
                  return "modified";
                }
                if (delta.length === 3 && delta[2] === 0) {
                  return "deleted";
                }
                if (delta.length === 3 && delta[2] === 2) {
                  return "textdiff";
                }
                if (delta.length === 3 && delta[2] === 3) {
                  return "moved";
                }
              } else if ((typeof delta === "undefined" ? "undefined" : _typeof(delta)) === "object") {
                return "node";
              }
              return "unknown";
            }
          }, {
            key: "parseTextDiff",
            value: function parseTextDiff(value) {
              var output = [];
              var lines = value.split("\n@@ ");
              for (var i = 0, l = lines.length; i < l; i++) {
                var line = lines[i];
                var lineOutput = {
                  pieces: []
                };
                var location = /^(?:@@ )?[-+]?(\d+),(\d+)/.exec(line).slice(1);
                lineOutput.location = {
                  line: location[0],
                  chr: location[1]
                };
                var pieces = line.split("\n").slice(1);
                for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {
                  var piece = pieces[pieceIndex];
                  if (!piece.length) {
                    continue;
                  }
                  var pieceOutput = {
                    type: "context"
                  };
                  if (piece.substr(0, 1) === "+") {
                    pieceOutput.type = "added";
                  } else if (piece.substr(0, 1) === "-") {
                    pieceOutput.type = "deleted";
                  }
                  pieceOutput.text = piece.slice(1);
                  lineOutput.pieces.push(pieceOutput);
                }
                output.push(lineOutput);
              }
              return output;
            }
          } ]);
          return BaseFormatter;
        }();
        var base = Object.freeze({
          default: BaseFormatter
        });
        var HtmlFormatter = function(_BaseFormatter) {
          inherits(HtmlFormatter, _BaseFormatter);
          function HtmlFormatter() {
            classCallCheck(this, HtmlFormatter);
            return possibleConstructorReturn(this, (HtmlFormatter.__proto__ || Object.getPrototypeOf(HtmlFormatter)).apply(this, arguments));
          }
          createClass(HtmlFormatter, [ {
            key: "typeFormattterErrorFormatter",
            value: function typeFormattterErrorFormatter(context, err) {
              context.out('<pre class="jsondiffpatch-error">' + err + "</pre>");
            }
          }, {
            key: "formatValue",
            value: function formatValue(context, value) {
              context.out("<pre>" + htmlEscape(JSON.stringify(value, null, 2)) + "</pre>");
            }
          }, {
            key: "formatTextDiffString",
            value: function formatTextDiffString(context, value) {
              var lines = this.parseTextDiff(value);
              context.out('<ul class="jsondiffpatch-textdiff">');
              for (var i = 0, l = lines.length; i < l; i++) {
                var line = lines[i];
                context.out('<li><div class="jsondiffpatch-textdiff-location">' + ('<span class="jsondiffpatch-textdiff-line-number">' + line.location.line + '</span><span class="jsondiffpatch-textdiff-char">' + line.location.chr + '</span></div><div class="jsondiffpatch-textdiff-line">'));
                var pieces = line.pieces;
                for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {
                  var piece = pieces[pieceIndex];
                  context.out('<span class="jsondiffpatch-textdiff-' + piece.type + '">' + htmlEscape(decodeURI(piece.text)) + "</span>");
                }
                context.out("</div></li>");
              }
              context.out("</ul>");
            }
          }, {
            key: "rootBegin",
            value: function rootBegin(context, type, nodeType) {
              var nodeClass = "jsondiffpatch-" + type + (nodeType ? " jsondiffpatch-child-node-type-" + nodeType : "");
              context.out('<div class="jsondiffpatch-delta ' + nodeClass + '">');
            }
          }, {
            key: "rootEnd",
            value: function rootEnd(context) {
              context.out("</div>" + (context.hasArrows ? '<script type="text/javascript">setTimeout(' + (adjustArrows.toString() + ",10);<\/script>") : ""));
            }
          }, {
            key: "nodeBegin",
            value: function nodeBegin(context, key, leftKey, type, nodeType) {
              var nodeClass = "jsondiffpatch-" + type + (nodeType ? " jsondiffpatch-child-node-type-" + nodeType : "");
              context.out('<li class="' + nodeClass + '" data-key="' + leftKey + '">' + ('<div class="jsondiffpatch-property-name">' + leftKey + "</div>"));
            }
          }, {
            key: "nodeEnd",
            value: function nodeEnd(context) {
              context.out("</li>");
            }
          }, {
            key: "format_unchanged",
            value: function format_unchanged(context, delta, left) {
              if (typeof left === "undefined") {
                return;
              }
              context.out('<div class="jsondiffpatch-value">');
              this.formatValue(context, left);
              context.out("</div>");
            }
          }, {
            key: "format_movedestination",
            value: function format_movedestination(context, delta, left) {
              if (typeof left === "undefined") {
                return;
              }
              context.out('<div class="jsondiffpatch-value">');
              this.formatValue(context, left);
              context.out("</div>");
            }
          }, {
            key: "format_node",
            value: function format_node(context, delta, left) {
              var nodeType = delta._t === "a" ? "array" : "object";
              context.out('<ul class="jsondiffpatch-node jsondiffpatch-node-type-' + nodeType + '">');
              this.formatDeltaChildren(context, delta, left);
              context.out("</ul>");
            }
          }, {
            key: "format_added",
            value: function format_added(context, delta) {
              context.out('<div class="jsondiffpatch-value">');
              this.formatValue(context, delta[0]);
              context.out("</div>");
            }
          }, {
            key: "format_modified",
            value: function format_modified(context, delta) {
              context.out('<div class="jsondiffpatch-value jsondiffpatch-left-value">');
              this.formatValue(context, delta[0]);
              context.out("</div>" + '<div class="jsondiffpatch-value jsondiffpatch-right-value">');
              this.formatValue(context, delta[1]);
              context.out("</div>");
            }
          }, {
            key: "format_deleted",
            value: function format_deleted(context, delta) {
              context.out('<div class="jsondiffpatch-value">');
              this.formatValue(context, delta[0]);
              context.out("</div>");
            }
          }, {
            key: "format_moved",
            value: function format_moved(context, delta) {
              context.out('<div class="jsondiffpatch-value">');
              this.formatValue(context, delta[0]);
              context.out('</div><div class="jsondiffpatch-moved-destination">' + delta[1] + "</div>");
              context.out('<div class="jsondiffpatch-arrow" ' + 'style="position: relative; left: -34px;">\n          <svg width="30" height="60" ' + 'style="position: absolute; display: none;">\n          <defs>\n              <marker id="markerArrow" markerWidth="8" markerHeight="8"\n                 refx="2" refy="4"\n                     orient="auto" markerUnits="userSpaceOnUse">\n                  <path d="M1,1 L1,7 L7,4 L1,1" style="fill: #339;" />\n              </marker>\n          </defs>\n          <path d="M30,0 Q-10,25 26,50"\n            style="stroke: #88f; stroke-width: 2px; fill: none; ' + 'stroke-opacity: 0.5; marker-end: url(#markerArrow);"\n          ></path>\n          </svg>\n      </div>');
              context.hasArrows = true;
            }
          }, {
            key: "format_textdiff",
            value: function format_textdiff(context, delta) {
              context.out('<div class="jsondiffpatch-value">');
              this.formatTextDiffString(context, delta[0]);
              context.out("</div>");
            }
          } ]);
          return HtmlFormatter;
        }(BaseFormatter);
        function htmlEscape(text) {
          var html = text;
          var replacements = [ [ /&/g, "&amp;" ], [ /</g, "&lt;" ], [ />/g, "&gt;" ], [ /'/g, "&apos;" ], [ /"/g, "&quot;" ] ];
          for (var i = 0; i < replacements.length; i++) {
            html = html.replace(replacements[i][0], replacements[i][1]);
          }
          return html;
        }
        var adjustArrows = function jsondiffpatchHtmlFormatterAdjustArrows(nodeArg) {
          var node = nodeArg || document;
          var getElementText = function getElementText(_ref) {
            var textContent = _ref.textContent, innerText = _ref.innerText;
            return textContent || innerText;
          };
          var eachByQuery = function eachByQuery(el, query, fn) {
            var elems = el.querySelectorAll(query);
            for (var i = 0, l = elems.length; i < l; i++) {
              fn(elems[i]);
            }
          };
          var eachChildren = function eachChildren(_ref2, fn) {
            var children = _ref2.children;
            for (var i = 0, l = children.length; i < l; i++) {
              fn(children[i], i);
            }
          };
          eachByQuery(node, ".jsondiffpatch-arrow", (function(_ref3) {
            var parentNode = _ref3.parentNode, children = _ref3.children, style = _ref3.style;
            var arrowParent = parentNode;
            var svg = children[0];
            var path = svg.children[1];
            svg.style.display = "none";
            var destination = getElementText(arrowParent.querySelector(".jsondiffpatch-moved-destination"));
            var container = arrowParent.parentNode;
            var destinationElem = void 0;
            eachChildren(container, (function(child) {
              if (child.getAttribute("data-key") === destination) {
                destinationElem = child;
              }
            }));
            if (!destinationElem) {
              return;
            }
            try {
              var distance = destinationElem.offsetTop - arrowParent.offsetTop;
              svg.setAttribute("height", Math.abs(distance) + 6);
              style.top = -8 + (distance > 0 ? 0 : distance) + "px";
              var curve = distance > 0 ? "M30,0 Q-10," + Math.round(distance / 2) + " 26," + (distance - 4) : "M30," + -distance + " Q-10," + Math.round(-distance / 2) + " 26,4";
              path.setAttribute("d", curve);
              svg.style.display = "";
            } catch (err) {}
          }));
        };
        var showUnchanged = function showUnchanged(show, node, delay) {
          var el = node || document.body;
          var prefix = "jsondiffpatch-unchanged-";
          var classes = {
            showing: prefix + "showing",
            hiding: prefix + "hiding",
            visible: prefix + "visible",
            hidden: prefix + "hidden"
          };
          var list = el.classList;
          if (!list) {
            return;
          }
          if (!delay) {
            list.remove(classes.showing);
            list.remove(classes.hiding);
            list.remove(classes.visible);
            list.remove(classes.hidden);
            if (show === false) {
              list.add(classes.hidden);
            }
            return;
          }
          if (show === false) {
            list.remove(classes.showing);
            list.add(classes.visible);
            setTimeout((function() {
              list.add(classes.hiding);
            }), 10);
          } else {
            list.remove(classes.hiding);
            list.add(classes.showing);
            list.remove(classes.hidden);
          }
          var intervalId = setInterval((function() {
            adjustArrows(el);
          }), 100);
          setTimeout((function() {
            list.remove(classes.showing);
            list.remove(classes.hiding);
            if (show === false) {
              list.add(classes.hidden);
              list.remove(classes.visible);
            } else {
              list.add(classes.visible);
              list.remove(classes.hidden);
            }
            setTimeout((function() {
              list.remove(classes.visible);
              clearInterval(intervalId);
            }), delay + 400);
          }), delay);
        };
        var hideUnchanged = function hideUnchanged(node, delay) {
          return showUnchanged(false, node, delay);
        };
        var defaultInstance = void 0;
        function format(delta, left) {
          if (!defaultInstance) {
            defaultInstance = new HtmlFormatter;
          }
          return defaultInstance.format(delta, left);
        }
        var html = Object.freeze({
          showUnchanged,
          hideUnchanged,
          default: HtmlFormatter,
          format
        });
        var AnnotatedFormatter = function(_BaseFormatter) {
          inherits(AnnotatedFormatter, _BaseFormatter);
          function AnnotatedFormatter() {
            classCallCheck(this, AnnotatedFormatter);
            var _this = possibleConstructorReturn(this, (AnnotatedFormatter.__proto__ || Object.getPrototypeOf(AnnotatedFormatter)).call(this));
            _this.includeMoveDestinations = false;
            return _this;
          }
          createClass(AnnotatedFormatter, [ {
            key: "prepareContext",
            value: function prepareContext(context) {
              get(AnnotatedFormatter.prototype.__proto__ || Object.getPrototypeOf(AnnotatedFormatter.prototype), "prepareContext", this).call(this, context);
              context.indent = function(levels) {
                this.indentLevel = (this.indentLevel || 0) + (typeof levels === "undefined" ? 1 : levels);
                this.indentPad = new Array(this.indentLevel + 1).join("&nbsp;&nbsp;");
              };
              context.row = function(json, htmlNote) {
                context.out('<tr><td style="white-space: nowrap;">' + '<pre class="jsondiffpatch-annotated-indent"' + ' style="display: inline-block">');
                context.out(context.indentPad);
                context.out('</pre><pre style="display: inline-block">');
                context.out(json);
                context.out('</pre></td><td class="jsondiffpatch-delta-note"><div>');
                context.out(htmlNote);
                context.out("</div></td></tr>");
              };
            }
          }, {
            key: "typeFormattterErrorFormatter",
            value: function typeFormattterErrorFormatter(context, err) {
              context.row("", '<pre class="jsondiffpatch-error">' + err + "</pre>");
            }
          }, {
            key: "formatTextDiffString",
            value: function formatTextDiffString(context, value) {
              var lines = this.parseTextDiff(value);
              context.out('<ul class="jsondiffpatch-textdiff">');
              for (var i = 0, l = lines.length; i < l; i++) {
                var line = lines[i];
                context.out('<li><div class="jsondiffpatch-textdiff-location">' + ('<span class="jsondiffpatch-textdiff-line-number">' + line.location.line + '</span><span class="jsondiffpatch-textdiff-char">' + line.location.chr + '</span></div><div class="jsondiffpatch-textdiff-line">'));
                var pieces = line.pieces;
                for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {
                  var piece = pieces[pieceIndex];
                  context.out('<span class="jsondiffpatch-textdiff-' + piece.type + '">' + piece.text + "</span>");
                }
                context.out("</div></li>");
              }
              context.out("</ul>");
            }
          }, {
            key: "rootBegin",
            value: function rootBegin(context, type, nodeType) {
              context.out('<table class="jsondiffpatch-annotated-delta">');
              if (type === "node") {
                context.row("{");
                context.indent();
              }
              if (nodeType === "array") {
                context.row('"_t": "a",', "Array delta (member names indicate array indices)");
              }
            }
          }, {
            key: "rootEnd",
            value: function rootEnd(context, type) {
              if (type === "node") {
                context.indent(-1);
                context.row("}");
              }
              context.out("</table>");
            }
          }, {
            key: "nodeBegin",
            value: function nodeBegin(context, key, leftKey, type, nodeType) {
              context.row("&quot;" + key + "&quot;: {");
              if (type === "node") {
                context.indent();
              }
              if (nodeType === "array") {
                context.row('"_t": "a",', "Array delta (member names indicate array indices)");
              }
            }
          }, {
            key: "nodeEnd",
            value: function nodeEnd(context, key, leftKey, type, nodeType, isLast) {
              if (type === "node") {
                context.indent(-1);
              }
              context.row("}" + (isLast ? "" : ","));
            }
          }, {
            key: "format_unchanged",
            value: function format_unchanged() {}
          }, {
            key: "format_movedestination",
            value: function format_movedestination() {}
          }, {
            key: "format_node",
            value: function format_node(context, delta, left) {
              this.formatDeltaChildren(context, delta, left);
            }
          } ]);
          return AnnotatedFormatter;
        }(BaseFormatter);
        var wrapPropertyName = function wrapPropertyName(name) {
          return '<pre style="display:inline-block">&quot;' + name + "&quot;</pre>";
        };
        var deltaAnnotations = {
          added: function added(delta, left, key, leftKey) {
            var formatLegend = " <pre>([newValue])</pre>";
            if (typeof leftKey === "undefined") {
              return "new value" + formatLegend;
            }
            if (typeof leftKey === "number") {
              return "insert at index " + leftKey + formatLegend;
            }
            return "add property " + wrapPropertyName(leftKey) + formatLegend;
          },
          modified: function modified(delta, left, key, leftKey) {
            var formatLegend = " <pre>([previousValue, newValue])</pre>";
            if (typeof leftKey === "undefined") {
              return "modify value" + formatLegend;
            }
            if (typeof leftKey === "number") {
              return "modify at index " + leftKey + formatLegend;
            }
            return "modify property " + wrapPropertyName(leftKey) + formatLegend;
          },
          deleted: function deleted(delta, left, key, leftKey) {
            var formatLegend = " <pre>([previousValue, 0, 0])</pre>";
            if (typeof leftKey === "undefined") {
              return "delete value" + formatLegend;
            }
            if (typeof leftKey === "number") {
              return "remove index " + leftKey + formatLegend;
            }
            return "delete property " + wrapPropertyName(leftKey) + formatLegend;
          },
          moved: function moved(delta, left, key, leftKey) {
            return 'move from <span title="(position to remove at original state)">' + ("index " + leftKey + '</span> to <span title="(position to insert at final') + (' state)">index ' + delta[1] + "</span>");
          },
          textdiff: function textdiff(delta, left, key, leftKey) {
            var location = typeof leftKey === "undefined" ? "" : typeof leftKey === "number" ? " at index " + leftKey : " at property " + wrapPropertyName(leftKey);
            return "text diff" + location + ', format is <a href="https://code.google.com/' + 'p/google-diff-match-patch/wiki/Unidiff">a variation of Unidiff</a>';
          }
        };
        var formatAnyChange = function formatAnyChange(context, delta) {
          var deltaType = this.getDeltaType(delta);
          var annotator = deltaAnnotations[deltaType];
          var htmlNote = annotator && annotator.apply(annotator, Array.prototype.slice.call(arguments, 1));
          var json = JSON.stringify(delta, null, 2);
          if (deltaType === "textdiff") {
            json = json.split("\\n").join('\\n"+\n   "');
          }
          context.indent();
          context.row(json, htmlNote);
          context.indent(-1);
        };
        AnnotatedFormatter.prototype.format_added = formatAnyChange;
        AnnotatedFormatter.prototype.format_modified = formatAnyChange;
        AnnotatedFormatter.prototype.format_deleted = formatAnyChange;
        AnnotatedFormatter.prototype.format_moved = formatAnyChange;
        AnnotatedFormatter.prototype.format_textdiff = formatAnyChange;
        var defaultInstance$1 = void 0;
        function format$1(delta, left) {
          if (!defaultInstance$1) {
            defaultInstance$1 = new AnnotatedFormatter;
          }
          return defaultInstance$1.format(delta, left);
        }
        var annotated = Object.freeze({
          default: AnnotatedFormatter,
          format: format$1
        });
        var OPERATIONS = {
          add: "add",
          remove: "remove",
          replace: "replace",
          move: "move"
        };
        var JSONFormatter = function(_BaseFormatter) {
          inherits(JSONFormatter, _BaseFormatter);
          function JSONFormatter() {
            classCallCheck(this, JSONFormatter);
            var _this = possibleConstructorReturn(this, (JSONFormatter.__proto__ || Object.getPrototypeOf(JSONFormatter)).call(this));
            _this.includeMoveDestinations = true;
            return _this;
          }
          createClass(JSONFormatter, [ {
            key: "prepareContext",
            value: function prepareContext(context) {
              get(JSONFormatter.prototype.__proto__ || Object.getPrototypeOf(JSONFormatter.prototype), "prepareContext", this).call(this, context);
              context.result = [];
              context.path = [];
              context.pushCurrentOp = function(obj) {
                var op = obj.op, value = obj.value;
                var val = {
                  op,
                  path: this.currentPath()
                };
                if (typeof value !== "undefined") {
                  val.value = value;
                }
                this.result.push(val);
              };
              context.pushMoveOp = function(to) {
                var from = this.currentPath();
                this.result.push({
                  op: OPERATIONS.move,
                  from,
                  path: this.toPath(to)
                });
              };
              context.currentPath = function() {
                return "/" + this.path.join("/");
              };
              context.toPath = function(toPath) {
                var to = this.path.slice();
                to[to.length - 1] = toPath;
                return "/" + to.join("/");
              };
            }
          }, {
            key: "typeFormattterErrorFormatter",
            value: function typeFormattterErrorFormatter(context, err) {
              context.out("[ERROR] " + err);
            }
          }, {
            key: "rootBegin",
            value: function rootBegin() {}
          }, {
            key: "rootEnd",
            value: function rootEnd() {}
          }, {
            key: "nodeBegin",
            value: function nodeBegin(_ref, key, leftKey) {
              var path = _ref.path;
              path.push(leftKey);
            }
          }, {
            key: "nodeEnd",
            value: function nodeEnd(_ref2) {
              var path = _ref2.path;
              path.pop();
            }
          }, {
            key: "format_unchanged",
            value: function format_unchanged() {}
          }, {
            key: "format_movedestination",
            value: function format_movedestination() {}
          }, {
            key: "format_node",
            value: function format_node(context, delta, left) {
              this.formatDeltaChildren(context, delta, left);
            }
          }, {
            key: "format_added",
            value: function format_added(context, delta) {
              context.pushCurrentOp({
                op: OPERATIONS.add,
                value: delta[0]
              });
            }
          }, {
            key: "format_modified",
            value: function format_modified(context, delta) {
              context.pushCurrentOp({
                op: OPERATIONS.replace,
                value: delta[1]
              });
            }
          }, {
            key: "format_deleted",
            value: function format_deleted(context) {
              context.pushCurrentOp({
                op: OPERATIONS.remove
              });
            }
          }, {
            key: "format_moved",
            value: function format_moved(context, delta) {
              var to = delta[1];
              context.pushMoveOp(to);
            }
          }, {
            key: "format_textdiff",
            value: function format_textdiff() {
              throw new Error("Not implemented");
            }
          }, {
            key: "format",
            value: function format(delta, left) {
              var context = {};
              this.prepareContext(context);
              this.recurse(context, delta, left);
              return context.result;
            }
          } ]);
          return JSONFormatter;
        }(BaseFormatter);
        var last = function last(arr) {
          return arr[arr.length - 1];
        };
        var sortBy = function sortBy(arr, pred) {
          arr.sort(pred);
          return arr;
        };
        var compareByIndexDesc = function compareByIndexDesc(indexA, indexB) {
          var lastA = parseInt(indexA, 10);
          var lastB = parseInt(indexB, 10);
          if (!(isNaN(lastA) || isNaN(lastB))) {
            return lastB - lastA;
          } else {
            return 0;
          }
        };
        var opsByDescendingOrder = function opsByDescendingOrder(removeOps) {
          return sortBy(removeOps, (function(a, b) {
            var splitA = a.path.split("/");
            var splitB = b.path.split("/");
            if (splitA.length !== splitB.length) {
              return splitA.length - splitB.length;
            } else {
              return compareByIndexDesc(last(splitA), last(splitB));
            }
          }));
        };
        var partitionOps = function partitionOps(arr, fns) {
          var initArr = Array(fns.length + 1).fill().map((function() {
            return [];
          }));
          return arr.map((function(item) {
            var position = fns.map((function(fn) {
              return fn(item);
            })).indexOf(true);
            if (position < 0) {
              position = fns.length;
            }
            return {
              item,
              position
            };
          })).reduce((function(acc, item) {
            acc[item.position].push(item.item);
            return acc;
          }), initArr);
        };
        var isMoveOp = function isMoveOp(_ref3) {
          var op = _ref3.op;
          return op === "move";
        };
        var isRemoveOp = function isRemoveOp(_ref4) {
          var op = _ref4.op;
          return op === "remove";
        };
        var reorderOps = function reorderOps(diff) {
          var _partitionOps = partitionOps(diff, [ isMoveOp, isRemoveOp ]), _partitionOps2 = slicedToArray(_partitionOps, 3), moveOps = _partitionOps2[0], removedOps = _partitionOps2[1], restOps = _partitionOps2[2];
          var removeOpsReverse = opsByDescendingOrder(removedOps);
          return [].concat(toConsumableArray(removeOpsReverse), toConsumableArray(moveOps), toConsumableArray(restOps));
        };
        var defaultInstance$2 = void 0;
        var format$2 = function format(delta, left) {
          if (!defaultInstance$2) {
            defaultInstance$2 = new JSONFormatter;
          }
          return reorderOps(defaultInstance$2.format(delta, left));
        };
        var log = function log(delta, left) {
          console.log(format$2(delta, left));
        };
        var jsonpatch = Object.freeze({
          default: JSONFormatter,
          partitionOps,
          format: format$2,
          log
        });
        function chalkColor(name) {
          return chalk && chalk[name] || function() {
            for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
              args[_key] = arguments[_key];
            }
            return args;
          };
        }
        var colors = {
          added: chalkColor("green"),
          deleted: chalkColor("red"),
          movedestination: chalkColor("gray"),
          moved: chalkColor("yellow"),
          unchanged: chalkColor("gray"),
          error: chalkColor("white.bgRed"),
          textDiffLine: chalkColor("gray")
        };
        var ConsoleFormatter = function(_BaseFormatter) {
          inherits(ConsoleFormatter, _BaseFormatter);
          function ConsoleFormatter() {
            classCallCheck(this, ConsoleFormatter);
            var _this = possibleConstructorReturn(this, (ConsoleFormatter.__proto__ || Object.getPrototypeOf(ConsoleFormatter)).call(this));
            _this.includeMoveDestinations = false;
            return _this;
          }
          createClass(ConsoleFormatter, [ {
            key: "prepareContext",
            value: function prepareContext(context) {
              get(ConsoleFormatter.prototype.__proto__ || Object.getPrototypeOf(ConsoleFormatter.prototype), "prepareContext", this).call(this, context);
              context.indent = function(levels) {
                this.indentLevel = (this.indentLevel || 0) + (typeof levels === "undefined" ? 1 : levels);
                this.indentPad = new Array(this.indentLevel + 1).join("  ");
                this.outLine();
              };
              context.outLine = function() {
                this.buffer.push("\n" + (this.indentPad || ""));
              };
              context.out = function() {
                for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                  args[_key2] = arguments[_key2];
                }
                for (var i = 0, l = args.length; i < l; i++) {
                  var lines = args[i].split("\n");
                  var text = lines.join("\n" + (this.indentPad || ""));
                  if (this.color && this.color[0]) {
                    text = this.color[0](text);
                  }
                  this.buffer.push(text);
                }
              };
              context.pushColor = function(color) {
                this.color = this.color || [];
                this.color.unshift(color);
              };
              context.popColor = function() {
                this.color = this.color || [];
                this.color.shift();
              };
            }
          }, {
            key: "typeFormattterErrorFormatter",
            value: function typeFormattterErrorFormatter(context, err) {
              context.pushColor(colors.error);
              context.out("[ERROR]" + err);
              context.popColor();
            }
          }, {
            key: "formatValue",
            value: function formatValue(context, value) {
              context.out(JSON.stringify(value, null, 2));
            }
          }, {
            key: "formatTextDiffString",
            value: function formatTextDiffString(context, value) {
              var lines = this.parseTextDiff(value);
              context.indent();
              for (var i = 0, l = lines.length; i < l; i++) {
                var line = lines[i];
                context.pushColor(colors.textDiffLine);
                context.out(line.location.line + "," + line.location.chr + " ");
                context.popColor();
                var pieces = line.pieces;
                for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {
                  var piece = pieces[pieceIndex];
                  context.pushColor(colors[piece.type]);
                  context.out(piece.text);
                  context.popColor();
                }
                if (i < l - 1) {
                  context.outLine();
                }
              }
              context.indent(-1);
            }
          }, {
            key: "rootBegin",
            value: function rootBegin(context, type, nodeType) {
              context.pushColor(colors[type]);
              if (type === "node") {
                context.out(nodeType === "array" ? "[" : "{");
                context.indent();
              }
            }
          }, {
            key: "rootEnd",
            value: function rootEnd(context, type, nodeType) {
              if (type === "node") {
                context.indent(-1);
                context.out(nodeType === "array" ? "]" : "}");
              }
              context.popColor();
            }
          }, {
            key: "nodeBegin",
            value: function nodeBegin(context, key, leftKey, type, nodeType) {
              context.pushColor(colors[type]);
              context.out(leftKey + ": ");
              if (type === "node") {
                context.out(nodeType === "array" ? "[" : "{");
                context.indent();
              }
            }
          }, {
            key: "nodeEnd",
            value: function nodeEnd(context, key, leftKey, type, nodeType, isLast) {
              if (type === "node") {
                context.indent(-1);
                context.out(nodeType === "array" ? "]" : "}" + (isLast ? "" : ","));
              }
              if (!isLast) {
                context.outLine();
              }
              context.popColor();
            }
          }, {
            key: "format_unchanged",
            value: function format_unchanged(context, delta, left) {
              if (typeof left === "undefined") {
                return;
              }
              this.formatValue(context, left);
            }
          }, {
            key: "format_movedestination",
            value: function format_movedestination(context, delta, left) {
              if (typeof left === "undefined") {
                return;
              }
              this.formatValue(context, left);
            }
          }, {
            key: "format_node",
            value: function format_node(context, delta, left) {
              this.formatDeltaChildren(context, delta, left);
            }
          }, {
            key: "format_added",
            value: function format_added(context, delta) {
              this.formatValue(context, delta[0]);
            }
          }, {
            key: "format_modified",
            value: function format_modified(context, delta) {
              context.pushColor(colors.deleted);
              this.formatValue(context, delta[0]);
              context.popColor();
              context.out(" => ");
              context.pushColor(colors.added);
              this.formatValue(context, delta[1]);
              context.popColor();
            }
          }, {
            key: "format_deleted",
            value: function format_deleted(context, delta) {
              this.formatValue(context, delta[0]);
            }
          }, {
            key: "format_moved",
            value: function format_moved(context, delta) {
              context.out("==> " + delta[1]);
            }
          }, {
            key: "format_textdiff",
            value: function format_textdiff(context, delta) {
              this.formatTextDiffString(context, delta[0]);
            }
          } ]);
          return ConsoleFormatter;
        }(BaseFormatter);
        var defaultInstance$3 = void 0;
        var format$3 = function format(delta, left) {
          if (!defaultInstance$3) {
            defaultInstance$3 = new ConsoleFormatter;
          }
          return defaultInstance$3.format(delta, left);
        };
        function log$1(delta, left) {
          console.log(format$3(delta, left));
        }
        var console$1 = Object.freeze({
          default: ConsoleFormatter,
          format: format$3,
          log: log$1
        });
        var index = Object.freeze({
          base,
          html,
          annotated,
          jsonpatch,
          console: console$1
        });
        function dateReviver(key, value) {
          var parts = void 0;
          if (typeof value === "string") {
            parts = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d*))?(Z|([+-])(\d{2}):(\d{2}))$/.exec(value);
            if (parts) {
              return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4], +parts[5], +parts[6], +(parts[7] || 0)));
            }
          }
          return value;
        }
        function create(options) {
          return new DiffPatcher(options);
        }
        var defaultInstance$4 = void 0;
        function diff() {
          if (!defaultInstance$4) {
            defaultInstance$4 = new DiffPatcher;
          }
          return defaultInstance$4.diff.apply(defaultInstance$4, arguments);
        }
        function patch() {
          if (!defaultInstance$4) {
            defaultInstance$4 = new DiffPatcher;
          }
          return defaultInstance$4.patch.apply(defaultInstance$4, arguments);
        }
        function unpatch() {
          if (!defaultInstance$4) {
            defaultInstance$4 = new DiffPatcher;
          }
          return defaultInstance$4.unpatch.apply(defaultInstance$4, arguments);
        }
        function reverse() {
          if (!defaultInstance$4) {
            defaultInstance$4 = new DiffPatcher;
          }
          return defaultInstance$4.reverse.apply(defaultInstance$4, arguments);
        }
        function clone$1() {
          if (!defaultInstance$4) {
            defaultInstance$4 = new DiffPatcher;
          }
          return defaultInstance$4.clone.apply(defaultInstance$4, arguments);
        }
        exports.DiffPatcher = DiffPatcher;
        exports.formatters = index;
        exports.console = console$1;
        exports.create = create;
        exports.dateReviver = dateReviver;
        exports.diff = diff;
        exports.patch = patch;
        exports.unpatch = unpatch;
        exports.reverse = reverse;
        exports.clone = clone$1;
        Object.defineProperty(exports, "__esModule", {
          value: true
        });
      }));
    },
    368(module) {
      var MAX_SAFE_INTEGER = 9007199254740991;
      var argsTag = "[object Arguments]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]";
      var reIsUint = /^(?:0|[1-9]\d*)$/;
      function apply(func, thisArg, args) {
        switch (args.length) {
         case 0:
          return func.call(thisArg);

         case 1:
          return func.call(thisArg, args[0]);

         case 2:
          return func.call(thisArg, args[0], args[1]);

         case 3:
          return func.call(thisArg, args[0], args[1], args[2]);
        }
        return func.apply(thisArg, args);
      }
      function baseTimes(n, iteratee) {
        var index = -1, result = Array(n);
        while (++index < n) {
          result[index] = iteratee(index);
        }
        return result;
      }
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      var objectToString = objectProto.toString;
      var propertyIsEnumerable = objectProto.propertyIsEnumerable;
      var nativeMax = Math.max;
      function arrayLikeKeys(value, inherited) {
        var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
        var length = result.length, skipIndexes = !!length;
        for (var key in value) {
          if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
            result.push(key);
          }
        }
        return result;
      }
      function assignValue(object, key, value) {
        var objValue = object[key];
        if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {
          object[key] = value;
        }
      }
      function baseKeysIn(object) {
        if (!isObject(object)) {
          return nativeKeysIn(object);
        }
        var isProto = isPrototype(object), result = [];
        for (var key in object) {
          if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
            result.push(key);
          }
        }
        return result;
      }
      function baseRest(func, start) {
        start = nativeMax(start === undefined ? func.length - 1 : start, 0);
        return function() {
          var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);
          while (++index < length) {
            array[index] = args[start + index];
          }
          index = -1;
          var otherArgs = Array(start + 1);
          while (++index < start) {
            otherArgs[index] = args[index];
          }
          otherArgs[start] = array;
          return apply(func, this, otherArgs);
        };
      }
      function copyObject(source, props, object, customizer) {
        object || (object = {});
        var index = -1, length = props.length;
        while (++index < length) {
          var key = props[index];
          var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;
          assignValue(object, key, newValue === undefined ? source[key] : newValue);
        }
        return object;
      }
      function createAssigner(assigner) {
        return baseRest((function(object, sources) {
          var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined, guard = length > 2 ? sources[2] : undefined;
          customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, 
          customizer) : undefined;
          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
            customizer = length < 3 ? undefined : customizer;
            length = 1;
          }
          object = Object(object);
          while (++index < length) {
            var source = sources[index];
            if (source) {
              assigner(object, source, index, customizer);
            }
          }
          return object;
        }));
      }
      function isIndex(value, length) {
        length = length == null ? MAX_SAFE_INTEGER : length;
        return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
      }
      function isIterateeCall(value, index, object) {
        if (!isObject(object)) {
          return false;
        }
        var type = typeof index;
        if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
          return eq(object[index], value);
        }
        return false;
      }
      function isPrototype(value) {
        var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
        return value === proto;
      }
      function nativeKeysIn(object) {
        var result = [];
        if (object != null) {
          for (var key in Object(object)) {
            result.push(key);
          }
        }
        return result;
      }
      function eq(value, other) {
        return value === other || value !== value && other !== other;
      }
      function isArguments(value) {
        return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
      }
      var isArray = Array.isArray;
      function isArrayLike(value) {
        return value != null && isLength(value.length) && !isFunction(value);
      }
      function isArrayLikeObject(value) {
        return isObjectLike(value) && isArrayLike(value);
      }
      function isFunction(value) {
        var tag = isObject(value) ? objectToString.call(value) : "";
        return tag == funcTag || tag == genTag;
      }
      function isLength(value) {
        return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
      }
      function isObject(value) {
        var type = typeof value;
        return !!value && (type == "object" || type == "function");
      }
      function isObjectLike(value) {
        return !!value && typeof value == "object";
      }
      var assignIn = createAssigner((function(object, source) {
        copyObject(source, keysIn(source), object);
      }));
      function keysIn(object) {
        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
      }
      module.exports = assignIn;
    },
    2543(module, exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      var __WEBPACK_AMD_DEFINE_RESULT__;
      (function() {
        var undefined;
        var VERSION = "4.17.23";
        var LARGE_ARRAY_SIZE = 200;
        var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
        var HASH_UNDEFINED = "__lodash_hash_undefined__";
        var MAX_MEMOIZE_SIZE = 500;
        var PLACEHOLDER = "__lodash_placeholder__";
        var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
        var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
        var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
        var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
        var HOT_COUNT = 800, HOT_SPAN = 16;
        var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
        var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
        var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
        var wrapFlags = [ [ "ary", WRAP_ARY_FLAG ], [ "bind", WRAP_BIND_FLAG ], [ "bindKey", WRAP_BIND_KEY_FLAG ], [ "curry", WRAP_CURRY_FLAG ], [ "curryRight", WRAP_CURRY_RIGHT_FLAG ], [ "flip", WRAP_FLIP_FLAG ], [ "partial", WRAP_PARTIAL_FLAG ], [ "partialRight", WRAP_PARTIAL_RIGHT_FLAG ], [ "rearg", WRAP_REARG_FLAG ] ];
        var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
        var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
        var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
        var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
        var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
        var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
        var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
        var reTrimStart = /^\s+/;
        var reWhitespace = /\s/;
        var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
        var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
        var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
        var reEscapeChar = /\\(\\)?/g;
        var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
        var reFlags = /\w*$/;
        var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
        var reIsBinary = /^0b[01]+$/i;
        var reIsHostCtor = /^\[object .+?Constructor\]$/;
        var reIsOctal = /^0o[0-7]+$/i;
        var reIsUint = /^(?:0|[1-9]\d*)$/;
        var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
        var reNoMatch = /($^)/;
        var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
        var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
        var rsApos = "['’]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
        var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [ rsNonAstral, rsRegional, rsSurrPair ].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [ rsDingbat, rsRegional, rsSurrPair ].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [ rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral ].join("|") + ")";
        var reApos = RegExp(rsApos, "g");
        var reComboMark = RegExp(rsCombo, "g");
        var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
        var reUnicodeWord = RegExp([ rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [ rsBreak, rsUpper, "$" ].join("|") + ")", rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [ rsBreak, rsUpper + rsMiscLower, "$" ].join("|") + ")", rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, rsUpper + "+" + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji ].join("|"), "g");
        var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
        var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
        var contextProps = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ];
        var templateCounter = -1;
        var typedArrayTags = {};
        typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
        typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
        var cloneableTags = {};
        cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
        cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
        var deburredLetters = {
          À: "A",
          Á: "A",
          Â: "A",
          Ã: "A",
          Ä: "A",
          Å: "A",
          à: "a",
          á: "a",
          â: "a",
          ã: "a",
          ä: "a",
          å: "a",
          Ç: "C",
          ç: "c",
          Ð: "D",
          ð: "d",
          È: "E",
          É: "E",
          Ê: "E",
          Ë: "E",
          è: "e",
          é: "e",
          ê: "e",
          ë: "e",
          Ì: "I",
          Í: "I",
          Î: "I",
          Ï: "I",
          ì: "i",
          í: "i",
          î: "i",
          ï: "i",
          Ñ: "N",
          ñ: "n",
          Ò: "O",
          Ó: "O",
          Ô: "O",
          Õ: "O",
          Ö: "O",
          Ø: "O",
          ò: "o",
          ó: "o",
          ô: "o",
          õ: "o",
          ö: "o",
          ø: "o",
          Ù: "U",
          Ú: "U",
          Û: "U",
          Ü: "U",
          ù: "u",
          ú: "u",
          û: "u",
          ü: "u",
          Ý: "Y",
          ý: "y",
          ÿ: "y",
          Æ: "Ae",
          æ: "ae",
          Þ: "Th",
          þ: "th",
          ß: "ss",
          Ā: "A",
          Ă: "A",
          Ą: "A",
          ā: "a",
          ă: "a",
          ą: "a",
          Ć: "C",
          Ĉ: "C",
          Ċ: "C",
          Č: "C",
          ć: "c",
          ĉ: "c",
          ċ: "c",
          č: "c",
          Ď: "D",
          Đ: "D",
          ď: "d",
          đ: "d",
          Ē: "E",
          Ĕ: "E",
          Ė: "E",
          Ę: "E",
          Ě: "E",
          ē: "e",
          ĕ: "e",
          ė: "e",
          ę: "e",
          ě: "e",
          Ĝ: "G",
          Ğ: "G",
          Ġ: "G",
          Ģ: "G",
          ĝ: "g",
          ğ: "g",
          ġ: "g",
          ģ: "g",
          Ĥ: "H",
          Ħ: "H",
          ĥ: "h",
          ħ: "h",
          Ĩ: "I",
          Ī: "I",
          Ĭ: "I",
          Į: "I",
          İ: "I",
          ĩ: "i",
          ī: "i",
          ĭ: "i",
          į: "i",
          ı: "i",
          Ĵ: "J",
          ĵ: "j",
          Ķ: "K",
          ķ: "k",
          ĸ: "k",
          Ĺ: "L",
          Ļ: "L",
          Ľ: "L",
          Ŀ: "L",
          Ł: "L",
          ĺ: "l",
          ļ: "l",
          ľ: "l",
          ŀ: "l",
          ł: "l",
          Ń: "N",
          Ņ: "N",
          Ň: "N",
          Ŋ: "N",
          ń: "n",
          ņ: "n",
          ň: "n",
          ŋ: "n",
          Ō: "O",
          Ŏ: "O",
          Ő: "O",
          ō: "o",
          ŏ: "o",
          ő: "o",
          Ŕ: "R",
          Ŗ: "R",
          Ř: "R",
          ŕ: "r",
          ŗ: "r",
          ř: "r",
          Ś: "S",
          Ŝ: "S",
          Ş: "S",
          Š: "S",
          ś: "s",
          ŝ: "s",
          ş: "s",
          š: "s",
          Ţ: "T",
          Ť: "T",
          Ŧ: "T",
          ţ: "t",
          ť: "t",
          ŧ: "t",
          Ũ: "U",
          Ū: "U",
          Ŭ: "U",
          Ů: "U",
          Ű: "U",
          Ų: "U",
          ũ: "u",
          ū: "u",
          ŭ: "u",
          ů: "u",
          ű: "u",
          ų: "u",
          Ŵ: "W",
          ŵ: "w",
          Ŷ: "Y",
          ŷ: "y",
          Ÿ: "Y",
          Ź: "Z",
          Ż: "Z",
          Ž: "Z",
          ź: "z",
          ż: "z",
          ž: "z",
          Ĳ: "IJ",
          ĳ: "ij",
          Œ: "Oe",
          œ: "oe",
          ŉ: "'n",
          ſ: "s"
        };
        var htmlEscapes = {
          "&": "&amp;",
          "<": "&lt;",
          ">": "&gt;",
          '"': "&quot;",
          "'": "&#39;"
        };
        var htmlUnescapes = {
          "&amp;": "&",
          "&lt;": "<",
          "&gt;": ">",
          "&quot;": '"',
          "&#39;": "'"
        };
        var stringEscapes = {
          "\\": "\\",
          "'": "'",
          "\n": "n",
          "\r": "r",
          "\u2028": "u2028",
          "\u2029": "u2029"
        };
        var freeParseFloat = parseFloat, freeParseInt = parseInt;
        var freeGlobal = typeof __webpack_require__.g == "object" && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;
        var freeSelf = typeof self == "object" && self && self.Object === Object && self;
        var root = freeGlobal || freeSelf || Function("return this")();
        var freeExports = true && exports && !exports.nodeType && exports;
        var freeModule = freeExports && "object" == "object" && module && !module.nodeType && module;
        var moduleExports = freeModule && freeModule.exports === freeExports;
        var freeProcess = moduleExports && freeGlobal.process;
        var nodeUtil = function() {
          try {
            var types = freeModule && freeModule.require && freeModule.require("util").types;
            if (types) {
              return types;
            }
            return freeProcess && freeProcess.binding && freeProcess.binding("util");
          } catch (e) {}
        }();
        var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
        function apply(func, thisArg, args) {
          switch (args.length) {
           case 0:
            return func.call(thisArg);

           case 1:
            return func.call(thisArg, args[0]);

           case 2:
            return func.call(thisArg, args[0], args[1]);

           case 3:
            return func.call(thisArg, args[0], args[1], args[2]);
          }
          return func.apply(thisArg, args);
        }
        function arrayAggregator(array, setter, iteratee, accumulator) {
          var index = -1, length = array == null ? 0 : array.length;
          while (++index < length) {
            var value = array[index];
            setter(accumulator, value, iteratee(value), array);
          }
          return accumulator;
        }
        function arrayEach(array, iteratee) {
          var index = -1, length = array == null ? 0 : array.length;
          while (++index < length) {
            if (iteratee(array[index], index, array) === false) {
              break;
            }
          }
          return array;
        }
        function arrayEachRight(array, iteratee) {
          var length = array == null ? 0 : array.length;
          while (length--) {
            if (iteratee(array[length], length, array) === false) {
              break;
            }
          }
          return array;
        }
        function arrayEvery(array, predicate) {
          var index = -1, length = array == null ? 0 : array.length;
          while (++index < length) {
            if (!predicate(array[index], index, array)) {
              return false;
            }
          }
          return true;
        }
        function arrayFilter(array, predicate) {
          var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
          while (++index < length) {
            var value = array[index];
            if (predicate(value, index, array)) {
              result[resIndex++] = value;
            }
          }
          return result;
        }
        function arrayIncludes(array, value) {
          var length = array == null ? 0 : array.length;
          return !!length && baseIndexOf(array, value, 0) > -1;
        }
        function arrayIncludesWith(array, value, comparator) {
          var index = -1, length = array == null ? 0 : array.length;
          while (++index < length) {
            if (comparator(value, array[index])) {
              return true;
            }
          }
          return false;
        }
        function arrayMap(array, iteratee) {
          var index = -1, length = array == null ? 0 : array.length, result = Array(length);
          while (++index < length) {
            result[index] = iteratee(array[index], index, array);
          }
          return result;
        }
        function arrayPush(array, values) {
          var index = -1, length = values.length, offset = array.length;
          while (++index < length) {
            array[offset + index] = values[index];
          }
          return array;
        }
        function arrayReduce(array, iteratee, accumulator, initAccum) {
          var index = -1, length = array == null ? 0 : array.length;
          if (initAccum && length) {
            accumulator = array[++index];
          }
          while (++index < length) {
            accumulator = iteratee(accumulator, array[index], index, array);
          }
          return accumulator;
        }
        function arrayReduceRight(array, iteratee, accumulator, initAccum) {
          var length = array == null ? 0 : array.length;
          if (initAccum && length) {
            accumulator = array[--length];
          }
          while (length--) {
            accumulator = iteratee(accumulator, array[length], length, array);
          }
          return accumulator;
        }
        function arraySome(array, predicate) {
          var index = -1, length = array == null ? 0 : array.length;
          while (++index < length) {
            if (predicate(array[index], index, array)) {
              return true;
            }
          }
          return false;
        }
        var asciiSize = baseProperty("length");
        function asciiToArray(string) {
          return string.split("");
        }
        function asciiWords(string) {
          return string.match(reAsciiWord) || [];
        }
        function baseFindKey(collection, predicate, eachFunc) {
          var result;
          eachFunc(collection, (function(value, key, collection) {
            if (predicate(value, key, collection)) {
              result = key;
              return false;
            }
          }));
          return result;
        }
        function baseFindIndex(array, predicate, fromIndex, fromRight) {
          var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
          while (fromRight ? index-- : ++index < length) {
            if (predicate(array[index], index, array)) {
              return index;
            }
          }
          return -1;
        }
        function baseIndexOf(array, value, fromIndex) {
          return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
        }
        function baseIndexOfWith(array, value, fromIndex, comparator) {
          var index = fromIndex - 1, length = array.length;
          while (++index < length) {
            if (comparator(array[index], value)) {
              return index;
            }
          }
          return -1;
        }
        function baseIsNaN(value) {
          return value !== value;
        }
        function baseMean(array, iteratee) {
          var length = array == null ? 0 : array.length;
          return length ? baseSum(array, iteratee) / length : NAN;
        }
        function baseProperty(key) {
          return function(object) {
            return object == null ? undefined : object[key];
          };
        }
        function basePropertyOf(object) {
          return function(key) {
            return object == null ? undefined : object[key];
          };
        }
        function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
          eachFunc(collection, (function(value, index, collection) {
            accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);
          }));
          return accumulator;
        }
        function baseSortBy(array, comparer) {
          var length = array.length;
          array.sort(comparer);
          while (length--) {
            array[length] = array[length].value;
          }
          return array;
        }
        function baseSum(array, iteratee) {
          var result, index = -1, length = array.length;
          while (++index < length) {
            var current = iteratee(array[index]);
            if (current !== undefined) {
              result = result === undefined ? current : result + current;
            }
          }
          return result;
        }
        function baseTimes(n, iteratee) {
          var index = -1, result = Array(n);
          while (++index < n) {
            result[index] = iteratee(index);
          }
          return result;
        }
        function baseToPairs(object, props) {
          return arrayMap(props, (function(key) {
            return [ key, object[key] ];
          }));
        }
        function baseTrim(string) {
          return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
        }
        function baseUnary(func) {
          return function(value) {
            return func(value);
          };
        }
        function baseValues(object, props) {
          return arrayMap(props, (function(key) {
            return object[key];
          }));
        }
        function cacheHas(cache, key) {
          return cache.has(key);
        }
        function charsStartIndex(strSymbols, chrSymbols) {
          var index = -1, length = strSymbols.length;
          while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
          return index;
        }
        function charsEndIndex(strSymbols, chrSymbols) {
          var index = strSymbols.length;
          while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
          return index;
        }
        function countHolders(array, placeholder) {
          var length = array.length, result = 0;
          while (length--) {
            if (array[length] === placeholder) {
              ++result;
            }
          }
          return result;
        }
        var deburrLetter = basePropertyOf(deburredLetters);
        var escapeHtmlChar = basePropertyOf(htmlEscapes);
        function escapeStringChar(chr) {
          return "\\" + stringEscapes[chr];
        }
        function getValue(object, key) {
          return object == null ? undefined : object[key];
        }
        function hasUnicode(string) {
          return reHasUnicode.test(string);
        }
        function hasUnicodeWord(string) {
          return reHasUnicodeWord.test(string);
        }
        function iteratorToArray(iterator) {
          var data, result = [];
          while (!(data = iterator.next()).done) {
            result.push(data.value);
          }
          return result;
        }
        function mapToArray(map) {
          var index = -1, result = Array(map.size);
          map.forEach((function(value, key) {
            result[++index] = [ key, value ];
          }));
          return result;
        }
        function overArg(func, transform) {
          return function(arg) {
            return func(transform(arg));
          };
        }
        function replaceHolders(array, placeholder) {
          var index = -1, length = array.length, resIndex = 0, result = [];
          while (++index < length) {
            var value = array[index];
            if (value === placeholder || value === PLACEHOLDER) {
              array[index] = PLACEHOLDER;
              result[resIndex++] = index;
            }
          }
          return result;
        }
        function setToArray(set) {
          var index = -1, result = Array(set.size);
          set.forEach((function(value) {
            result[++index] = value;
          }));
          return result;
        }
        function setToPairs(set) {
          var index = -1, result = Array(set.size);
          set.forEach((function(value) {
            result[++index] = [ value, value ];
          }));
          return result;
        }
        function strictIndexOf(array, value, fromIndex) {
          var index = fromIndex - 1, length = array.length;
          while (++index < length) {
            if (array[index] === value) {
              return index;
            }
          }
          return -1;
        }
        function strictLastIndexOf(array, value, fromIndex) {
          var index = fromIndex + 1;
          while (index--) {
            if (array[index] === value) {
              return index;
            }
          }
          return index;
        }
        function stringSize(string) {
          return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
        }
        function stringToArray(string) {
          return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
        }
        function trimmedEndIndex(string) {
          var index = string.length;
          while (index-- && reWhitespace.test(string.charAt(index))) {}
          return index;
        }
        var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
        function unicodeSize(string) {
          var result = reUnicode.lastIndex = 0;
          while (reUnicode.test(string)) {
            ++result;
          }
          return result;
        }
        function unicodeToArray(string) {
          return string.match(reUnicode) || [];
        }
        function unicodeWords(string) {
          return string.match(reUnicodeWord) || [];
        }
        var runInContext = function runInContext(context) {
          context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
          var Array = context.Array, Date = context.Date, Error = context.Error, Function = context.Function, Math = context.Math, Object = context.Object, RegExp = context.RegExp, String = context.String, TypeError = context.TypeError;
          var arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype;
          var coreJsData = context["__core-js_shared__"];
          var funcToString = funcProto.toString;
          var hasOwnProperty = objectProto.hasOwnProperty;
          var idCounter = 0;
          var maskSrcKey = function() {
            var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
            return uid ? "Symbol(src)_1." + uid : "";
          }();
          var nativeObjectToString = objectProto.toString;
          var objectCtorString = funcToString.call(Object);
          var oldDash = root._;
          var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
          var Buffer = moduleExports ? context.Buffer : undefined, Symbol = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, getPrototype = overArg(Object.getPrototypeOf, Object), objectCreate = Object.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, symIterator = Symbol ? Symbol.iterator : undefined, symToStringTag = Symbol ? Symbol.toStringTag : undefined;
          var defineProperty = function() {
            try {
              var func = getNative(Object, "defineProperty");
              func({}, "", {});
              return func;
            } catch (e) {}
          }();
          var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date && Date.now !== root.Date.now && Date.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
          var nativeCeil = Math.ceil, nativeFloor = Math.floor, nativeGetSymbols = Object.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object.keys, Object), nativeMax = Math.max, nativeMin = Math.min, nativeNow = Date.now, nativeParseInt = context.parseInt, nativeRandom = Math.random, nativeReverse = arrayProto.reverse;
          var DataView = getNative(context, "DataView"), Map = getNative(context, "Map"), Promise = getNative(context, "Promise"), Set = getNative(context, "Set"), WeakMap = getNative(context, "WeakMap"), nativeCreate = getNative(Object, "create");
          var metaMap = WeakMap && new WeakMap;
          var realNames = {};
          var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);
          var symbolProto = Symbol ? Symbol.prototype : undefined, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, symbolToString = symbolProto ? symbolProto.toString : undefined;
          function lodash(value) {
            if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
              if (value instanceof LodashWrapper) {
                return value;
              }
              if (hasOwnProperty.call(value, "__wrapped__")) {
                return wrapperClone(value);
              }
            }
            return new LodashWrapper(value);
          }
          var baseCreate = function() {
            function object() {}
            return function(proto) {
              if (!isObject(proto)) {
                return {};
              }
              if (objectCreate) {
                return objectCreate(proto);
              }
              object.prototype = proto;
              var result = new object;
              object.prototype = undefined;
              return result;
            };
          }();
          function baseLodash() {}
          function LodashWrapper(value, chainAll) {
            this.__wrapped__ = value;
            this.__actions__ = [];
            this.__chain__ = !!chainAll;
            this.__index__ = 0;
            this.__values__ = undefined;
          }
          lodash.templateSettings = {
            escape: reEscape,
            evaluate: reEvaluate,
            interpolate: reInterpolate,
            variable: "",
            imports: {
              _: lodash
            }
          };
          lodash.prototype = baseLodash.prototype;
          lodash.prototype.constructor = lodash;
          LodashWrapper.prototype = baseCreate(baseLodash.prototype);
          LodashWrapper.prototype.constructor = LodashWrapper;
          function LazyWrapper(value) {
            this.__wrapped__ = value;
            this.__actions__ = [];
            this.__dir__ = 1;
            this.__filtered__ = false;
            this.__iteratees__ = [];
            this.__takeCount__ = MAX_ARRAY_LENGTH;
            this.__views__ = [];
          }
          function lazyClone() {
            var result = new LazyWrapper(this.__wrapped__);
            result.__actions__ = copyArray(this.__actions__);
            result.__dir__ = this.__dir__;
            result.__filtered__ = this.__filtered__;
            result.__iteratees__ = copyArray(this.__iteratees__);
            result.__takeCount__ = this.__takeCount__;
            result.__views__ = copyArray(this.__views__);
            return result;
          }
          function lazyReverse() {
            if (this.__filtered__) {
              var result = new LazyWrapper(this);
              result.__dir__ = -1;
              result.__filtered__ = true;
            } else {
              result = this.clone();
              result.__dir__ *= -1;
            }
            return result;
          }
          function lazyValue() {
            var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
            if (!isArr || !isRight && arrLength == length && takeCount == length) {
              return baseWrapperValue(array, this.__actions__);
            }
            var result = [];
            outer: while (length-- && resIndex < takeCount) {
              index += dir;
              var iterIndex = -1, value = array[index];
              while (++iterIndex < iterLength) {
                var data = iteratees[iterIndex], iteratee = data.iteratee, type = data.type, computed = iteratee(value);
                if (type == LAZY_MAP_FLAG) {
                  value = computed;
                } else if (!computed) {
                  if (type == LAZY_FILTER_FLAG) {
                    continue outer;
                  } else {
                    break outer;
                  }
                }
              }
              result[resIndex++] = value;
            }
            return result;
          }
          LazyWrapper.prototype = baseCreate(baseLodash.prototype);
          LazyWrapper.prototype.constructor = LazyWrapper;
          function Hash(entries) {
            var index = -1, length = entries == null ? 0 : entries.length;
            this.clear();
            while (++index < length) {
              var entry = entries[index];
              this.set(entry[0], entry[1]);
            }
          }
          function hashClear() {
            this.__data__ = nativeCreate ? nativeCreate(null) : {};
            this.size = 0;
          }
          function hashDelete(key) {
            var result = this.has(key) && delete this.__data__[key];
            this.size -= result ? 1 : 0;
            return result;
          }
          function hashGet(key) {
            var data = this.__data__;
            if (nativeCreate) {
              var result = data[key];
              return result === HASH_UNDEFINED ? undefined : result;
            }
            return hasOwnProperty.call(data, key) ? data[key] : undefined;
          }
          function hashHas(key) {
            var data = this.__data__;
            return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
          }
          function hashSet(key, value) {
            var data = this.__data__;
            this.size += this.has(key) ? 0 : 1;
            data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
            return this;
          }
          Hash.prototype.clear = hashClear;
          Hash.prototype["delete"] = hashDelete;
          Hash.prototype.get = hashGet;
          Hash.prototype.has = hashHas;
          Hash.prototype.set = hashSet;
          function ListCache(entries) {
            var index = -1, length = entries == null ? 0 : entries.length;
            this.clear();
            while (++index < length) {
              var entry = entries[index];
              this.set(entry[0], entry[1]);
            }
          }
          function listCacheClear() {
            this.__data__ = [];
            this.size = 0;
          }
          function listCacheDelete(key) {
            var data = this.__data__, index = assocIndexOf(data, key);
            if (index < 0) {
              return false;
            }
            var lastIndex = data.length - 1;
            if (index == lastIndex) {
              data.pop();
            } else {
              splice.call(data, index, 1);
            }
            --this.size;
            return true;
          }
          function listCacheGet(key) {
            var data = this.__data__, index = assocIndexOf(data, key);
            return index < 0 ? undefined : data[index][1];
          }
          function listCacheHas(key) {
            return assocIndexOf(this.__data__, key) > -1;
          }
          function listCacheSet(key, value) {
            var data = this.__data__, index = assocIndexOf(data, key);
            if (index < 0) {
              ++this.size;
              data.push([ key, value ]);
            } else {
              data[index][1] = value;
            }
            return this;
          }
          ListCache.prototype.clear = listCacheClear;
          ListCache.prototype["delete"] = listCacheDelete;
          ListCache.prototype.get = listCacheGet;
          ListCache.prototype.has = listCacheHas;
          ListCache.prototype.set = listCacheSet;
          function MapCache(entries) {
            var index = -1, length = entries == null ? 0 : entries.length;
            this.clear();
            while (++index < length) {
              var entry = entries[index];
              this.set(entry[0], entry[1]);
            }
          }
          function mapCacheClear() {
            this.size = 0;
            this.__data__ = {
              hash: new Hash,
              map: new (Map || ListCache),
              string: new Hash
            };
          }
          function mapCacheDelete(key) {
            var result = getMapData(this, key)["delete"](key);
            this.size -= result ? 1 : 0;
            return result;
          }
          function mapCacheGet(key) {
            return getMapData(this, key).get(key);
          }
          function mapCacheHas(key) {
            return getMapData(this, key).has(key);
          }
          function mapCacheSet(key, value) {
            var data = getMapData(this, key), size = data.size;
            data.set(key, value);
            this.size += data.size == size ? 0 : 1;
            return this;
          }
          MapCache.prototype.clear = mapCacheClear;
          MapCache.prototype["delete"] = mapCacheDelete;
          MapCache.prototype.get = mapCacheGet;
          MapCache.prototype.has = mapCacheHas;
          MapCache.prototype.set = mapCacheSet;
          function SetCache(values) {
            var index = -1, length = values == null ? 0 : values.length;
            this.__data__ = new MapCache;
            while (++index < length) {
              this.add(values[index]);
            }
          }
          function setCacheAdd(value) {
            this.__data__.set(value, HASH_UNDEFINED);
            return this;
          }
          function setCacheHas(value) {
            return this.__data__.has(value);
          }
          SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
          SetCache.prototype.has = setCacheHas;
          function Stack(entries) {
            var data = this.__data__ = new ListCache(entries);
            this.size = data.size;
          }
          function stackClear() {
            this.__data__ = new ListCache;
            this.size = 0;
          }
          function stackDelete(key) {
            var data = this.__data__, result = data["delete"](key);
            this.size = data.size;
            return result;
          }
          function stackGet(key) {
            return this.__data__.get(key);
          }
          function stackHas(key) {
            return this.__data__.has(key);
          }
          function stackSet(key, value) {
            var data = this.__data__;
            if (data instanceof ListCache) {
              var pairs = data.__data__;
              if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
                pairs.push([ key, value ]);
                this.size = ++data.size;
                return this;
              }
              data = this.__data__ = new MapCache(pairs);
            }
            data.set(key, value);
            this.size = data.size;
            return this;
          }
          Stack.prototype.clear = stackClear;
          Stack.prototype["delete"] = stackDelete;
          Stack.prototype.get = stackGet;
          Stack.prototype.has = stackHas;
          Stack.prototype.set = stackSet;
          function arrayLikeKeys(value, inherited) {
            var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
            for (var key in value) {
              if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
                result.push(key);
              }
            }
            return result;
          }
          function arraySample(array) {
            var length = array.length;
            return length ? array[baseRandom(0, length - 1)] : undefined;
          }
          function arraySampleSize(array, n) {
            return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
          }
          function arrayShuffle(array) {
            return shuffleSelf(copyArray(array));
          }
          function assignMergeValue(object, key, value) {
            if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {
              baseAssignValue(object, key, value);
            }
          }
          function assignValue(object, key, value) {
            var objValue = object[key];
            if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {
              baseAssignValue(object, key, value);
            }
          }
          function assocIndexOf(array, key) {
            var length = array.length;
            while (length--) {
              if (eq(array[length][0], key)) {
                return length;
              }
            }
            return -1;
          }
          function baseAggregator(collection, setter, iteratee, accumulator) {
            baseEach(collection, (function(value, key, collection) {
              setter(accumulator, value, iteratee(value), collection);
            }));
            return accumulator;
          }
          function baseAssign(object, source) {
            return object && copyObject(source, keys(source), object);
          }
          function baseAssignIn(object, source) {
            return object && copyObject(source, keysIn(source), object);
          }
          function baseAssignValue(object, key, value) {
            if (key == "__proto__" && defineProperty) {
              defineProperty(object, key, {
                configurable: true,
                enumerable: true,
                value,
                writable: true
              });
            } else {
              object[key] = value;
            }
          }
          function baseAt(object, paths) {
            var index = -1, length = paths.length, result = Array(length), skip = object == null;
            while (++index < length) {
              result[index] = skip ? undefined : get(object, paths[index]);
            }
            return result;
          }
          function baseClamp(number, lower, upper) {
            if (number === number) {
              if (upper !== undefined) {
                number = number <= upper ? number : upper;
              }
              if (lower !== undefined) {
                number = number >= lower ? number : lower;
              }
            }
            return number;
          }
          function baseClone(value, bitmask, customizer, key, object, stack) {
            var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
            if (customizer) {
              result = object ? customizer(value, key, object, stack) : customizer(value);
            }
            if (result !== undefined) {
              return result;
            }
            if (!isObject(value)) {
              return value;
            }
            var isArr = isArray(value);
            if (isArr) {
              result = initCloneArray(value);
              if (!isDeep) {
                return copyArray(value, result);
              }
            } else {
              var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
              if (isBuffer(value)) {
                return cloneBuffer(value, isDeep);
              }
              if (tag == objectTag || tag == argsTag || isFunc && !object) {
                result = isFlat || isFunc ? {} : initCloneObject(value);
                if (!isDeep) {
                  return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
                }
              } else {
                if (!cloneableTags[tag]) {
                  return object ? value : {};
                }
                result = initCloneByTag(value, tag, isDeep);
              }
            }
            stack || (stack = new Stack);
            var stacked = stack.get(value);
            if (stacked) {
              return stacked;
            }
            stack.set(value, result);
            if (isSet(value)) {
              value.forEach((function(subValue) {
                result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
              }));
            } else if (isMap(value)) {
              value.forEach((function(subValue, key) {
                result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
              }));
            }
            var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
            var props = isArr ? undefined : keysFunc(value);
            arrayEach(props || value, (function(subValue, key) {
              if (props) {
                key = subValue;
                subValue = value[key];
              }
              assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
            }));
            return result;
          }
          function baseConforms(source) {
            var props = keys(source);
            return function(object) {
              return baseConformsTo(object, source, props);
            };
          }
          function baseConformsTo(object, source, props) {
            var length = props.length;
            if (object == null) {
              return !length;
            }
            object = Object(object);
            while (length--) {
              var key = props[length], predicate = source[key], value = object[key];
              if (value === undefined && !(key in object) || !predicate(value)) {
                return false;
              }
            }
            return true;
          }
          function baseDelay(func, wait, args) {
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            return setTimeout((function() {
              func.apply(undefined, args);
            }), wait);
          }
          function baseDifference(array, values, iteratee, comparator) {
            var index = -1, includes = arrayIncludes, isCommon = true, length = array.length, result = [], valuesLength = values.length;
            if (!length) {
              return result;
            }
            if (iteratee) {
              values = arrayMap(values, baseUnary(iteratee));
            }
            if (comparator) {
              includes = arrayIncludesWith;
              isCommon = false;
            } else if (values.length >= LARGE_ARRAY_SIZE) {
              includes = cacheHas;
              isCommon = false;
              values = new SetCache(values);
            }
            outer: while (++index < length) {
              var value = array[index], computed = iteratee == null ? value : iteratee(value);
              value = comparator || value !== 0 ? value : 0;
              if (isCommon && computed === computed) {
                var valuesIndex = valuesLength;
                while (valuesIndex--) {
                  if (values[valuesIndex] === computed) {
                    continue outer;
                  }
                }
                result.push(value);
              } else if (!includes(values, computed, comparator)) {
                result.push(value);
              }
            }
            return result;
          }
          var baseEach = createBaseEach(baseForOwn);
          var baseEachRight = createBaseEach(baseForOwnRight, true);
          function baseEvery(collection, predicate) {
            var result = true;
            baseEach(collection, (function(value, index, collection) {
              result = !!predicate(value, index, collection);
              return result;
            }));
            return result;
          }
          function baseExtremum(array, iteratee, comparator) {
            var index = -1, length = array.length;
            while (++index < length) {
              var value = array[index], current = iteratee(value);
              if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
                var computed = current, result = value;
              }
            }
            return result;
          }
          function baseFill(array, value, start, end) {
            var length = array.length;
            start = toInteger(start);
            if (start < 0) {
              start = -start > length ? 0 : length + start;
            }
            end = end === undefined || end > length ? length : toInteger(end);
            if (end < 0) {
              end += length;
            }
            end = start > end ? 0 : toLength(end);
            while (start < end) {
              array[start++] = value;
            }
            return array;
          }
          function baseFilter(collection, predicate) {
            var result = [];
            baseEach(collection, (function(value, index, collection) {
              if (predicate(value, index, collection)) {
                result.push(value);
              }
            }));
            return result;
          }
          function baseFlatten(array, depth, predicate, isStrict, result) {
            var index = -1, length = array.length;
            predicate || (predicate = isFlattenable);
            result || (result = []);
            while (++index < length) {
              var value = array[index];
              if (depth > 0 && predicate(value)) {
                if (depth > 1) {
                  baseFlatten(value, depth - 1, predicate, isStrict, result);
                } else {
                  arrayPush(result, value);
                }
              } else if (!isStrict) {
                result[result.length] = value;
              }
            }
            return result;
          }
          var baseFor = createBaseFor();
          var baseForRight = createBaseFor(true);
          function baseForOwn(object, iteratee) {
            return object && baseFor(object, iteratee, keys);
          }
          function baseForOwnRight(object, iteratee) {
            return object && baseForRight(object, iteratee, keys);
          }
          function baseFunctions(object, props) {
            return arrayFilter(props, (function(key) {
              return isFunction(object[key]);
            }));
          }
          function baseGet(object, path) {
            path = castPath(path, object);
            var index = 0, length = path.length;
            while (object != null && index < length) {
              object = object[toKey(path[index++])];
            }
            return index && index == length ? object : undefined;
          }
          function baseGetAllKeys(object, keysFunc, symbolsFunc) {
            var result = keysFunc(object);
            return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
          }
          function baseGetTag(value) {
            if (value == null) {
              return value === undefined ? undefinedTag : nullTag;
            }
            return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
          }
          function baseGt(value, other) {
            return value > other;
          }
          function baseHas(object, key) {
            return object != null && hasOwnProperty.call(object, key);
          }
          function baseHasIn(object, key) {
            return object != null && key in Object(object);
          }
          function baseInRange(number, start, end) {
            return number >= nativeMin(start, end) && number < nativeMax(start, end);
          }
          function baseIntersection(arrays, iteratee, comparator) {
            var includes = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array(othLength), maxLength = Infinity, result = [];
            while (othIndex--) {
              var array = arrays[othIndex];
              if (othIndex && iteratee) {
                array = arrayMap(array, baseUnary(iteratee));
              }
              maxLength = nativeMin(array.length, maxLength);
              caches[othIndex] = !comparator && (iteratee || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined;
            }
            array = arrays[0];
            var index = -1, seen = caches[0];
            outer: while (++index < length && result.length < maxLength) {
              var value = array[index], computed = iteratee ? iteratee(value) : value;
              value = comparator || value !== 0 ? value : 0;
              if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {
                othIndex = othLength;
                while (--othIndex) {
                  var cache = caches[othIndex];
                  if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) {
                    continue outer;
                  }
                }
                if (seen) {
                  seen.push(computed);
                }
                result.push(value);
              }
            }
            return result;
          }
          function baseInverter(object, setter, iteratee, accumulator) {
            baseForOwn(object, (function(value, key, object) {
              setter(accumulator, iteratee(value), key, object);
            }));
            return accumulator;
          }
          function baseInvoke(object, path, args) {
            path = castPath(path, object);
            object = parent(object, path);
            var func = object == null ? object : object[toKey(last(path))];
            return func == null ? undefined : apply(func, object, args);
          }
          function baseIsArguments(value) {
            return isObjectLike(value) && baseGetTag(value) == argsTag;
          }
          function baseIsArrayBuffer(value) {
            return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
          }
          function baseIsDate(value) {
            return isObjectLike(value) && baseGetTag(value) == dateTag;
          }
          function baseIsEqual(value, other, bitmask, customizer, stack) {
            if (value === other) {
              return true;
            }
            if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
              return value !== value && other !== other;
            }
            return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
          }
          function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
            var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
            objTag = objTag == argsTag ? objectTag : objTag;
            othTag = othTag == argsTag ? objectTag : othTag;
            var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
            if (isSameTag && isBuffer(object)) {
              if (!isBuffer(other)) {
                return false;
              }
              objIsArr = true;
              objIsObj = false;
            }
            if (isSameTag && !objIsObj) {
              stack || (stack = new Stack);
              return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
            }
            if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
              var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
              if (objIsWrapped || othIsWrapped) {
                var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
                stack || (stack = new Stack);
                return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
              }
            }
            if (!isSameTag) {
              return false;
            }
            stack || (stack = new Stack);
            return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
          }
          function baseIsMap(value) {
            return isObjectLike(value) && getTag(value) == mapTag;
          }
          function baseIsMatch(object, source, matchData, customizer) {
            var index = matchData.length, length = index, noCustomizer = !customizer;
            if (object == null) {
              return !length;
            }
            object = Object(object);
            while (index--) {
              var data = matchData[index];
              if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
                return false;
              }
            }
            while (++index < length) {
              data = matchData[index];
              var key = data[0], objValue = object[key], srcValue = data[1];
              if (noCustomizer && data[2]) {
                if (objValue === undefined && !(key in object)) {
                  return false;
                }
              } else {
                var stack = new Stack;
                if (customizer) {
                  var result = customizer(objValue, srcValue, key, object, source, stack);
                }
                if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {
                  return false;
                }
              }
            }
            return true;
          }
          function baseIsNative(value) {
            if (!isObject(value) || isMasked(value)) {
              return false;
            }
            var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
            return pattern.test(toSource(value));
          }
          function baseIsRegExp(value) {
            return isObjectLike(value) && baseGetTag(value) == regexpTag;
          }
          function baseIsSet(value) {
            return isObjectLike(value) && getTag(value) == setTag;
          }
          function baseIsTypedArray(value) {
            return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
          }
          function baseIteratee(value) {
            if (typeof value == "function") {
              return value;
            }
            if (value == null) {
              return identity;
            }
            if (typeof value == "object") {
              return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
            }
            return property(value);
          }
          function baseKeys(object) {
            if (!isPrototype(object)) {
              return nativeKeys(object);
            }
            var result = [];
            for (var key in Object(object)) {
              if (hasOwnProperty.call(object, key) && key != "constructor") {
                result.push(key);
              }
            }
            return result;
          }
          function baseKeysIn(object) {
            if (!isObject(object)) {
              return nativeKeysIn(object);
            }
            var isProto = isPrototype(object), result = [];
            for (var key in object) {
              if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
                result.push(key);
              }
            }
            return result;
          }
          function baseLt(value, other) {
            return value < other;
          }
          function baseMap(collection, iteratee) {
            var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
            baseEach(collection, (function(value, key, collection) {
              result[++index] = iteratee(value, key, collection);
            }));
            return result;
          }
          function baseMatches(source) {
            var matchData = getMatchData(source);
            if (matchData.length == 1 && matchData[0][2]) {
              return matchesStrictComparable(matchData[0][0], matchData[0][1]);
            }
            return function(object) {
              return object === source || baseIsMatch(object, source, matchData);
            };
          }
          function baseMatchesProperty(path, srcValue) {
            if (isKey(path) && isStrictComparable(srcValue)) {
              return matchesStrictComparable(toKey(path), srcValue);
            }
            return function(object) {
              var objValue = get(object, path);
              return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
            };
          }
          function baseMerge(object, source, srcIndex, customizer, stack) {
            if (object === source) {
              return;
            }
            baseFor(source, (function(srcValue, key) {
              stack || (stack = new Stack);
              if (isObject(srcValue)) {
                baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
              } else {
                var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined;
                if (newValue === undefined) {
                  newValue = srcValue;
                }
                assignMergeValue(object, key, newValue);
              }
            }), keysIn);
          }
          function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
            var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
            if (stacked) {
              assignMergeValue(object, key, stacked);
              return;
            }
            var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined;
            var isCommon = newValue === undefined;
            if (isCommon) {
              var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
              newValue = srcValue;
              if (isArr || isBuff || isTyped) {
                if (isArray(objValue)) {
                  newValue = objValue;
                } else if (isArrayLikeObject(objValue)) {
                  newValue = copyArray(objValue);
                } else if (isBuff) {
                  isCommon = false;
                  newValue = cloneBuffer(srcValue, true);
                } else if (isTyped) {
                  isCommon = false;
                  newValue = cloneTypedArray(srcValue, true);
                } else {
                  newValue = [];
                }
              } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
                newValue = objValue;
                if (isArguments(objValue)) {
                  newValue = toPlainObject(objValue);
                } else if (!isObject(objValue) || isFunction(objValue)) {
                  newValue = initCloneObject(srcValue);
                }
              } else {
                isCommon = false;
              }
            }
            if (isCommon) {
              stack.set(srcValue, newValue);
              mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
              stack["delete"](srcValue);
            }
            assignMergeValue(object, key, newValue);
          }
          function baseNth(array, n) {
            var length = array.length;
            if (!length) {
              return;
            }
            n += n < 0 ? length : 0;
            return isIndex(n, length) ? array[n] : undefined;
          }
          function baseOrderBy(collection, iteratees, orders) {
            if (iteratees.length) {
              iteratees = arrayMap(iteratees, (function(iteratee) {
                if (isArray(iteratee)) {
                  return function(value) {
                    return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
                  };
                }
                return iteratee;
              }));
            } else {
              iteratees = [ identity ];
            }
            var index = -1;
            iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
            var result = baseMap(collection, (function(value, key, collection) {
              var criteria = arrayMap(iteratees, (function(iteratee) {
                return iteratee(value);
              }));
              return {
                criteria,
                index: ++index,
                value
              };
            }));
            return baseSortBy(result, (function(object, other) {
              return compareMultiple(object, other, orders);
            }));
          }
          function basePick(object, paths) {
            return basePickBy(object, paths, (function(value, path) {
              return hasIn(object, path);
            }));
          }
          function basePickBy(object, paths, predicate) {
            var index = -1, length = paths.length, result = {};
            while (++index < length) {
              var path = paths[index], value = baseGet(object, path);
              if (predicate(value, path)) {
                baseSet(result, castPath(path, object), value);
              }
            }
            return result;
          }
          function basePropertyDeep(path) {
            return function(object) {
              return baseGet(object, path);
            };
          }
          function basePullAll(array, values, iteratee, comparator) {
            var indexOf = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values.length, seen = array;
            if (array === values) {
              values = copyArray(values);
            }
            if (iteratee) {
              seen = arrayMap(array, baseUnary(iteratee));
            }
            while (++index < length) {
              var fromIndex = 0, value = values[index], computed = iteratee ? iteratee(value) : value;
              while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
                if (seen !== array) {
                  splice.call(seen, fromIndex, 1);
                }
                splice.call(array, fromIndex, 1);
              }
            }
            return array;
          }
          function basePullAt(array, indexes) {
            var length = array ? indexes.length : 0, lastIndex = length - 1;
            while (length--) {
              var index = indexes[length];
              if (length == lastIndex || index !== previous) {
                var previous = index;
                if (isIndex(index)) {
                  splice.call(array, index, 1);
                } else {
                  baseUnset(array, index);
                }
              }
            }
            return array;
          }
          function baseRandom(lower, upper) {
            return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
          }
          function baseRange(start, end, step, fromRight) {
            var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result = Array(length);
            while (length--) {
              result[fromRight ? length : ++index] = start;
              start += step;
            }
            return result;
          }
          function baseRepeat(string, n) {
            var result = "";
            if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
              return result;
            }
            do {
              if (n % 2) {
                result += string;
              }
              n = nativeFloor(n / 2);
              if (n) {
                string += string;
              }
            } while (n);
            return result;
          }
          function baseRest(func, start) {
            return setToString(overRest(func, start, identity), func + "");
          }
          function baseSample(collection) {
            return arraySample(values(collection));
          }
          function baseSampleSize(collection, n) {
            var array = values(collection);
            return shuffleSelf(array, baseClamp(n, 0, array.length));
          }
          function baseSet(object, path, value, customizer) {
            if (!isObject(object)) {
              return object;
            }
            path = castPath(path, object);
            var index = -1, length = path.length, lastIndex = length - 1, nested = object;
            while (nested != null && ++index < length) {
              var key = toKey(path[index]), newValue = value;
              if (key === "__proto__" || key === "constructor" || key === "prototype") {
                return object;
              }
              if (index != lastIndex) {
                var objValue = nested[key];
                newValue = customizer ? customizer(objValue, key, nested) : undefined;
                if (newValue === undefined) {
                  newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
                }
              }
              assignValue(nested, key, newValue);
              nested = nested[key];
            }
            return object;
          }
          var baseSetData = !metaMap ? identity : function(func, data) {
            metaMap.set(func, data);
            return func;
          };
          var baseSetToString = !defineProperty ? identity : function(func, string) {
            return defineProperty(func, "toString", {
              configurable: true,
              enumerable: false,
              value: constant(string),
              writable: true
            });
          };
          function baseShuffle(collection) {
            return shuffleSelf(values(collection));
          }
          function baseSlice(array, start, end) {
            var index = -1, length = array.length;
            if (start < 0) {
              start = -start > length ? 0 : length + start;
            }
            end = end > length ? length : end;
            if (end < 0) {
              end += length;
            }
            length = start > end ? 0 : end - start >>> 0;
            start >>>= 0;
            var result = Array(length);
            while (++index < length) {
              result[index] = array[index + start];
            }
            return result;
          }
          function baseSome(collection, predicate) {
            var result;
            baseEach(collection, (function(value, index, collection) {
              result = predicate(value, index, collection);
              return !result;
            }));
            return !!result;
          }
          function baseSortedIndex(array, value, retHighest) {
            var low = 0, high = array == null ? low : array.length;
            if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
              while (low < high) {
                var mid = low + high >>> 1, computed = array[mid];
                if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
                  low = mid + 1;
                } else {
                  high = mid;
                }
              }
              return high;
            }
            return baseSortedIndexBy(array, value, identity, retHighest);
          }
          function baseSortedIndexBy(array, value, iteratee, retHighest) {
            var low = 0, high = array == null ? 0 : array.length;
            if (high === 0) {
              return 0;
            }
            value = iteratee(value);
            var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined;
            while (low < high) {
              var mid = nativeFloor((low + high) / 2), computed = iteratee(array[mid]), othIsDefined = computed !== undefined, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
              if (valIsNaN) {
                var setLow = retHighest || othIsReflexive;
              } else if (valIsUndefined) {
                setLow = othIsReflexive && (retHighest || othIsDefined);
              } else if (valIsNull) {
                setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
              } else if (valIsSymbol) {
                setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
              } else if (othIsNull || othIsSymbol) {
                setLow = false;
              } else {
                setLow = retHighest ? computed <= value : computed < value;
              }
              if (setLow) {
                low = mid + 1;
              } else {
                high = mid;
              }
            }
            return nativeMin(high, MAX_ARRAY_INDEX);
          }
          function baseSortedUniq(array, iteratee) {
            var index = -1, length = array.length, resIndex = 0, result = [];
            while (++index < length) {
              var value = array[index], computed = iteratee ? iteratee(value) : value;
              if (!index || !eq(computed, seen)) {
                var seen = computed;
                result[resIndex++] = value === 0 ? 0 : value;
              }
            }
            return result;
          }
          function baseToNumber(value) {
            if (typeof value == "number") {
              return value;
            }
            if (isSymbol(value)) {
              return NAN;
            }
            return +value;
          }
          function baseToString(value) {
            if (typeof value == "string") {
              return value;
            }
            if (isArray(value)) {
              return arrayMap(value, baseToString) + "";
            }
            if (isSymbol(value)) {
              return symbolToString ? symbolToString.call(value) : "";
            }
            var result = value + "";
            return result == "0" && 1 / value == -INFINITY ? "-0" : result;
          }
          function baseUniq(array, iteratee, comparator) {
            var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
            if (comparator) {
              isCommon = false;
              includes = arrayIncludesWith;
            } else if (length >= LARGE_ARRAY_SIZE) {
              var set = iteratee ? null : createSet(array);
              if (set) {
                return setToArray(set);
              }
              isCommon = false;
              includes = cacheHas;
              seen = new SetCache;
            } else {
              seen = iteratee ? [] : result;
            }
            outer: while (++index < length) {
              var value = array[index], computed = iteratee ? iteratee(value) : value;
              value = comparator || value !== 0 ? value : 0;
              if (isCommon && computed === computed) {
                var seenIndex = seen.length;
                while (seenIndex--) {
                  if (seen[seenIndex] === computed) {
                    continue outer;
                  }
                }
                if (iteratee) {
                  seen.push(computed);
                }
                result.push(value);
              } else if (!includes(seen, computed, comparator)) {
                if (seen !== result) {
                  seen.push(computed);
                }
                result.push(value);
              }
            }
            return result;
          }
          function baseUnset(object, path) {
            path = castPath(path, object);
            var index = -1, length = path.length;
            if (!length) {
              return true;
            }
            var isRootPrimitive = object == null || typeof object !== "object" && typeof object !== "function";
            while (++index < length) {
              var key = path[index];
              if (typeof key !== "string") {
                continue;
              }
              if (key === "__proto__" && !hasOwnProperty.call(object, "__proto__")) {
                return false;
              }
              if (key === "constructor" && index + 1 < length && typeof path[index + 1] === "string" && path[index + 1] === "prototype") {
                if (isRootPrimitive && index === 0) {
                  continue;
                }
                return false;
              }
            }
            var obj = parent(object, path);
            return obj == null || delete obj[toKey(last(path))];
          }
          function baseUpdate(object, path, updater, customizer) {
            return baseSet(object, path, updater(baseGet(object, path)), customizer);
          }
          function baseWhile(array, predicate, isDrop, fromRight) {
            var length = array.length, index = fromRight ? length : -1;
            while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}
            return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
          }
          function baseWrapperValue(value, actions) {
            var result = value;
            if (result instanceof LazyWrapper) {
              result = result.value();
            }
            return arrayReduce(actions, (function(result, action) {
              return action.func.apply(action.thisArg, arrayPush([ result ], action.args));
            }), result);
          }
          function baseXor(arrays, iteratee, comparator) {
            var length = arrays.length;
            if (length < 2) {
              return length ? baseUniq(arrays[0]) : [];
            }
            var index = -1, result = Array(length);
            while (++index < length) {
              var array = arrays[index], othIndex = -1;
              while (++othIndex < length) {
                if (othIndex != index) {
                  result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
                }
              }
            }
            return baseUniq(baseFlatten(result, 1), iteratee, comparator);
          }
          function baseZipObject(props, values, assignFunc) {
            var index = -1, length = props.length, valsLength = values.length, result = {};
            while (++index < length) {
              var value = index < valsLength ? values[index] : undefined;
              assignFunc(result, props[index], value);
            }
            return result;
          }
          function castArrayLikeObject(value) {
            return isArrayLikeObject(value) ? value : [];
          }
          function castFunction(value) {
            return typeof value == "function" ? value : identity;
          }
          function castPath(value, object) {
            if (isArray(value)) {
              return value;
            }
            return isKey(value, object) ? [ value ] : stringToPath(toString(value));
          }
          var castRest = baseRest;
          function castSlice(array, start, end) {
            var length = array.length;
            end = end === undefined ? length : end;
            return !start && end >= length ? array : baseSlice(array, start, end);
          }
          var clearTimeout = ctxClearTimeout || function(id) {
            return root.clearTimeout(id);
          };
          function cloneBuffer(buffer, isDeep) {
            if (isDeep) {
              return buffer.slice();
            }
            var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
            buffer.copy(result);
            return result;
          }
          function cloneArrayBuffer(arrayBuffer) {
            var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
            new Uint8Array(result).set(new Uint8Array(arrayBuffer));
            return result;
          }
          function cloneDataView(dataView, isDeep) {
            var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
            return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
          }
          function cloneRegExp(regexp) {
            var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
            result.lastIndex = regexp.lastIndex;
            return result;
          }
          function cloneSymbol(symbol) {
            return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
          }
          function cloneTypedArray(typedArray, isDeep) {
            var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
            return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
          }
          function compareAscending(value, other) {
            if (value !== other) {
              var valIsDefined = value !== undefined, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
              var othIsDefined = other !== undefined, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
              if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
                return 1;
              }
              if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
                return -1;
              }
            }
            return 0;
          }
          function compareMultiple(object, other, orders) {
            var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
            while (++index < length) {
              var result = compareAscending(objCriteria[index], othCriteria[index]);
              if (result) {
                if (index >= ordersLength) {
                  return result;
                }
                var order = orders[index];
                return result * (order == "desc" ? -1 : 1);
              }
            }
            return object.index - other.index;
          }
          function composeArgs(args, partials, holders, isCurried) {
            var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result = Array(leftLength + rangeLength), isUncurried = !isCurried;
            while (++leftIndex < leftLength) {
              result[leftIndex] = partials[leftIndex];
            }
            while (++argsIndex < holdersLength) {
              if (isUncurried || argsIndex < argsLength) {
                result[holders[argsIndex]] = args[argsIndex];
              }
            }
            while (rangeLength--) {
              result[leftIndex++] = args[argsIndex++];
            }
            return result;
          }
          function composeArgsRight(args, partials, holders, isCurried) {
            var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result = Array(rangeLength + rightLength), isUncurried = !isCurried;
            while (++argsIndex < rangeLength) {
              result[argsIndex] = args[argsIndex];
            }
            var offset = argsIndex;
            while (++rightIndex < rightLength) {
              result[offset + rightIndex] = partials[rightIndex];
            }
            while (++holdersIndex < holdersLength) {
              if (isUncurried || argsIndex < argsLength) {
                result[offset + holders[holdersIndex]] = args[argsIndex++];
              }
            }
            return result;
          }
          function copyArray(source, array) {
            var index = -1, length = source.length;
            array || (array = Array(length));
            while (++index < length) {
              array[index] = source[index];
            }
            return array;
          }
          function copyObject(source, props, object, customizer) {
            var isNew = !object;
            object || (object = {});
            var index = -1, length = props.length;
            while (++index < length) {
              var key = props[index];
              var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;
              if (newValue === undefined) {
                newValue = source[key];
              }
              if (isNew) {
                baseAssignValue(object, key, newValue);
              } else {
                assignValue(object, key, newValue);
              }
            }
            return object;
          }
          function copySymbols(source, object) {
            return copyObject(source, getSymbols(source), object);
          }
          function copySymbolsIn(source, object) {
            return copyObject(source, getSymbolsIn(source), object);
          }
          function createAggregator(setter, initializer) {
            return function(collection, iteratee) {
              var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
              return func(collection, setter, getIteratee(iteratee, 2), accumulator);
            };
          }
          function createAssigner(assigner) {
            return baseRest((function(object, sources) {
              var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined, guard = length > 2 ? sources[2] : undefined;
              customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, 
              customizer) : undefined;
              if (guard && isIterateeCall(sources[0], sources[1], guard)) {
                customizer = length < 3 ? undefined : customizer;
                length = 1;
              }
              object = Object(object);
              while (++index < length) {
                var source = sources[index];
                if (source) {
                  assigner(object, source, index, customizer);
                }
              }
              return object;
            }));
          }
          function createBaseEach(eachFunc, fromRight) {
            return function(collection, iteratee) {
              if (collection == null) {
                return collection;
              }
              if (!isArrayLike(collection)) {
                return eachFunc(collection, iteratee);
              }
              var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
              while (fromRight ? index-- : ++index < length) {
                if (iteratee(iterable[index], index, iterable) === false) {
                  break;
                }
              }
              return collection;
            };
          }
          function createBaseFor(fromRight) {
            return function(object, iteratee, keysFunc) {
              var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
              while (length--) {
                var key = props[fromRight ? length : ++index];
                if (iteratee(iterable[key], key, iterable) === false) {
                  break;
                }
              }
              return object;
            };
          }
          function createBind(func, bitmask, thisArg) {
            var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
            function wrapper() {
              var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
              return fn.apply(isBind ? thisArg : this, arguments);
            }
            return wrapper;
          }
          function createCaseFirst(methodName) {
            return function(string) {
              string = toString(string);
              var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;
              var chr = strSymbols ? strSymbols[0] : string.charAt(0);
              var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
              return chr[methodName]() + trailing;
            };
          }
          function createCompounder(callback) {
            return function(string) {
              return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
            };
          }
          function createCtor(Ctor) {
            return function() {
              var args = arguments;
              switch (args.length) {
               case 0:
                return new Ctor;

               case 1:
                return new Ctor(args[0]);

               case 2:
                return new Ctor(args[0], args[1]);

               case 3:
                return new Ctor(args[0], args[1], args[2]);

               case 4:
                return new Ctor(args[0], args[1], args[2], args[3]);

               case 5:
                return new Ctor(args[0], args[1], args[2], args[3], args[4]);

               case 6:
                return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);

               case 7:
                return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
              }
              var thisBinding = baseCreate(Ctor.prototype), result = Ctor.apply(thisBinding, args);
              return isObject(result) ? result : thisBinding;
            };
          }
          function createCurry(func, bitmask, arity) {
            var Ctor = createCtor(func);
            function wrapper() {
              var length = arguments.length, args = Array(length), index = length, placeholder = getHolder(wrapper);
              while (index--) {
                args[index] = arguments[index];
              }
              var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
              length -= holders.length;
              if (length < arity) {
                return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);
              }
              var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
              return apply(fn, this, args);
            }
            return wrapper;
          }
          function createFind(findIndexFunc) {
            return function(collection, predicate, fromIndex) {
              var iterable = Object(collection);
              if (!isArrayLike(collection)) {
                var iteratee = getIteratee(predicate, 3);
                collection = keys(collection);
                predicate = function(key) {
                  return iteratee(iterable[key], key, iterable);
                };
              }
              var index = findIndexFunc(collection, predicate, fromIndex);
              return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
            };
          }
          function createFlow(fromRight) {
            return flatRest((function(funcs) {
              var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;
              if (fromRight) {
                funcs.reverse();
              }
              while (index--) {
                var func = funcs[index];
                if (typeof func != "function") {
                  throw new TypeError(FUNC_ERROR_TEXT);
                }
                if (prereq && !wrapper && getFuncName(func) == "wrapper") {
                  var wrapper = new LodashWrapper([], true);
                }
              }
              index = wrapper ? index : length;
              while (++index < length) {
                func = funcs[index];
                var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined;
                if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
                  wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
                } else {
                  wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
                }
              }
              return function() {
                var args = arguments, value = args[0];
                if (wrapper && args.length == 1 && isArray(value)) {
                  return wrapper.plant(value).value();
                }
                var index = 0, result = length ? funcs[index].apply(this, args) : value;
                while (++index < length) {
                  result = funcs[index].call(this, result);
                }
                return result;
              };
            }));
          }
          function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
            var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined : createCtor(func);
            function wrapper() {
              var length = arguments.length, args = Array(length), index = length;
              while (index--) {
                args[index] = arguments[index];
              }
              if (isCurried) {
                var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
              }
              if (partials) {
                args = composeArgs(args, partials, holders, isCurried);
              }
              if (partialsRight) {
                args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
              }
              length -= holdersCount;
              if (isCurried && length < arity) {
                var newHolders = replaceHolders(args, placeholder);
                return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);
              }
              var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
              length = args.length;
              if (argPos) {
                args = reorder(args, argPos);
              } else if (isFlip && length > 1) {
                args.reverse();
              }
              if (isAry && ary < length) {
                args.length = ary;
              }
              if (this && this !== root && this instanceof wrapper) {
                fn = Ctor || createCtor(fn);
              }
              return fn.apply(thisBinding, args);
            }
            return wrapper;
          }
          function createInverter(setter, toIteratee) {
            return function(object, iteratee) {
              return baseInverter(object, setter, toIteratee(iteratee), {});
            };
          }
          function createMathOperation(operator, defaultValue) {
            return function(value, other) {
              var result;
              if (value === undefined && other === undefined) {
                return defaultValue;
              }
              if (value !== undefined) {
                result = value;
              }
              if (other !== undefined) {
                if (result === undefined) {
                  return other;
                }
                if (typeof value == "string" || typeof other == "string") {
                  value = baseToString(value);
                  other = baseToString(other);
                } else {
                  value = baseToNumber(value);
                  other = baseToNumber(other);
                }
                result = operator(value, other);
              }
              return result;
            };
          }
          function createOver(arrayFunc) {
            return flatRest((function(iteratees) {
              iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
              return baseRest((function(args) {
                var thisArg = this;
                return arrayFunc(iteratees, (function(iteratee) {
                  return apply(iteratee, thisArg, args);
                }));
              }));
            }));
          }
          function createPadding(length, chars) {
            chars = chars === undefined ? " " : baseToString(chars);
            var charsLength = chars.length;
            if (charsLength < 2) {
              return charsLength ? baseRepeat(chars, length) : chars;
            }
            var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
            return hasUnicode(chars) ? castSlice(stringToArray(result), 0, length).join("") : result.slice(0, length);
          }
          function createPartial(func, bitmask, thisArg, partials) {
            var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
            function wrapper() {
              var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;
              while (++leftIndex < leftLength) {
                args[leftIndex] = partials[leftIndex];
              }
              while (argsLength--) {
                args[leftIndex++] = arguments[++argsIndex];
              }
              return apply(fn, isBind ? thisArg : this, args);
            }
            return wrapper;
          }
          function createRange(fromRight) {
            return function(start, end, step) {
              if (step && typeof step != "number" && isIterateeCall(start, end, step)) {
                end = step = undefined;
              }
              start = toFinite(start);
              if (end === undefined) {
                end = start;
                start = 0;
              } else {
                end = toFinite(end);
              }
              step = step === undefined ? start < end ? 1 : -1 : toFinite(step);
              return baseRange(start, end, step, fromRight);
            };
          }
          function createRelationalOperation(operator) {
            return function(value, other) {
              if (!(typeof value == "string" && typeof other == "string")) {
                value = toNumber(value);
                other = toNumber(other);
              }
              return operator(value, other);
            };
          }
          function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
            var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined, newHoldersRight = isCurry ? undefined : holders, newPartials = isCurry ? partials : undefined, newPartialsRight = isCurry ? undefined : partials;
            bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
            bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
            if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
              bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
            }
            var newData = [ func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity ];
            var result = wrapFunc.apply(undefined, newData);
            if (isLaziable(func)) {
              setData(result, newData);
            }
            result.placeholder = placeholder;
            return setWrapToString(result, func, bitmask);
          }
          function createRound(methodName) {
            var func = Math[methodName];
            return function(number, precision) {
              number = toNumber(number);
              precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
              if (precision && nativeIsFinite(number)) {
                var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
                pair = (toString(value) + "e").split("e");
                return +(pair[0] + "e" + (+pair[1] - precision));
              }
              return func(number);
            };
          }
          var createSet = !(Set && 1 / setToArray(new Set([ , -0 ]))[1] == INFINITY) ? noop : function(values) {
            return new Set(values);
          };
          function createToPairs(keysFunc) {
            return function(object) {
              var tag = getTag(object);
              if (tag == mapTag) {
                return mapToArray(object);
              }
              if (tag == setTag) {
                return setToPairs(object);
              }
              return baseToPairs(object, keysFunc(object));
            };
          }
          function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
            var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
            if (!isBindKey && typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            var length = partials ? partials.length : 0;
            if (!length) {
              bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
              partials = holders = undefined;
            }
            ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
            arity = arity === undefined ? arity : toInteger(arity);
            length -= holders ? holders.length : 0;
            if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
              var partialsRight = partials, holdersRight = holders;
              partials = holders = undefined;
            }
            var data = isBindKey ? undefined : getData(func);
            var newData = [ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity ];
            if (data) {
              mergeData(newData, data);
            }
            func = newData[0];
            bitmask = newData[1];
            thisArg = newData[2];
            partials = newData[3];
            holders = newData[4];
            arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
            if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
              bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
            }
            if (!bitmask || bitmask == WRAP_BIND_FLAG) {
              var result = createBind(func, bitmask, thisArg);
            } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
              result = createCurry(func, bitmask, arity);
            } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
              result = createPartial(func, bitmask, thisArg, partials);
            } else {
              result = createHybrid.apply(undefined, newData);
            }
            var setter = data ? baseSetData : setData;
            return setWrapToString(setter(result, newData), func, bitmask);
          }
          function customDefaultsAssignIn(objValue, srcValue, key, object) {
            if (objValue === undefined || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
              return srcValue;
            }
            return objValue;
          }
          function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
            if (isObject(objValue) && isObject(srcValue)) {
              stack.set(srcValue, objValue);
              baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
              stack["delete"](srcValue);
            }
            return objValue;
          }
          function customOmitClone(value) {
            return isPlainObject(value) ? undefined : value;
          }
          function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
            var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
            if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
              return false;
            }
            var arrStacked = stack.get(array);
            var othStacked = stack.get(other);
            if (arrStacked && othStacked) {
              return arrStacked == other && othStacked == array;
            }
            var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache : undefined;
            stack.set(array, other);
            stack.set(other, array);
            while (++index < arrLength) {
              var arrValue = array[index], othValue = other[index];
              if (customizer) {
                var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
              }
              if (compared !== undefined) {
                if (compared) {
                  continue;
                }
                result = false;
                break;
              }
              if (seen) {
                if (!arraySome(other, (function(othValue, othIndex) {
                  if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
                    return seen.push(othIndex);
                  }
                }))) {
                  result = false;
                  break;
                }
              } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
                result = false;
                break;
              }
            }
            stack["delete"](array);
            stack["delete"](other);
            return result;
          }
          function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
            switch (tag) {
             case dataViewTag:
              if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
                return false;
              }
              object = object.buffer;
              other = other.buffer;

             case arrayBufferTag:
              if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
                return false;
              }
              return true;

             case boolTag:
             case dateTag:
             case numberTag:
              return eq(+object, +other);

             case errorTag:
              return object.name == other.name && object.message == other.message;

             case regexpTag:
             case stringTag:
              return object == other + "";

             case mapTag:
              var convert = mapToArray;

             case setTag:
              var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
              convert || (convert = setToArray);
              if (object.size != other.size && !isPartial) {
                return false;
              }
              var stacked = stack.get(object);
              if (stacked) {
                return stacked == other;
              }
              bitmask |= COMPARE_UNORDERED_FLAG;
              stack.set(object, other);
              var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
              stack["delete"](object);
              return result;

             case symbolTag:
              if (symbolValueOf) {
                return symbolValueOf.call(object) == symbolValueOf.call(other);
              }
            }
            return false;
          }
          function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
            var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
            if (objLength != othLength && !isPartial) {
              return false;
            }
            var index = objLength;
            while (index--) {
              var key = objProps[index];
              if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
                return false;
              }
            }
            var objStacked = stack.get(object);
            var othStacked = stack.get(other);
            if (objStacked && othStacked) {
              return objStacked == other && othStacked == object;
            }
            var result = true;
            stack.set(object, other);
            stack.set(other, object);
            var skipCtor = isPartial;
            while (++index < objLength) {
              key = objProps[index];
              var objValue = object[key], othValue = other[key];
              if (customizer) {
                var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
              }
              if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
                result = false;
                break;
              }
              skipCtor || (skipCtor = key == "constructor");
            }
            if (result && !skipCtor) {
              var objCtor = object.constructor, othCtor = other.constructor;
              if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
                result = false;
              }
            }
            stack["delete"](object);
            stack["delete"](other);
            return result;
          }
          function flatRest(func) {
            return setToString(overRest(func, undefined, flatten), func + "");
          }
          function getAllKeys(object) {
            return baseGetAllKeys(object, keys, getSymbols);
          }
          function getAllKeysIn(object) {
            return baseGetAllKeys(object, keysIn, getSymbolsIn);
          }
          var getData = !metaMap ? noop : function(func) {
            return metaMap.get(func);
          };
          function getFuncName(func) {
            var result = func.name + "", array = realNames[result], length = hasOwnProperty.call(realNames, result) ? array.length : 0;
            while (length--) {
              var data = array[length], otherFunc = data.func;
              if (otherFunc == null || otherFunc == func) {
                return data.name;
              }
            }
            return result;
          }
          function getHolder(func) {
            var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func;
            return object.placeholder;
          }
          function getIteratee() {
            var result = lodash.iteratee || iteratee;
            result = result === iteratee ? baseIteratee : result;
            return arguments.length ? result(arguments[0], arguments[1]) : result;
          }
          function getMapData(map, key) {
            var data = map.__data__;
            return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
          }
          function getMatchData(object) {
            var result = keys(object), length = result.length;
            while (length--) {
              var key = result[length], value = object[key];
              result[length] = [ key, value, isStrictComparable(value) ];
            }
            return result;
          }
          function getNative(object, key) {
            var value = getValue(object, key);
            return baseIsNative(value) ? value : undefined;
          }
          function getRawTag(value) {
            var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
            try {
              value[symToStringTag] = undefined;
              var unmasked = true;
            } catch (e) {}
            var result = nativeObjectToString.call(value);
            if (unmasked) {
              if (isOwn) {
                value[symToStringTag] = tag;
              } else {
                delete value[symToStringTag];
              }
            }
            return result;
          }
          var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
            if (object == null) {
              return [];
            }
            object = Object(object);
            return arrayFilter(nativeGetSymbols(object), (function(symbol) {
              return propertyIsEnumerable.call(object, symbol);
            }));
          };
          var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
            var result = [];
            while (object) {
              arrayPush(result, getSymbols(object));
              object = getPrototype(object);
            }
            return result;
          };
          var getTag = baseGetTag;
          if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set) != setTag || WeakMap && getTag(new WeakMap) != weakMapTag) {
            getTag = function(value) {
              var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : undefined, ctorString = Ctor ? toSource(Ctor) : "";
              if (ctorString) {
                switch (ctorString) {
                 case dataViewCtorString:
                  return dataViewTag;

                 case mapCtorString:
                  return mapTag;

                 case promiseCtorString:
                  return promiseTag;

                 case setCtorString:
                  return setTag;

                 case weakMapCtorString:
                  return weakMapTag;
                }
              }
              return result;
            };
          }
          function getView(start, end, transforms) {
            var index = -1, length = transforms.length;
            while (++index < length) {
              var data = transforms[index], size = data.size;
              switch (data.type) {
               case "drop":
                start += size;
                break;

               case "dropRight":
                end -= size;
                break;

               case "take":
                end = nativeMin(end, start + size);
                break;

               case "takeRight":
                start = nativeMax(start, end - size);
                break;
              }
            }
            return {
              start,
              end
            };
          }
          function getWrapDetails(source) {
            var match = source.match(reWrapDetails);
            return match ? match[1].split(reSplitDetails) : [];
          }
          function hasPath(object, path, hasFunc) {
            path = castPath(path, object);
            var index = -1, length = path.length, result = false;
            while (++index < length) {
              var key = toKey(path[index]);
              if (!(result = object != null && hasFunc(object, key))) {
                break;
              }
              object = object[key];
            }
            if (result || ++index != length) {
              return result;
            }
            length = object == null ? 0 : object.length;
            return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
          }
          function initCloneArray(array) {
            var length = array.length, result = new array.constructor(length);
            if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
              result.index = array.index;
              result.input = array.input;
            }
            return result;
          }
          function initCloneObject(object) {
            return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
          }
          function initCloneByTag(object, tag, isDeep) {
            var Ctor = object.constructor;
            switch (tag) {
             case arrayBufferTag:
              return cloneArrayBuffer(object);

             case boolTag:
             case dateTag:
              return new Ctor(+object);

             case dataViewTag:
              return cloneDataView(object, isDeep);

             case float32Tag:
             case float64Tag:
             case int8Tag:
             case int16Tag:
             case int32Tag:
             case uint8Tag:
             case uint8ClampedTag:
             case uint16Tag:
             case uint32Tag:
              return cloneTypedArray(object, isDeep);

             case mapTag:
              return new Ctor;

             case numberTag:
             case stringTag:
              return new Ctor(object);

             case regexpTag:
              return cloneRegExp(object);

             case setTag:
              return new Ctor;

             case symbolTag:
              return cloneSymbol(object);
            }
          }
          function insertWrapDetails(source, details) {
            var length = details.length;
            if (!length) {
              return source;
            }
            var lastIndex = length - 1;
            details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex];
            details = details.join(length > 2 ? ", " : " ");
            return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
          }
          function isFlattenable(value) {
            return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
          }
          function isIndex(value, length) {
            var type = typeof value;
            length = length == null ? MAX_SAFE_INTEGER : length;
            return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
          }
          function isIterateeCall(value, index, object) {
            if (!isObject(object)) {
              return false;
            }
            var type = typeof index;
            if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
              return eq(object[index], value);
            }
            return false;
          }
          function isKey(value, object) {
            if (isArray(value)) {
              return false;
            }
            var type = typeof value;
            if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
              return true;
            }
            return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
          }
          function isKeyable(value) {
            var type = typeof value;
            return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
          }
          function isLaziable(func) {
            var funcName = getFuncName(func), other = lodash[funcName];
            if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
              return false;
            }
            if (func === other) {
              return true;
            }
            var data = getData(other);
            return !!data && func === data[0];
          }
          function isMasked(func) {
            return !!maskSrcKey && maskSrcKey in func;
          }
          var isMaskable = coreJsData ? isFunction : stubFalse;
          function isPrototype(value) {
            var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
            return value === proto;
          }
          function isStrictComparable(value) {
            return value === value && !isObject(value);
          }
          function matchesStrictComparable(key, srcValue) {
            return function(object) {
              if (object == null) {
                return false;
              }
              return object[key] === srcValue && (srcValue !== undefined || key in Object(object));
            };
          }
          function memoizeCapped(func) {
            var result = memoize(func, (function(key) {
              if (cache.size === MAX_MEMOIZE_SIZE) {
                cache.clear();
              }
              return key;
            }));
            var cache = result.cache;
            return result;
          }
          function mergeData(data, source) {
            var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
            var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
            if (!(isCommon || isCombo)) {
              return data;
            }
            if (srcBitmask & WRAP_BIND_FLAG) {
              data[2] = source[2];
              newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
            }
            var value = source[3];
            if (value) {
              var partials = data[3];
              data[3] = partials ? composeArgs(partials, value, source[4]) : value;
              data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
            }
            value = source[5];
            if (value) {
              partials = data[5];
              data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
              data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
            }
            value = source[7];
            if (value) {
              data[7] = value;
            }
            if (srcBitmask & WRAP_ARY_FLAG) {
              data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
            }
            if (data[9] == null) {
              data[9] = source[9];
            }
            data[0] = source[0];
            data[1] = newBitmask;
            return data;
          }
          function nativeKeysIn(object) {
            var result = [];
            if (object != null) {
              for (var key in Object(object)) {
                result.push(key);
              }
            }
            return result;
          }
          function objectToString(value) {
            return nativeObjectToString.call(value);
          }
          function overRest(func, start, transform) {
            start = nativeMax(start === undefined ? func.length - 1 : start, 0);
            return function() {
              var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);
              while (++index < length) {
                array[index] = args[start + index];
              }
              index = -1;
              var otherArgs = Array(start + 1);
              while (++index < start) {
                otherArgs[index] = args[index];
              }
              otherArgs[start] = transform(array);
              return apply(func, this, otherArgs);
            };
          }
          function parent(object, path) {
            return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
          }
          function reorder(array, indexes) {
            var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
            while (length--) {
              var index = indexes[length];
              array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
            }
            return array;
          }
          function safeGet(object, key) {
            if (key === "constructor" && typeof object[key] === "function") {
              return;
            }
            if (key == "__proto__") {
              return;
            }
            return object[key];
          }
          var setData = shortOut(baseSetData);
          var setTimeout = ctxSetTimeout || function(func, wait) {
            return root.setTimeout(func, wait);
          };
          var setToString = shortOut(baseSetToString);
          function setWrapToString(wrapper, reference, bitmask) {
            var source = reference + "";
            return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
          }
          function shortOut(func) {
            var count = 0, lastCalled = 0;
            return function() {
              var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
              lastCalled = stamp;
              if (remaining > 0) {
                if (++count >= HOT_COUNT) {
                  return arguments[0];
                }
              } else {
                count = 0;
              }
              return func.apply(undefined, arguments);
            };
          }
          function shuffleSelf(array, size) {
            var index = -1, length = array.length, lastIndex = length - 1;
            size = size === undefined ? length : size;
            while (++index < size) {
              var rand = baseRandom(index, lastIndex), value = array[rand];
              array[rand] = array[index];
              array[index] = value;
            }
            array.length = size;
            return array;
          }
          var stringToPath = memoizeCapped((function(string) {
            var result = [];
            if (string.charCodeAt(0) === 46) {
              result.push("");
            }
            string.replace(rePropName, (function(match, number, quote, subString) {
              result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
            }));
            return result;
          }));
          function toKey(value) {
            if (typeof value == "string" || isSymbol(value)) {
              return value;
            }
            var result = value + "";
            return result == "0" && 1 / value == -INFINITY ? "-0" : result;
          }
          function toSource(func) {
            if (func != null) {
              try {
                return funcToString.call(func);
              } catch (e) {}
              try {
                return func + "";
              } catch (e) {}
            }
            return "";
          }
          function updateWrapDetails(details, bitmask) {
            arrayEach(wrapFlags, (function(pair) {
              var value = "_." + pair[0];
              if (bitmask & pair[1] && !arrayIncludes(details, value)) {
                details.push(value);
              }
            }));
            return details.sort();
          }
          function wrapperClone(wrapper) {
            if (wrapper instanceof LazyWrapper) {
              return wrapper.clone();
            }
            var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
            result.__actions__ = copyArray(wrapper.__actions__);
            result.__index__ = wrapper.__index__;
            result.__values__ = wrapper.__values__;
            return result;
          }
          function chunk(array, size, guard) {
            if (guard ? isIterateeCall(array, size, guard) : size === undefined) {
              size = 1;
            } else {
              size = nativeMax(toInteger(size), 0);
            }
            var length = array == null ? 0 : array.length;
            if (!length || size < 1) {
              return [];
            }
            var index = 0, resIndex = 0, result = Array(nativeCeil(length / size));
            while (index < length) {
              result[resIndex++] = baseSlice(array, index, index += size);
            }
            return result;
          }
          function compact(array) {
            var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
            while (++index < length) {
              var value = array[index];
              if (value) {
                result[resIndex++] = value;
              }
            }
            return result;
          }
          function concat() {
            var length = arguments.length;
            if (!length) {
              return [];
            }
            var args = Array(length - 1), array = arguments[0], index = length;
            while (index--) {
              args[index - 1] = arguments[index];
            }
            return arrayPush(isArray(array) ? copyArray(array) : [ array ], baseFlatten(args, 1));
          }
          var difference = baseRest((function(array, values) {
            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];
          }));
          var differenceBy = baseRest((function(array, values) {
            var iteratee = last(values);
            if (isArrayLikeObject(iteratee)) {
              iteratee = undefined;
            }
            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) : [];
          }));
          var differenceWith = baseRest((function(array, values) {
            var comparator = last(values);
            if (isArrayLikeObject(comparator)) {
              comparator = undefined;
            }
            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) : [];
          }));
          function drop(array, n, guard) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            n = guard || n === undefined ? 1 : toInteger(n);
            return baseSlice(array, n < 0 ? 0 : n, length);
          }
          function dropRight(array, n, guard) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            n = guard || n === undefined ? 1 : toInteger(n);
            n = length - n;
            return baseSlice(array, 0, n < 0 ? 0 : n);
          }
          function dropRightWhile(array, predicate) {
            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
          }
          function dropWhile(array, predicate) {
            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
          }
          function fill(array, value, start, end) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            if (start && typeof start != "number" && isIterateeCall(array, value, start)) {
              start = 0;
              end = length;
            }
            return baseFill(array, value, start, end);
          }
          function findIndex(array, predicate, fromIndex) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return -1;
            }
            var index = fromIndex == null ? 0 : toInteger(fromIndex);
            if (index < 0) {
              index = nativeMax(length + index, 0);
            }
            return baseFindIndex(array, getIteratee(predicate, 3), index);
          }
          function findLastIndex(array, predicate, fromIndex) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return -1;
            }
            var index = length - 1;
            if (fromIndex !== undefined) {
              index = toInteger(fromIndex);
              index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
            }
            return baseFindIndex(array, getIteratee(predicate, 3), index, true);
          }
          function flatten(array) {
            var length = array == null ? 0 : array.length;
            return length ? baseFlatten(array, 1) : [];
          }
          function flattenDeep(array) {
            var length = array == null ? 0 : array.length;
            return length ? baseFlatten(array, INFINITY) : [];
          }
          function flattenDepth(array, depth) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            depth = depth === undefined ? 1 : toInteger(depth);
            return baseFlatten(array, depth);
          }
          function fromPairs(pairs) {
            var index = -1, length = pairs == null ? 0 : pairs.length, result = {};
            while (++index < length) {
              var pair = pairs[index];
              result[pair[0]] = pair[1];
            }
            return result;
          }
          function head(array) {
            return array && array.length ? array[0] : undefined;
          }
          function indexOf(array, value, fromIndex) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return -1;
            }
            var index = fromIndex == null ? 0 : toInteger(fromIndex);
            if (index < 0) {
              index = nativeMax(length + index, 0);
            }
            return baseIndexOf(array, value, index);
          }
          function initial(array) {
            var length = array == null ? 0 : array.length;
            return length ? baseSlice(array, 0, -1) : [];
          }
          var intersection = baseRest((function(arrays) {
            var mapped = arrayMap(arrays, castArrayLikeObject);
            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
          }));
          var intersectionBy = baseRest((function(arrays) {
            var iteratee = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
            if (iteratee === last(mapped)) {
              iteratee = undefined;
            } else {
              mapped.pop();
            }
            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee, 2)) : [];
          }));
          var intersectionWith = baseRest((function(arrays) {
            var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
            comparator = typeof comparator == "function" ? comparator : undefined;
            if (comparator) {
              mapped.pop();
            }
            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : [];
          }));
          function join(array, separator) {
            return array == null ? "" : nativeJoin.call(array, separator);
          }
          function last(array) {
            var length = array == null ? 0 : array.length;
            return length ? array[length - 1] : undefined;
          }
          function lastIndexOf(array, value, fromIndex) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return -1;
            }
            var index = length;
            if (fromIndex !== undefined) {
              index = toInteger(fromIndex);
              index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
            }
            return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);
          }
          function nth(array, n) {
            return array && array.length ? baseNth(array, toInteger(n)) : undefined;
          }
          var pull = baseRest(pullAll);
          function pullAll(array, values) {
            return array && array.length && values && values.length ? basePullAll(array, values) : array;
          }
          function pullAllBy(array, values, iteratee) {
            return array && array.length && values && values.length ? basePullAll(array, values, getIteratee(iteratee, 2)) : array;
          }
          function pullAllWith(array, values, comparator) {
            return array && array.length && values && values.length ? basePullAll(array, values, undefined, comparator) : array;
          }
          var pullAt = flatRest((function(array, indexes) {
            var length = array == null ? 0 : array.length, result = baseAt(array, indexes);
            basePullAt(array, arrayMap(indexes, (function(index) {
              return isIndex(index, length) ? +index : index;
            })).sort(compareAscending));
            return result;
          }));
          function remove(array, predicate) {
            var result = [];
            if (!(array && array.length)) {
              return result;
            }
            var index = -1, indexes = [], length = array.length;
            predicate = getIteratee(predicate, 3);
            while (++index < length) {
              var value = array[index];
              if (predicate(value, index, array)) {
                result.push(value);
                indexes.push(index);
              }
            }
            basePullAt(array, indexes);
            return result;
          }
          function reverse(array) {
            return array == null ? array : nativeReverse.call(array);
          }
          function slice(array, start, end) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            if (end && typeof end != "number" && isIterateeCall(array, start, end)) {
              start = 0;
              end = length;
            } else {
              start = start == null ? 0 : toInteger(start);
              end = end === undefined ? length : toInteger(end);
            }
            return baseSlice(array, start, end);
          }
          function sortedIndex(array, value) {
            return baseSortedIndex(array, value);
          }
          function sortedIndexBy(array, value, iteratee) {
            return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
          }
          function sortedIndexOf(array, value) {
            var length = array == null ? 0 : array.length;
            if (length) {
              var index = baseSortedIndex(array, value);
              if (index < length && eq(array[index], value)) {
                return index;
              }
            }
            return -1;
          }
          function sortedLastIndex(array, value) {
            return baseSortedIndex(array, value, true);
          }
          function sortedLastIndexBy(array, value, iteratee) {
            return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
          }
          function sortedLastIndexOf(array, value) {
            var length = array == null ? 0 : array.length;
            if (length) {
              var index = baseSortedIndex(array, value, true) - 1;
              if (eq(array[index], value)) {
                return index;
              }
            }
            return -1;
          }
          function sortedUniq(array) {
            return array && array.length ? baseSortedUniq(array) : [];
          }
          function sortedUniqBy(array, iteratee) {
            return array && array.length ? baseSortedUniq(array, getIteratee(iteratee, 2)) : [];
          }
          function tail(array) {
            var length = array == null ? 0 : array.length;
            return length ? baseSlice(array, 1, length) : [];
          }
          function take(array, n, guard) {
            if (!(array && array.length)) {
              return [];
            }
            n = guard || n === undefined ? 1 : toInteger(n);
            return baseSlice(array, 0, n < 0 ? 0 : n);
          }
          function takeRight(array, n, guard) {
            var length = array == null ? 0 : array.length;
            if (!length) {
              return [];
            }
            n = guard || n === undefined ? 1 : toInteger(n);
            n = length - n;
            return baseSlice(array, n < 0 ? 0 : n, length);
          }
          function takeRightWhile(array, predicate) {
            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
          }
          function takeWhile(array, predicate) {
            return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
          }
          var union = baseRest((function(arrays) {
            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
          }));
          var unionBy = baseRest((function(arrays) {
            var iteratee = last(arrays);
            if (isArrayLikeObject(iteratee)) {
              iteratee = undefined;
            }
            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
          }));
          var unionWith = baseRest((function(arrays) {
            var comparator = last(arrays);
            comparator = typeof comparator == "function" ? comparator : undefined;
            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
          }));
          function uniq(array) {
            return array && array.length ? baseUniq(array) : [];
          }
          function uniqBy(array, iteratee) {
            return array && array.length ? baseUniq(array, getIteratee(iteratee, 2)) : [];
          }
          function uniqWith(array, comparator) {
            comparator = typeof comparator == "function" ? comparator : undefined;
            return array && array.length ? baseUniq(array, undefined, comparator) : [];
          }
          function unzip(array) {
            if (!(array && array.length)) {
              return [];
            }
            var length = 0;
            array = arrayFilter(array, (function(group) {
              if (isArrayLikeObject(group)) {
                length = nativeMax(group.length, length);
                return true;
              }
            }));
            return baseTimes(length, (function(index) {
              return arrayMap(array, baseProperty(index));
            }));
          }
          function unzipWith(array, iteratee) {
            if (!(array && array.length)) {
              return [];
            }
            var result = unzip(array);
            if (iteratee == null) {
              return result;
            }
            return arrayMap(result, (function(group) {
              return apply(iteratee, undefined, group);
            }));
          }
          var without = baseRest((function(array, values) {
            return isArrayLikeObject(array) ? baseDifference(array, values) : [];
          }));
          var xor = baseRest((function(arrays) {
            return baseXor(arrayFilter(arrays, isArrayLikeObject));
          }));
          var xorBy = baseRest((function(arrays) {
            var iteratee = last(arrays);
            if (isArrayLikeObject(iteratee)) {
              iteratee = undefined;
            }
            return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
          }));
          var xorWith = baseRest((function(arrays) {
            var comparator = last(arrays);
            comparator = typeof comparator == "function" ? comparator : undefined;
            return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
          }));
          var zip = baseRest(unzip);
          function zipObject(props, values) {
            return baseZipObject(props || [], values || [], assignValue);
          }
          function zipObjectDeep(props, values) {
            return baseZipObject(props || [], values || [], baseSet);
          }
          var zipWith = baseRest((function(arrays) {
            var length = arrays.length, iteratee = length > 1 ? arrays[length - 1] : undefined;
            iteratee = typeof iteratee == "function" ? (arrays.pop(), iteratee) : undefined;
            return unzipWith(arrays, iteratee);
          }));
          function chain(value) {
            var result = lodash(value);
            result.__chain__ = true;
            return result;
          }
          function tap(value, interceptor) {
            interceptor(value);
            return value;
          }
          function thru(value, interceptor) {
            return interceptor(value);
          }
          var wrapperAt = flatRest((function(paths) {
            var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
              return baseAt(object, paths);
            };
            if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {
              return this.thru(interceptor);
            }
            value = value.slice(start, +start + (length ? 1 : 0));
            value.__actions__.push({
              func: thru,
              args: [ interceptor ],
              thisArg: undefined
            });
            return new LodashWrapper(value, this.__chain__).thru((function(array) {
              if (length && !array.length) {
                array.push(undefined);
              }
              return array;
            }));
          }));
          function wrapperChain() {
            return chain(this);
          }
          function wrapperCommit() {
            return new LodashWrapper(this.value(), this.__chain__);
          }
          function wrapperNext() {
            if (this.__values__ === undefined) {
              this.__values__ = toArray(this.value());
            }
            var done = this.__index__ >= this.__values__.length, value = done ? undefined : this.__values__[this.__index__++];
            return {
              done,
              value
            };
          }
          function wrapperToIterator() {
            return this;
          }
          function wrapperPlant(value) {
            var result, parent = this;
            while (parent instanceof baseLodash) {
              var clone = wrapperClone(parent);
              clone.__index__ = 0;
              clone.__values__ = undefined;
              if (result) {
                previous.__wrapped__ = clone;
              } else {
                result = clone;
              }
              var previous = clone;
              parent = parent.__wrapped__;
            }
            previous.__wrapped__ = value;
            return result;
          }
          function wrapperReverse() {
            var value = this.__wrapped__;
            if (value instanceof LazyWrapper) {
              var wrapped = value;
              if (this.__actions__.length) {
                wrapped = new LazyWrapper(this);
              }
              wrapped = wrapped.reverse();
              wrapped.__actions__.push({
                func: thru,
                args: [ reverse ],
                thisArg: undefined
              });
              return new LodashWrapper(wrapped, this.__chain__);
            }
            return this.thru(reverse);
          }
          function wrapperValue() {
            return baseWrapperValue(this.__wrapped__, this.__actions__);
          }
          var countBy = createAggregator((function(result, value, key) {
            if (hasOwnProperty.call(result, key)) {
              ++result[key];
            } else {
              baseAssignValue(result, key, 1);
            }
          }));
          function every(collection, predicate, guard) {
            var func = isArray(collection) ? arrayEvery : baseEvery;
            if (guard && isIterateeCall(collection, predicate, guard)) {
              predicate = undefined;
            }
            return func(collection, getIteratee(predicate, 3));
          }
          function filter(collection, predicate) {
            var func = isArray(collection) ? arrayFilter : baseFilter;
            return func(collection, getIteratee(predicate, 3));
          }
          var find = createFind(findIndex);
          var findLast = createFind(findLastIndex);
          function flatMap(collection, iteratee) {
            return baseFlatten(map(collection, iteratee), 1);
          }
          function flatMapDeep(collection, iteratee) {
            return baseFlatten(map(collection, iteratee), INFINITY);
          }
          function flatMapDepth(collection, iteratee, depth) {
            depth = depth === undefined ? 1 : toInteger(depth);
            return baseFlatten(map(collection, iteratee), depth);
          }
          function forEach(collection, iteratee) {
            var func = isArray(collection) ? arrayEach : baseEach;
            return func(collection, getIteratee(iteratee, 3));
          }
          function forEachRight(collection, iteratee) {
            var func = isArray(collection) ? arrayEachRight : baseEachRight;
            return func(collection, getIteratee(iteratee, 3));
          }
          var groupBy = createAggregator((function(result, value, key) {
            if (hasOwnProperty.call(result, key)) {
              result[key].push(value);
            } else {
              baseAssignValue(result, key, [ value ]);
            }
          }));
          function includes(collection, value, fromIndex, guard) {
            collection = isArrayLike(collection) ? collection : values(collection);
            fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
            var length = collection.length;
            if (fromIndex < 0) {
              fromIndex = nativeMax(length + fromIndex, 0);
            }
            return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
          }
          var invokeMap = baseRest((function(collection, path, args) {
            var index = -1, isFunc = typeof path == "function", result = isArrayLike(collection) ? Array(collection.length) : [];
            baseEach(collection, (function(value) {
              result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
            }));
            return result;
          }));
          var keyBy = createAggregator((function(result, value, key) {
            baseAssignValue(result, key, value);
          }));
          function map(collection, iteratee) {
            var func = isArray(collection) ? arrayMap : baseMap;
            return func(collection, getIteratee(iteratee, 3));
          }
          function orderBy(collection, iteratees, orders, guard) {
            if (collection == null) {
              return [];
            }
            if (!isArray(iteratees)) {
              iteratees = iteratees == null ? [] : [ iteratees ];
            }
            orders = guard ? undefined : orders;
            if (!isArray(orders)) {
              orders = orders == null ? [] : [ orders ];
            }
            return baseOrderBy(collection, iteratees, orders);
          }
          var partition = createAggregator((function(result, value, key) {
            result[key ? 0 : 1].push(value);
          }), (function() {
            return [ [], [] ];
          }));
          function reduce(collection, iteratee, accumulator) {
            var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
            return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
          }
          function reduceRight(collection, iteratee, accumulator) {
            var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
            return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
          }
          function reject(collection, predicate) {
            var func = isArray(collection) ? arrayFilter : baseFilter;
            return func(collection, negate(getIteratee(predicate, 3)));
          }
          function sample(collection) {
            var func = isArray(collection) ? arraySample : baseSample;
            return func(collection);
          }
          function sampleSize(collection, n, guard) {
            if (guard ? isIterateeCall(collection, n, guard) : n === undefined) {
              n = 1;
            } else {
              n = toInteger(n);
            }
            var func = isArray(collection) ? arraySampleSize : baseSampleSize;
            return func(collection, n);
          }
          function shuffle(collection) {
            var func = isArray(collection) ? arrayShuffle : baseShuffle;
            return func(collection);
          }
          function size(collection) {
            if (collection == null) {
              return 0;
            }
            if (isArrayLike(collection)) {
              return isString(collection) ? stringSize(collection) : collection.length;
            }
            var tag = getTag(collection);
            if (tag == mapTag || tag == setTag) {
              return collection.size;
            }
            return baseKeys(collection).length;
          }
          function some(collection, predicate, guard) {
            var func = isArray(collection) ? arraySome : baseSome;
            if (guard && isIterateeCall(collection, predicate, guard)) {
              predicate = undefined;
            }
            return func(collection, getIteratee(predicate, 3));
          }
          var sortBy = baseRest((function(collection, iteratees) {
            if (collection == null) {
              return [];
            }
            var length = iteratees.length;
            if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
              iteratees = [];
            } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
              iteratees = [ iteratees[0] ];
            }
            return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
          }));
          var now = ctxNow || function() {
            return root.Date.now();
          };
          function after(n, func) {
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            n = toInteger(n);
            return function() {
              if (--n < 1) {
                return func.apply(this, arguments);
              }
            };
          }
          function ary(func, n, guard) {
            n = guard ? undefined : n;
            n = func && n == null ? func.length : n;
            return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
          }
          function before(n, func) {
            var result;
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            n = toInteger(n);
            return function() {
              if (--n > 0) {
                result = func.apply(this, arguments);
              }
              if (n <= 1) {
                func = undefined;
              }
              return result;
            };
          }
          var bind = baseRest((function(func, thisArg, partials) {
            var bitmask = WRAP_BIND_FLAG;
            if (partials.length) {
              var holders = replaceHolders(partials, getHolder(bind));
              bitmask |= WRAP_PARTIAL_FLAG;
            }
            return createWrap(func, bitmask, thisArg, partials, holders);
          }));
          var bindKey = baseRest((function(object, key, partials) {
            var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
            if (partials.length) {
              var holders = replaceHolders(partials, getHolder(bindKey));
              bitmask |= WRAP_PARTIAL_FLAG;
            }
            return createWrap(key, bitmask, object, partials, holders);
          }));
          function curry(func, arity, guard) {
            arity = guard ? undefined : arity;
            var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
            result.placeholder = curry.placeholder;
            return result;
          }
          function curryRight(func, arity, guard) {
            arity = guard ? undefined : arity;
            var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
            result.placeholder = curryRight.placeholder;
            return result;
          }
          function debounce(func, wait, options) {
            var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            wait = toNumber(wait) || 0;
            if (isObject(options)) {
              leading = !!options.leading;
              maxing = "maxWait" in options;
              maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
              trailing = "trailing" in options ? !!options.trailing : trailing;
            }
            function invokeFunc(time) {
              var args = lastArgs, thisArg = lastThis;
              lastArgs = lastThis = undefined;
              lastInvokeTime = time;
              result = func.apply(thisArg, args);
              return result;
            }
            function leadingEdge(time) {
              lastInvokeTime = time;
              timerId = setTimeout(timerExpired, wait);
              return leading ? invokeFunc(time) : result;
            }
            function remainingWait(time) {
              var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
              return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
            }
            function shouldInvoke(time) {
              var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
              return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
            }
            function timerExpired() {
              var time = now();
              if (shouldInvoke(time)) {
                return trailingEdge(time);
              }
              timerId = setTimeout(timerExpired, remainingWait(time));
            }
            function trailingEdge(time) {
              timerId = undefined;
              if (trailing && lastArgs) {
                return invokeFunc(time);
              }
              lastArgs = lastThis = undefined;
              return result;
            }
            function cancel() {
              if (timerId !== undefined) {
                clearTimeout(timerId);
              }
              lastInvokeTime = 0;
              lastArgs = lastCallTime = lastThis = timerId = undefined;
            }
            function flush() {
              return timerId === undefined ? result : trailingEdge(now());
            }
            function debounced() {
              var time = now(), isInvoking = shouldInvoke(time);
              lastArgs = arguments;
              lastThis = this;
              lastCallTime = time;
              if (isInvoking) {
                if (timerId === undefined) {
                  return leadingEdge(lastCallTime);
                }
                if (maxing) {
                  clearTimeout(timerId);
                  timerId = setTimeout(timerExpired, wait);
                  return invokeFunc(lastCallTime);
                }
              }
              if (timerId === undefined) {
                timerId = setTimeout(timerExpired, wait);
              }
              return result;
            }
            debounced.cancel = cancel;
            debounced.flush = flush;
            return debounced;
          }
          var defer = baseRest((function(func, args) {
            return baseDelay(func, 1, args);
          }));
          var delay = baseRest((function(func, wait, args) {
            return baseDelay(func, toNumber(wait) || 0, args);
          }));
          function flip(func) {
            return createWrap(func, WRAP_FLIP_FLAG);
          }
          function memoize(func, resolver) {
            if (typeof func != "function" || resolver != null && typeof resolver != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            var memoized = function() {
              var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
              if (cache.has(key)) {
                return cache.get(key);
              }
              var result = func.apply(this, args);
              memoized.cache = cache.set(key, result) || cache;
              return result;
            };
            memoized.cache = new (memoize.Cache || MapCache);
            return memoized;
          }
          memoize.Cache = MapCache;
          function negate(predicate) {
            if (typeof predicate != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            return function() {
              var args = arguments;
              switch (args.length) {
               case 0:
                return !predicate.call(this);

               case 1:
                return !predicate.call(this, args[0]);

               case 2:
                return !predicate.call(this, args[0], args[1]);

               case 3:
                return !predicate.call(this, args[0], args[1], args[2]);
              }
              return !predicate.apply(this, args);
            };
          }
          function once(func) {
            return before(2, func);
          }
          var overArgs = castRest((function(func, transforms) {
            transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
            var funcsLength = transforms.length;
            return baseRest((function(args) {
              var index = -1, length = nativeMin(args.length, funcsLength);
              while (++index < length) {
                args[index] = transforms[index].call(this, args[index]);
              }
              return apply(func, this, args);
            }));
          }));
          var partial = baseRest((function(func, partials) {
            var holders = replaceHolders(partials, getHolder(partial));
            return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
          }));
          var partialRight = baseRest((function(func, partials) {
            var holders = replaceHolders(partials, getHolder(partialRight));
            return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
          }));
          var rearg = flatRest((function(func, indexes) {
            return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
          }));
          function rest(func, start) {
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            start = start === undefined ? start : toInteger(start);
            return baseRest(func, start);
          }
          function spread(func, start) {
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            start = start == null ? 0 : nativeMax(toInteger(start), 0);
            return baseRest((function(args) {
              var array = args[start], otherArgs = castSlice(args, 0, start);
              if (array) {
                arrayPush(otherArgs, array);
              }
              return apply(func, this, otherArgs);
            }));
          }
          function throttle(func, wait, options) {
            var leading = true, trailing = true;
            if (typeof func != "function") {
              throw new TypeError(FUNC_ERROR_TEXT);
            }
            if (isObject(options)) {
              leading = "leading" in options ? !!options.leading : leading;
              trailing = "trailing" in options ? !!options.trailing : trailing;
            }
            return debounce(func, wait, {
              leading,
              maxWait: wait,
              trailing
            });
          }
          function unary(func) {
            return ary(func, 1);
          }
          function wrap(value, wrapper) {
            return partial(castFunction(wrapper), value);
          }
          function castArray() {
            if (!arguments.length) {
              return [];
            }
            var value = arguments[0];
            return isArray(value) ? value : [ value ];
          }
          function clone(value) {
            return baseClone(value, CLONE_SYMBOLS_FLAG);
          }
          function cloneWith(value, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
          }
          function cloneDeep(value) {
            return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
          }
          function cloneDeepWith(value, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
          }
          function conformsTo(object, source) {
            return source == null || baseConformsTo(object, source, keys(source));
          }
          function eq(value, other) {
            return value === other || value !== value && other !== other;
          }
          var gt = createRelationalOperation(baseGt);
          var gte = createRelationalOperation((function(value, other) {
            return value >= other;
          }));
          var isArguments = baseIsArguments(function() {
            return arguments;
          }()) ? baseIsArguments : function(value) {
            return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
          };
          var isArray = Array.isArray;
          var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
          function isArrayLike(value) {
            return value != null && isLength(value.length) && !isFunction(value);
          }
          function isArrayLikeObject(value) {
            return isObjectLike(value) && isArrayLike(value);
          }
          function isBoolean(value) {
            return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
          }
          var isBuffer = nativeIsBuffer || stubFalse;
          var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
          function isElement(value) {
            return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
          }
          function isEmpty(value) {
            if (value == null) {
              return true;
            }
            if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
              return !value.length;
            }
            var tag = getTag(value);
            if (tag == mapTag || tag == setTag) {
              return !value.size;
            }
            if (isPrototype(value)) {
              return !baseKeys(value).length;
            }
            for (var key in value) {
              if (hasOwnProperty.call(value, key)) {
                return false;
              }
            }
            return true;
          }
          function isEqual(value, other) {
            return baseIsEqual(value, other);
          }
          function isEqualWith(value, other, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            var result = customizer ? customizer(value, other) : undefined;
            return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
          }
          function isError(value) {
            if (!isObjectLike(value)) {
              return false;
            }
            var tag = baseGetTag(value);
            return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
          }
          function isFinite(value) {
            return typeof value == "number" && nativeIsFinite(value);
          }
          function isFunction(value) {
            if (!isObject(value)) {
              return false;
            }
            var tag = baseGetTag(value);
            return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
          }
          function isInteger(value) {
            return typeof value == "number" && value == toInteger(value);
          }
          function isLength(value) {
            return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
          }
          function isObject(value) {
            var type = typeof value;
            return value != null && (type == "object" || type == "function");
          }
          function isObjectLike(value) {
            return value != null && typeof value == "object";
          }
          var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
          function isMatch(object, source) {
            return object === source || baseIsMatch(object, source, getMatchData(source));
          }
          function isMatchWith(object, source, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            return baseIsMatch(object, source, getMatchData(source), customizer);
          }
          function isNaN(value) {
            return isNumber(value) && value != +value;
          }
          function isNative(value) {
            if (isMaskable(value)) {
              throw new Error(CORE_ERROR_TEXT);
            }
            return baseIsNative(value);
          }
          function isNull(value) {
            return value === null;
          }
          function isNil(value) {
            return value == null;
          }
          function isNumber(value) {
            return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
          }
          function isPlainObject(value) {
            if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
              return false;
            }
            var proto = getPrototype(value);
            if (proto === null) {
              return true;
            }
            var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
            return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
          }
          var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
          function isSafeInteger(value) {
            return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
          }
          var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
          function isString(value) {
            return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
          }
          function isSymbol(value) {
            return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
          }
          var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
          function isUndefined(value) {
            return value === undefined;
          }
          function isWeakMap(value) {
            return isObjectLike(value) && getTag(value) == weakMapTag;
          }
          function isWeakSet(value) {
            return isObjectLike(value) && baseGetTag(value) == weakSetTag;
          }
          var lt = createRelationalOperation(baseLt);
          var lte = createRelationalOperation((function(value, other) {
            return value <= other;
          }));
          function toArray(value) {
            if (!value) {
              return [];
            }
            if (isArrayLike(value)) {
              return isString(value) ? stringToArray(value) : copyArray(value);
            }
            if (symIterator && value[symIterator]) {
              return iteratorToArray(value[symIterator]());
            }
            var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
            return func(value);
          }
          function toFinite(value) {
            if (!value) {
              return value === 0 ? value : 0;
            }
            value = toNumber(value);
            if (value === INFINITY || value === -INFINITY) {
              var sign = value < 0 ? -1 : 1;
              return sign * MAX_INTEGER;
            }
            return value === value ? value : 0;
          }
          function toInteger(value) {
            var result = toFinite(value), remainder = result % 1;
            return result === result ? remainder ? result - remainder : result : 0;
          }
          function toLength(value) {
            return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
          }
          function toNumber(value) {
            if (typeof value == "number") {
              return value;
            }
            if (isSymbol(value)) {
              return NAN;
            }
            if (isObject(value)) {
              var other = typeof value.valueOf == "function" ? value.valueOf() : value;
              value = isObject(other) ? other + "" : other;
            }
            if (typeof value != "string") {
              return value === 0 ? value : +value;
            }
            value = baseTrim(value);
            var isBinary = reIsBinary.test(value);
            return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
          }
          function toPlainObject(value) {
            return copyObject(value, keysIn(value));
          }
          function toSafeInteger(value) {
            return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
          }
          function toString(value) {
            return value == null ? "" : baseToString(value);
          }
          var assign = createAssigner((function(object, source) {
            if (isPrototype(source) || isArrayLike(source)) {
              copyObject(source, keys(source), object);
              return;
            }
            for (var key in source) {
              if (hasOwnProperty.call(source, key)) {
                assignValue(object, key, source[key]);
              }
            }
          }));
          var assignIn = createAssigner((function(object, source) {
            copyObject(source, keysIn(source), object);
          }));
          var assignInWith = createAssigner((function(object, source, srcIndex, customizer) {
            copyObject(source, keysIn(source), object, customizer);
          }));
          var assignWith = createAssigner((function(object, source, srcIndex, customizer) {
            copyObject(source, keys(source), object, customizer);
          }));
          var at = flatRest(baseAt);
          function create(prototype, properties) {
            var result = baseCreate(prototype);
            return properties == null ? result : baseAssign(result, properties);
          }
          var defaults = baseRest((function(object, sources) {
            object = Object(object);
            var index = -1;
            var length = sources.length;
            var guard = length > 2 ? sources[2] : undefined;
            if (guard && isIterateeCall(sources[0], sources[1], guard)) {
              length = 1;
            }
            while (++index < length) {
              var source = sources[index];
              var props = keysIn(source);
              var propsIndex = -1;
              var propsLength = props.length;
              while (++propsIndex < propsLength) {
                var key = props[propsIndex];
                var value = object[key];
                if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
                  object[key] = source[key];
                }
              }
            }
            return object;
          }));
          var defaultsDeep = baseRest((function(args) {
            args.push(undefined, customDefaultsMerge);
            return apply(mergeWith, undefined, args);
          }));
          function findKey(object, predicate) {
            return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
          }
          function findLastKey(object, predicate) {
            return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
          }
          function forIn(object, iteratee) {
            return object == null ? object : baseFor(object, getIteratee(iteratee, 3), keysIn);
          }
          function forInRight(object, iteratee) {
            return object == null ? object : baseForRight(object, getIteratee(iteratee, 3), keysIn);
          }
          function forOwn(object, iteratee) {
            return object && baseForOwn(object, getIteratee(iteratee, 3));
          }
          function forOwnRight(object, iteratee) {
            return object && baseForOwnRight(object, getIteratee(iteratee, 3));
          }
          function functions(object) {
            return object == null ? [] : baseFunctions(object, keys(object));
          }
          function functionsIn(object) {
            return object == null ? [] : baseFunctions(object, keysIn(object));
          }
          function get(object, path, defaultValue) {
            var result = object == null ? undefined : baseGet(object, path);
            return result === undefined ? defaultValue : result;
          }
          function has(object, path) {
            return object != null && hasPath(object, path, baseHas);
          }
          function hasIn(object, path) {
            return object != null && hasPath(object, path, baseHasIn);
          }
          var invert = createInverter((function(result, value, key) {
            if (value != null && typeof value.toString != "function") {
              value = nativeObjectToString.call(value);
            }
            result[value] = key;
          }), constant(identity));
          var invertBy = createInverter((function(result, value, key) {
            if (value != null && typeof value.toString != "function") {
              value = nativeObjectToString.call(value);
            }
            if (hasOwnProperty.call(result, value)) {
              result[value].push(key);
            } else {
              result[value] = [ key ];
            }
          }), getIteratee);
          var invoke = baseRest(baseInvoke);
          function keys(object) {
            return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
          }
          function keysIn(object) {
            return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
          }
          function mapKeys(object, iteratee) {
            var result = {};
            iteratee = getIteratee(iteratee, 3);
            baseForOwn(object, (function(value, key, object) {
              baseAssignValue(result, iteratee(value, key, object), value);
            }));
            return result;
          }
          function mapValues(object, iteratee) {
            var result = {};
            iteratee = getIteratee(iteratee, 3);
            baseForOwn(object, (function(value, key, object) {
              baseAssignValue(result, key, iteratee(value, key, object));
            }));
            return result;
          }
          var merge = createAssigner((function(object, source, srcIndex) {
            baseMerge(object, source, srcIndex);
          }));
          var mergeWith = createAssigner((function(object, source, srcIndex, customizer) {
            baseMerge(object, source, srcIndex, customizer);
          }));
          var omit = flatRest((function(object, paths) {
            var result = {};
            if (object == null) {
              return result;
            }
            var isDeep = false;
            paths = arrayMap(paths, (function(path) {
              path = castPath(path, object);
              isDeep || (isDeep = path.length > 1);
              return path;
            }));
            copyObject(object, getAllKeysIn(object), result);
            if (isDeep) {
              result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
            }
            var length = paths.length;
            while (length--) {
              baseUnset(result, paths[length]);
            }
            return result;
          }));
          function omitBy(object, predicate) {
            return pickBy(object, negate(getIteratee(predicate)));
          }
          var pick = flatRest((function(object, paths) {
            return object == null ? {} : basePick(object, paths);
          }));
          function pickBy(object, predicate) {
            if (object == null) {
              return {};
            }
            var props = arrayMap(getAllKeysIn(object), (function(prop) {
              return [ prop ];
            }));
            predicate = getIteratee(predicate);
            return basePickBy(object, props, (function(value, path) {
              return predicate(value, path[0]);
            }));
          }
          function result(object, path, defaultValue) {
            path = castPath(path, object);
            var index = -1, length = path.length;
            if (!length) {
              length = 1;
              object = undefined;
            }
            while (++index < length) {
              var value = object == null ? undefined : object[toKey(path[index])];
              if (value === undefined) {
                index = length;
                value = defaultValue;
              }
              object = isFunction(value) ? value.call(object) : value;
            }
            return object;
          }
          function set(object, path, value) {
            return object == null ? object : baseSet(object, path, value);
          }
          function setWith(object, path, value, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            return object == null ? object : baseSet(object, path, value, customizer);
          }
          var toPairs = createToPairs(keys);
          var toPairsIn = createToPairs(keysIn);
          function transform(object, iteratee, accumulator) {
            var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
            iteratee = getIteratee(iteratee, 4);
            if (accumulator == null) {
              var Ctor = object && object.constructor;
              if (isArrLike) {
                accumulator = isArr ? new Ctor : [];
              } else if (isObject(object)) {
                accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
              } else {
                accumulator = {};
              }
            }
            (isArrLike ? arrayEach : baseForOwn)(object, (function(value, index, object) {
              return iteratee(accumulator, value, index, object);
            }));
            return accumulator;
          }
          function unset(object, path) {
            return object == null ? true : baseUnset(object, path);
          }
          function update(object, path, updater) {
            return object == null ? object : baseUpdate(object, path, castFunction(updater));
          }
          function updateWith(object, path, updater, customizer) {
            customizer = typeof customizer == "function" ? customizer : undefined;
            return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
          }
          function values(object) {
            return object == null ? [] : baseValues(object, keys(object));
          }
          function valuesIn(object) {
            return object == null ? [] : baseValues(object, keysIn(object));
          }
          function clamp(number, lower, upper) {
            if (upper === undefined) {
              upper = lower;
              lower = undefined;
            }
            if (upper !== undefined) {
              upper = toNumber(upper);
              upper = upper === upper ? upper : 0;
            }
            if (lower !== undefined) {
              lower = toNumber(lower);
              lower = lower === lower ? lower : 0;
            }
            return baseClamp(toNumber(number), lower, upper);
          }
          function inRange(number, start, end) {
            start = toFinite(start);
            if (end === undefined) {
              end = start;
              start = 0;
            } else {
              end = toFinite(end);
            }
            number = toNumber(number);
            return baseInRange(number, start, end);
          }
          function random(lower, upper, floating) {
            if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
              upper = floating = undefined;
            }
            if (floating === undefined) {
              if (typeof upper == "boolean") {
                floating = upper;
                upper = undefined;
              } else if (typeof lower == "boolean") {
                floating = lower;
                lower = undefined;
              }
            }
            if (lower === undefined && upper === undefined) {
              lower = 0;
              upper = 1;
            } else {
              lower = toFinite(lower);
              if (upper === undefined) {
                upper = lower;
                lower = 0;
              } else {
                upper = toFinite(upper);
              }
            }
            if (lower > upper) {
              var temp = lower;
              lower = upper;
              upper = temp;
            }
            if (floating || lower % 1 || upper % 1) {
              var rand = nativeRandom();
              return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
            }
            return baseRandom(lower, upper);
          }
          var camelCase = createCompounder((function(result, word, index) {
            word = word.toLowerCase();
            return result + (index ? capitalize(word) : word);
          }));
          function capitalize(string) {
            return upperFirst(toString(string).toLowerCase());
          }
          function deburr(string) {
            string = toString(string);
            return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
          }
          function endsWith(string, target, position) {
            string = toString(string);
            target = baseToString(target);
            var length = string.length;
            position = position === undefined ? length : baseClamp(toInteger(position), 0, length);
            var end = position;
            position -= target.length;
            return position >= 0 && string.slice(position, end) == target;
          }
          function escape(string) {
            string = toString(string);
            return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
          }
          function escapeRegExp(string) {
            string = toString(string);
            return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
          }
          var kebabCase = createCompounder((function(result, word, index) {
            return result + (index ? "-" : "") + word.toLowerCase();
          }));
          var lowerCase = createCompounder((function(result, word, index) {
            return result + (index ? " " : "") + word.toLowerCase();
          }));
          var lowerFirst = createCaseFirst("toLowerCase");
          function pad(string, length, chars) {
            string = toString(string);
            length = toInteger(length);
            var strLength = length ? stringSize(string) : 0;
            if (!length || strLength >= length) {
              return string;
            }
            var mid = (length - strLength) / 2;
            return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);
          }
          function padEnd(string, length, chars) {
            string = toString(string);
            length = toInteger(length);
            var strLength = length ? stringSize(string) : 0;
            return length && strLength < length ? string + createPadding(length - strLength, chars) : string;
          }
          function padStart(string, length, chars) {
            string = toString(string);
            length = toInteger(length);
            var strLength = length ? stringSize(string) : 0;
            return length && strLength < length ? createPadding(length - strLength, chars) + string : string;
          }
          function parseInt(string, radix, guard) {
            if (guard || radix == null) {
              radix = 0;
            } else if (radix) {
              radix = +radix;
            }
            return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0);
          }
          function repeat(string, n, guard) {
            if (guard ? isIterateeCall(string, n, guard) : n === undefined) {
              n = 1;
            } else {
              n = toInteger(n);
            }
            return baseRepeat(toString(string), n);
          }
          function replace() {
            var args = arguments, string = toString(args[0]);
            return args.length < 3 ? string : string.replace(args[1], args[2]);
          }
          var snakeCase = createCompounder((function(result, word, index) {
            return result + (index ? "_" : "") + word.toLowerCase();
          }));
          function split(string, separator, limit) {
            if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
              separator = limit = undefined;
            }
            limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
            if (!limit) {
              return [];
            }
            string = toString(string);
            if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) {
              separator = baseToString(separator);
              if (!separator && hasUnicode(string)) {
                return castSlice(stringToArray(string), 0, limit);
              }
            }
            return string.split(separator, limit);
          }
          var startCase = createCompounder((function(result, word, index) {
            return result + (index ? " " : "") + upperFirst(word);
          }));
          function startsWith(string, target, position) {
            string = toString(string);
            position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
            target = baseToString(target);
            return string.slice(position, position + target.length) == target;
          }
          function template(string, options, guard) {
            var settings = lodash.templateSettings;
            if (guard && isIterateeCall(string, options, guard)) {
              options = undefined;
            }
            string = toString(string);
            options = assignInWith({}, options, settings, customDefaultsAssignIn);
            var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
            var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
            var reDelimiters = RegExp((options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g");
            var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
            string.replace(reDelimiters, (function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
              interpolateValue || (interpolateValue = esTemplateValue);
              source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
              if (escapeValue) {
                isEscaping = true;
                source += "' +\n__e(" + escapeValue + ") +\n'";
              }
              if (evaluateValue) {
                isEvaluating = true;
                source += "';\n" + evaluateValue + ";\n__p += '";
              }
              if (interpolateValue) {
                source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
              }
              index = offset + match.length;
              return match;
            }));
            source += "';\n";
            var variable = hasOwnProperty.call(options, "variable") && options.variable;
            if (!variable) {
              source = "with (obj) {\n" + source + "\n}\n";
            } else if (reForbiddenIdentifierChars.test(variable)) {
              throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
            }
            source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
            source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\n" + "function print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
            var result = attempt((function() {
              return Function(importsKeys, sourceURL + "return " + source).apply(undefined, importsValues);
            }));
            result.source = source;
            if (isError(result)) {
              throw result;
            }
            return result;
          }
          function toLower(value) {
            return toString(value).toLowerCase();
          }
          function toUpper(value) {
            return toString(value).toUpperCase();
          }
          function trim(string, chars, guard) {
            string = toString(string);
            if (string && (guard || chars === undefined)) {
              return baseTrim(string);
            }
            if (!string || !(chars = baseToString(chars))) {
              return string;
            }
            var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;
            return castSlice(strSymbols, start, end).join("");
          }
          function trimEnd(string, chars, guard) {
            string = toString(string);
            if (string && (guard || chars === undefined)) {
              return string.slice(0, trimmedEndIndex(string) + 1);
            }
            if (!string || !(chars = baseToString(chars))) {
              return string;
            }
            var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
            return castSlice(strSymbols, 0, end).join("");
          }
          function trimStart(string, chars, guard) {
            string = toString(string);
            if (string && (guard || chars === undefined)) {
              return string.replace(reTrimStart, "");
            }
            if (!string || !(chars = baseToString(chars))) {
              return string;
            }
            var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars));
            return castSlice(strSymbols, start).join("");
          }
          function truncate(string, options) {
            var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
            if (isObject(options)) {
              var separator = "separator" in options ? options.separator : separator;
              length = "length" in options ? toInteger(options.length) : length;
              omission = "omission" in options ? baseToString(options.omission) : omission;
            }
            string = toString(string);
            var strLength = string.length;
            if (hasUnicode(string)) {
              var strSymbols = stringToArray(string);
              strLength = strSymbols.length;
            }
            if (length >= strLength) {
              return string;
            }
            var end = length - stringSize(omission);
            if (end < 1) {
              return omission;
            }
            var result = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end);
            if (separator === undefined) {
              return result + omission;
            }
            if (strSymbols) {
              end += result.length - end;
            }
            if (isRegExp(separator)) {
              if (string.slice(end).search(separator)) {
                var match, substring = result;
                if (!separator.global) {
                  separator = RegExp(separator.source, toString(reFlags.exec(separator)) + "g");
                }
                separator.lastIndex = 0;
                while (match = separator.exec(substring)) {
                  var newEnd = match.index;
                }
                result = result.slice(0, newEnd === undefined ? end : newEnd);
              }
            } else if (string.indexOf(baseToString(separator), end) != end) {
              var index = result.lastIndexOf(separator);
              if (index > -1) {
                result = result.slice(0, index);
              }
            }
            return result + omission;
          }
          function unescape(string) {
            string = toString(string);
            return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
          }
          var upperCase = createCompounder((function(result, word, index) {
            return result + (index ? " " : "") + word.toUpperCase();
          }));
          var upperFirst = createCaseFirst("toUpperCase");
          function words(string, pattern, guard) {
            string = toString(string);
            pattern = guard ? undefined : pattern;
            if (pattern === undefined) {
              return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
            }
            return string.match(pattern) || [];
          }
          var attempt = baseRest((function(func, args) {
            try {
              return apply(func, undefined, args);
            } catch (e) {
              return isError(e) ? e : new Error(e);
            }
          }));
          var bindAll = flatRest((function(object, methodNames) {
            arrayEach(methodNames, (function(key) {
              key = toKey(key);
              baseAssignValue(object, key, bind(object[key], object));
            }));
            return object;
          }));
          function cond(pairs) {
            var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
            pairs = !length ? [] : arrayMap(pairs, (function(pair) {
              if (typeof pair[1] != "function") {
                throw new TypeError(FUNC_ERROR_TEXT);
              }
              return [ toIteratee(pair[0]), pair[1] ];
            }));
            return baseRest((function(args) {
              var index = -1;
              while (++index < length) {
                var pair = pairs[index];
                if (apply(pair[0], this, args)) {
                  return apply(pair[1], this, args);
                }
              }
            }));
          }
          function conforms(source) {
            return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
          }
          function constant(value) {
            return function() {
              return value;
            };
          }
          function defaultTo(value, defaultValue) {
            return value == null || value !== value ? defaultValue : value;
          }
          var flow = createFlow();
          var flowRight = createFlow(true);
          function identity(value) {
            return value;
          }
          function iteratee(func) {
            return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
          }
          function matches(source) {
            return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
          }
          function matchesProperty(path, srcValue) {
            return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
          }
          var method = baseRest((function(path, args) {
            return function(object) {
              return baseInvoke(object, path, args);
            };
          }));
          var methodOf = baseRest((function(object, args) {
            return function(path) {
              return baseInvoke(object, path, args);
            };
          }));
          function mixin(object, source, options) {
            var props = keys(source), methodNames = baseFunctions(source, props);
            if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {
              options = source;
              source = object;
              object = this;
              methodNames = baseFunctions(source, keys(source));
            }
            var chain = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object);
            arrayEach(methodNames, (function(methodName) {
              var func = source[methodName];
              object[methodName] = func;
              if (isFunc) {
                object.prototype[methodName] = function() {
                  var chainAll = this.__chain__;
                  if (chain || chainAll) {
                    var result = object(this.__wrapped__), actions = result.__actions__ = copyArray(this.__actions__);
                    actions.push({
                      func,
                      args: arguments,
                      thisArg: object
                    });
                    result.__chain__ = chainAll;
                    return result;
                  }
                  return func.apply(object, arrayPush([ this.value() ], arguments));
                };
              }
            }));
            return object;
          }
          function noConflict() {
            if (root._ === this) {
              root._ = oldDash;
            }
            return this;
          }
          function noop() {}
          function nthArg(n) {
            n = toInteger(n);
            return baseRest((function(args) {
              return baseNth(args, n);
            }));
          }
          var over = createOver(arrayMap);
          var overEvery = createOver(arrayEvery);
          var overSome = createOver(arraySome);
          function property(path) {
            return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
          }
          function propertyOf(object) {
            return function(path) {
              return object == null ? undefined : baseGet(object, path);
            };
          }
          var range = createRange();
          var rangeRight = createRange(true);
          function stubArray() {
            return [];
          }
          function stubFalse() {
            return false;
          }
          function stubObject() {
            return {};
          }
          function stubString() {
            return "";
          }
          function stubTrue() {
            return true;
          }
          function times(n, iteratee) {
            n = toInteger(n);
            if (n < 1 || n > MAX_SAFE_INTEGER) {
              return [];
            }
            var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);
            iteratee = getIteratee(iteratee);
            n -= MAX_ARRAY_LENGTH;
            var result = baseTimes(length, iteratee);
            while (++index < n) {
              iteratee(index);
            }
            return result;
          }
          function toPath(value) {
            if (isArray(value)) {
              return arrayMap(value, toKey);
            }
            return isSymbol(value) ? [ value ] : copyArray(stringToPath(toString(value)));
          }
          function uniqueId(prefix) {
            var id = ++idCounter;
            return toString(prefix) + id;
          }
          var add = createMathOperation((function(augend, addend) {
            return augend + addend;
          }), 0);
          var ceil = createRound("ceil");
          var divide = createMathOperation((function(dividend, divisor) {
            return dividend / divisor;
          }), 1);
          var floor = createRound("floor");
          function max(array) {
            return array && array.length ? baseExtremum(array, identity, baseGt) : undefined;
          }
          function maxBy(array, iteratee) {
            return array && array.length ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) : undefined;
          }
          function mean(array) {
            return baseMean(array, identity);
          }
          function meanBy(array, iteratee) {
            return baseMean(array, getIteratee(iteratee, 2));
          }
          function min(array) {
            return array && array.length ? baseExtremum(array, identity, baseLt) : undefined;
          }
          function minBy(array, iteratee) {
            return array && array.length ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) : undefined;
          }
          var multiply = createMathOperation((function(multiplier, multiplicand) {
            return multiplier * multiplicand;
          }), 1);
          var round = createRound("round");
          var subtract = createMathOperation((function(minuend, subtrahend) {
            return minuend - subtrahend;
          }), 0);
          function sum(array) {
            return array && array.length ? baseSum(array, identity) : 0;
          }
          function sumBy(array, iteratee) {
            return array && array.length ? baseSum(array, getIteratee(iteratee, 2)) : 0;
          }
          lodash.after = after;
          lodash.ary = ary;
          lodash.assign = assign;
          lodash.assignIn = assignIn;
          lodash.assignInWith = assignInWith;
          lodash.assignWith = assignWith;
          lodash.at = at;
          lodash.before = before;
          lodash.bind = bind;
          lodash.bindAll = bindAll;
          lodash.bindKey = bindKey;
          lodash.castArray = castArray;
          lodash.chain = chain;
          lodash.chunk = chunk;
          lodash.compact = compact;
          lodash.concat = concat;
          lodash.cond = cond;
          lodash.conforms = conforms;
          lodash.constant = constant;
          lodash.countBy = countBy;
          lodash.create = create;
          lodash.curry = curry;
          lodash.curryRight = curryRight;
          lodash.debounce = debounce;
          lodash.defaults = defaults;
          lodash.defaultsDeep = defaultsDeep;
          lodash.defer = defer;
          lodash.delay = delay;
          lodash.difference = difference;
          lodash.differenceBy = differenceBy;
          lodash.differenceWith = differenceWith;
          lodash.drop = drop;
          lodash.dropRight = dropRight;
          lodash.dropRightWhile = dropRightWhile;
          lodash.dropWhile = dropWhile;
          lodash.fill = fill;
          lodash.filter = filter;
          lodash.flatMap = flatMap;
          lodash.flatMapDeep = flatMapDeep;
          lodash.flatMapDepth = flatMapDepth;
          lodash.flatten = flatten;
          lodash.flattenDeep = flattenDeep;
          lodash.flattenDepth = flattenDepth;
          lodash.flip = flip;
          lodash.flow = flow;
          lodash.flowRight = flowRight;
          lodash.fromPairs = fromPairs;
          lodash.functions = functions;
          lodash.functionsIn = functionsIn;
          lodash.groupBy = groupBy;
          lodash.initial = initial;
          lodash.intersection = intersection;
          lodash.intersectionBy = intersectionBy;
          lodash.intersectionWith = intersectionWith;
          lodash.invert = invert;
          lodash.invertBy = invertBy;
          lodash.invokeMap = invokeMap;
          lodash.iteratee = iteratee;
          lodash.keyBy = keyBy;
          lodash.keys = keys;
          lodash.keysIn = keysIn;
          lodash.map = map;
          lodash.mapKeys = mapKeys;
          lodash.mapValues = mapValues;
          lodash.matches = matches;
          lodash.matchesProperty = matchesProperty;
          lodash.memoize = memoize;
          lodash.merge = merge;
          lodash.mergeWith = mergeWith;
          lodash.method = method;
          lodash.methodOf = methodOf;
          lodash.mixin = mixin;
          lodash.negate = negate;
          lodash.nthArg = nthArg;
          lodash.omit = omit;
          lodash.omitBy = omitBy;
          lodash.once = once;
          lodash.orderBy = orderBy;
          lodash.over = over;
          lodash.overArgs = overArgs;
          lodash.overEvery = overEvery;
          lodash.overSome = overSome;
          lodash.partial = partial;
          lodash.partialRight = partialRight;
          lodash.partition = partition;
          lodash.pick = pick;
          lodash.pickBy = pickBy;
          lodash.property = property;
          lodash.propertyOf = propertyOf;
          lodash.pull = pull;
          lodash.pullAll = pullAll;
          lodash.pullAllBy = pullAllBy;
          lodash.pullAllWith = pullAllWith;
          lodash.pullAt = pullAt;
          lodash.range = range;
          lodash.rangeRight = rangeRight;
          lodash.rearg = rearg;
          lodash.reject = reject;
          lodash.remove = remove;
          lodash.rest = rest;
          lodash.reverse = reverse;
          lodash.sampleSize = sampleSize;
          lodash.set = set;
          lodash.setWith = setWith;
          lodash.shuffle = shuffle;
          lodash.slice = slice;
          lodash.sortBy = sortBy;
          lodash.sortedUniq = sortedUniq;
          lodash.sortedUniqBy = sortedUniqBy;
          lodash.split = split;
          lodash.spread = spread;
          lodash.tail = tail;
          lodash.take = take;
          lodash.takeRight = takeRight;
          lodash.takeRightWhile = takeRightWhile;
          lodash.takeWhile = takeWhile;
          lodash.tap = tap;
          lodash.throttle = throttle;
          lodash.thru = thru;
          lodash.toArray = toArray;
          lodash.toPairs = toPairs;
          lodash.toPairsIn = toPairsIn;
          lodash.toPath = toPath;
          lodash.toPlainObject = toPlainObject;
          lodash.transform = transform;
          lodash.unary = unary;
          lodash.union = union;
          lodash.unionBy = unionBy;
          lodash.unionWith = unionWith;
          lodash.uniq = uniq;
          lodash.uniqBy = uniqBy;
          lodash.uniqWith = uniqWith;
          lodash.unset = unset;
          lodash.unzip = unzip;
          lodash.unzipWith = unzipWith;
          lodash.update = update;
          lodash.updateWith = updateWith;
          lodash.values = values;
          lodash.valuesIn = valuesIn;
          lodash.without = without;
          lodash.words = words;
          lodash.wrap = wrap;
          lodash.xor = xor;
          lodash.xorBy = xorBy;
          lodash.xorWith = xorWith;
          lodash.zip = zip;
          lodash.zipObject = zipObject;
          lodash.zipObjectDeep = zipObjectDeep;
          lodash.zipWith = zipWith;
          lodash.entries = toPairs;
          lodash.entriesIn = toPairsIn;
          lodash.extend = assignIn;
          lodash.extendWith = assignInWith;
          mixin(lodash, lodash);
          lodash.add = add;
          lodash.attempt = attempt;
          lodash.camelCase = camelCase;
          lodash.capitalize = capitalize;
          lodash.ceil = ceil;
          lodash.clamp = clamp;
          lodash.clone = clone;
          lodash.cloneDeep = cloneDeep;
          lodash.cloneDeepWith = cloneDeepWith;
          lodash.cloneWith = cloneWith;
          lodash.conformsTo = conformsTo;
          lodash.deburr = deburr;
          lodash.defaultTo = defaultTo;
          lodash.divide = divide;
          lodash.endsWith = endsWith;
          lodash.eq = eq;
          lodash.escape = escape;
          lodash.escapeRegExp = escapeRegExp;
          lodash.every = every;
          lodash.find = find;
          lodash.findIndex = findIndex;
          lodash.findKey = findKey;
          lodash.findLast = findLast;
          lodash.findLastIndex = findLastIndex;
          lodash.findLastKey = findLastKey;
          lodash.floor = floor;
          lodash.forEach = forEach;
          lodash.forEachRight = forEachRight;
          lodash.forIn = forIn;
          lodash.forInRight = forInRight;
          lodash.forOwn = forOwn;
          lodash.forOwnRight = forOwnRight;
          lodash.get = get;
          lodash.gt = gt;
          lodash.gte = gte;
          lodash.has = has;
          lodash.hasIn = hasIn;
          lodash.head = head;
          lodash.identity = identity;
          lodash.includes = includes;
          lodash.indexOf = indexOf;
          lodash.inRange = inRange;
          lodash.invoke = invoke;
          lodash.isArguments = isArguments;
          lodash.isArray = isArray;
          lodash.isArrayBuffer = isArrayBuffer;
          lodash.isArrayLike = isArrayLike;
          lodash.isArrayLikeObject = isArrayLikeObject;
          lodash.isBoolean = isBoolean;
          lodash.isBuffer = isBuffer;
          lodash.isDate = isDate;
          lodash.isElement = isElement;
          lodash.isEmpty = isEmpty;
          lodash.isEqual = isEqual;
          lodash.isEqualWith = isEqualWith;
          lodash.isError = isError;
          lodash.isFinite = isFinite;
          lodash.isFunction = isFunction;
          lodash.isInteger = isInteger;
          lodash.isLength = isLength;
          lodash.isMap = isMap;
          lodash.isMatch = isMatch;
          lodash.isMatchWith = isMatchWith;
          lodash.isNaN = isNaN;
          lodash.isNative = isNative;
          lodash.isNil = isNil;
          lodash.isNull = isNull;
          lodash.isNumber = isNumber;
          lodash.isObject = isObject;
          lodash.isObjectLike = isObjectLike;
          lodash.isPlainObject = isPlainObject;
          lodash.isRegExp = isRegExp;
          lodash.isSafeInteger = isSafeInteger;
          lodash.isSet = isSet;
          lodash.isString = isString;
          lodash.isSymbol = isSymbol;
          lodash.isTypedArray = isTypedArray;
          lodash.isUndefined = isUndefined;
          lodash.isWeakMap = isWeakMap;
          lodash.isWeakSet = isWeakSet;
          lodash.join = join;
          lodash.kebabCase = kebabCase;
          lodash.last = last;
          lodash.lastIndexOf = lastIndexOf;
          lodash.lowerCase = lowerCase;
          lodash.lowerFirst = lowerFirst;
          lodash.lt = lt;
          lodash.lte = lte;
          lodash.max = max;
          lodash.maxBy = maxBy;
          lodash.mean = mean;
          lodash.meanBy = meanBy;
          lodash.min = min;
          lodash.minBy = minBy;
          lodash.stubArray = stubArray;
          lodash.stubFalse = stubFalse;
          lodash.stubObject = stubObject;
          lodash.stubString = stubString;
          lodash.stubTrue = stubTrue;
          lodash.multiply = multiply;
          lodash.nth = nth;
          lodash.noConflict = noConflict;
          lodash.noop = noop;
          lodash.now = now;
          lodash.pad = pad;
          lodash.padEnd = padEnd;
          lodash.padStart = padStart;
          lodash.parseInt = parseInt;
          lodash.random = random;
          lodash.reduce = reduce;
          lodash.reduceRight = reduceRight;
          lodash.repeat = repeat;
          lodash.replace = replace;
          lodash.result = result;
          lodash.round = round;
          lodash.runInContext = runInContext;
          lodash.sample = sample;
          lodash.size = size;
          lodash.snakeCase = snakeCase;
          lodash.some = some;
          lodash.sortedIndex = sortedIndex;
          lodash.sortedIndexBy = sortedIndexBy;
          lodash.sortedIndexOf = sortedIndexOf;
          lodash.sortedLastIndex = sortedLastIndex;
          lodash.sortedLastIndexBy = sortedLastIndexBy;
          lodash.sortedLastIndexOf = sortedLastIndexOf;
          lodash.startCase = startCase;
          lodash.startsWith = startsWith;
          lodash.subtract = subtract;
          lodash.sum = sum;
          lodash.sumBy = sumBy;
          lodash.template = template;
          lodash.times = times;
          lodash.toFinite = toFinite;
          lodash.toInteger = toInteger;
          lodash.toLength = toLength;
          lodash.toLower = toLower;
          lodash.toNumber = toNumber;
          lodash.toSafeInteger = toSafeInteger;
          lodash.toString = toString;
          lodash.toUpper = toUpper;
          lodash.trim = trim;
          lodash.trimEnd = trimEnd;
          lodash.trimStart = trimStart;
          lodash.truncate = truncate;
          lodash.unescape = unescape;
          lodash.uniqueId = uniqueId;
          lodash.upperCase = upperCase;
          lodash.upperFirst = upperFirst;
          lodash.each = forEach;
          lodash.eachRight = forEachRight;
          lodash.first = head;
          mixin(lodash, function() {
            var source = {};
            baseForOwn(lodash, (function(func, methodName) {
              if (!hasOwnProperty.call(lodash.prototype, methodName)) {
                source[methodName] = func;
              }
            }));
            return source;
          }(), {
            chain: false
          });
          lodash.VERSION = VERSION;
          arrayEach([ "bind", "bindKey", "curry", "curryRight", "partial", "partialRight" ], (function(methodName) {
            lodash[methodName].placeholder = lodash;
          }));
          arrayEach([ "drop", "take" ], (function(methodName, index) {
            LazyWrapper.prototype[methodName] = function(n) {
              n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
              var result = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
              if (result.__filtered__) {
                result.__takeCount__ = nativeMin(n, result.__takeCount__);
              } else {
                result.__views__.push({
                  size: nativeMin(n, MAX_ARRAY_LENGTH),
                  type: methodName + (result.__dir__ < 0 ? "Right" : "")
                });
              }
              return result;
            };
            LazyWrapper.prototype[methodName + "Right"] = function(n) {
              return this.reverse()[methodName](n).reverse();
            };
          }));
          arrayEach([ "filter", "map", "takeWhile" ], (function(methodName, index) {
            var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
            LazyWrapper.prototype[methodName] = function(iteratee) {
              var result = this.clone();
              result.__iteratees__.push({
                iteratee: getIteratee(iteratee, 3),
                type
              });
              result.__filtered__ = result.__filtered__ || isFilter;
              return result;
            };
          }));
          arrayEach([ "head", "last" ], (function(methodName, index) {
            var takeName = "take" + (index ? "Right" : "");
            LazyWrapper.prototype[methodName] = function() {
              return this[takeName](1).value()[0];
            };
          }));
          arrayEach([ "initial", "tail" ], (function(methodName, index) {
            var dropName = "drop" + (index ? "" : "Right");
            LazyWrapper.prototype[methodName] = function() {
              return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
            };
          }));
          LazyWrapper.prototype.compact = function() {
            return this.filter(identity);
          };
          LazyWrapper.prototype.find = function(predicate) {
            return this.filter(predicate).head();
          };
          LazyWrapper.prototype.findLast = function(predicate) {
            return this.reverse().find(predicate);
          };
          LazyWrapper.prototype.invokeMap = baseRest((function(path, args) {
            if (typeof path == "function") {
              return new LazyWrapper(this);
            }
            return this.map((function(value) {
              return baseInvoke(value, path, args);
            }));
          }));
          LazyWrapper.prototype.reject = function(predicate) {
            return this.filter(negate(getIteratee(predicate)));
          };
          LazyWrapper.prototype.slice = function(start, end) {
            start = toInteger(start);
            var result = this;
            if (result.__filtered__ && (start > 0 || end < 0)) {
              return new LazyWrapper(result);
            }
            if (start < 0) {
              result = result.takeRight(-start);
            } else if (start) {
              result = result.drop(start);
            }
            if (end !== undefined) {
              end = toInteger(end);
              result = end < 0 ? result.dropRight(-end) : result.take(end - start);
            }
            return result;
          };
          LazyWrapper.prototype.takeRightWhile = function(predicate) {
            return this.reverse().takeWhile(predicate).reverse();
          };
          LazyWrapper.prototype.toArray = function() {
            return this.take(MAX_ARRAY_LENGTH);
          };
          baseForOwn(LazyWrapper.prototype, (function(func, methodName) {
            var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
            if (!lodashFunc) {
              return;
            }
            lodash.prototype[methodName] = function() {
              var value = this.__wrapped__, args = isTaker ? [ 1 ] : arguments, isLazy = value instanceof LazyWrapper, iteratee = args[0], useLazy = isLazy || isArray(value);
              var interceptor = function(value) {
                var result = lodashFunc.apply(lodash, arrayPush([ value ], args));
                return isTaker && chainAll ? result[0] : result;
              };
              if (useLazy && checkIteratee && typeof iteratee == "function" && iteratee.length != 1) {
                isLazy = useLazy = false;
              }
              var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
              if (!retUnwrapped && useLazy) {
                value = onlyLazy ? value : new LazyWrapper(this);
                var result = func.apply(value, args);
                result.__actions__.push({
                  func: thru,
                  args: [ interceptor ],
                  thisArg: undefined
                });
                return new LodashWrapper(result, chainAll);
              }
              if (isUnwrapped && onlyLazy) {
                return func.apply(this, args);
              }
              result = this.thru(interceptor);
              return isUnwrapped ? isTaker ? result.value()[0] : result.value() : result;
            };
          }));
          arrayEach([ "pop", "push", "shift", "sort", "splice", "unshift" ], (function(methodName) {
            var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
            lodash.prototype[methodName] = function() {
              var args = arguments;
              if (retUnwrapped && !this.__chain__) {
                var value = this.value();
                return func.apply(isArray(value) ? value : [], args);
              }
              return this[chainName]((function(value) {
                return func.apply(isArray(value) ? value : [], args);
              }));
            };
          }));
          baseForOwn(LazyWrapper.prototype, (function(func, methodName) {
            var lodashFunc = lodash[methodName];
            if (lodashFunc) {
              var key = lodashFunc.name + "";
              if (!hasOwnProperty.call(realNames, key)) {
                realNames[key] = [];
              }
              realNames[key].push({
                name: methodName,
                func: lodashFunc
              });
            }
          }));
          realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [ {
            name: "wrapper",
            func: undefined
          } ];
          LazyWrapper.prototype.clone = lazyClone;
          LazyWrapper.prototype.reverse = lazyReverse;
          LazyWrapper.prototype.value = lazyValue;
          lodash.prototype.at = wrapperAt;
          lodash.prototype.chain = wrapperChain;
          lodash.prototype.commit = wrapperCommit;
          lodash.prototype.next = wrapperNext;
          lodash.prototype.plant = wrapperPlant;
          lodash.prototype.reverse = wrapperReverse;
          lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
          lodash.prototype.first = lodash.prototype.head;
          if (symIterator) {
            lodash.prototype[symIterator] = wrapperToIterator;
          }
          return lodash;
        };
        var _ = runInContext();
        if (true) {
          root._ = _;
          !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
            return _;
          }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
        } else {}
      }).call(this);
    },
    1514(module) {
      "use strict";
      module.exports = Math.abs;
    },
    8968(module) {
      "use strict";
      module.exports = Math.floor;
    },
    4459(module) {
      "use strict";
      module.exports = Number.isNaN || function isNaN(a) {
        return a !== a;
      };
    },
    6188(module) {
      "use strict";
      module.exports = Math.max;
    },
    8002(module) {
      "use strict";
      module.exports = Math.min;
    },
    5880(module) {
      "use strict";
      module.exports = Math.pow;
    },
    414(module) {
      "use strict";
      module.exports = Math.round;
    },
    3093(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $isNaN = __webpack_require__(4459);
      module.exports = function sign(number) {
        if ($isNaN(number) || number === 0) {
          return number;
        }
        return number < 0 ? -1 : +1;
      };
    },
    8276(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var HashBase = __webpack_require__(4729);
      var Buffer = __webpack_require__(2861).Buffer;
      var ARRAY16 = new Array(16);
      function MD5() {
        HashBase.call(this, 64);
        this._a = 1732584193;
        this._b = 4023233417;
        this._c = 2562383102;
        this._d = 271733878;
      }
      inherits(MD5, HashBase);
      MD5.prototype._update = function() {
        var M = ARRAY16;
        for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4);
        var a = this._a;
        var b = this._b;
        var c = this._c;
        var d = this._d;
        a = fnF(a, b, c, d, M[0], 3614090360, 7);
        d = fnF(d, a, b, c, M[1], 3905402710, 12);
        c = fnF(c, d, a, b, M[2], 606105819, 17);
        b = fnF(b, c, d, a, M[3], 3250441966, 22);
        a = fnF(a, b, c, d, M[4], 4118548399, 7);
        d = fnF(d, a, b, c, M[5], 1200080426, 12);
        c = fnF(c, d, a, b, M[6], 2821735955, 17);
        b = fnF(b, c, d, a, M[7], 4249261313, 22);
        a = fnF(a, b, c, d, M[8], 1770035416, 7);
        d = fnF(d, a, b, c, M[9], 2336552879, 12);
        c = fnF(c, d, a, b, M[10], 4294925233, 17);
        b = fnF(b, c, d, a, M[11], 2304563134, 22);
        a = fnF(a, b, c, d, M[12], 1804603682, 7);
        d = fnF(d, a, b, c, M[13], 4254626195, 12);
        c = fnF(c, d, a, b, M[14], 2792965006, 17);
        b = fnF(b, c, d, a, M[15], 1236535329, 22);
        a = fnG(a, b, c, d, M[1], 4129170786, 5);
        d = fnG(d, a, b, c, M[6], 3225465664, 9);
        c = fnG(c, d, a, b, M[11], 643717713, 14);
        b = fnG(b, c, d, a, M[0], 3921069994, 20);
        a = fnG(a, b, c, d, M[5], 3593408605, 5);
        d = fnG(d, a, b, c, M[10], 38016083, 9);
        c = fnG(c, d, a, b, M[15], 3634488961, 14);
        b = fnG(b, c, d, a, M[4], 3889429448, 20);
        a = fnG(a, b, c, d, M[9], 568446438, 5);
        d = fnG(d, a, b, c, M[14], 3275163606, 9);
        c = fnG(c, d, a, b, M[3], 4107603335, 14);
        b = fnG(b, c, d, a, M[8], 1163531501, 20);
        a = fnG(a, b, c, d, M[13], 2850285829, 5);
        d = fnG(d, a, b, c, M[2], 4243563512, 9);
        c = fnG(c, d, a, b, M[7], 1735328473, 14);
        b = fnG(b, c, d, a, M[12], 2368359562, 20);
        a = fnH(a, b, c, d, M[5], 4294588738, 4);
        d = fnH(d, a, b, c, M[8], 2272392833, 11);
        c = fnH(c, d, a, b, M[11], 1839030562, 16);
        b = fnH(b, c, d, a, M[14], 4259657740, 23);
        a = fnH(a, b, c, d, M[1], 2763975236, 4);
        d = fnH(d, a, b, c, M[4], 1272893353, 11);
        c = fnH(c, d, a, b, M[7], 4139469664, 16);
        b = fnH(b, c, d, a, M[10], 3200236656, 23);
        a = fnH(a, b, c, d, M[13], 681279174, 4);
        d = fnH(d, a, b, c, M[0], 3936430074, 11);
        c = fnH(c, d, a, b, M[3], 3572445317, 16);
        b = fnH(b, c, d, a, M[6], 76029189, 23);
        a = fnH(a, b, c, d, M[9], 3654602809, 4);
        d = fnH(d, a, b, c, M[12], 3873151461, 11);
        c = fnH(c, d, a, b, M[15], 530742520, 16);
        b = fnH(b, c, d, a, M[2], 3299628645, 23);
        a = fnI(a, b, c, d, M[0], 4096336452, 6);
        d = fnI(d, a, b, c, M[7], 1126891415, 10);
        c = fnI(c, d, a, b, M[14], 2878612391, 15);
        b = fnI(b, c, d, a, M[5], 4237533241, 21);
        a = fnI(a, b, c, d, M[12], 1700485571, 6);
        d = fnI(d, a, b, c, M[3], 2399980690, 10);
        c = fnI(c, d, a, b, M[10], 4293915773, 15);
        b = fnI(b, c, d, a, M[1], 2240044497, 21);
        a = fnI(a, b, c, d, M[8], 1873313359, 6);
        d = fnI(d, a, b, c, M[15], 4264355552, 10);
        c = fnI(c, d, a, b, M[6], 2734768916, 15);
        b = fnI(b, c, d, a, M[13], 1309151649, 21);
        a = fnI(a, b, c, d, M[4], 4149444226, 6);
        d = fnI(d, a, b, c, M[11], 3174756917, 10);
        c = fnI(c, d, a, b, M[2], 718787259, 15);
        b = fnI(b, c, d, a, M[9], 3951481745, 21);
        this._a = this._a + a | 0;
        this._b = this._b + b | 0;
        this._c = this._c + c | 0;
        this._d = this._d + d | 0;
      };
      MD5.prototype._digest = function() {
        this._block[this._blockOffset++] = 128;
        if (this._blockOffset > 56) {
          this._block.fill(0, this._blockOffset, 64);
          this._update();
          this._blockOffset = 0;
        }
        this._block.fill(0, this._blockOffset, 56);
        this._block.writeUInt32LE(this._length[0], 56);
        this._block.writeUInt32LE(this._length[1], 60);
        this._update();
        var buffer = Buffer.allocUnsafe(16);
        buffer.writeInt32LE(this._a, 0);
        buffer.writeInt32LE(this._b, 4);
        buffer.writeInt32LE(this._c, 8);
        buffer.writeInt32LE(this._d, 12);
        return buffer;
      };
      function rotl(x, n) {
        return x << n | x >>> 32 - n;
      }
      function fnF(a, b, c, d, m, k, s) {
        return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0;
      }
      function fnG(a, b, c, d, m, k, s) {
        return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0;
      }
      function fnH(a, b, c, d, m, k, s) {
        return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;
      }
      function fnI(a, b, c, d, m, k, s) {
        return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;
      }
      module.exports = MD5;
    },
    2244(module, __unused_webpack_exports, __webpack_require__) {
      var bn = __webpack_require__(1158);
      var brorand = __webpack_require__(5037);
      function MillerRabin(rand) {
        this.rand = rand || new brorand.Rand;
      }
      module.exports = MillerRabin;
      MillerRabin.create = function create(rand) {
        return new MillerRabin(rand);
      };
      MillerRabin.prototype._randbelow = function _randbelow(n) {
        var len = n.bitLength();
        var min_bytes = Math.ceil(len / 8);
        do {
          var a = new bn(this.rand.generate(min_bytes));
        } while (a.cmp(n) >= 0);
        return a;
      };
      MillerRabin.prototype._randrange = function _randrange(start, stop) {
        var size = stop.sub(start);
        return start.add(this._randbelow(size));
      };
      MillerRabin.prototype.test = function test(n, k, cb) {
        var len = n.bitLength();
        var red = bn.mont(n);
        var rone = new bn(1).toRed(red);
        if (!k) k = Math.max(1, len / 48 | 0);
        var n1 = n.subn(1);
        for (var s = 0; !n1.testn(s); s++) {}
        var d = n.shrn(s);
        var rn1 = n1.toRed(red);
        var prime = true;
        for (;k > 0; k--) {
          var a = this._randrange(new bn(2), n1);
          if (cb) cb(a);
          var x = a.toRed(red).redPow(d);
          if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;
          for (var i = 1; i < s; i++) {
            x = x.redSqr();
            if (x.cmp(rone) === 0) return false;
            if (x.cmp(rn1) === 0) break;
          }
          if (i === s) return false;
        }
        return prime;
      };
      MillerRabin.prototype.getDivisor = function getDivisor(n, k) {
        var len = n.bitLength();
        var red = bn.mont(n);
        var rone = new bn(1).toRed(red);
        if (!k) k = Math.max(1, len / 48 | 0);
        var n1 = n.subn(1);
        for (var s = 0; !n1.testn(s); s++) {}
        var d = n.shrn(s);
        var rn1 = n1.toRed(red);
        for (;k > 0; k--) {
          var a = this._randrange(new bn(2), n1);
          var g = n.gcd(a);
          if (g.cmpn(1) !== 0) return g;
          var x = a.toRed(red).redPow(d);
          if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;
          for (var i = 1; i < s; i++) {
            x = x.redSqr();
            if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);
            if (x.cmp(rn1) === 0) break;
          }
          if (i === s) {
            x = x.redSqr();
            return x.fromRed().subn(1).gcd(n);
          }
        }
        return false;
      };
    },
    1158(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(4688).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    3349(module) {
      module.exports = assert;
      function assert(val, msg) {
        if (!val) throw new Error(msg || "Assertion failed");
      }
      assert.equal = function assertEqual(l, r, msg) {
        if (l != r) throw new Error(msg || "Assertion failed: " + l + " != " + r);
      };
    },
    4367(__unused_webpack_module, exports) {
      "use strict";
      var utils = exports;
      function toArray(msg, enc) {
        if (Array.isArray(msg)) return msg.slice();
        if (!msg) return [];
        var res = [];
        if (typeof msg !== "string") {
          for (var i = 0; i < msg.length; i++) res[i] = msg[i] | 0;
          return res;
        }
        if (enc === "hex") {
          msg = msg.replace(/[^a-z0-9]+/gi, "");
          if (msg.length % 2 !== 0) msg = "0" + msg;
          for (var i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));
        } else {
          for (var i = 0; i < msg.length; i++) {
            var c = msg.charCodeAt(i);
            var hi = c >> 8;
            var lo = c & 255;
            if (hi) res.push(hi, lo); else res.push(lo);
          }
        }
        return res;
      }
      utils.toArray = toArray;
      function zero2(word) {
        if (word.length === 1) return "0" + word; else return word;
      }
      utils.zero2 = zero2;
      function toHex(msg) {
        var res = "";
        for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));
        return res;
      }
      utils.toHex = toHex;
      utils.encode = function encode(arr, enc) {
        if (enc === "hex") return toHex(arr); else return arr;
      };
    },
    1137(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var asn1 = __webpack_require__(7568);
      exports.certificate = __webpack_require__(6413);
      var RSAPrivateKey = asn1.define("RSAPrivateKey", (function() {
        this.seq().obj(this.key("version")["int"](), this.key("modulus")["int"](), this.key("publicExponent")["int"](), this.key("privateExponent")["int"](), this.key("prime1")["int"](), this.key("prime2")["int"](), this.key("exponent1")["int"](), this.key("exponent2")["int"](), this.key("coefficient")["int"]());
      }));
      exports.RSAPrivateKey = RSAPrivateKey;
      var RSAPublicKey = asn1.define("RSAPublicKey", (function() {
        this.seq().obj(this.key("modulus")["int"](), this.key("publicExponent")["int"]());
      }));
      exports.RSAPublicKey = RSAPublicKey;
      var AlgorithmIdentifier = asn1.define("AlgorithmIdentifier", (function() {
        this.seq().obj(this.key("algorithm").objid(), this.key("none").null_().optional(), this.key("curve").objid().optional(), this.key("params").seq().obj(this.key("p")["int"](), this.key("q")["int"](), this.key("g")["int"]()).optional());
      }));
      var PublicKey = asn1.define("SubjectPublicKeyInfo", (function() {
        this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier), this.key("subjectPublicKey").bitstr());
      }));
      exports.PublicKey = PublicKey;
      var PrivateKeyInfo = asn1.define("PrivateKeyInfo", (function() {
        this.seq().obj(this.key("version")["int"](), this.key("algorithm").use(AlgorithmIdentifier), this.key("subjectPrivateKey").octstr());
      }));
      exports.PrivateKey = PrivateKeyInfo;
      var EncryptedPrivateKeyInfo = asn1.define("EncryptedPrivateKeyInfo", (function() {
        this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(), this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(), this.key("kdeparams").seq().obj(this.key("salt").octstr(), this.key("iters")["int"]())), this.key("cipher").seq().obj(this.key("algo").objid(), this.key("iv").octstr()))), this.key("subjectPrivateKey").octstr());
      }));
      exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;
      var DSAPrivateKey = asn1.define("DSAPrivateKey", (function() {
        this.seq().obj(this.key("version")["int"](), this.key("p")["int"](), this.key("q")["int"](), this.key("g")["int"](), this.key("pub_key")["int"](), this.key("priv_key")["int"]());
      }));
      exports.DSAPrivateKey = DSAPrivateKey;
      exports.DSAparam = asn1.define("DSAparam", (function() {
        this["int"]();
      }));
      var ECParameters = asn1.define("ECParameters", (function() {
        this.choice({
          namedCurve: this.objid()
        });
      }));
      var ECPrivateKey = asn1.define("ECPrivateKey", (function() {
        this.seq().obj(this.key("version")["int"](), this.key("privateKey").octstr(), this.key("parameters").optional().explicit(0).use(ECParameters), this.key("publicKey").optional().explicit(1).bitstr());
      }));
      exports.ECPrivateKey = ECPrivateKey;
      exports.signature = asn1.define("signature", (function() {
        this.seq().obj(this.key("r")["int"](), this.key("s")["int"]());
      }));
    },
    6413(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var asn = __webpack_require__(7568);
      var Time = asn.define("Time", (function() {
        this.choice({
          utcTime: this.utctime(),
          generalTime: this.gentime()
        });
      }));
      var AttributeTypeValue = asn.define("AttributeTypeValue", (function() {
        this.seq().obj(this.key("type").objid(), this.key("value").any());
      }));
      var AlgorithmIdentifier = asn.define("AlgorithmIdentifier", (function() {
        this.seq().obj(this.key("algorithm").objid(), this.key("parameters").optional(), this.key("curve").objid().optional());
      }));
      var SubjectPublicKeyInfo = asn.define("SubjectPublicKeyInfo", (function() {
        this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier), this.key("subjectPublicKey").bitstr());
      }));
      var RelativeDistinguishedName = asn.define("RelativeDistinguishedName", (function() {
        this.setof(AttributeTypeValue);
      }));
      var RDNSequence = asn.define("RDNSequence", (function() {
        this.seqof(RelativeDistinguishedName);
      }));
      var Name = asn.define("Name", (function() {
        this.choice({
          rdnSequence: this.use(RDNSequence)
        });
      }));
      var Validity = asn.define("Validity", (function() {
        this.seq().obj(this.key("notBefore").use(Time), this.key("notAfter").use(Time));
      }));
      var Extension = asn.define("Extension", (function() {
        this.seq().obj(this.key("extnID").objid(), this.key("critical").bool().def(false), this.key("extnValue").octstr());
      }));
      var TBSCertificate = asn.define("TBSCertificate", (function() {
        this.seq().obj(this.key("version").explicit(0)["int"]().optional(), this.key("serialNumber")["int"](), this.key("signature").use(AlgorithmIdentifier), this.key("issuer").use(Name), this.key("validity").use(Validity), this.key("subject").use(Name), this.key("subjectPublicKeyInfo").use(SubjectPublicKeyInfo), this.key("issuerUniqueID").implicit(1).bitstr().optional(), this.key("subjectUniqueID").implicit(2).bitstr().optional(), this.key("extensions").explicit(3).seqof(Extension).optional());
      }));
      var X509Certificate = asn.define("X509Certificate", (function() {
        this.seq().obj(this.key("tbsCertificate").use(TBSCertificate), this.key("signatureAlgorithm").use(AlgorithmIdentifier), this.key("signatureValue").bitstr());
      }));
      module.exports = X509Certificate;
    },
    4101(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m;
      var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;
      var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m;
      var evp = __webpack_require__(8078);
      var ciphers = __webpack_require__(1241);
      var Buffer = __webpack_require__(2861).Buffer;
      module.exports = function(okey, password) {
        var key = okey.toString();
        var match = key.match(findProc);
        var decrypted;
        if (!match) {
          var match2 = key.match(fullRegex);
          decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ""), "base64");
        } else {
          var suite = "aes" + match[1];
          var iv = Buffer.from(match[2], "hex");
          var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ""), "base64");
          var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;
          var out = [];
          var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);
          out.push(cipher.update(cipherText));
          out.push(cipher["final"]());
          decrypted = Buffer.concat(out);
        }
        var tag = key.match(startRegex)[1];
        return {
          tag,
          data: decrypted
        };
      };
    },
    8170(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var asn1 = __webpack_require__(1137);
      var aesid = __webpack_require__(5579);
      var fixProc = __webpack_require__(4101);
      var ciphers = __webpack_require__(1241);
      var pbkdf2Sync = __webpack_require__(8396).pbkdf2Sync;
      var Buffer = __webpack_require__(2861).Buffer;
      function decrypt(data, password) {
        var salt = data.algorithm.decrypt.kde.kdeparams.salt;
        var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);
        var algo = aesid[data.algorithm.decrypt.cipher.algo.join(".")];
        var iv = data.algorithm.decrypt.cipher.iv;
        var cipherText = data.subjectPrivateKey;
        var keylen = parseInt(algo.split("-")[1], 10) / 8;
        var key = pbkdf2Sync(password, salt, iters, keylen, "sha1");
        var cipher = ciphers.createDecipheriv(algo, key, iv);
        var out = [];
        out.push(cipher.update(cipherText));
        out.push(cipher["final"]());
        return Buffer.concat(out);
      }
      function parseKeys(buffer) {
        var password;
        if (typeof buffer === "object" && !Buffer.isBuffer(buffer)) {
          password = buffer.passphrase;
          buffer = buffer.key;
        }
        if (typeof buffer === "string") {
          buffer = Buffer.from(buffer);
        }
        var stripped = fixProc(buffer, password);
        var type = stripped.tag;
        var data = stripped.data;
        var subtype, ndata;
        switch (type) {
         case "CERTIFICATE":
          ndata = asn1.certificate.decode(data, "der").tbsCertificate.subjectPublicKeyInfo;

         case "PUBLIC KEY":
          if (!ndata) {
            ndata = asn1.PublicKey.decode(data, "der");
          }
          subtype = ndata.algorithm.algorithm.join(".");
          switch (subtype) {
           case "1.2.840.113549.1.1.1":
            return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, "der");

           case "1.2.840.10045.2.1":
            ndata.subjectPrivateKey = ndata.subjectPublicKey;
            return {
              type: "ec",
              data: ndata
            };

           case "1.2.840.10040.4.1":
            ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, "der");
            return {
              type: "dsa",
              data: ndata.algorithm.params
            };

           default:
            throw new Error("unknown key id " + subtype);
          }

         case "ENCRYPTED PRIVATE KEY":
          data = asn1.EncryptedPrivateKey.decode(data, "der");
          data = decrypt(data, password);

         case "PRIVATE KEY":
          ndata = asn1.PrivateKey.decode(data, "der");
          subtype = ndata.algorithm.algorithm.join(".");
          switch (subtype) {
           case "1.2.840.113549.1.1.1":
            return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, "der");

           case "1.2.840.10045.2.1":
            return {
              curve: ndata.algorithm.curve,
              privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, "der").privateKey
            };

           case "1.2.840.10040.4.1":
            ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, "der");
            return {
              type: "dsa",
              params: ndata.algorithm.params
            };

           default:
            throw new Error("unknown key id " + subtype);
          }

         case "RSA PUBLIC KEY":
          return asn1.RSAPublicKey.decode(data, "der");

         case "RSA PRIVATE KEY":
          return asn1.RSAPrivateKey.decode(data, "der");

         case "DSA PRIVATE KEY":
          return {
            type: "dsa",
            params: asn1.DSAPrivateKey.decode(data, "der")
          };

         case "EC PRIVATE KEY":
          data = asn1.ECPrivateKey.decode(data, "der");
          return {
            curve: data.parameters.value,
            privateKey: data.privateKey
          };

         default:
          throw new Error("unknown key type " + type);
        }
      }
      parseKeys.signature = asn1.signature;
      module.exports = parseKeys;
    },
    8396(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      exports.pbkdf2 = __webpack_require__(3832);
      exports.pbkdf2Sync = __webpack_require__(1352);
    },
    3832(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var checkParameters = __webpack_require__(4196);
      var defaultEncoding = __webpack_require__(2455);
      var sync = __webpack_require__(1352);
      var toBuffer = __webpack_require__(3382);
      var ZERO_BUF;
      var subtle = __webpack_require__.g.crypto && __webpack_require__.g.crypto.subtle;
      var toBrowser = {
        sha: "SHA-1",
        "sha-1": "SHA-1",
        sha1: "SHA-1",
        sha256: "SHA-256",
        "sha-256": "SHA-256",
        sha384: "SHA-384",
        "sha-384": "SHA-384",
        "sha-512": "SHA-512",
        sha512: "SHA-512"
      };
      var checks = [];
      var nextTick;
      function getNextTick() {
        if (nextTick) {
          return nextTick;
        }
        if (__webpack_require__.g.process && __webpack_require__.g.process.nextTick) {
          nextTick = __webpack_require__.g.process.nextTick;
        } else if (__webpack_require__.g.queueMicrotask) {
          nextTick = __webpack_require__.g.queueMicrotask;
        } else if (__webpack_require__.g.setImmediate) {
          nextTick = __webpack_require__.g.setImmediate;
        } else {
          nextTick = __webpack_require__.g.setTimeout;
        }
        return nextTick;
      }
      function browserPbkdf2(password, salt, iterations, length, algo) {
        return subtle.importKey("raw", password, {
          name: "PBKDF2"
        }, false, [ "deriveBits" ]).then((function(key) {
          return subtle.deriveBits({
            name: "PBKDF2",
            salt,
            iterations,
            hash: {
              name: algo
            }
          }, key, length << 3);
        })).then((function(res) {
          return Buffer.from(res);
        }));
      }
      function checkNative(algo) {
        if (__webpack_require__.g.process && !__webpack_require__.g.process.browser) {
          return Promise.resolve(false);
        }
        if (!subtle || !subtle.importKey || !subtle.deriveBits) {
          return Promise.resolve(false);
        }
        if (checks[algo] !== undefined) {
          return checks[algo];
        }
        ZERO_BUF = ZERO_BUF || Buffer.alloc(8);
        var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then((function() {
          return true;
        }), (function() {
          return false;
        }));
        checks[algo] = prom;
        return prom;
      }
      function resolvePromise(promise, callback) {
        promise.then((function(out) {
          getNextTick()((function() {
            callback(null, out);
          }));
        }), (function(e) {
          getNextTick()((function() {
            callback(e);
          }));
        }));
      }
      module.exports = function(password, salt, iterations, keylen, digest, callback) {
        if (typeof digest === "function") {
          callback = digest;
          digest = undefined;
        }
        checkParameters(iterations, keylen);
        password = toBuffer(password, defaultEncoding, "Password");
        salt = toBuffer(salt, defaultEncoding, "Salt");
        if (typeof callback !== "function") {
          throw new Error("No callback provided to pbkdf2");
        }
        digest = digest || "sha1";
        var algo = toBrowser[digest.toLowerCase()];
        if (!algo || typeof __webpack_require__.g.Promise !== "function") {
          getNextTick()((function() {
            var out;
            try {
              out = sync(password, salt, iterations, keylen, digest);
            } catch (e) {
              callback(e);
              return;
            }
            callback(null, out);
          }));
          return;
        }
        resolvePromise(checkNative(algo).then((function(resp) {
          if (resp) {
            return browserPbkdf2(password, salt, iterations, keylen, algo);
          }
          return sync(password, salt, iterations, keylen, digest);
        })), callback);
      };
    },
    2455(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var defaultEncoding;
      if (__webpack_require__.g.process && __webpack_require__.g.process.browser) {
        defaultEncoding = "utf-8";
      } else if (__webpack_require__.g.process && __webpack_require__.g.process.version) {
        var pVersionMajor = parseInt(process.version.split(".")[0].slice(1), 10);
        defaultEncoding = pVersionMajor >= 6 ? "utf-8" : "binary";
      } else {
        defaultEncoding = "utf-8";
      }
      module.exports = defaultEncoding;
    },
    4196(module) {
      "use strict";
      var $isFinite = isFinite;
      var MAX_ALLOC = Math.pow(2, 30) - 1;
      module.exports = function(iterations, keylen) {
        if (typeof iterations !== "number") {
          throw new TypeError("Iterations not a number");
        }
        if (iterations < 0 || !$isFinite(iterations)) {
          throw new TypeError("Bad iterations");
        }
        if (typeof keylen !== "number") {
          throw new TypeError("Key length not a number");
        }
        if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {
          throw new TypeError("Bad key length");
        }
      };
    },
    1352(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var md5 = __webpack_require__(320);
      var RIPEMD160 = __webpack_require__(6011);
      var sha = __webpack_require__(2802);
      var Buffer = __webpack_require__(2861).Buffer;
      var checkParameters = __webpack_require__(4196);
      var defaultEncoding = __webpack_require__(2455);
      var toBuffer = __webpack_require__(3382);
      var ZEROS = Buffer.alloc(128);
      var sizes = {
        __proto__: null,
        md5: 16,
        sha1: 20,
        sha224: 28,
        sha256: 32,
        sha384: 48,
        sha512: 64,
        "sha512-256": 32,
        ripemd160: 20,
        rmd160: 20
      };
      var mapping = {
        __proto__: null,
        "sha-1": "sha1",
        "sha-224": "sha224",
        "sha-256": "sha256",
        "sha-384": "sha384",
        "sha-512": "sha512",
        "ripemd-160": "ripemd160"
      };
      function rmd160Func(data) {
        return (new RIPEMD160).update(data).digest();
      }
      function getDigest(alg) {
        function shaFunc(data) {
          return sha(alg).update(data).digest();
        }
        if (alg === "rmd160" || alg === "ripemd160") {
          return rmd160Func;
        }
        if (alg === "md5") {
          return md5;
        }
        return shaFunc;
      }
      function Hmac(alg, key, saltLen) {
        var hash = getDigest(alg);
        var blocksize = alg === "sha512" || alg === "sha384" ? 128 : 64;
        if (key.length > blocksize) {
          key = hash(key);
        } else if (key.length < blocksize) {
          key = Buffer.concat([ key, ZEROS ], blocksize);
        }
        var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);
        var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);
        for (var i = 0; i < blocksize; i++) {
          ipad[i] = key[i] ^ 54;
          opad[i] = key[i] ^ 92;
        }
        var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);
        ipad.copy(ipad1, 0, 0, blocksize);
        this.ipad1 = ipad1;
        this.ipad2 = ipad;
        this.opad = opad;
        this.alg = alg;
        this.blocksize = blocksize;
        this.hash = hash;
        this.size = sizes[alg];
      }
      Hmac.prototype.run = function(data, ipad) {
        data.copy(ipad, this.blocksize);
        var h = this.hash(ipad);
        h.copy(this.opad, this.blocksize);
        return this.hash(this.opad);
      };
      function pbkdf2(password, salt, iterations, keylen, digest) {
        checkParameters(iterations, keylen);
        password = toBuffer(password, defaultEncoding, "Password");
        salt = toBuffer(salt, defaultEncoding, "Salt");
        var lowerDigest = (digest || "sha1").toLowerCase();
        var mappedDigest = mapping[lowerDigest] || lowerDigest;
        var size = sizes[mappedDigest];
        if (typeof size !== "number" || !size) {
          throw new TypeError("Digest algorithm not supported: " + digest);
        }
        var hmac = new Hmac(mappedDigest, password, salt.length);
        var DK = Buffer.allocUnsafe(keylen);
        var block1 = Buffer.allocUnsafe(salt.length + 4);
        salt.copy(block1, 0, 0, salt.length);
        var destPos = 0;
        var hLen = size;
        var l = Math.ceil(keylen / hLen);
        for (var i = 1; i <= l; i++) {
          block1.writeUInt32BE(i, salt.length);
          var T = hmac.run(block1, hmac.ipad1);
          var U = T;
          for (var j = 1; j < iterations; j++) {
            U = hmac.run(U, hmac.ipad2);
            for (var k = 0; k < hLen; k++) {
              T[k] ^= U[k];
            }
          }
          T.copy(DK, destPos);
          destPos += hLen;
        }
        return DK;
      }
      module.exports = pbkdf2;
    },
    3382(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var toBuffer = __webpack_require__(5377);
      var useUint8Array = typeof Uint8Array !== "undefined";
      var useArrayBuffer = useUint8Array && typeof ArrayBuffer !== "undefined";
      var isView = useArrayBuffer && ArrayBuffer.isView;
      module.exports = function(thing, encoding, name) {
        if (typeof thing === "string" || Buffer.isBuffer(thing) || useUint8Array && thing instanceof Uint8Array || isView && isView(thing)) {
          return toBuffer(thing, encoding);
        }
        throw new TypeError(name + " must be a string, a Buffer, a Uint8Array, or a DataView");
      };
    },
    6578(module) {
      "use strict";
      module.exports = [ "Float16Array", "Float32Array", "Float64Array", "Int8Array", "Int16Array", "Int32Array", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "BigInt64Array", "BigUint64Array" ];
    },
    3225(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      if (typeof process === "undefined" || !process.version || process.version.indexOf("v0.") === 0 || process.version.indexOf("v1.") === 0 && process.version.indexOf("v1.8.") !== 0) {
        module.exports = {
          nextTick
        };
      } else {
        module.exports = process;
      }
      function nextTick(fn, arg1, arg2, arg3) {
        if (typeof fn !== "function") {
          throw new TypeError('"callback" argument must be a function');
        }
        var len = arguments.length;
        var args, i;
        switch (len) {
         case 0:
         case 1:
          return process.nextTick(fn);

         case 2:
          return process.nextTick((function afterTickOne() {
            fn.call(null, arg1);
          }));

         case 3:
          return process.nextTick((function afterTickTwo() {
            fn.call(null, arg1, arg2);
          }));

         case 4:
          return process.nextTick((function afterTickThree() {
            fn.call(null, arg1, arg2, arg3);
          }));

         default:
          args = new Array(len - 1);
          i = 0;
          while (i < args.length) {
            args[i++] = arguments[i];
          }
          return process.nextTick((function afterTick() {
            fn.apply(null, args);
          }));
        }
      }
    },
    5606(module) {
      var process = module.exports = {};
      var cachedSetTimeout;
      var cachedClearTimeout;
      function defaultSetTimout() {
        throw new Error("setTimeout has not been defined");
      }
      function defaultClearTimeout() {
        throw new Error("clearTimeout has not been defined");
      }
      (function() {
        try {
          if (typeof setTimeout === "function") {
            cachedSetTimeout = setTimeout;
          } else {
            cachedSetTimeout = defaultSetTimout;
          }
        } catch (e) {
          cachedSetTimeout = defaultSetTimout;
        }
        try {
          if (typeof clearTimeout === "function") {
            cachedClearTimeout = clearTimeout;
          } else {
            cachedClearTimeout = defaultClearTimeout;
          }
        } catch (e) {
          cachedClearTimeout = defaultClearTimeout;
        }
      })();
      function runTimeout(fun) {
        if (cachedSetTimeout === setTimeout) {
          return setTimeout(fun, 0);
        }
        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
          cachedSetTimeout = setTimeout;
          return setTimeout(fun, 0);
        }
        try {
          return cachedSetTimeout(fun, 0);
        } catch (e) {
          try {
            return cachedSetTimeout.call(null, fun, 0);
          } catch (e) {
            return cachedSetTimeout.call(this, fun, 0);
          }
        }
      }
      function runClearTimeout(marker) {
        if (cachedClearTimeout === clearTimeout) {
          return clearTimeout(marker);
        }
        if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
          cachedClearTimeout = clearTimeout;
          return clearTimeout(marker);
        }
        try {
          return cachedClearTimeout(marker);
        } catch (e) {
          try {
            return cachedClearTimeout.call(null, marker);
          } catch (e) {
            return cachedClearTimeout.call(this, marker);
          }
        }
      }
      var queue = [];
      var draining = false;
      var currentQueue;
      var queueIndex = -1;
      function cleanUpNextTick() {
        if (!draining || !currentQueue) {
          return;
        }
        draining = false;
        if (currentQueue.length) {
          queue = currentQueue.concat(queue);
        } else {
          queueIndex = -1;
        }
        if (queue.length) {
          drainQueue();
        }
      }
      function drainQueue() {
        if (draining) {
          return;
        }
        var timeout = runTimeout(cleanUpNextTick);
        draining = true;
        var len = queue.length;
        while (len) {
          currentQueue = queue;
          queue = [];
          while (++queueIndex < len) {
            if (currentQueue) {
              currentQueue[queueIndex].run();
            }
          }
          queueIndex = -1;
          len = queue.length;
        }
        currentQueue = null;
        draining = false;
        runClearTimeout(timeout);
      }
      process.nextTick = function(fun) {
        var args = new Array(arguments.length - 1);
        if (arguments.length > 1) {
          for (var i = 1; i < arguments.length; i++) {
            args[i - 1] = arguments[i];
          }
        }
        queue.push(new Item(fun, args));
        if (queue.length === 1 && !draining) {
          runTimeout(drainQueue);
        }
      };
      function Item(fun, array) {
        this.fun = fun;
        this.array = array;
      }
      Item.prototype.run = function() {
        this.fun.apply(null, this.array);
      };
      process.title = "browser";
      process.browser = true;
      process.env = {};
      process.argv = [];
      process.version = "";
      process.versions = {};
      function noop() {}
      process.on = noop;
      process.addListener = noop;
      process.once = noop;
      process.off = noop;
      process.removeListener = noop;
      process.removeAllListeners = noop;
      process.emit = noop;
      process.prependListener = noop;
      process.prependOnceListener = noop;
      process.listeners = function(name) {
        return [];
      };
      process.binding = function(name) {
        throw new Error("process.binding is not supported");
      };
      process.cwd = function() {
        return "/";
      };
      process.chdir = function(dir) {
        throw new Error("process.chdir is not supported");
      };
      process.umask = function() {
        return 0;
      };
    },
    2694(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var ReactPropTypesSecret = __webpack_require__(6925);
      function emptyFunction() {}
      function emptyFunctionWithReset() {}
      emptyFunctionWithReset.resetWarningCache = emptyFunction;
      module.exports = function() {
        function shim(props, propName, componentName, location, propFullName, secret) {
          if (secret === ReactPropTypesSecret) {
            return;
          }
          var err = new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. " + "Use PropTypes.checkPropTypes() to call them. " + "Read more at http://fb.me/use-check-prop-types");
          err.name = "Invariant Violation";
          throw err;
        }
        shim.isRequired = shim;
        function getShim() {
          return shim;
        }
        var ReactPropTypes = {
          array: shim,
          bigint: shim,
          bool: shim,
          func: shim,
          number: shim,
          object: shim,
          string: shim,
          symbol: shim,
          any: shim,
          arrayOf: getShim,
          element: shim,
          elementType: shim,
          instanceOf: getShim,
          node: shim,
          objectOf: getShim,
          oneOf: getShim,
          oneOfType: getShim,
          shape: getShim,
          exact: getShim,
          checkPropTypes: emptyFunctionWithReset,
          resetWarningCache: emptyFunction
        };
        ReactPropTypes.PropTypes = ReactPropTypes;
        return ReactPropTypes;
      };
    },
    5556(module, __unused_webpack_exports, __webpack_require__) {
      if (false) {
        var throwOnDirectAccess, ReactIs;
      } else {
        module.exports = __webpack_require__(2694)();
      }
    },
    6925(module) {
      "use strict";
      var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
      module.exports = ReactPropTypesSecret;
    },
    7168(__unused_webpack_module, exports, __webpack_require__) {
      exports.publicEncrypt = __webpack_require__(8902);
      exports.privateDecrypt = __webpack_require__(7362);
      exports.privateEncrypt = function privateEncrypt(key, buf) {
        return exports.publicEncrypt(key, buf, true);
      };
      exports.publicDecrypt = function publicDecrypt(key, buf) {
        return exports.privateDecrypt(key, buf, true);
      };
    },
    8206(module, __unused_webpack_exports, __webpack_require__) {
      var createHash = __webpack_require__(7108);
      var Buffer = __webpack_require__(2861).Buffer;
      module.exports = function(seed, len) {
        var t = Buffer.alloc(0);
        var i = 0;
        var c;
        while (t.length < len) {
          c = i2ops(i++);
          t = Buffer.concat([ t, createHash("sha1").update(seed).update(c).digest() ]);
        }
        return t.slice(0, len);
      };
      function i2ops(c) {
        var out = Buffer.allocUnsafe(4);
        out.writeUInt32BE(c, 0);
        return out;
      }
    },
    4890(module, __unused_webpack_exports, __webpack_require__) {
      module = __webpack_require__.nmd(module);
      (function(module, exports) {
        "use strict";
        function assert(val, msg) {
          if (!val) throw new Error(msg || "Assertion failed");
        }
        function inherits(ctor, superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {};
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor;
          ctor.prototype.constructor = ctor;
        }
        function BN(number, base, endian) {
          if (BN.isBN(number)) {
            return number;
          }
          this.negative = 0;
          this.words = null;
          this.length = 0;
          this.red = null;
          if (number !== null) {
            if (base === "le" || base === "be") {
              endian = base;
              base = 10;
            }
            this._init(number || 0, base || 10, endian || "be");
          }
        }
        if (typeof module === "object") {
          module.exports = BN;
        } else {
          exports.BN = BN;
        }
        BN.BN = BN;
        BN.wordSize = 26;
        var Buffer;
        try {
          if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
            Buffer = window.Buffer;
          } else {
            Buffer = __webpack_require__(1069).Buffer;
          }
        } catch (e) {}
        BN.isBN = function isBN(num) {
          if (num instanceof BN) {
            return true;
          }
          return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
        };
        BN.max = function max(left, right) {
          if (left.cmp(right) > 0) return left;
          return right;
        };
        BN.min = function min(left, right) {
          if (left.cmp(right) < 0) return left;
          return right;
        };
        BN.prototype._init = function init(number, base, endian) {
          if (typeof number === "number") {
            return this._initNumber(number, base, endian);
          }
          if (typeof number === "object") {
            return this._initArray(number, base, endian);
          }
          if (base === "hex") {
            base = 16;
          }
          assert(base === (base | 0) && base >= 2 && base <= 36);
          number = number.toString().replace(/\s+/g, "");
          var start = 0;
          if (number[0] === "-") {
            start++;
            this.negative = 1;
          }
          if (start < number.length) {
            if (base === 16) {
              this._parseHex(number, start, endian);
            } else {
              this._parseBase(number, base, start);
              if (endian === "le") {
                this._initArray(this.toArray(), base, endian);
              }
            }
          }
        };
        BN.prototype._initNumber = function _initNumber(number, base, endian) {
          if (number < 0) {
            this.negative = 1;
            number = -number;
          }
          if (number < 67108864) {
            this.words = [ number & 67108863 ];
            this.length = 1;
          } else if (number < 4503599627370496) {
            this.words = [ number & 67108863, number / 67108864 & 67108863 ];
            this.length = 2;
          } else {
            assert(number < 9007199254740992);
            this.words = [ number & 67108863, number / 67108864 & 67108863, 1 ];
            this.length = 3;
          }
          if (endian !== "le") return;
          this._initArray(this.toArray(), base, endian);
        };
        BN.prototype._initArray = function _initArray(number, base, endian) {
          assert(typeof number.length === "number");
          if (number.length <= 0) {
            this.words = [ 0 ];
            this.length = 1;
            return this;
          }
          this.length = Math.ceil(number.length / 3);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var j, w;
          var off = 0;
          if (endian === "be") {
            for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
              w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          } else if (endian === "le") {
            for (i = 0, j = 0; i < number.length; i += 3) {
              w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
              this.words[j] |= w << off & 67108863;
              this.words[j + 1] = w >>> 26 - off & 67108863;
              off += 24;
              if (off >= 26) {
                off -= 26;
                j++;
              }
            }
          }
          return this.strip();
        };
        function parseHex4Bits(string, index) {
          var c = string.charCodeAt(index);
          if (c >= 65 && c <= 70) {
            return c - 55;
          } else if (c >= 97 && c <= 102) {
            return c - 87;
          } else {
            return c - 48 & 15;
          }
        }
        function parseHexByte(string, lowerBound, index) {
          var r = parseHex4Bits(string, index);
          if (index - 1 >= lowerBound) {
            r |= parseHex4Bits(string, index - 1) << 4;
          }
          return r;
        }
        BN.prototype._parseHex = function _parseHex(number, start, endian) {
          this.length = Math.ceil((number.length - start) / 6);
          this.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            this.words[i] = 0;
          }
          var off = 0;
          var j = 0;
          var w;
          if (endian === "be") {
            for (i = number.length - 1; i >= start; i -= 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          } else {
            var parseLength = number.length - start;
            for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
              w = parseHexByte(number, start, i) << off;
              this.words[j] |= w & 67108863;
              if (off >= 18) {
                off -= 18;
                j += 1;
                this.words[j] |= w >>> 26;
              } else {
                off += 8;
              }
            }
          }
          this.strip();
        };
        function parseBase(str, start, end, mul) {
          var r = 0;
          var len = Math.min(str.length, end);
          for (var i = start; i < len; i++) {
            var c = str.charCodeAt(i) - 48;
            r *= mul;
            if (c >= 49) {
              r += c - 49 + 10;
            } else if (c >= 17) {
              r += c - 17 + 10;
            } else {
              r += c;
            }
          }
          return r;
        }
        BN.prototype._parseBase = function _parseBase(number, base, start) {
          this.words = [ 0 ];
          this.length = 1;
          for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {
            limbLen++;
          }
          limbLen--;
          limbPow = limbPow / base | 0;
          var total = number.length - start;
          var mod = total % limbLen;
          var end = Math.min(total, total - mod) + start;
          var word = 0;
          for (var i = start; i < end; i += limbLen) {
            word = parseBase(number, i, i + limbLen, base);
            this.imuln(limbPow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          if (mod !== 0) {
            var pow = 1;
            word = parseBase(number, i, number.length, base);
            for (i = 0; i < mod; i++) {
              pow *= base;
            }
            this.imuln(pow);
            if (this.words[0] + word < 67108864) {
              this.words[0] += word;
            } else {
              this._iaddn(word);
            }
          }
          this.strip();
        };
        BN.prototype.copy = function copy(dest) {
          dest.words = new Array(this.length);
          for (var i = 0; i < this.length; i++) {
            dest.words[i] = this.words[i];
          }
          dest.length = this.length;
          dest.negative = this.negative;
          dest.red = this.red;
        };
        BN.prototype.clone = function clone() {
          var r = new BN(null);
          this.copy(r);
          return r;
        };
        BN.prototype._expand = function _expand(size) {
          while (this.length < size) {
            this.words[this.length++] = 0;
          }
          return this;
        };
        BN.prototype.strip = function strip() {
          while (this.length > 1 && this.words[this.length - 1] === 0) {
            this.length--;
          }
          return this._normSign();
        };
        BN.prototype._normSign = function _normSign() {
          if (this.length === 1 && this.words[0] === 0) {
            this.negative = 0;
          }
          return this;
        };
        BN.prototype.inspect = function inspect() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
        };
        var zeros = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000" ];
        var groupSizes = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 ];
        var groupBases = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ];
        BN.prototype.toString = function toString(base, padding) {
          base = base || 10;
          padding = padding | 0 || 1;
          var out;
          if (base === 16 || base === "hex") {
            out = "";
            var off = 0;
            var carry = 0;
            for (var i = 0; i < this.length; i++) {
              var w = this.words[i];
              var word = ((w << off | carry) & 16777215).toString(16);
              carry = w >>> 24 - off & 16777215;
              off += 2;
              if (off >= 26) {
                off -= 26;
                i--;
              }
              if (carry !== 0 || i !== this.length - 1) {
                out = zeros[6 - word.length] + word + out;
              } else {
                out = word + out;
              }
            }
            if (carry !== 0) {
              out = carry.toString(16) + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          if (base === (base | 0) && base >= 2 && base <= 36) {
            var groupSize = groupSizes[base];
            var groupBase = groupBases[base];
            out = "";
            var c = this.clone();
            c.negative = 0;
            while (!c.isZero()) {
              var r = c.modn(groupBase).toString(base);
              c = c.idivn(groupBase);
              if (!c.isZero()) {
                out = zeros[groupSize - r.length] + r + out;
              } else {
                out = r + out;
              }
            }
            if (this.isZero()) {
              out = "0" + out;
            }
            while (out.length % padding !== 0) {
              out = "0" + out;
            }
            if (this.negative !== 0) {
              out = "-" + out;
            }
            return out;
          }
          assert(false, "Base should be between 2 and 36");
        };
        BN.prototype.toNumber = function toNumber() {
          var ret = this.words[0];
          if (this.length === 2) {
            ret += this.words[1] * 67108864;
          } else if (this.length === 3 && this.words[2] === 1) {
            ret += 4503599627370496 + this.words[1] * 67108864;
          } else if (this.length > 2) {
            assert(false, "Number can only safely store up to 53 bits");
          }
          return this.negative !== 0 ? -ret : ret;
        };
        BN.prototype.toJSON = function toJSON() {
          return this.toString(16);
        };
        BN.prototype.toBuffer = function toBuffer(endian, length) {
          assert(typeof Buffer !== "undefined");
          return this.toArrayLike(Buffer, endian, length);
        };
        BN.prototype.toArray = function toArray(endian, length) {
          return this.toArrayLike(Array, endian, length);
        };
        BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
          var byteLength = this.byteLength();
          var reqLength = length || Math.max(1, byteLength);
          assert(byteLength <= reqLength, "byte array longer than desired length");
          assert(reqLength > 0, "Requested array length <= 0");
          this.strip();
          var littleEndian = endian === "le";
          var res = new ArrayType(reqLength);
          var b, i;
          var q = this.clone();
          if (!littleEndian) {
            for (i = 0; i < reqLength - byteLength; i++) {
              res[i] = 0;
            }
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[reqLength - i - 1] = b;
            }
          } else {
            for (i = 0; !q.isZero(); i++) {
              b = q.andln(255);
              q.iushrn(8);
              res[i] = b;
            }
            for (;i < reqLength; i++) {
              res[i] = 0;
            }
          }
          return res;
        };
        if (Math.clz32) {
          BN.prototype._countBits = function _countBits(w) {
            return 32 - Math.clz32(w);
          };
        } else {
          BN.prototype._countBits = function _countBits(w) {
            var t = w;
            var r = 0;
            if (t >= 4096) {
              r += 13;
              t >>>= 13;
            }
            if (t >= 64) {
              r += 7;
              t >>>= 7;
            }
            if (t >= 8) {
              r += 4;
              t >>>= 4;
            }
            if (t >= 2) {
              r += 2;
              t >>>= 2;
            }
            return r + t;
          };
        }
        BN.prototype._zeroBits = function _zeroBits(w) {
          if (w === 0) return 26;
          var t = w;
          var r = 0;
          if ((t & 8191) === 0) {
            r += 13;
            t >>>= 13;
          }
          if ((t & 127) === 0) {
            r += 7;
            t >>>= 7;
          }
          if ((t & 15) === 0) {
            r += 4;
            t >>>= 4;
          }
          if ((t & 3) === 0) {
            r += 2;
            t >>>= 2;
          }
          if ((t & 1) === 0) {
            r++;
          }
          return r;
        };
        BN.prototype.bitLength = function bitLength() {
          var w = this.words[this.length - 1];
          var hi = this._countBits(w);
          return (this.length - 1) * 26 + hi;
        };
        function toBitArray(num) {
          var w = new Array(num.bitLength());
          for (var bit = 0; bit < w.length; bit++) {
            var off = bit / 26 | 0;
            var wbit = bit % 26;
            w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
          }
          return w;
        }
        BN.prototype.zeroBits = function zeroBits() {
          if (this.isZero()) return 0;
          var r = 0;
          for (var i = 0; i < this.length; i++) {
            var b = this._zeroBits(this.words[i]);
            r += b;
            if (b !== 26) break;
          }
          return r;
        };
        BN.prototype.byteLength = function byteLength() {
          return Math.ceil(this.bitLength() / 8);
        };
        BN.prototype.toTwos = function toTwos(width) {
          if (this.negative !== 0) {
            return this.abs().inotn(width).iaddn(1);
          }
          return this.clone();
        };
        BN.prototype.fromTwos = function fromTwos(width) {
          if (this.testn(width - 1)) {
            return this.notn(width).iaddn(1).ineg();
          }
          return this.clone();
        };
        BN.prototype.isNeg = function isNeg() {
          return this.negative !== 0;
        };
        BN.prototype.neg = function neg() {
          return this.clone().ineg();
        };
        BN.prototype.ineg = function ineg() {
          if (!this.isZero()) {
            this.negative ^= 1;
          }
          return this;
        };
        BN.prototype.iuor = function iuor(num) {
          while (this.length < num.length) {
            this.words[this.length++] = 0;
          }
          for (var i = 0; i < num.length; i++) {
            this.words[i] = this.words[i] | num.words[i];
          }
          return this.strip();
        };
        BN.prototype.ior = function ior(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuor(num);
        };
        BN.prototype.or = function or(num) {
          if (this.length > num.length) return this.clone().ior(num);
          return num.clone().ior(this);
        };
        BN.prototype.uor = function uor(num) {
          if (this.length > num.length) return this.clone().iuor(num);
          return num.clone().iuor(this);
        };
        BN.prototype.iuand = function iuand(num) {
          var b;
          if (this.length > num.length) {
            b = num;
          } else {
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = this.words[i] & num.words[i];
          }
          this.length = b.length;
          return this.strip();
        };
        BN.prototype.iand = function iand(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuand(num);
        };
        BN.prototype.and = function and(num) {
          if (this.length > num.length) return this.clone().iand(num);
          return num.clone().iand(this);
        };
        BN.prototype.uand = function uand(num) {
          if (this.length > num.length) return this.clone().iuand(num);
          return num.clone().iuand(this);
        };
        BN.prototype.iuxor = function iuxor(num) {
          var a;
          var b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          for (var i = 0; i < b.length; i++) {
            this.words[i] = a.words[i] ^ b.words[i];
          }
          if (this !== a) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = a.length;
          return this.strip();
        };
        BN.prototype.ixor = function ixor(num) {
          assert((this.negative | num.negative) === 0);
          return this.iuxor(num);
        };
        BN.prototype.xor = function xor(num) {
          if (this.length > num.length) return this.clone().ixor(num);
          return num.clone().ixor(this);
        };
        BN.prototype.uxor = function uxor(num) {
          if (this.length > num.length) return this.clone().iuxor(num);
          return num.clone().iuxor(this);
        };
        BN.prototype.inotn = function inotn(width) {
          assert(typeof width === "number" && width >= 0);
          var bytesNeeded = Math.ceil(width / 26) | 0;
          var bitsLeft = width % 26;
          this._expand(bytesNeeded);
          if (bitsLeft > 0) {
            bytesNeeded--;
          }
          for (var i = 0; i < bytesNeeded; i++) {
            this.words[i] = ~this.words[i] & 67108863;
          }
          if (bitsLeft > 0) {
            this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
          }
          return this.strip();
        };
        BN.prototype.notn = function notn(width) {
          return this.clone().inotn(width);
        };
        BN.prototype.setn = function setn(bit, val) {
          assert(typeof bit === "number" && bit >= 0);
          var off = bit / 26 | 0;
          var wbit = bit % 26;
          this._expand(off + 1);
          if (val) {
            this.words[off] = this.words[off] | 1 << wbit;
          } else {
            this.words[off] = this.words[off] & ~(1 << wbit);
          }
          return this.strip();
        };
        BN.prototype.iadd = function iadd(num) {
          var r;
          if (this.negative !== 0 && num.negative === 0) {
            this.negative = 0;
            r = this.isub(num);
            this.negative ^= 1;
            return this._normSign();
          } else if (this.negative === 0 && num.negative !== 0) {
            num.negative = 0;
            r = this.isub(num);
            num.negative = 1;
            return r._normSign();
          }
          var a, b;
          if (this.length > num.length) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            this.words[i] = r & 67108863;
            carry = r >>> 26;
          }
          this.length = a.length;
          if (carry !== 0) {
            this.words[this.length] = carry;
            this.length++;
          } else if (a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          return this;
        };
        BN.prototype.add = function add(num) {
          var res;
          if (num.negative !== 0 && this.negative === 0) {
            num.negative = 0;
            res = this.sub(num);
            num.negative ^= 1;
            return res;
          } else if (num.negative === 0 && this.negative !== 0) {
            this.negative = 0;
            res = num.sub(this);
            this.negative = 1;
            return res;
          }
          if (this.length > num.length) return this.clone().iadd(num);
          return num.clone().iadd(this);
        };
        BN.prototype.isub = function isub(num) {
          if (num.negative !== 0) {
            num.negative = 0;
            var r = this.iadd(num);
            num.negative = 1;
            return r._normSign();
          } else if (this.negative !== 0) {
            this.negative = 0;
            this.iadd(num);
            this.negative = 1;
            return this._normSign();
          }
          var cmp = this.cmp(num);
          if (cmp === 0) {
            this.negative = 0;
            this.length = 1;
            this.words[0] = 0;
            return this;
          }
          var a, b;
          if (cmp > 0) {
            a = this;
            b = num;
          } else {
            a = num;
            b = this;
          }
          var carry = 0;
          for (var i = 0; i < b.length; i++) {
            r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          for (;carry !== 0 && i < a.length; i++) {
            r = (a.words[i] | 0) + carry;
            carry = r >> 26;
            this.words[i] = r & 67108863;
          }
          if (carry === 0 && i < a.length && a !== this) {
            for (;i < a.length; i++) {
              this.words[i] = a.words[i];
            }
          }
          this.length = Math.max(this.length, i);
          if (a !== this) {
            this.negative = 1;
          }
          return this.strip();
        };
        BN.prototype.sub = function sub(num) {
          return this.clone().isub(num);
        };
        function smallMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          var len = self.length + num.length | 0;
          out.length = len;
          len = len - 1 | 0;
          var a = self.words[0] | 0;
          var b = num.words[0] | 0;
          var r = a * b;
          var lo = r & 67108863;
          var carry = r / 67108864 | 0;
          out.words[0] = lo;
          for (var k = 1; k < len; k++) {
            var ncarry = carry >>> 26;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j | 0;
              a = self.words[i] | 0;
              b = num.words[j] | 0;
              r = a * b + rword;
              ncarry += r / 67108864 | 0;
              rword = r & 67108863;
            }
            out.words[k] = rword | 0;
            carry = ncarry | 0;
          }
          if (carry !== 0) {
            out.words[k] = carry | 0;
          } else {
            out.length--;
          }
          return out.strip();
        }
        var comb10MulTo = function comb10MulTo(self, num, out) {
          var a = self.words;
          var b = num.words;
          var o = out.words;
          var c = 0;
          var lo;
          var mid;
          var hi;
          var a0 = a[0] | 0;
          var al0 = a0 & 8191;
          var ah0 = a0 >>> 13;
          var a1 = a[1] | 0;
          var al1 = a1 & 8191;
          var ah1 = a1 >>> 13;
          var a2 = a[2] | 0;
          var al2 = a2 & 8191;
          var ah2 = a2 >>> 13;
          var a3 = a[3] | 0;
          var al3 = a3 & 8191;
          var ah3 = a3 >>> 13;
          var a4 = a[4] | 0;
          var al4 = a4 & 8191;
          var ah4 = a4 >>> 13;
          var a5 = a[5] | 0;
          var al5 = a5 & 8191;
          var ah5 = a5 >>> 13;
          var a6 = a[6] | 0;
          var al6 = a6 & 8191;
          var ah6 = a6 >>> 13;
          var a7 = a[7] | 0;
          var al7 = a7 & 8191;
          var ah7 = a7 >>> 13;
          var a8 = a[8] | 0;
          var al8 = a8 & 8191;
          var ah8 = a8 >>> 13;
          var a9 = a[9] | 0;
          var al9 = a9 & 8191;
          var ah9 = a9 >>> 13;
          var b0 = b[0] | 0;
          var bl0 = b0 & 8191;
          var bh0 = b0 >>> 13;
          var b1 = b[1] | 0;
          var bl1 = b1 & 8191;
          var bh1 = b1 >>> 13;
          var b2 = b[2] | 0;
          var bl2 = b2 & 8191;
          var bh2 = b2 >>> 13;
          var b3 = b[3] | 0;
          var bl3 = b3 & 8191;
          var bh3 = b3 >>> 13;
          var b4 = b[4] | 0;
          var bl4 = b4 & 8191;
          var bh4 = b4 >>> 13;
          var b5 = b[5] | 0;
          var bl5 = b5 & 8191;
          var bh5 = b5 >>> 13;
          var b6 = b[6] | 0;
          var bl6 = b6 & 8191;
          var bh6 = b6 >>> 13;
          var b7 = b[7] | 0;
          var bl7 = b7 & 8191;
          var bh7 = b7 >>> 13;
          var b8 = b[8] | 0;
          var bl8 = b8 & 8191;
          var bh8 = b8 >>> 13;
          var b9 = b[9] | 0;
          var bl9 = b9 & 8191;
          var bh9 = b9 >>> 13;
          out.negative = self.negative ^ num.negative;
          out.length = 19;
          lo = Math.imul(al0, bl0);
          mid = Math.imul(al0, bh0);
          mid = mid + Math.imul(ah0, bl0) | 0;
          hi = Math.imul(ah0, bh0);
          var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
          w0 &= 67108863;
          lo = Math.imul(al1, bl0);
          mid = Math.imul(al1, bh0);
          mid = mid + Math.imul(ah1, bl0) | 0;
          hi = Math.imul(ah1, bh0);
          lo = lo + Math.imul(al0, bl1) | 0;
          mid = mid + Math.imul(al0, bh1) | 0;
          mid = mid + Math.imul(ah0, bl1) | 0;
          hi = hi + Math.imul(ah0, bh1) | 0;
          var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
          w1 &= 67108863;
          lo = Math.imul(al2, bl0);
          mid = Math.imul(al2, bh0);
          mid = mid + Math.imul(ah2, bl0) | 0;
          hi = Math.imul(ah2, bh0);
          lo = lo + Math.imul(al1, bl1) | 0;
          mid = mid + Math.imul(al1, bh1) | 0;
          mid = mid + Math.imul(ah1, bl1) | 0;
          hi = hi + Math.imul(ah1, bh1) | 0;
          lo = lo + Math.imul(al0, bl2) | 0;
          mid = mid + Math.imul(al0, bh2) | 0;
          mid = mid + Math.imul(ah0, bl2) | 0;
          hi = hi + Math.imul(ah0, bh2) | 0;
          var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
          w2 &= 67108863;
          lo = Math.imul(al3, bl0);
          mid = Math.imul(al3, bh0);
          mid = mid + Math.imul(ah3, bl0) | 0;
          hi = Math.imul(ah3, bh0);
          lo = lo + Math.imul(al2, bl1) | 0;
          mid = mid + Math.imul(al2, bh1) | 0;
          mid = mid + Math.imul(ah2, bl1) | 0;
          hi = hi + Math.imul(ah2, bh1) | 0;
          lo = lo + Math.imul(al1, bl2) | 0;
          mid = mid + Math.imul(al1, bh2) | 0;
          mid = mid + Math.imul(ah1, bl2) | 0;
          hi = hi + Math.imul(ah1, bh2) | 0;
          lo = lo + Math.imul(al0, bl3) | 0;
          mid = mid + Math.imul(al0, bh3) | 0;
          mid = mid + Math.imul(ah0, bl3) | 0;
          hi = hi + Math.imul(ah0, bh3) | 0;
          var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
          w3 &= 67108863;
          lo = Math.imul(al4, bl0);
          mid = Math.imul(al4, bh0);
          mid = mid + Math.imul(ah4, bl0) | 0;
          hi = Math.imul(ah4, bh0);
          lo = lo + Math.imul(al3, bl1) | 0;
          mid = mid + Math.imul(al3, bh1) | 0;
          mid = mid + Math.imul(ah3, bl1) | 0;
          hi = hi + Math.imul(ah3, bh1) | 0;
          lo = lo + Math.imul(al2, bl2) | 0;
          mid = mid + Math.imul(al2, bh2) | 0;
          mid = mid + Math.imul(ah2, bl2) | 0;
          hi = hi + Math.imul(ah2, bh2) | 0;
          lo = lo + Math.imul(al1, bl3) | 0;
          mid = mid + Math.imul(al1, bh3) | 0;
          mid = mid + Math.imul(ah1, bl3) | 0;
          hi = hi + Math.imul(ah1, bh3) | 0;
          lo = lo + Math.imul(al0, bl4) | 0;
          mid = mid + Math.imul(al0, bh4) | 0;
          mid = mid + Math.imul(ah0, bl4) | 0;
          hi = hi + Math.imul(ah0, bh4) | 0;
          var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
          w4 &= 67108863;
          lo = Math.imul(al5, bl0);
          mid = Math.imul(al5, bh0);
          mid = mid + Math.imul(ah5, bl0) | 0;
          hi = Math.imul(ah5, bh0);
          lo = lo + Math.imul(al4, bl1) | 0;
          mid = mid + Math.imul(al4, bh1) | 0;
          mid = mid + Math.imul(ah4, bl1) | 0;
          hi = hi + Math.imul(ah4, bh1) | 0;
          lo = lo + Math.imul(al3, bl2) | 0;
          mid = mid + Math.imul(al3, bh2) | 0;
          mid = mid + Math.imul(ah3, bl2) | 0;
          hi = hi + Math.imul(ah3, bh2) | 0;
          lo = lo + Math.imul(al2, bl3) | 0;
          mid = mid + Math.imul(al2, bh3) | 0;
          mid = mid + Math.imul(ah2, bl3) | 0;
          hi = hi + Math.imul(ah2, bh3) | 0;
          lo = lo + Math.imul(al1, bl4) | 0;
          mid = mid + Math.imul(al1, bh4) | 0;
          mid = mid + Math.imul(ah1, bl4) | 0;
          hi = hi + Math.imul(ah1, bh4) | 0;
          lo = lo + Math.imul(al0, bl5) | 0;
          mid = mid + Math.imul(al0, bh5) | 0;
          mid = mid + Math.imul(ah0, bl5) | 0;
          hi = hi + Math.imul(ah0, bh5) | 0;
          var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
          w5 &= 67108863;
          lo = Math.imul(al6, bl0);
          mid = Math.imul(al6, bh0);
          mid = mid + Math.imul(ah6, bl0) | 0;
          hi = Math.imul(ah6, bh0);
          lo = lo + Math.imul(al5, bl1) | 0;
          mid = mid + Math.imul(al5, bh1) | 0;
          mid = mid + Math.imul(ah5, bl1) | 0;
          hi = hi + Math.imul(ah5, bh1) | 0;
          lo = lo + Math.imul(al4, bl2) | 0;
          mid = mid + Math.imul(al4, bh2) | 0;
          mid = mid + Math.imul(ah4, bl2) | 0;
          hi = hi + Math.imul(ah4, bh2) | 0;
          lo = lo + Math.imul(al3, bl3) | 0;
          mid = mid + Math.imul(al3, bh3) | 0;
          mid = mid + Math.imul(ah3, bl3) | 0;
          hi = hi + Math.imul(ah3, bh3) | 0;
          lo = lo + Math.imul(al2, bl4) | 0;
          mid = mid + Math.imul(al2, bh4) | 0;
          mid = mid + Math.imul(ah2, bl4) | 0;
          hi = hi + Math.imul(ah2, bh4) | 0;
          lo = lo + Math.imul(al1, bl5) | 0;
          mid = mid + Math.imul(al1, bh5) | 0;
          mid = mid + Math.imul(ah1, bl5) | 0;
          hi = hi + Math.imul(ah1, bh5) | 0;
          lo = lo + Math.imul(al0, bl6) | 0;
          mid = mid + Math.imul(al0, bh6) | 0;
          mid = mid + Math.imul(ah0, bl6) | 0;
          hi = hi + Math.imul(ah0, bh6) | 0;
          var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
          w6 &= 67108863;
          lo = Math.imul(al7, bl0);
          mid = Math.imul(al7, bh0);
          mid = mid + Math.imul(ah7, bl0) | 0;
          hi = Math.imul(ah7, bh0);
          lo = lo + Math.imul(al6, bl1) | 0;
          mid = mid + Math.imul(al6, bh1) | 0;
          mid = mid + Math.imul(ah6, bl1) | 0;
          hi = hi + Math.imul(ah6, bh1) | 0;
          lo = lo + Math.imul(al5, bl2) | 0;
          mid = mid + Math.imul(al5, bh2) | 0;
          mid = mid + Math.imul(ah5, bl2) | 0;
          hi = hi + Math.imul(ah5, bh2) | 0;
          lo = lo + Math.imul(al4, bl3) | 0;
          mid = mid + Math.imul(al4, bh3) | 0;
          mid = mid + Math.imul(ah4, bl3) | 0;
          hi = hi + Math.imul(ah4, bh3) | 0;
          lo = lo + Math.imul(al3, bl4) | 0;
          mid = mid + Math.imul(al3, bh4) | 0;
          mid = mid + Math.imul(ah3, bl4) | 0;
          hi = hi + Math.imul(ah3, bh4) | 0;
          lo = lo + Math.imul(al2, bl5) | 0;
          mid = mid + Math.imul(al2, bh5) | 0;
          mid = mid + Math.imul(ah2, bl5) | 0;
          hi = hi + Math.imul(ah2, bh5) | 0;
          lo = lo + Math.imul(al1, bl6) | 0;
          mid = mid + Math.imul(al1, bh6) | 0;
          mid = mid + Math.imul(ah1, bl6) | 0;
          hi = hi + Math.imul(ah1, bh6) | 0;
          lo = lo + Math.imul(al0, bl7) | 0;
          mid = mid + Math.imul(al0, bh7) | 0;
          mid = mid + Math.imul(ah0, bl7) | 0;
          hi = hi + Math.imul(ah0, bh7) | 0;
          var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
          w7 &= 67108863;
          lo = Math.imul(al8, bl0);
          mid = Math.imul(al8, bh0);
          mid = mid + Math.imul(ah8, bl0) | 0;
          hi = Math.imul(ah8, bh0);
          lo = lo + Math.imul(al7, bl1) | 0;
          mid = mid + Math.imul(al7, bh1) | 0;
          mid = mid + Math.imul(ah7, bl1) | 0;
          hi = hi + Math.imul(ah7, bh1) | 0;
          lo = lo + Math.imul(al6, bl2) | 0;
          mid = mid + Math.imul(al6, bh2) | 0;
          mid = mid + Math.imul(ah6, bl2) | 0;
          hi = hi + Math.imul(ah6, bh2) | 0;
          lo = lo + Math.imul(al5, bl3) | 0;
          mid = mid + Math.imul(al5, bh3) | 0;
          mid = mid + Math.imul(ah5, bl3) | 0;
          hi = hi + Math.imul(ah5, bh3) | 0;
          lo = lo + Math.imul(al4, bl4) | 0;
          mid = mid + Math.imul(al4, bh4) | 0;
          mid = mid + Math.imul(ah4, bl4) | 0;
          hi = hi + Math.imul(ah4, bh4) | 0;
          lo = lo + Math.imul(al3, bl5) | 0;
          mid = mid + Math.imul(al3, bh5) | 0;
          mid = mid + Math.imul(ah3, bl5) | 0;
          hi = hi + Math.imul(ah3, bh5) | 0;
          lo = lo + Math.imul(al2, bl6) | 0;
          mid = mid + Math.imul(al2, bh6) | 0;
          mid = mid + Math.imul(ah2, bl6) | 0;
          hi = hi + Math.imul(ah2, bh6) | 0;
          lo = lo + Math.imul(al1, bl7) | 0;
          mid = mid + Math.imul(al1, bh7) | 0;
          mid = mid + Math.imul(ah1, bl7) | 0;
          hi = hi + Math.imul(ah1, bh7) | 0;
          lo = lo + Math.imul(al0, bl8) | 0;
          mid = mid + Math.imul(al0, bh8) | 0;
          mid = mid + Math.imul(ah0, bl8) | 0;
          hi = hi + Math.imul(ah0, bh8) | 0;
          var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
          w8 &= 67108863;
          lo = Math.imul(al9, bl0);
          mid = Math.imul(al9, bh0);
          mid = mid + Math.imul(ah9, bl0) | 0;
          hi = Math.imul(ah9, bh0);
          lo = lo + Math.imul(al8, bl1) | 0;
          mid = mid + Math.imul(al8, bh1) | 0;
          mid = mid + Math.imul(ah8, bl1) | 0;
          hi = hi + Math.imul(ah8, bh1) | 0;
          lo = lo + Math.imul(al7, bl2) | 0;
          mid = mid + Math.imul(al7, bh2) | 0;
          mid = mid + Math.imul(ah7, bl2) | 0;
          hi = hi + Math.imul(ah7, bh2) | 0;
          lo = lo + Math.imul(al6, bl3) | 0;
          mid = mid + Math.imul(al6, bh3) | 0;
          mid = mid + Math.imul(ah6, bl3) | 0;
          hi = hi + Math.imul(ah6, bh3) | 0;
          lo = lo + Math.imul(al5, bl4) | 0;
          mid = mid + Math.imul(al5, bh4) | 0;
          mid = mid + Math.imul(ah5, bl4) | 0;
          hi = hi + Math.imul(ah5, bh4) | 0;
          lo = lo + Math.imul(al4, bl5) | 0;
          mid = mid + Math.imul(al4, bh5) | 0;
          mid = mid + Math.imul(ah4, bl5) | 0;
          hi = hi + Math.imul(ah4, bh5) | 0;
          lo = lo + Math.imul(al3, bl6) | 0;
          mid = mid + Math.imul(al3, bh6) | 0;
          mid = mid + Math.imul(ah3, bl6) | 0;
          hi = hi + Math.imul(ah3, bh6) | 0;
          lo = lo + Math.imul(al2, bl7) | 0;
          mid = mid + Math.imul(al2, bh7) | 0;
          mid = mid + Math.imul(ah2, bl7) | 0;
          hi = hi + Math.imul(ah2, bh7) | 0;
          lo = lo + Math.imul(al1, bl8) | 0;
          mid = mid + Math.imul(al1, bh8) | 0;
          mid = mid + Math.imul(ah1, bl8) | 0;
          hi = hi + Math.imul(ah1, bh8) | 0;
          lo = lo + Math.imul(al0, bl9) | 0;
          mid = mid + Math.imul(al0, bh9) | 0;
          mid = mid + Math.imul(ah0, bl9) | 0;
          hi = hi + Math.imul(ah0, bh9) | 0;
          var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
          w9 &= 67108863;
          lo = Math.imul(al9, bl1);
          mid = Math.imul(al9, bh1);
          mid = mid + Math.imul(ah9, bl1) | 0;
          hi = Math.imul(ah9, bh1);
          lo = lo + Math.imul(al8, bl2) | 0;
          mid = mid + Math.imul(al8, bh2) | 0;
          mid = mid + Math.imul(ah8, bl2) | 0;
          hi = hi + Math.imul(ah8, bh2) | 0;
          lo = lo + Math.imul(al7, bl3) | 0;
          mid = mid + Math.imul(al7, bh3) | 0;
          mid = mid + Math.imul(ah7, bl3) | 0;
          hi = hi + Math.imul(ah7, bh3) | 0;
          lo = lo + Math.imul(al6, bl4) | 0;
          mid = mid + Math.imul(al6, bh4) | 0;
          mid = mid + Math.imul(ah6, bl4) | 0;
          hi = hi + Math.imul(ah6, bh4) | 0;
          lo = lo + Math.imul(al5, bl5) | 0;
          mid = mid + Math.imul(al5, bh5) | 0;
          mid = mid + Math.imul(ah5, bl5) | 0;
          hi = hi + Math.imul(ah5, bh5) | 0;
          lo = lo + Math.imul(al4, bl6) | 0;
          mid = mid + Math.imul(al4, bh6) | 0;
          mid = mid + Math.imul(ah4, bl6) | 0;
          hi = hi + Math.imul(ah4, bh6) | 0;
          lo = lo + Math.imul(al3, bl7) | 0;
          mid = mid + Math.imul(al3, bh7) | 0;
          mid = mid + Math.imul(ah3, bl7) | 0;
          hi = hi + Math.imul(ah3, bh7) | 0;
          lo = lo + Math.imul(al2, bl8) | 0;
          mid = mid + Math.imul(al2, bh8) | 0;
          mid = mid + Math.imul(ah2, bl8) | 0;
          hi = hi + Math.imul(ah2, bh8) | 0;
          lo = lo + Math.imul(al1, bl9) | 0;
          mid = mid + Math.imul(al1, bh9) | 0;
          mid = mid + Math.imul(ah1, bl9) | 0;
          hi = hi + Math.imul(ah1, bh9) | 0;
          var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
          w10 &= 67108863;
          lo = Math.imul(al9, bl2);
          mid = Math.imul(al9, bh2);
          mid = mid + Math.imul(ah9, bl2) | 0;
          hi = Math.imul(ah9, bh2);
          lo = lo + Math.imul(al8, bl3) | 0;
          mid = mid + Math.imul(al8, bh3) | 0;
          mid = mid + Math.imul(ah8, bl3) | 0;
          hi = hi + Math.imul(ah8, bh3) | 0;
          lo = lo + Math.imul(al7, bl4) | 0;
          mid = mid + Math.imul(al7, bh4) | 0;
          mid = mid + Math.imul(ah7, bl4) | 0;
          hi = hi + Math.imul(ah7, bh4) | 0;
          lo = lo + Math.imul(al6, bl5) | 0;
          mid = mid + Math.imul(al6, bh5) | 0;
          mid = mid + Math.imul(ah6, bl5) | 0;
          hi = hi + Math.imul(ah6, bh5) | 0;
          lo = lo + Math.imul(al5, bl6) | 0;
          mid = mid + Math.imul(al5, bh6) | 0;
          mid = mid + Math.imul(ah5, bl6) | 0;
          hi = hi + Math.imul(ah5, bh6) | 0;
          lo = lo + Math.imul(al4, bl7) | 0;
          mid = mid + Math.imul(al4, bh7) | 0;
          mid = mid + Math.imul(ah4, bl7) | 0;
          hi = hi + Math.imul(ah4, bh7) | 0;
          lo = lo + Math.imul(al3, bl8) | 0;
          mid = mid + Math.imul(al3, bh8) | 0;
          mid = mid + Math.imul(ah3, bl8) | 0;
          hi = hi + Math.imul(ah3, bh8) | 0;
          lo = lo + Math.imul(al2, bl9) | 0;
          mid = mid + Math.imul(al2, bh9) | 0;
          mid = mid + Math.imul(ah2, bl9) | 0;
          hi = hi + Math.imul(ah2, bh9) | 0;
          var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
          w11 &= 67108863;
          lo = Math.imul(al9, bl3);
          mid = Math.imul(al9, bh3);
          mid = mid + Math.imul(ah9, bl3) | 0;
          hi = Math.imul(ah9, bh3);
          lo = lo + Math.imul(al8, bl4) | 0;
          mid = mid + Math.imul(al8, bh4) | 0;
          mid = mid + Math.imul(ah8, bl4) | 0;
          hi = hi + Math.imul(ah8, bh4) | 0;
          lo = lo + Math.imul(al7, bl5) | 0;
          mid = mid + Math.imul(al7, bh5) | 0;
          mid = mid + Math.imul(ah7, bl5) | 0;
          hi = hi + Math.imul(ah7, bh5) | 0;
          lo = lo + Math.imul(al6, bl6) | 0;
          mid = mid + Math.imul(al6, bh6) | 0;
          mid = mid + Math.imul(ah6, bl6) | 0;
          hi = hi + Math.imul(ah6, bh6) | 0;
          lo = lo + Math.imul(al5, bl7) | 0;
          mid = mid + Math.imul(al5, bh7) | 0;
          mid = mid + Math.imul(ah5, bl7) | 0;
          hi = hi + Math.imul(ah5, bh7) | 0;
          lo = lo + Math.imul(al4, bl8) | 0;
          mid = mid + Math.imul(al4, bh8) | 0;
          mid = mid + Math.imul(ah4, bl8) | 0;
          hi = hi + Math.imul(ah4, bh8) | 0;
          lo = lo + Math.imul(al3, bl9) | 0;
          mid = mid + Math.imul(al3, bh9) | 0;
          mid = mid + Math.imul(ah3, bl9) | 0;
          hi = hi + Math.imul(ah3, bh9) | 0;
          var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
          w12 &= 67108863;
          lo = Math.imul(al9, bl4);
          mid = Math.imul(al9, bh4);
          mid = mid + Math.imul(ah9, bl4) | 0;
          hi = Math.imul(ah9, bh4);
          lo = lo + Math.imul(al8, bl5) | 0;
          mid = mid + Math.imul(al8, bh5) | 0;
          mid = mid + Math.imul(ah8, bl5) | 0;
          hi = hi + Math.imul(ah8, bh5) | 0;
          lo = lo + Math.imul(al7, bl6) | 0;
          mid = mid + Math.imul(al7, bh6) | 0;
          mid = mid + Math.imul(ah7, bl6) | 0;
          hi = hi + Math.imul(ah7, bh6) | 0;
          lo = lo + Math.imul(al6, bl7) | 0;
          mid = mid + Math.imul(al6, bh7) | 0;
          mid = mid + Math.imul(ah6, bl7) | 0;
          hi = hi + Math.imul(ah6, bh7) | 0;
          lo = lo + Math.imul(al5, bl8) | 0;
          mid = mid + Math.imul(al5, bh8) | 0;
          mid = mid + Math.imul(ah5, bl8) | 0;
          hi = hi + Math.imul(ah5, bh8) | 0;
          lo = lo + Math.imul(al4, bl9) | 0;
          mid = mid + Math.imul(al4, bh9) | 0;
          mid = mid + Math.imul(ah4, bl9) | 0;
          hi = hi + Math.imul(ah4, bh9) | 0;
          var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
          w13 &= 67108863;
          lo = Math.imul(al9, bl5);
          mid = Math.imul(al9, bh5);
          mid = mid + Math.imul(ah9, bl5) | 0;
          hi = Math.imul(ah9, bh5);
          lo = lo + Math.imul(al8, bl6) | 0;
          mid = mid + Math.imul(al8, bh6) | 0;
          mid = mid + Math.imul(ah8, bl6) | 0;
          hi = hi + Math.imul(ah8, bh6) | 0;
          lo = lo + Math.imul(al7, bl7) | 0;
          mid = mid + Math.imul(al7, bh7) | 0;
          mid = mid + Math.imul(ah7, bl7) | 0;
          hi = hi + Math.imul(ah7, bh7) | 0;
          lo = lo + Math.imul(al6, bl8) | 0;
          mid = mid + Math.imul(al6, bh8) | 0;
          mid = mid + Math.imul(ah6, bl8) | 0;
          hi = hi + Math.imul(ah6, bh8) | 0;
          lo = lo + Math.imul(al5, bl9) | 0;
          mid = mid + Math.imul(al5, bh9) | 0;
          mid = mid + Math.imul(ah5, bl9) | 0;
          hi = hi + Math.imul(ah5, bh9) | 0;
          var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
          w14 &= 67108863;
          lo = Math.imul(al9, bl6);
          mid = Math.imul(al9, bh6);
          mid = mid + Math.imul(ah9, bl6) | 0;
          hi = Math.imul(ah9, bh6);
          lo = lo + Math.imul(al8, bl7) | 0;
          mid = mid + Math.imul(al8, bh7) | 0;
          mid = mid + Math.imul(ah8, bl7) | 0;
          hi = hi + Math.imul(ah8, bh7) | 0;
          lo = lo + Math.imul(al7, bl8) | 0;
          mid = mid + Math.imul(al7, bh8) | 0;
          mid = mid + Math.imul(ah7, bl8) | 0;
          hi = hi + Math.imul(ah7, bh8) | 0;
          lo = lo + Math.imul(al6, bl9) | 0;
          mid = mid + Math.imul(al6, bh9) | 0;
          mid = mid + Math.imul(ah6, bl9) | 0;
          hi = hi + Math.imul(ah6, bh9) | 0;
          var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
          w15 &= 67108863;
          lo = Math.imul(al9, bl7);
          mid = Math.imul(al9, bh7);
          mid = mid + Math.imul(ah9, bl7) | 0;
          hi = Math.imul(ah9, bh7);
          lo = lo + Math.imul(al8, bl8) | 0;
          mid = mid + Math.imul(al8, bh8) | 0;
          mid = mid + Math.imul(ah8, bl8) | 0;
          hi = hi + Math.imul(ah8, bh8) | 0;
          lo = lo + Math.imul(al7, bl9) | 0;
          mid = mid + Math.imul(al7, bh9) | 0;
          mid = mid + Math.imul(ah7, bl9) | 0;
          hi = hi + Math.imul(ah7, bh9) | 0;
          var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
          w16 &= 67108863;
          lo = Math.imul(al9, bl8);
          mid = Math.imul(al9, bh8);
          mid = mid + Math.imul(ah9, bl8) | 0;
          hi = Math.imul(ah9, bh8);
          lo = lo + Math.imul(al8, bl9) | 0;
          mid = mid + Math.imul(al8, bh9) | 0;
          mid = mid + Math.imul(ah8, bl9) | 0;
          hi = hi + Math.imul(ah8, bh9) | 0;
          var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
          w17 &= 67108863;
          lo = Math.imul(al9, bl9);
          mid = Math.imul(al9, bh9);
          mid = mid + Math.imul(ah9, bl9) | 0;
          hi = Math.imul(ah9, bh9);
          var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
          c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
          w18 &= 67108863;
          o[0] = w0;
          o[1] = w1;
          o[2] = w2;
          o[3] = w3;
          o[4] = w4;
          o[5] = w5;
          o[6] = w6;
          o[7] = w7;
          o[8] = w8;
          o[9] = w9;
          o[10] = w10;
          o[11] = w11;
          o[12] = w12;
          o[13] = w13;
          o[14] = w14;
          o[15] = w15;
          o[16] = w16;
          o[17] = w17;
          o[18] = w18;
          if (c !== 0) {
            o[19] = c;
            out.length++;
          }
          return out;
        };
        if (!Math.imul) {
          comb10MulTo = smallMulTo;
        }
        function bigMulTo(self, num, out) {
          out.negative = num.negative ^ self.negative;
          out.length = self.length + num.length;
          var carry = 0;
          var hncarry = 0;
          for (var k = 0; k < out.length - 1; k++) {
            var ncarry = hncarry;
            hncarry = 0;
            var rword = carry & 67108863;
            var maxJ = Math.min(k, num.length - 1);
            for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
              var i = k - j;
              var a = self.words[i] | 0;
              var b = num.words[j] | 0;
              var r = a * b;
              var lo = r & 67108863;
              ncarry = ncarry + (r / 67108864 | 0) | 0;
              lo = lo + rword | 0;
              rword = lo & 67108863;
              ncarry = ncarry + (lo >>> 26) | 0;
              hncarry += ncarry >>> 26;
              ncarry &= 67108863;
            }
            out.words[k] = rword;
            carry = ncarry;
            ncarry = hncarry;
          }
          if (carry !== 0) {
            out.words[k] = carry;
          } else {
            out.length--;
          }
          return out.strip();
        }
        function jumboMulTo(self, num, out) {
          var fftm = new FFTM;
          return fftm.mulp(self, num, out);
        }
        BN.prototype.mulTo = function mulTo(num, out) {
          var res;
          var len = this.length + num.length;
          if (this.length === 10 && num.length === 10) {
            res = comb10MulTo(this, num, out);
          } else if (len < 63) {
            res = smallMulTo(this, num, out);
          } else if (len < 1024) {
            res = bigMulTo(this, num, out);
          } else {
            res = jumboMulTo(this, num, out);
          }
          return res;
        };
        function FFTM(x, y) {
          this.x = x;
          this.y = y;
        }
        FFTM.prototype.makeRBT = function makeRBT(N) {
          var t = new Array(N);
          var l = BN.prototype._countBits(N) - 1;
          for (var i = 0; i < N; i++) {
            t[i] = this.revBin(i, l, N);
          }
          return t;
        };
        FFTM.prototype.revBin = function revBin(x, l, N) {
          if (x === 0 || x === N - 1) return x;
          var rb = 0;
          for (var i = 0; i < l; i++) {
            rb |= (x & 1) << l - i - 1;
            x >>= 1;
          }
          return rb;
        };
        FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
          for (var i = 0; i < N; i++) {
            rtws[i] = rws[rbt[i]];
            itws[i] = iws[rbt[i]];
          }
        };
        FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
          this.permute(rbt, rws, iws, rtws, itws, N);
          for (var s = 1; s < N; s <<= 1) {
            var l = s << 1;
            var rtwdf = Math.cos(2 * Math.PI / l);
            var itwdf = Math.sin(2 * Math.PI / l);
            for (var p = 0; p < N; p += l) {
              var rtwdf_ = rtwdf;
              var itwdf_ = itwdf;
              for (var j = 0; j < s; j++) {
                var re = rtws[p + j];
                var ie = itws[p + j];
                var ro = rtws[p + j + s];
                var io = itws[p + j + s];
                var rx = rtwdf_ * ro - itwdf_ * io;
                io = rtwdf_ * io + itwdf_ * ro;
                ro = rx;
                rtws[p + j] = re + ro;
                itws[p + j] = ie + io;
                rtws[p + j + s] = re - ro;
                itws[p + j + s] = ie - io;
                if (j !== l) {
                  rx = rtwdf * rtwdf_ - itwdf * itwdf_;
                  itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
                  rtwdf_ = rx;
                }
              }
            }
          }
        };
        FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
          var N = Math.max(m, n) | 1;
          var odd = N & 1;
          var i = 0;
          for (N = N / 2 | 0; N; N = N >>> 1) {
            i++;
          }
          return 1 << i + 1 + odd;
        };
        FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
          if (N <= 1) return;
          for (var i = 0; i < N / 2; i++) {
            var t = rws[i];
            rws[i] = rws[N - i - 1];
            rws[N - i - 1] = t;
            t = iws[i];
            iws[i] = -iws[N - i - 1];
            iws[N - i - 1] = -t;
          }
        };
        FFTM.prototype.normalize13b = function normalize13b(ws, N) {
          var carry = 0;
          for (var i = 0; i < N / 2; i++) {
            var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
            ws[i] = w & 67108863;
            if (w < 67108864) {
              carry = 0;
            } else {
              carry = w / 67108864 | 0;
            }
          }
          return ws;
        };
        FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
          var carry = 0;
          for (var i = 0; i < len; i++) {
            carry = carry + (ws[i] | 0);
            rws[2 * i] = carry & 8191;
            carry = carry >>> 13;
            rws[2 * i + 1] = carry & 8191;
            carry = carry >>> 13;
          }
          for (i = 2 * len; i < N; ++i) {
            rws[i] = 0;
          }
          assert(carry === 0);
          assert((carry & ~8191) === 0);
        };
        FFTM.prototype.stub = function stub(N) {
          var ph = new Array(N);
          for (var i = 0; i < N; i++) {
            ph[i] = 0;
          }
          return ph;
        };
        FFTM.prototype.mulp = function mulp(x, y, out) {
          var N = 2 * this.guessLen13b(x.length, y.length);
          var rbt = this.makeRBT(N);
          var _ = this.stub(N);
          var rws = new Array(N);
          var rwst = new Array(N);
          var iwst = new Array(N);
          var nrws = new Array(N);
          var nrwst = new Array(N);
          var niwst = new Array(N);
          var rmws = out.words;
          rmws.length = N;
          this.convert13b(x.words, x.length, rws, N);
          this.convert13b(y.words, y.length, nrws, N);
          this.transform(rws, _, rwst, iwst, N, rbt);
          this.transform(nrws, _, nrwst, niwst, N, rbt);
          for (var i = 0; i < N; i++) {
            var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
            iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
            rwst[i] = rx;
          }
          this.conjugate(rwst, iwst, N);
          this.transform(rwst, iwst, rmws, _, N, rbt);
          this.conjugate(rmws, _, N);
          this.normalize13b(rmws, N);
          out.negative = x.negative ^ y.negative;
          out.length = x.length + y.length;
          return out.strip();
        };
        BN.prototype.mul = function mul(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return this.mulTo(num, out);
        };
        BN.prototype.mulf = function mulf(num) {
          var out = new BN(null);
          out.words = new Array(this.length + num.length);
          return jumboMulTo(this, num, out);
        };
        BN.prototype.imul = function imul(num) {
          return this.clone().mulTo(num, this);
        };
        BN.prototype.imuln = function imuln(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          var carry = 0;
          for (var i = 0; i < this.length; i++) {
            var w = (this.words[i] | 0) * num;
            var lo = (w & 67108863) + (carry & 67108863);
            carry >>= 26;
            carry += w / 67108864 | 0;
            carry += lo >>> 26;
            this.words[i] = lo & 67108863;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          this.length = num === 0 ? 1 : this.length;
          return this;
        };
        BN.prototype.muln = function muln(num) {
          return this.clone().imuln(num);
        };
        BN.prototype.sqr = function sqr() {
          return this.mul(this);
        };
        BN.prototype.isqr = function isqr() {
          return this.imul(this.clone());
        };
        BN.prototype.pow = function pow(num) {
          var w = toBitArray(num);
          if (w.length === 0) return new BN(1);
          var res = this;
          for (var i = 0; i < w.length; i++, res = res.sqr()) {
            if (w[i] !== 0) break;
          }
          if (++i < w.length) {
            for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
              if (w[i] === 0) continue;
              res = res.mul(q);
            }
          }
          return res;
        };
        BN.prototype.iushln = function iushln(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          var carryMask = 67108863 >>> 26 - r << 26 - r;
          var i;
          if (r !== 0) {
            var carry = 0;
            for (i = 0; i < this.length; i++) {
              var newCarry = this.words[i] & carryMask;
              var c = (this.words[i] | 0) - newCarry << r;
              this.words[i] = c | carry;
              carry = newCarry >>> 26 - r;
            }
            if (carry) {
              this.words[i] = carry;
              this.length++;
            }
          }
          if (s !== 0) {
            for (i = this.length - 1; i >= 0; i--) {
              this.words[i + s] = this.words[i];
            }
            for (i = 0; i < s; i++) {
              this.words[i] = 0;
            }
            this.length += s;
          }
          return this.strip();
        };
        BN.prototype.ishln = function ishln(bits) {
          assert(this.negative === 0);
          return this.iushln(bits);
        };
        BN.prototype.iushrn = function iushrn(bits, hint, extended) {
          assert(typeof bits === "number" && bits >= 0);
          var h;
          if (hint) {
            h = (hint - hint % 26) / 26;
          } else {
            h = 0;
          }
          var r = bits % 26;
          var s = Math.min((bits - r) / 26, this.length);
          var mask = 67108863 ^ 67108863 >>> r << r;
          var maskedWords = extended;
          h -= s;
          h = Math.max(0, h);
          if (maskedWords) {
            for (var i = 0; i < s; i++) {
              maskedWords.words[i] = this.words[i];
            }
            maskedWords.length = s;
          }
          if (s === 0) {} else if (this.length > s) {
            this.length -= s;
            for (i = 0; i < this.length; i++) {
              this.words[i] = this.words[i + s];
            }
          } else {
            this.words[0] = 0;
            this.length = 1;
          }
          var carry = 0;
          for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
            var word = this.words[i] | 0;
            this.words[i] = carry << 26 - r | word >>> r;
            carry = word & mask;
          }
          if (maskedWords && carry !== 0) {
            maskedWords.words[maskedWords.length++] = carry;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.ishrn = function ishrn(bits, hint, extended) {
          assert(this.negative === 0);
          return this.iushrn(bits, hint, extended);
        };
        BN.prototype.shln = function shln(bits) {
          return this.clone().ishln(bits);
        };
        BN.prototype.ushln = function ushln(bits) {
          return this.clone().iushln(bits);
        };
        BN.prototype.shrn = function shrn(bits) {
          return this.clone().ishrn(bits);
        };
        BN.prototype.ushrn = function ushrn(bits) {
          return this.clone().iushrn(bits);
        };
        BN.prototype.testn = function testn(bit) {
          assert(typeof bit === "number" && bit >= 0);
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) return false;
          var w = this.words[s];
          return !!(w & q);
        };
        BN.prototype.imaskn = function imaskn(bits) {
          assert(typeof bits === "number" && bits >= 0);
          var r = bits % 26;
          var s = (bits - r) / 26;
          assert(this.negative === 0, "imaskn works only with positive numbers");
          if (this.length <= s) {
            return this;
          }
          if (r !== 0) {
            s++;
          }
          this.length = Math.min(s, this.length);
          if (r !== 0) {
            var mask = 67108863 ^ 67108863 >>> r << r;
            this.words[this.length - 1] &= mask;
          }
          if (this.length === 0) {
            this.words[0] = 0;
            this.length = 1;
          }
          return this.strip();
        };
        BN.prototype.maskn = function maskn(bits) {
          return this.clone().imaskn(bits);
        };
        BN.prototype.iaddn = function iaddn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.isubn(-num);
          if (this.negative !== 0) {
            if (this.length === 1 && (this.words[0] | 0) < num) {
              this.words[0] = num - (this.words[0] | 0);
              this.negative = 0;
              return this;
            }
            this.negative = 0;
            this.isubn(num);
            this.negative = 1;
            return this;
          }
          return this._iaddn(num);
        };
        BN.prototype._iaddn = function _iaddn(num) {
          this.words[0] += num;
          for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
            this.words[i] -= 67108864;
            if (i === this.length - 1) {
              this.words[i + 1] = 1;
            } else {
              this.words[i + 1]++;
            }
          }
          this.length = Math.max(this.length, i + 1);
          return this;
        };
        BN.prototype.isubn = function isubn(num) {
          assert(typeof num === "number");
          assert(num < 67108864);
          if (num < 0) return this.iaddn(-num);
          if (this.negative !== 0) {
            this.negative = 0;
            this.iaddn(num);
            this.negative = 1;
            return this;
          }
          this.words[0] -= num;
          if (this.length === 1 && this.words[0] < 0) {
            this.words[0] = -this.words[0];
            this.negative = 1;
          } else {
            for (var i = 0; i < this.length && this.words[i] < 0; i++) {
              this.words[i] += 67108864;
              this.words[i + 1] -= 1;
            }
          }
          return this.strip();
        };
        BN.prototype.addn = function addn(num) {
          return this.clone().iaddn(num);
        };
        BN.prototype.subn = function subn(num) {
          return this.clone().isubn(num);
        };
        BN.prototype.iabs = function iabs() {
          this.negative = 0;
          return this;
        };
        BN.prototype.abs = function abs() {
          return this.clone().iabs();
        };
        BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
          var len = num.length + shift;
          var i;
          this._expand(len);
          var w;
          var carry = 0;
          for (i = 0; i < num.length; i++) {
            w = (this.words[i + shift] | 0) + carry;
            var right = (num.words[i] | 0) * mul;
            w -= right & 67108863;
            carry = (w >> 26) - (right / 67108864 | 0);
            this.words[i + shift] = w & 67108863;
          }
          for (;i < this.length - shift; i++) {
            w = (this.words[i + shift] | 0) + carry;
            carry = w >> 26;
            this.words[i + shift] = w & 67108863;
          }
          if (carry === 0) return this.strip();
          assert(carry === -1);
          carry = 0;
          for (i = 0; i < this.length; i++) {
            w = -(this.words[i] | 0) + carry;
            carry = w >> 26;
            this.words[i] = w & 67108863;
          }
          this.negative = 1;
          return this.strip();
        };
        BN.prototype._wordDiv = function _wordDiv(num, mode) {
          var shift = this.length - num.length;
          var a = this.clone();
          var b = num;
          var bhi = b.words[b.length - 1] | 0;
          var bhiBits = this._countBits(bhi);
          shift = 26 - bhiBits;
          if (shift !== 0) {
            b = b.ushln(shift);
            a.iushln(shift);
            bhi = b.words[b.length - 1] | 0;
          }
          var m = a.length - b.length;
          var q;
          if (mode !== "mod") {
            q = new BN(null);
            q.length = m + 1;
            q.words = new Array(q.length);
            for (var i = 0; i < q.length; i++) {
              q.words[i] = 0;
            }
          }
          var diff = a.clone()._ishlnsubmul(b, 1, m);
          if (diff.negative === 0) {
            a = diff;
            if (q) {
              q.words[m] = 1;
            }
          }
          for (var j = m - 1; j >= 0; j--) {
            var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
            qj = Math.min(qj / bhi | 0, 67108863);
            a._ishlnsubmul(b, qj, j);
            while (a.negative !== 0) {
              qj--;
              a.negative = 0;
              a._ishlnsubmul(b, 1, j);
              if (!a.isZero()) {
                a.negative ^= 1;
              }
            }
            if (q) {
              q.words[j] = qj;
            }
          }
          if (q) {
            q.strip();
          }
          a.strip();
          if (mode !== "div" && shift !== 0) {
            a.iushrn(shift);
          }
          return {
            div: q || null,
            mod: a
          };
        };
        BN.prototype.divmod = function divmod(num, mode, positive) {
          assert(!num.isZero());
          if (this.isZero()) {
            return {
              div: new BN(0),
              mod: new BN(0)
            };
          }
          var div, mod, res;
          if (this.negative !== 0 && num.negative === 0) {
            res = this.neg().divmod(num, mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.iadd(num);
              }
            }
            return {
              div,
              mod
            };
          }
          if (this.negative === 0 && num.negative !== 0) {
            res = this.divmod(num.neg(), mode);
            if (mode !== "mod") {
              div = res.div.neg();
            }
            return {
              div,
              mod: res.mod
            };
          }
          if ((this.negative & num.negative) !== 0) {
            res = this.neg().divmod(num.neg(), mode);
            if (mode !== "div") {
              mod = res.mod.neg();
              if (positive && mod.negative !== 0) {
                mod.isub(num);
              }
            }
            return {
              div: res.div,
              mod
            };
          }
          if (num.length > this.length || this.cmp(num) < 0) {
            return {
              div: new BN(0),
              mod: this
            };
          }
          if (num.length === 1) {
            if (mode === "div") {
              return {
                div: this.divn(num.words[0]),
                mod: null
              };
            }
            if (mode === "mod") {
              return {
                div: null,
                mod: new BN(this.modn(num.words[0]))
              };
            }
            return {
              div: this.divn(num.words[0]),
              mod: new BN(this.modn(num.words[0]))
            };
          }
          return this._wordDiv(num, mode);
        };
        BN.prototype.div = function div(num) {
          return this.divmod(num, "div", false).div;
        };
        BN.prototype.mod = function mod(num) {
          return this.divmod(num, "mod", false).mod;
        };
        BN.prototype.umod = function umod(num) {
          return this.divmod(num, "mod", true).mod;
        };
        BN.prototype.divRound = function divRound(num) {
          var dm = this.divmod(num);
          if (dm.mod.isZero()) return dm.div;
          var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
          var half = num.ushrn(1);
          var r2 = num.andln(1);
          var cmp = mod.cmp(half);
          if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
          return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
        };
        BN.prototype.modn = function modn(num) {
          assert(num <= 67108863);
          var p = (1 << 26) % num;
          var acc = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            acc = (p * acc + (this.words[i] | 0)) % num;
          }
          return acc;
        };
        BN.prototype.idivn = function idivn(num) {
          assert(num <= 67108863);
          var carry = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var w = (this.words[i] | 0) + carry * 67108864;
            this.words[i] = w / num | 0;
            carry = w % num;
          }
          return this.strip();
        };
        BN.prototype.divn = function divn(num) {
          return this.clone().idivn(num);
        };
        BN.prototype.egcd = function egcd(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var x = this;
          var y = p.clone();
          if (x.negative !== 0) {
            x = x.umod(p);
          } else {
            x = x.clone();
          }
          var A = new BN(1);
          var B = new BN(0);
          var C = new BN(0);
          var D = new BN(1);
          var g = 0;
          while (x.isEven() && y.isEven()) {
            x.iushrn(1);
            y.iushrn(1);
            ++g;
          }
          var yp = y.clone();
          var xp = x.clone();
          while (!x.isZero()) {
            for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              x.iushrn(i);
              while (i-- > 0) {
                if (A.isOdd() || B.isOdd()) {
                  A.iadd(yp);
                  B.isub(xp);
                }
                A.iushrn(1);
                B.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              y.iushrn(j);
              while (j-- > 0) {
                if (C.isOdd() || D.isOdd()) {
                  C.iadd(yp);
                  D.isub(xp);
                }
                C.iushrn(1);
                D.iushrn(1);
              }
            }
            if (x.cmp(y) >= 0) {
              x.isub(y);
              A.isub(C);
              B.isub(D);
            } else {
              y.isub(x);
              C.isub(A);
              D.isub(B);
            }
          }
          return {
            a: C,
            b: D,
            gcd: y.iushln(g)
          };
        };
        BN.prototype._invmp = function _invmp(p) {
          assert(p.negative === 0);
          assert(!p.isZero());
          var a = this;
          var b = p.clone();
          if (a.negative !== 0) {
            a = a.umod(p);
          } else {
            a = a.clone();
          }
          var x1 = new BN(1);
          var x2 = new BN(0);
          var delta = b.clone();
          while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
            for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ;
            if (i > 0) {
              a.iushrn(i);
              while (i-- > 0) {
                if (x1.isOdd()) {
                  x1.iadd(delta);
                }
                x1.iushrn(1);
              }
            }
            for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ;
            if (j > 0) {
              b.iushrn(j);
              while (j-- > 0) {
                if (x2.isOdd()) {
                  x2.iadd(delta);
                }
                x2.iushrn(1);
              }
            }
            if (a.cmp(b) >= 0) {
              a.isub(b);
              x1.isub(x2);
            } else {
              b.isub(a);
              x2.isub(x1);
            }
          }
          var res;
          if (a.cmpn(1) === 0) {
            res = x1;
          } else {
            res = x2;
          }
          if (res.cmpn(0) < 0) {
            res.iadd(p);
          }
          return res;
        };
        BN.prototype.gcd = function gcd(num) {
          if (this.isZero()) return num.abs();
          if (num.isZero()) return this.abs();
          var a = this.clone();
          var b = num.clone();
          a.negative = 0;
          b.negative = 0;
          for (var shift = 0; a.isEven() && b.isEven(); shift++) {
            a.iushrn(1);
            b.iushrn(1);
          }
          do {
            while (a.isEven()) {
              a.iushrn(1);
            }
            while (b.isEven()) {
              b.iushrn(1);
            }
            var r = a.cmp(b);
            if (r < 0) {
              var t = a;
              a = b;
              b = t;
            } else if (r === 0 || b.cmpn(1) === 0) {
              break;
            }
            a.isub(b);
          } while (true);
          return b.iushln(shift);
        };
        BN.prototype.invm = function invm(num) {
          return this.egcd(num).a.umod(num);
        };
        BN.prototype.isEven = function isEven() {
          return (this.words[0] & 1) === 0;
        };
        BN.prototype.isOdd = function isOdd() {
          return (this.words[0] & 1) === 1;
        };
        BN.prototype.andln = function andln(num) {
          return this.words[0] & num;
        };
        BN.prototype.bincn = function bincn(bit) {
          assert(typeof bit === "number");
          var r = bit % 26;
          var s = (bit - r) / 26;
          var q = 1 << r;
          if (this.length <= s) {
            this._expand(s + 1);
            this.words[s] |= q;
            return this;
          }
          var carry = q;
          for (var i = s; carry !== 0 && i < this.length; i++) {
            var w = this.words[i] | 0;
            w += carry;
            carry = w >>> 26;
            w &= 67108863;
            this.words[i] = w;
          }
          if (carry !== 0) {
            this.words[i] = carry;
            this.length++;
          }
          return this;
        };
        BN.prototype.isZero = function isZero() {
          return this.length === 1 && this.words[0] === 0;
        };
        BN.prototype.cmpn = function cmpn(num) {
          var negative = num < 0;
          if (this.negative !== 0 && !negative) return -1;
          if (this.negative === 0 && negative) return 1;
          this.strip();
          var res;
          if (this.length > 1) {
            res = 1;
          } else {
            if (negative) {
              num = -num;
            }
            assert(num <= 67108863, "Number is too big");
            var w = this.words[0] | 0;
            res = w === num ? 0 : w < num ? -1 : 1;
          }
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.cmp = function cmp(num) {
          if (this.negative !== 0 && num.negative === 0) return -1;
          if (this.negative === 0 && num.negative !== 0) return 1;
          var res = this.ucmp(num);
          if (this.negative !== 0) return -res | 0;
          return res;
        };
        BN.prototype.ucmp = function ucmp(num) {
          if (this.length > num.length) return 1;
          if (this.length < num.length) return -1;
          var res = 0;
          for (var i = this.length - 1; i >= 0; i--) {
            var a = this.words[i] | 0;
            var b = num.words[i] | 0;
            if (a === b) continue;
            if (a < b) {
              res = -1;
            } else if (a > b) {
              res = 1;
            }
            break;
          }
          return res;
        };
        BN.prototype.gtn = function gtn(num) {
          return this.cmpn(num) === 1;
        };
        BN.prototype.gt = function gt(num) {
          return this.cmp(num) === 1;
        };
        BN.prototype.gten = function gten(num) {
          return this.cmpn(num) >= 0;
        };
        BN.prototype.gte = function gte(num) {
          return this.cmp(num) >= 0;
        };
        BN.prototype.ltn = function ltn(num) {
          return this.cmpn(num) === -1;
        };
        BN.prototype.lt = function lt(num) {
          return this.cmp(num) === -1;
        };
        BN.prototype.lten = function lten(num) {
          return this.cmpn(num) <= 0;
        };
        BN.prototype.lte = function lte(num) {
          return this.cmp(num) <= 0;
        };
        BN.prototype.eqn = function eqn(num) {
          return this.cmpn(num) === 0;
        };
        BN.prototype.eq = function eq(num) {
          return this.cmp(num) === 0;
        };
        BN.red = function red(num) {
          return new Red(num);
        };
        BN.prototype.toRed = function toRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          assert(this.negative === 0, "red works only with positives");
          return ctx.convertTo(this)._forceRed(ctx);
        };
        BN.prototype.fromRed = function fromRed() {
          assert(this.red, "fromRed works only with numbers in reduction context");
          return this.red.convertFrom(this);
        };
        BN.prototype._forceRed = function _forceRed(ctx) {
          this.red = ctx;
          return this;
        };
        BN.prototype.forceRed = function forceRed(ctx) {
          assert(!this.red, "Already a number in reduction context");
          return this._forceRed(ctx);
        };
        BN.prototype.redAdd = function redAdd(num) {
          assert(this.red, "redAdd works only with red numbers");
          return this.red.add(this, num);
        };
        BN.prototype.redIAdd = function redIAdd(num) {
          assert(this.red, "redIAdd works only with red numbers");
          return this.red.iadd(this, num);
        };
        BN.prototype.redSub = function redSub(num) {
          assert(this.red, "redSub works only with red numbers");
          return this.red.sub(this, num);
        };
        BN.prototype.redISub = function redISub(num) {
          assert(this.red, "redISub works only with red numbers");
          return this.red.isub(this, num);
        };
        BN.prototype.redShl = function redShl(num) {
          assert(this.red, "redShl works only with red numbers");
          return this.red.shl(this, num);
        };
        BN.prototype.redMul = function redMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.mul(this, num);
        };
        BN.prototype.redIMul = function redIMul(num) {
          assert(this.red, "redMul works only with red numbers");
          this.red._verify2(this, num);
          return this.red.imul(this, num);
        };
        BN.prototype.redSqr = function redSqr() {
          assert(this.red, "redSqr works only with red numbers");
          this.red._verify1(this);
          return this.red.sqr(this);
        };
        BN.prototype.redISqr = function redISqr() {
          assert(this.red, "redISqr works only with red numbers");
          this.red._verify1(this);
          return this.red.isqr(this);
        };
        BN.prototype.redSqrt = function redSqrt() {
          assert(this.red, "redSqrt works only with red numbers");
          this.red._verify1(this);
          return this.red.sqrt(this);
        };
        BN.prototype.redInvm = function redInvm() {
          assert(this.red, "redInvm works only with red numbers");
          this.red._verify1(this);
          return this.red.invm(this);
        };
        BN.prototype.redNeg = function redNeg() {
          assert(this.red, "redNeg works only with red numbers");
          this.red._verify1(this);
          return this.red.neg(this);
        };
        BN.prototype.redPow = function redPow(num) {
          assert(this.red && !num.red, "redPow(normalNum)");
          this.red._verify1(this);
          return this.red.pow(this, num);
        };
        var primes = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
        };
        function MPrime(name, p) {
          this.name = name;
          this.p = new BN(p, 16);
          this.n = this.p.bitLength();
          this.k = new BN(1).iushln(this.n).isub(this.p);
          this.tmp = this._tmp();
        }
        MPrime.prototype._tmp = function _tmp() {
          var tmp = new BN(null);
          tmp.words = new Array(Math.ceil(this.n / 13));
          return tmp;
        };
        MPrime.prototype.ireduce = function ireduce(num) {
          var r = num;
          var rlen;
          do {
            this.split(r, this.tmp);
            r = this.imulK(r);
            r = r.iadd(this.tmp);
            rlen = r.bitLength();
          } while (rlen > this.n);
          var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
          if (cmp === 0) {
            r.words[0] = 0;
            r.length = 1;
          } else if (cmp > 0) {
            r.isub(this.p);
          } else {
            if (r.strip !== undefined) {
              r.strip();
            } else {
              r._strip();
            }
          }
          return r;
        };
        MPrime.prototype.split = function split(input, out) {
          input.iushrn(this.n, 0, out);
        };
        MPrime.prototype.imulK = function imulK(num) {
          return num.imul(this.k);
        };
        function K256() {
          MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
        }
        inherits(K256, MPrime);
        K256.prototype.split = function split(input, output) {
          var mask = 4194303;
          var outLen = Math.min(input.length, 9);
          for (var i = 0; i < outLen; i++) {
            output.words[i] = input.words[i];
          }
          output.length = outLen;
          if (input.length <= 9) {
            input.words[0] = 0;
            input.length = 1;
            return;
          }
          var prev = input.words[9];
          output.words[output.length++] = prev & mask;
          for (i = 10; i < input.length; i++) {
            var next = input.words[i] | 0;
            input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
            prev = next;
          }
          prev >>>= 22;
          input.words[i - 10] = prev;
          if (prev === 0 && input.length > 10) {
            input.length -= 10;
          } else {
            input.length -= 9;
          }
        };
        K256.prototype.imulK = function imulK(num) {
          num.words[num.length] = 0;
          num.words[num.length + 1] = 0;
          num.length += 2;
          var lo = 0;
          for (var i = 0; i < num.length; i++) {
            var w = num.words[i] | 0;
            lo += w * 977;
            num.words[i] = lo & 67108863;
            lo = w * 64 + (lo / 67108864 | 0);
          }
          if (num.words[num.length - 1] === 0) {
            num.length--;
            if (num.words[num.length - 1] === 0) {
              num.length--;
            }
          }
          return num;
        };
        function P224() {
          MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
        }
        inherits(P224, MPrime);
        function P192() {
          MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
        }
        inherits(P192, MPrime);
        function P25519() {
          MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
        }
        inherits(P25519, MPrime);
        P25519.prototype.imulK = function imulK(num) {
          var carry = 0;
          for (var i = 0; i < num.length; i++) {
            var hi = (num.words[i] | 0) * 19 + carry;
            var lo = hi & 67108863;
            hi >>>= 26;
            num.words[i] = lo;
            carry = hi;
          }
          if (carry !== 0) {
            num.words[num.length++] = carry;
          }
          return num;
        };
        BN._prime = function prime(name) {
          if (primes[name]) return primes[name];
          var prime;
          if (name === "k256") {
            prime = new K256;
          } else if (name === "p224") {
            prime = new P224;
          } else if (name === "p192") {
            prime = new P192;
          } else if (name === "p25519") {
            prime = new P25519;
          } else {
            throw new Error("Unknown prime " + name);
          }
          primes[name] = prime;
          return prime;
        };
        function Red(m) {
          if (typeof m === "string") {
            var prime = BN._prime(m);
            this.m = prime.p;
            this.prime = prime;
          } else {
            assert(m.gtn(1), "modulus must be greater than 1");
            this.m = m;
            this.prime = null;
          }
        }
        Red.prototype._verify1 = function _verify1(a) {
          assert(a.negative === 0, "red works only with positives");
          assert(a.red, "red works only with red numbers");
        };
        Red.prototype._verify2 = function _verify2(a, b) {
          assert((a.negative | b.negative) === 0, "red works only with positives");
          assert(a.red && a.red === b.red, "red works only with red numbers");
        };
        Red.prototype.imod = function imod(a) {
          if (this.prime) return this.prime.ireduce(a)._forceRed(this);
          return a.umod(this.m)._forceRed(this);
        };
        Red.prototype.neg = function neg(a) {
          if (a.isZero()) {
            return a.clone();
          }
          return this.m.sub(a)._forceRed(this);
        };
        Red.prototype.add = function add(a, b) {
          this._verify2(a, b);
          var res = a.add(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.iadd = function iadd(a, b) {
          this._verify2(a, b);
          var res = a.iadd(b);
          if (res.cmp(this.m) >= 0) {
            res.isub(this.m);
          }
          return res;
        };
        Red.prototype.sub = function sub(a, b) {
          this._verify2(a, b);
          var res = a.sub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Red.prototype.isub = function isub(a, b) {
          this._verify2(a, b);
          var res = a.isub(b);
          if (res.cmpn(0) < 0) {
            res.iadd(this.m);
          }
          return res;
        };
        Red.prototype.shl = function shl(a, num) {
          this._verify1(a);
          return this.imod(a.ushln(num));
        };
        Red.prototype.imul = function imul(a, b) {
          this._verify2(a, b);
          return this.imod(a.imul(b));
        };
        Red.prototype.mul = function mul(a, b) {
          this._verify2(a, b);
          return this.imod(a.mul(b));
        };
        Red.prototype.isqr = function isqr(a) {
          return this.imul(a, a.clone());
        };
        Red.prototype.sqr = function sqr(a) {
          return this.mul(a, a);
        };
        Red.prototype.sqrt = function sqrt(a) {
          if (a.isZero()) return a.clone();
          var mod3 = this.m.andln(3);
          assert(mod3 % 2 === 1);
          if (mod3 === 3) {
            var pow = this.m.add(new BN(1)).iushrn(2);
            return this.pow(a, pow);
          }
          var q = this.m.subn(1);
          var s = 0;
          while (!q.isZero() && q.andln(1) === 0) {
            s++;
            q.iushrn(1);
          }
          assert(!q.isZero());
          var one = new BN(1).toRed(this);
          var nOne = one.redNeg();
          var lpow = this.m.subn(1).iushrn(1);
          var z = this.m.bitLength();
          z = new BN(2 * z * z).toRed(this);
          while (this.pow(z, lpow).cmp(nOne) !== 0) {
            z.redIAdd(nOne);
          }
          var c = this.pow(z, q);
          var r = this.pow(a, q.addn(1).iushrn(1));
          var t = this.pow(a, q);
          var m = s;
          while (t.cmp(one) !== 0) {
            var tmp = t;
            for (var i = 0; tmp.cmp(one) !== 0; i++) {
              tmp = tmp.redSqr();
            }
            assert(i < m);
            var b = this.pow(c, new BN(1).iushln(m - i - 1));
            r = r.redMul(b);
            c = b.redSqr();
            t = t.redMul(c);
            m = i;
          }
          return r;
        };
        Red.prototype.invm = function invm(a) {
          var inv = a._invmp(this.m);
          if (inv.negative !== 0) {
            inv.negative = 0;
            return this.imod(inv).redNeg();
          } else {
            return this.imod(inv);
          }
        };
        Red.prototype.pow = function pow(a, num) {
          if (num.isZero()) return new BN(1).toRed(this);
          if (num.cmpn(1) === 0) return a.clone();
          var windowSize = 4;
          var wnd = new Array(1 << windowSize);
          wnd[0] = new BN(1).toRed(this);
          wnd[1] = a;
          for (var i = 2; i < wnd.length; i++) {
            wnd[i] = this.mul(wnd[i - 1], a);
          }
          var res = wnd[0];
          var current = 0;
          var currentLen = 0;
          var start = num.bitLength() % 26;
          if (start === 0) {
            start = 26;
          }
          for (i = num.length - 1; i >= 0; i--) {
            var word = num.words[i];
            for (var j = start - 1; j >= 0; j--) {
              var bit = word >> j & 1;
              if (res !== wnd[0]) {
                res = this.sqr(res);
              }
              if (bit === 0 && current === 0) {
                currentLen = 0;
                continue;
              }
              current <<= 1;
              current |= bit;
              currentLen++;
              if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
              res = this.mul(res, wnd[current]);
              currentLen = 0;
              current = 0;
            }
            start = 26;
          }
          return res;
        };
        Red.prototype.convertTo = function convertTo(num) {
          var r = num.umod(this.m);
          return r === num ? r.clone() : r;
        };
        Red.prototype.convertFrom = function convertFrom(num) {
          var res = num.clone();
          res.red = null;
          return res;
        };
        BN.mont = function mont(num) {
          return new Mont(num);
        };
        function Mont(m) {
          Red.call(this, m);
          this.shift = this.m.bitLength();
          if (this.shift % 26 !== 0) {
            this.shift += 26 - this.shift % 26;
          }
          this.r = new BN(1).iushln(this.shift);
          this.r2 = this.imod(this.r.sqr());
          this.rinv = this.r._invmp(this.m);
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
          this.minv = this.minv.umod(this.r);
          this.minv = this.r.sub(this.minv);
        }
        inherits(Mont, Red);
        Mont.prototype.convertTo = function convertTo(num) {
          return this.imod(num.ushln(this.shift));
        };
        Mont.prototype.convertFrom = function convertFrom(num) {
          var r = this.imod(num.mul(this.rinv));
          r.red = null;
          return r;
        };
        Mont.prototype.imul = function imul(a, b) {
          if (a.isZero() || b.isZero()) {
            a.words[0] = 0;
            a.length = 1;
            return a;
          }
          var t = a.imul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.mul = function mul(a, b) {
          if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
          var t = a.mul(b);
          var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
          var u = t.isub(c).iushrn(this.shift);
          var res = u;
          if (u.cmp(this.m) >= 0) {
            res = u.isub(this.m);
          } else if (u.cmpn(0) < 0) {
            res = u.iadd(this.m);
          }
          return res._forceRed(this);
        };
        Mont.prototype.invm = function invm(a) {
          var res = this.imod(a._invmp(this.m).mul(this.r2));
          return res._forceRed(this);
        };
      })(false || module, this);
    },
    7362(module, __unused_webpack_exports, __webpack_require__) {
      var parseKeys = __webpack_require__(8170);
      var mgf = __webpack_require__(8206);
      var xor = __webpack_require__(2061);
      var BN = __webpack_require__(4890);
      var crt = __webpack_require__(7332);
      var createHash = __webpack_require__(7108);
      var withPublic = __webpack_require__(9247);
      var Buffer = __webpack_require__(2861).Buffer;
      module.exports = function privateDecrypt(privateKey, enc, reverse) {
        var padding;
        if (privateKey.padding) {
          padding = privateKey.padding;
        } else if (reverse) {
          padding = 1;
        } else {
          padding = 4;
        }
        var key = parseKeys(privateKey);
        var k = key.modulus.byteLength();
        if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {
          throw new Error("decryption error");
        }
        var msg;
        if (reverse) {
          msg = withPublic(new BN(enc), key);
        } else {
          msg = crt(enc, key);
        }
        var zBuffer = Buffer.alloc(k - msg.length);
        msg = Buffer.concat([ zBuffer, msg ], k);
        if (padding === 4) {
          return oaep(key, msg);
        } else if (padding === 1) {
          return pkcs1(key, msg, reverse);
        } else if (padding === 3) {
          return msg;
        } else {
          throw new Error("unknown padding");
        }
      };
      function oaep(key, msg) {
        var k = key.modulus.byteLength();
        var iHash = createHash("sha1").update(Buffer.alloc(0)).digest();
        var hLen = iHash.length;
        if (msg[0] !== 0) {
          throw new Error("decryption error");
        }
        var maskedSeed = msg.slice(1, hLen + 1);
        var maskedDb = msg.slice(hLen + 1);
        var seed = xor(maskedSeed, mgf(maskedDb, hLen));
        var db = xor(maskedDb, mgf(seed, k - hLen - 1));
        if (compare(iHash, db.slice(0, hLen))) {
          throw new Error("decryption error");
        }
        var i = hLen;
        while (db[i] === 0) {
          i++;
        }
        if (db[i++] !== 1) {
          throw new Error("decryption error");
        }
        return db.slice(i);
      }
      function pkcs1(key, msg, reverse) {
        var p1 = msg.slice(0, 2);
        var i = 2;
        var status = 0;
        while (msg[i++] !== 0) {
          if (i >= msg.length) {
            status++;
            break;
          }
        }
        var ps = msg.slice(2, i - 1);
        if (p1.toString("hex") !== "0002" && !reverse || p1.toString("hex") !== "0001" && reverse) {
          status++;
        }
        if (ps.length < 8) {
          status++;
        }
        if (status) {
          throw new Error("decryption error");
        }
        return msg.slice(i);
      }
      function compare(a, b) {
        a = Buffer.from(a);
        b = Buffer.from(b);
        var dif = 0;
        var len = a.length;
        if (a.length !== b.length) {
          dif++;
          len = Math.min(a.length, b.length);
        }
        var i = -1;
        while (++i < len) {
          dif += a[i] ^ b[i];
        }
        return dif;
      }
    },
    8902(module, __unused_webpack_exports, __webpack_require__) {
      var parseKeys = __webpack_require__(8170);
      var randomBytes = __webpack_require__(3209);
      var createHash = __webpack_require__(7108);
      var mgf = __webpack_require__(8206);
      var xor = __webpack_require__(2061);
      var BN = __webpack_require__(4890);
      var withPublic = __webpack_require__(9247);
      var crt = __webpack_require__(7332);
      var Buffer = __webpack_require__(2861).Buffer;
      module.exports = function publicEncrypt(publicKey, msg, reverse) {
        var padding;
        if (publicKey.padding) {
          padding = publicKey.padding;
        } else if (reverse) {
          padding = 1;
        } else {
          padding = 4;
        }
        var key = parseKeys(publicKey);
        var paddedMsg;
        if (padding === 4) {
          paddedMsg = oaep(key, msg);
        } else if (padding === 1) {
          paddedMsg = pkcs1(key, msg, reverse);
        } else if (padding === 3) {
          paddedMsg = new BN(msg);
          if (paddedMsg.cmp(key.modulus) >= 0) {
            throw new Error("data too long for modulus");
          }
        } else {
          throw new Error("unknown padding");
        }
        if (reverse) {
          return crt(paddedMsg, key);
        } else {
          return withPublic(paddedMsg, key);
        }
      };
      function oaep(key, msg) {
        var k = key.modulus.byteLength();
        var mLen = msg.length;
        var iHash = createHash("sha1").update(Buffer.alloc(0)).digest();
        var hLen = iHash.length;
        var hLen2 = 2 * hLen;
        if (mLen > k - hLen2 - 2) {
          throw new Error("message too long");
        }
        var ps = Buffer.alloc(k - mLen - hLen2 - 2);
        var dblen = k - hLen - 1;
        var seed = randomBytes(hLen);
        var maskedDb = xor(Buffer.concat([ iHash, ps, Buffer.alloc(1, 1), msg ], dblen), mgf(seed, dblen));
        var maskedSeed = xor(seed, mgf(maskedDb, hLen));
        return new BN(Buffer.concat([ Buffer.alloc(1), maskedSeed, maskedDb ], k));
      }
      function pkcs1(key, msg, reverse) {
        var mLen = msg.length;
        var k = key.modulus.byteLength();
        if (mLen > k - 11) {
          throw new Error("message too long");
        }
        var ps;
        if (reverse) {
          ps = Buffer.alloc(k - mLen - 3, 255);
        } else {
          ps = nonZero(k - mLen - 3);
        }
        return new BN(Buffer.concat([ Buffer.from([ 0, reverse ? 1 : 2 ]), ps, Buffer.alloc(1), msg ], k));
      }
      function nonZero(len) {
        var out = Buffer.allocUnsafe(len);
        var i = 0;
        var cache = randomBytes(len * 2);
        var cur = 0;
        var num;
        while (i < len) {
          if (cur === cache.length) {
            cache = randomBytes(len * 2);
            cur = 0;
          }
          num = cache[cur++];
          if (num) {
            out[i++] = num;
          }
        }
        return out;
      }
    },
    9247(module, __unused_webpack_exports, __webpack_require__) {
      var BN = __webpack_require__(4890);
      var Buffer = __webpack_require__(2861).Buffer;
      function withPublic(paddedMsg, key) {
        return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());
      }
      module.exports = withPublic;
    },
    2061(module) {
      module.exports = function xor(a, b) {
        var len = a.length;
        var i = -1;
        while (++i < len) {
          a[i] ^= b[i];
        }
        return a;
      };
    },
    5409(module, __unused_webpack_exports, __webpack_require__) {
      var mode = __webpack_require__(9852);
      function QR8bitByte(data) {
        this.mode = mode.MODE_8BIT_BYTE;
        this.data = data;
      }
      QR8bitByte.prototype = {
        getLength: function(buffer) {
          return this.data.length;
        },
        write: function(buffer) {
          for (var i = 0; i < this.data.length; i++) {
            buffer.put(this.data.charCodeAt(i), 8);
          }
        }
      };
      module.exports = QR8bitByte;
    },
    46(module) {
      function QRBitBuffer() {
        this.buffer = new Array;
        this.length = 0;
      }
      QRBitBuffer.prototype = {
        get: function(index) {
          var bufIndex = Math.floor(index / 8);
          return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) == 1;
        },
        put: function(num, length) {
          for (var i = 0; i < length; i++) {
            this.putBit((num >>> length - i - 1 & 1) == 1);
          }
        },
        getLengthInBits: function() {
          return this.length;
        },
        putBit: function(bit) {
          var bufIndex = Math.floor(this.length / 8);
          if (this.buffer.length <= bufIndex) {
            this.buffer.push(0);
          }
          if (bit) {
            this.buffer[bufIndex] |= 128 >>> this.length % 8;
          }
          this.length++;
        }
      };
      module.exports = QRBitBuffer;
    },
    1537(module) {
      module.exports = {
        L: 1,
        M: 0,
        Q: 3,
        H: 2
      };
    },
    501(module, __unused_webpack_exports, __webpack_require__) {
      var math = __webpack_require__(9341);
      function QRPolynomial(num, shift) {
        if (num.length == undefined) {
          throw new Error(num.length + "/" + shift);
        }
        var offset = 0;
        while (offset < num.length && num[offset] == 0) {
          offset++;
        }
        this.num = new Array(num.length - offset + shift);
        for (var i = 0; i < num.length - offset; i++) {
          this.num[i] = num[i + offset];
        }
      }
      QRPolynomial.prototype = {
        get: function(index) {
          return this.num[index];
        },
        getLength: function() {
          return this.num.length;
        },
        multiply: function(e) {
          var num = new Array(this.getLength() + e.getLength() - 1);
          for (var i = 0; i < this.getLength(); i++) {
            for (var j = 0; j < e.getLength(); j++) {
              num[i + j] ^= math.gexp(math.glog(this.get(i)) + math.glog(e.get(j)));
            }
          }
          return new QRPolynomial(num, 0);
        },
        mod: function(e) {
          if (this.getLength() - e.getLength() < 0) {
            return this;
          }
          var ratio = math.glog(this.get(0)) - math.glog(e.get(0));
          var num = new Array(this.getLength());
          for (var i = 0; i < this.getLength(); i++) {
            num[i] = this.get(i);
          }
          for (var i = 0; i < e.getLength(); i++) {
            num[i] ^= math.gexp(math.glog(e.get(i)) + ratio);
          }
          return new QRPolynomial(num, 0).mod(e);
        }
      };
      module.exports = QRPolynomial;
    },
    6641(module, __unused_webpack_exports, __webpack_require__) {
      var BitByte = __webpack_require__(5409);
      var RSBlock = __webpack_require__(2835);
      var BitBuffer = __webpack_require__(46);
      var util = __webpack_require__(8759);
      var Polynomial = __webpack_require__(501);
      function QRCode(typeNumber, errorCorrectLevel) {
        this.typeNumber = typeNumber;
        this.errorCorrectLevel = errorCorrectLevel;
        this.modules = null;
        this.moduleCount = 0;
        this.dataCache = null;
        this.dataList = [];
      }
      var proto = QRCode.prototype;
      proto.addData = function(data) {
        var newData = new BitByte(data);
        this.dataList.push(newData);
        this.dataCache = null;
      };
      proto.isDark = function(row, col) {
        if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {
          throw new Error(row + "," + col);
        }
        return this.modules[row][col];
      };
      proto.getModuleCount = function() {
        return this.moduleCount;
      };
      proto.make = function() {
        if (this.typeNumber < 1) {
          var typeNumber = 1;
          for (typeNumber = 1; typeNumber < 40; typeNumber++) {
            var rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);
            var buffer = new BitBuffer;
            var totalDataCount = 0;
            for (var i = 0; i < rsBlocks.length; i++) {
              totalDataCount += rsBlocks[i].dataCount;
            }
            for (var i = 0; i < this.dataList.length; i++) {
              var data = this.dataList[i];
              buffer.put(data.mode, 4);
              buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber));
              data.write(buffer);
            }
            if (buffer.getLengthInBits() <= totalDataCount * 8) break;
          }
          this.typeNumber = typeNumber;
        }
        this.makeImpl(false, this.getBestMaskPattern());
      };
      proto.makeImpl = function(test, maskPattern) {
        this.moduleCount = this.typeNumber * 4 + 17;
        this.modules = new Array(this.moduleCount);
        for (var row = 0; row < this.moduleCount; row++) {
          this.modules[row] = new Array(this.moduleCount);
          for (var col = 0; col < this.moduleCount; col++) {
            this.modules[row][col] = null;
          }
        }
        this.setupPositionProbePattern(0, 0);
        this.setupPositionProbePattern(this.moduleCount - 7, 0);
        this.setupPositionProbePattern(0, this.moduleCount - 7);
        this.setupPositionAdjustPattern();
        this.setupTimingPattern();
        this.setupTypeInfo(test, maskPattern);
        if (this.typeNumber >= 7) {
          this.setupTypeNumber(test);
        }
        if (this.dataCache == null) {
          this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);
        }
        this.mapData(this.dataCache, maskPattern);
      };
      proto.setupPositionProbePattern = function(row, col) {
        for (var r = -1; r <= 7; r++) {
          if (row + r <= -1 || this.moduleCount <= row + r) continue;
          for (var c = -1; c <= 7; c++) {
            if (col + c <= -1 || this.moduleCount <= col + c) continue;
            if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) {
              this.modules[row + r][col + c] = true;
            } else {
              this.modules[row + r][col + c] = false;
            }
          }
        }
      };
      proto.getBestMaskPattern = function() {
        var minLostPoint = 0;
        var pattern = 0;
        for (var i = 0; i < 8; i++) {
          this.makeImpl(true, i);
          var lostPoint = util.getLostPoint(this);
          if (i == 0 || minLostPoint > lostPoint) {
            minLostPoint = lostPoint;
            pattern = i;
          }
        }
        return pattern;
      };
      proto.createMovieClip = function(target_mc, instance_name, depth) {
        var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);
        var cs = 1;
        this.make();
        for (var row = 0; row < this.modules.length; row++) {
          var y = row * cs;
          for (var col = 0; col < this.modules[row].length; col++) {
            var x = col * cs;
            var dark = this.modules[row][col];
            if (dark) {
              qr_mc.beginFill(0, 100);
              qr_mc.moveTo(x, y);
              qr_mc.lineTo(x + cs, y);
              qr_mc.lineTo(x + cs, y + cs);
              qr_mc.lineTo(x, y + cs);
              qr_mc.endFill();
            }
          }
        }
        return qr_mc;
      };
      proto.setupTimingPattern = function() {
        for (var r = 8; r < this.moduleCount - 8; r++) {
          if (this.modules[r][6] != null) {
            continue;
          }
          this.modules[r][6] = r % 2 == 0;
        }
        for (var c = 8; c < this.moduleCount - 8; c++) {
          if (this.modules[6][c] != null) {
            continue;
          }
          this.modules[6][c] = c % 2 == 0;
        }
      };
      proto.setupPositionAdjustPattern = function() {
        var pos = util.getPatternPosition(this.typeNumber);
        for (var i = 0; i < pos.length; i++) {
          for (var j = 0; j < pos.length; j++) {
            var row = pos[i];
            var col = pos[j];
            if (this.modules[row][col] != null) {
              continue;
            }
            for (var r = -2; r <= 2; r++) {
              for (var c = -2; c <= 2; c++) {
                if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) {
                  this.modules[row + r][col + c] = true;
                } else {
                  this.modules[row + r][col + c] = false;
                }
              }
            }
          }
        }
      };
      proto.setupTypeNumber = function(test) {
        var bits = util.getBCHTypeNumber(this.typeNumber);
        for (var i = 0; i < 18; i++) {
          var mod = !test && (bits >> i & 1) == 1;
          this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
        }
        for (var i = 0; i < 18; i++) {
          var mod = !test && (bits >> i & 1) == 1;
          this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
        }
      };
      proto.setupTypeInfo = function(test, maskPattern) {
        var data = this.errorCorrectLevel << 3 | maskPattern;
        var bits = util.getBCHTypeInfo(data);
        for (var i = 0; i < 15; i++) {
          var mod = !test && (bits >> i & 1) == 1;
          if (i < 6) {
            this.modules[i][8] = mod;
          } else if (i < 8) {
            this.modules[i + 1][8] = mod;
          } else {
            this.modules[this.moduleCount - 15 + i][8] = mod;
          }
        }
        for (var i = 0; i < 15; i++) {
          var mod = !test && (bits >> i & 1) == 1;
          if (i < 8) {
            this.modules[8][this.moduleCount - i - 1] = mod;
          } else if (i < 9) {
            this.modules[8][15 - i - 1 + 1] = mod;
          } else {
            this.modules[8][15 - i - 1] = mod;
          }
        }
        this.modules[this.moduleCount - 8][8] = !test;
      };
      proto.mapData = function(data, maskPattern) {
        var inc = -1;
        var row = this.moduleCount - 1;
        var bitIndex = 7;
        var byteIndex = 0;
        for (var col = this.moduleCount - 1; col > 0; col -= 2) {
          if (col == 6) col--;
          while (true) {
            for (var c = 0; c < 2; c++) {
              if (this.modules[row][col - c] == null) {
                var dark = false;
                if (byteIndex < data.length) {
                  dark = (data[byteIndex] >>> bitIndex & 1) == 1;
                }
                var mask = util.getMask(maskPattern, row, col - c);
                if (mask) {
                  dark = !dark;
                }
                this.modules[row][col - c] = dark;
                bitIndex--;
                if (bitIndex == -1) {
                  byteIndex++;
                  bitIndex = 7;
                }
              }
            }
            row += inc;
            if (row < 0 || this.moduleCount <= row) {
              row -= inc;
              inc = -inc;
              break;
            }
          }
        }
      };
      QRCode.PAD0 = 236;
      QRCode.PAD1 = 17;
      QRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {
        var rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);
        var buffer = new BitBuffer;
        for (var i = 0; i < dataList.length; i++) {
          var data = dataList[i];
          buffer.put(data.mode, 4);
          buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber));
          data.write(buffer);
        }
        var totalDataCount = 0;
        for (var i = 0; i < rsBlocks.length; i++) {
          totalDataCount += rsBlocks[i].dataCount;
        }
        if (buffer.getLengthInBits() > totalDataCount * 8) {
          throw new Error("code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")");
        }
        if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
          buffer.put(0, 4);
        }
        while (buffer.getLengthInBits() % 8 != 0) {
          buffer.putBit(false);
        }
        while (true) {
          if (buffer.getLengthInBits() >= totalDataCount * 8) {
            break;
          }
          buffer.put(QRCode.PAD0, 8);
          if (buffer.getLengthInBits() >= totalDataCount * 8) {
            break;
          }
          buffer.put(QRCode.PAD1, 8);
        }
        return QRCode.createBytes(buffer, rsBlocks);
      };
      QRCode.createBytes = function(buffer, rsBlocks) {
        var offset = 0;
        var maxDcCount = 0;
        var maxEcCount = 0;
        var dcdata = new Array(rsBlocks.length);
        var ecdata = new Array(rsBlocks.length);
        for (var r = 0; r < rsBlocks.length; r++) {
          var dcCount = rsBlocks[r].dataCount;
          var ecCount = rsBlocks[r].totalCount - dcCount;
          maxDcCount = Math.max(maxDcCount, dcCount);
          maxEcCount = Math.max(maxEcCount, ecCount);
          dcdata[r] = new Array(dcCount);
          for (var i = 0; i < dcdata[r].length; i++) {
            dcdata[r][i] = 255 & buffer.buffer[i + offset];
          }
          offset += dcCount;
          var rsPoly = util.getErrorCorrectPolynomial(ecCount);
          var rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);
          var modPoly = rawPoly.mod(rsPoly);
          ecdata[r] = new Array(rsPoly.getLength() - 1);
          for (var i = 0; i < ecdata[r].length; i++) {
            var modIndex = i + modPoly.getLength() - ecdata[r].length;
            ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;
          }
        }
        var totalCodeCount = 0;
        for (var i = 0; i < rsBlocks.length; i++) {
          totalCodeCount += rsBlocks[i].totalCount;
        }
        var data = new Array(totalCodeCount);
        var index = 0;
        for (var i = 0; i < maxDcCount; i++) {
          for (var r = 0; r < rsBlocks.length; r++) {
            if (i < dcdata[r].length) {
              data[index++] = dcdata[r][i];
            }
          }
        }
        for (var i = 0; i < maxEcCount; i++) {
          for (var r = 0; r < rsBlocks.length; r++) {
            if (i < ecdata[r].length) {
              data[index++] = ecdata[r][i];
            }
          }
        }
        return data;
      };
      module.exports = QRCode;
    },
    2835(module, __unused_webpack_exports, __webpack_require__) {
      var ECL = __webpack_require__(1537);
      function QRRSBlock(totalCount, dataCount) {
        this.totalCount = totalCount;
        this.dataCount = dataCount;
      }
      QRRSBlock.RS_BLOCK_TABLE = [ [ 1, 26, 19 ], [ 1, 26, 16 ], [ 1, 26, 13 ], [ 1, 26, 9 ], [ 1, 44, 34 ], [ 1, 44, 28 ], [ 1, 44, 22 ], [ 1, 44, 16 ], [ 1, 70, 55 ], [ 1, 70, 44 ], [ 2, 35, 17 ], [ 2, 35, 13 ], [ 1, 100, 80 ], [ 2, 50, 32 ], [ 2, 50, 24 ], [ 4, 25, 9 ], [ 1, 134, 108 ], [ 2, 67, 43 ], [ 2, 33, 15, 2, 34, 16 ], [ 2, 33, 11, 2, 34, 12 ], [ 2, 86, 68 ], [ 4, 43, 27 ], [ 4, 43, 19 ], [ 4, 43, 15 ], [ 2, 98, 78 ], [ 4, 49, 31 ], [ 2, 32, 14, 4, 33, 15 ], [ 4, 39, 13, 1, 40, 14 ], [ 2, 121, 97 ], [ 2, 60, 38, 2, 61, 39 ], [ 4, 40, 18, 2, 41, 19 ], [ 4, 40, 14, 2, 41, 15 ], [ 2, 146, 116 ], [ 3, 58, 36, 2, 59, 37 ], [ 4, 36, 16, 4, 37, 17 ], [ 4, 36, 12, 4, 37, 13 ], [ 2, 86, 68, 2, 87, 69 ], [ 4, 69, 43, 1, 70, 44 ], [ 6, 43, 19, 2, 44, 20 ], [ 6, 43, 15, 2, 44, 16 ], [ 4, 101, 81 ], [ 1, 80, 50, 4, 81, 51 ], [ 4, 50, 22, 4, 51, 23 ], [ 3, 36, 12, 8, 37, 13 ], [ 2, 116, 92, 2, 117, 93 ], [ 6, 58, 36, 2, 59, 37 ], [ 4, 46, 20, 6, 47, 21 ], [ 7, 42, 14, 4, 43, 15 ], [ 4, 133, 107 ], [ 8, 59, 37, 1, 60, 38 ], [ 8, 44, 20, 4, 45, 21 ], [ 12, 33, 11, 4, 34, 12 ], [ 3, 145, 115, 1, 146, 116 ], [ 4, 64, 40, 5, 65, 41 ], [ 11, 36, 16, 5, 37, 17 ], [ 11, 36, 12, 5, 37, 13 ], [ 5, 109, 87, 1, 110, 88 ], [ 5, 65, 41, 5, 66, 42 ], [ 5, 54, 24, 7, 55, 25 ], [ 11, 36, 12 ], [ 5, 122, 98, 1, 123, 99 ], [ 7, 73, 45, 3, 74, 46 ], [ 15, 43, 19, 2, 44, 20 ], [ 3, 45, 15, 13, 46, 16 ], [ 1, 135, 107, 5, 136, 108 ], [ 10, 74, 46, 1, 75, 47 ], [ 1, 50, 22, 15, 51, 23 ], [ 2, 42, 14, 17, 43, 15 ], [ 5, 150, 120, 1, 151, 121 ], [ 9, 69, 43, 4, 70, 44 ], [ 17, 50, 22, 1, 51, 23 ], [ 2, 42, 14, 19, 43, 15 ], [ 3, 141, 113, 4, 142, 114 ], [ 3, 70, 44, 11, 71, 45 ], [ 17, 47, 21, 4, 48, 22 ], [ 9, 39, 13, 16, 40, 14 ], [ 3, 135, 107, 5, 136, 108 ], [ 3, 67, 41, 13, 68, 42 ], [ 15, 54, 24, 5, 55, 25 ], [ 15, 43, 15, 10, 44, 16 ], [ 4, 144, 116, 4, 145, 117 ], [ 17, 68, 42 ], [ 17, 50, 22, 6, 51, 23 ], [ 19, 46, 16, 6, 47, 17 ], [ 2, 139, 111, 7, 140, 112 ], [ 17, 74, 46 ], [ 7, 54, 24, 16, 55, 25 ], [ 34, 37, 13 ], [ 4, 151, 121, 5, 152, 122 ], [ 4, 75, 47, 14, 76, 48 ], [ 11, 54, 24, 14, 55, 25 ], [ 16, 45, 15, 14, 46, 16 ], [ 6, 147, 117, 4, 148, 118 ], [ 6, 73, 45, 14, 74, 46 ], [ 11, 54, 24, 16, 55, 25 ], [ 30, 46, 16, 2, 47, 17 ], [ 8, 132, 106, 4, 133, 107 ], [ 8, 75, 47, 13, 76, 48 ], [ 7, 54, 24, 22, 55, 25 ], [ 22, 45, 15, 13, 46, 16 ], [ 10, 142, 114, 2, 143, 115 ], [ 19, 74, 46, 4, 75, 47 ], [ 28, 50, 22, 6, 51, 23 ], [ 33, 46, 16, 4, 47, 17 ], [ 8, 152, 122, 4, 153, 123 ], [ 22, 73, 45, 3, 74, 46 ], [ 8, 53, 23, 26, 54, 24 ], [ 12, 45, 15, 28, 46, 16 ], [ 3, 147, 117, 10, 148, 118 ], [ 3, 73, 45, 23, 74, 46 ], [ 4, 54, 24, 31, 55, 25 ], [ 11, 45, 15, 31, 46, 16 ], [ 7, 146, 116, 7, 147, 117 ], [ 21, 73, 45, 7, 74, 46 ], [ 1, 53, 23, 37, 54, 24 ], [ 19, 45, 15, 26, 46, 16 ], [ 5, 145, 115, 10, 146, 116 ], [ 19, 75, 47, 10, 76, 48 ], [ 15, 54, 24, 25, 55, 25 ], [ 23, 45, 15, 25, 46, 16 ], [ 13, 145, 115, 3, 146, 116 ], [ 2, 74, 46, 29, 75, 47 ], [ 42, 54, 24, 1, 55, 25 ], [ 23, 45, 15, 28, 46, 16 ], [ 17, 145, 115 ], [ 10, 74, 46, 23, 75, 47 ], [ 10, 54, 24, 35, 55, 25 ], [ 19, 45, 15, 35, 46, 16 ], [ 17, 145, 115, 1, 146, 116 ], [ 14, 74, 46, 21, 75, 47 ], [ 29, 54, 24, 19, 55, 25 ], [ 11, 45, 15, 46, 46, 16 ], [ 13, 145, 115, 6, 146, 116 ], [ 14, 74, 46, 23, 75, 47 ], [ 44, 54, 24, 7, 55, 25 ], [ 59, 46, 16, 1, 47, 17 ], [ 12, 151, 121, 7, 152, 122 ], [ 12, 75, 47, 26, 76, 48 ], [ 39, 54, 24, 14, 55, 25 ], [ 22, 45, 15, 41, 46, 16 ], [ 6, 151, 121, 14, 152, 122 ], [ 6, 75, 47, 34, 76, 48 ], [ 46, 54, 24, 10, 55, 25 ], [ 2, 45, 15, 64, 46, 16 ], [ 17, 152, 122, 4, 153, 123 ], [ 29, 74, 46, 14, 75, 47 ], [ 49, 54, 24, 10, 55, 25 ], [ 24, 45, 15, 46, 46, 16 ], [ 4, 152, 122, 18, 153, 123 ], [ 13, 74, 46, 32, 75, 47 ], [ 48, 54, 24, 14, 55, 25 ], [ 42, 45, 15, 32, 46, 16 ], [ 20, 147, 117, 4, 148, 118 ], [ 40, 75, 47, 7, 76, 48 ], [ 43, 54, 24, 22, 55, 25 ], [ 10, 45, 15, 67, 46, 16 ], [ 19, 148, 118, 6, 149, 119 ], [ 18, 75, 47, 31, 76, 48 ], [ 34, 54, 24, 34, 55, 25 ], [ 20, 45, 15, 61, 46, 16 ] ];
      QRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {
        var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);
        if (rsBlock == undefined) {
          throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel);
        }
        var length = rsBlock.length / 3;
        var list = new Array;
        for (var i = 0; i < length; i++) {
          var count = rsBlock[i * 3 + 0];
          var totalCount = rsBlock[i * 3 + 1];
          var dataCount = rsBlock[i * 3 + 2];
          for (var j = 0; j < count; j++) {
            list.push(new QRRSBlock(totalCount, dataCount));
          }
        }
        return list;
      };
      QRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {
        switch (errorCorrectLevel) {
         case ECL.L:
          return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];

         case ECL.M:
          return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];

         case ECL.Q:
          return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];

         case ECL.H:
          return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];

         default:
          return undefined;
        }
      };
      module.exports = QRRSBlock;
    },
    9341(module) {
      var QRMath = {
        glog: function(n) {
          if (n < 1) {
            throw new Error("glog(" + n + ")");
          }
          return QRMath.LOG_TABLE[n];
        },
        gexp: function(n) {
          while (n < 0) {
            n += 255;
          }
          while (n >= 256) {
            n -= 255;
          }
          return QRMath.EXP_TABLE[n];
        },
        EXP_TABLE: new Array(256),
        LOG_TABLE: new Array(256)
      };
      for (var i = 0; i < 8; i++) {
        QRMath.EXP_TABLE[i] = 1 << i;
      }
      for (var i = 8; i < 256; i++) {
        QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
      }
      for (var i = 0; i < 255; i++) {
        QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
      }
      module.exports = QRMath;
    },
    9852(module) {
      module.exports = {
        MODE_NUMBER: 1 << 0,
        MODE_ALPHA_NUM: 1 << 1,
        MODE_8BIT_BYTE: 1 << 2,
        MODE_KANJI: 1 << 3
      };
    },
    8759(module, __unused_webpack_exports, __webpack_require__) {
      var Mode = __webpack_require__(9852);
      var Polynomial = __webpack_require__(501);
      var math = __webpack_require__(9341);
      var QRMaskPattern = {
        PATTERN000: 0,
        PATTERN001: 1,
        PATTERN010: 2,
        PATTERN011: 3,
        PATTERN100: 4,
        PATTERN101: 5,
        PATTERN110: 6,
        PATTERN111: 7
      };
      var QRUtil = {
        PATTERN_POSITION_TABLE: [ [], [ 6, 18 ], [ 6, 22 ], [ 6, 26 ], [ 6, 30 ], [ 6, 34 ], [ 6, 22, 38 ], [ 6, 24, 42 ], [ 6, 26, 46 ], [ 6, 28, 50 ], [ 6, 30, 54 ], [ 6, 32, 58 ], [ 6, 34, 62 ], [ 6, 26, 46, 66 ], [ 6, 26, 48, 70 ], [ 6, 26, 50, 74 ], [ 6, 30, 54, 78 ], [ 6, 30, 56, 82 ], [ 6, 30, 58, 86 ], [ 6, 34, 62, 90 ], [ 6, 28, 50, 72, 94 ], [ 6, 26, 50, 74, 98 ], [ 6, 30, 54, 78, 102 ], [ 6, 28, 54, 80, 106 ], [ 6, 32, 58, 84, 110 ], [ 6, 30, 58, 86, 114 ], [ 6, 34, 62, 90, 118 ], [ 6, 26, 50, 74, 98, 122 ], [ 6, 30, 54, 78, 102, 126 ], [ 6, 26, 52, 78, 104, 130 ], [ 6, 30, 56, 82, 108, 134 ], [ 6, 34, 60, 86, 112, 138 ], [ 6, 30, 58, 86, 114, 142 ], [ 6, 34, 62, 90, 118, 146 ], [ 6, 30, 54, 78, 102, 126, 150 ], [ 6, 24, 50, 76, 102, 128, 154 ], [ 6, 28, 54, 80, 106, 132, 158 ], [ 6, 32, 58, 84, 110, 136, 162 ], [ 6, 26, 54, 82, 110, 138, 166 ], [ 6, 30, 58, 86, 114, 142, 170 ] ],
        G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0,
        G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0,
        G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1,
        getBCHTypeInfo: function(data) {
          var d = data << 10;
          while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
            d ^= QRUtil.G15 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15);
          }
          return (data << 10 | d) ^ QRUtil.G15_MASK;
        },
        getBCHTypeNumber: function(data) {
          var d = data << 12;
          while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
            d ^= QRUtil.G18 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18);
          }
          return data << 12 | d;
        },
        getBCHDigit: function(data) {
          var digit = 0;
          while (data != 0) {
            digit++;
            data >>>= 1;
          }
          return digit;
        },
        getPatternPosition: function(typeNumber) {
          return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
        },
        getMask: function(maskPattern, i, j) {
          switch (maskPattern) {
           case QRMaskPattern.PATTERN000:
            return (i + j) % 2 == 0;

           case QRMaskPattern.PATTERN001:
            return i % 2 == 0;

           case QRMaskPattern.PATTERN010:
            return j % 3 == 0;

           case QRMaskPattern.PATTERN011:
            return (i + j) % 3 == 0;

           case QRMaskPattern.PATTERN100:
            return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;

           case QRMaskPattern.PATTERN101:
            return i * j % 2 + i * j % 3 == 0;

           case QRMaskPattern.PATTERN110:
            return (i * j % 2 + i * j % 3) % 2 == 0;

           case QRMaskPattern.PATTERN111:
            return (i * j % 3 + (i + j) % 2) % 2 == 0;

           default:
            throw new Error("bad maskPattern:" + maskPattern);
          }
        },
        getErrorCorrectPolynomial: function(errorCorrectLength) {
          var a = new Polynomial([ 1 ], 0);
          for (var i = 0; i < errorCorrectLength; i++) {
            a = a.multiply(new Polynomial([ 1, math.gexp(i) ], 0));
          }
          return a;
        },
        getLengthInBits: function(mode, type) {
          if (1 <= type && type < 10) {
            switch (mode) {
             case Mode.MODE_NUMBER:
              return 10;

             case Mode.MODE_ALPHA_NUM:
              return 9;

             case Mode.MODE_8BIT_BYTE:
              return 8;

             case Mode.MODE_KANJI:
              return 8;

             default:
              throw new Error("mode:" + mode);
            }
          } else if (type < 27) {
            switch (mode) {
             case Mode.MODE_NUMBER:
              return 12;

             case Mode.MODE_ALPHA_NUM:
              return 11;

             case Mode.MODE_8BIT_BYTE:
              return 16;

             case Mode.MODE_KANJI:
              return 10;

             default:
              throw new Error("mode:" + mode);
            }
          } else if (type < 41) {
            switch (mode) {
             case Mode.MODE_NUMBER:
              return 14;

             case Mode.MODE_ALPHA_NUM:
              return 13;

             case Mode.MODE_8BIT_BYTE:
              return 16;

             case Mode.MODE_KANJI:
              return 12;

             default:
              throw new Error("mode:" + mode);
            }
          } else {
            throw new Error("type:" + type);
          }
        },
        getLostPoint: function(qrCode) {
          var moduleCount = qrCode.getModuleCount();
          var lostPoint = 0;
          for (var row = 0; row < moduleCount; row++) {
            for (var col = 0; col < moduleCount; col++) {
              var sameCount = 0;
              var dark = qrCode.isDark(row, col);
              for (var r = -1; r <= 1; r++) {
                if (row + r < 0 || moduleCount <= row + r) {
                  continue;
                }
                for (var c = -1; c <= 1; c++) {
                  if (col + c < 0 || moduleCount <= col + c) {
                    continue;
                  }
                  if (r == 0 && c == 0) {
                    continue;
                  }
                  if (dark == qrCode.isDark(row + r, col + c)) {
                    sameCount++;
                  }
                }
              }
              if (sameCount > 5) {
                lostPoint += 3 + sameCount - 5;
              }
            }
          }
          for (var row = 0; row < moduleCount - 1; row++) {
            for (var col = 0; col < moduleCount - 1; col++) {
              var count = 0;
              if (qrCode.isDark(row, col)) count++;
              if (qrCode.isDark(row + 1, col)) count++;
              if (qrCode.isDark(row, col + 1)) count++;
              if (qrCode.isDark(row + 1, col + 1)) count++;
              if (count == 0 || count == 4) {
                lostPoint += 3;
              }
            }
          }
          for (var row = 0; row < moduleCount; row++) {
            for (var col = 0; col < moduleCount - 6; col++) {
              if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) {
                lostPoint += 40;
              }
            }
          }
          for (var col = 0; col < moduleCount; col++) {
            for (var row = 0; row < moduleCount - 6; row++) {
              if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) {
                lostPoint += 40;
              }
            }
          }
          var darkCount = 0;
          for (var col = 0; col < moduleCount; col++) {
            for (var row = 0; row < moduleCount; row++) {
              if (qrCode.isDark(row, col)) {
                darkCount++;
              }
            }
          }
          var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
          lostPoint += ratio * 10;
          return lostPoint;
        }
      };
      module.exports = QRUtil;
    },
    3209(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var MAX_BYTES = 65536;
      var MAX_UINT32 = 4294967295;
      function oldBrowser() {
        throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11");
      }
      var Buffer = __webpack_require__(2861).Buffer;
      var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto;
      if (crypto && crypto.getRandomValues) {
        module.exports = randomBytes;
      } else {
        module.exports = oldBrowser;
      }
      function randomBytes(size, cb) {
        if (size > MAX_UINT32) throw new RangeError("requested too many random bytes");
        var bytes = Buffer.allocUnsafe(size);
        if (size > 0) {
          if (size > MAX_BYTES) {
            for (var generated = 0; generated < size; generated += MAX_BYTES) {
              crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));
            }
          } else {
            crypto.getRandomValues(bytes);
          }
        }
        if (typeof cb === "function") {
          return process.nextTick((function() {
            cb(null, bytes);
          }));
        }
        return bytes;
      }
    },
    6983(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      function oldBrowser() {
        throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11");
      }
      var safeBuffer = __webpack_require__(2861);
      var randombytes = __webpack_require__(3209);
      var Buffer = safeBuffer.Buffer;
      var kBufferMaxLength = safeBuffer.kMaxLength;
      var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto;
      var kMaxUint32 = Math.pow(2, 32) - 1;
      function assertOffset(offset, length) {
        if (typeof offset !== "number" || offset !== offset) {
          throw new TypeError("offset must be a number");
        }
        if (offset > kMaxUint32 || offset < 0) {
          throw new TypeError("offset must be a uint32");
        }
        if (offset > kBufferMaxLength || offset > length) {
          throw new RangeError("offset out of range");
        }
      }
      function assertSize(size, offset, length) {
        if (typeof size !== "number" || size !== size) {
          throw new TypeError("size must be a number");
        }
        if (size > kMaxUint32 || size < 0) {
          throw new TypeError("size must be a uint32");
        }
        if (size + offset > length || size > kBufferMaxLength) {
          throw new RangeError("buffer too small");
        }
      }
      if (crypto && crypto.getRandomValues || !process.browser) {
        exports.randomFill = randomFill;
        exports.randomFillSync = randomFillSync;
      } else {
        exports.randomFill = oldBrowser;
        exports.randomFillSync = oldBrowser;
      }
      function randomFill(buf, offset, size, cb) {
        if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) {
          throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
        }
        if (typeof offset === "function") {
          cb = offset;
          offset = 0;
          size = buf.length;
        } else if (typeof size === "function") {
          cb = size;
          size = buf.length - offset;
        } else if (typeof cb !== "function") {
          throw new TypeError('"cb" argument must be a function');
        }
        assertOffset(offset, buf.length);
        assertSize(size, offset, buf.length);
        return actualFill(buf, offset, size, cb);
      }
      function actualFill(buf, offset, size, cb) {
        if (process.browser) {
          var ourBuf = buf.buffer;
          var uint = new Uint8Array(ourBuf, offset, size);
          crypto.getRandomValues(uint);
          if (cb) {
            process.nextTick((function() {
              cb(null, buf);
            }));
            return;
          }
          return buf;
        }
        if (cb) {
          randombytes(size, (function(err, bytes) {
            if (err) {
              return cb(err);
            }
            bytes.copy(buf, offset);
            cb(null, buf);
          }));
          return;
        }
        var bytes = randombytes(size);
        bytes.copy(buf, offset);
        return buf;
      }
      function randomFillSync(buf, offset, size) {
        if (typeof offset === "undefined") {
          offset = 0;
        }
        if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) {
          throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
        }
        assertOffset(offset, buf.length);
        if (size === undefined) size = buf.length - offset;
        assertSize(size, offset, buf.length);
        return actualFill(buf, offset, size);
      }
    },
    2551(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var aa = __webpack_require__(6540), ca = __webpack_require__(9982);
      function p(a) {
        for (var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; c < arguments.length; c++) b += "&args[]=" + encodeURIComponent(arguments[c]);
        return "Minified React error #" + a + "; visit " + b + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
      }
      var da = new Set, ea = {};
      function fa(a, b) {
        ha(a, b);
        ha(a + "Capture", b);
      }
      function ha(a, b) {
        ea[a] = b;
        for (a = 0; a < b.length; a++) da.add(b[a]);
      }
      var ia = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement), ja = Object.prototype.hasOwnProperty, ka = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, la = {}, ma = {};
      function oa(a) {
        if (ja.call(ma, a)) return !0;
        if (ja.call(la, a)) return !1;
        if (ka.test(a)) return ma[a] = !0;
        la[a] = !0;
        return !1;
      }
      function pa(a, b, c, d) {
        if (null !== c && 0 === c.type) return !1;
        switch (typeof b) {
         case "function":
         case "symbol":
          return !0;

         case "boolean":
          if (d) return !1;
          if (null !== c) return !c.acceptsBooleans;
          a = a.toLowerCase().slice(0, 5);
          return "data-" !== a && "aria-" !== a;

         default:
          return !1;
        }
      }
      function qa(a, b, c, d) {
        if (null === b || "undefined" === typeof b || pa(a, b, c, d)) return !0;
        if (d) return !1;
        if (null !== c) switch (c.type) {
         case 3:
          return !b;

         case 4:
          return !1 === b;

         case 5:
          return isNaN(b);

         case 6:
          return isNaN(b) || 1 > b;
        }
        return !1;
      }
      function v(a, b, c, d, e, f, g) {
        this.acceptsBooleans = 2 === b || 3 === b || 4 === b;
        this.attributeName = d;
        this.attributeNamespace = e;
        this.mustUseProperty = c;
        this.propertyName = a;
        this.type = b;
        this.sanitizeURL = f;
        this.removeEmptyString = g;
      }
      var z = {};
      "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(a) {
        z[a] = new v(a, 0, !1, a, null, !1, !1);
      }));
      [ [ "acceptCharset", "accept-charset" ], [ "className", "class" ], [ "htmlFor", "for" ], [ "httpEquiv", "http-equiv" ] ].forEach((function(a) {
        var b = a[0];
        z[b] = new v(b, 1, !1, a[1], null, !1, !1);
      }));
      [ "contentEditable", "draggable", "spellCheck", "value" ].forEach((function(a) {
        z[a] = new v(a, 2, !1, a.toLowerCase(), null, !1, !1);
      }));
      [ "autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha" ].forEach((function(a) {
        z[a] = new v(a, 2, !1, a, null, !1, !1);
      }));
      "allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(a) {
        z[a] = new v(a, 3, !1, a.toLowerCase(), null, !1, !1);
      }));
      [ "checked", "multiple", "muted", "selected" ].forEach((function(a) {
        z[a] = new v(a, 3, !0, a, null, !1, !1);
      }));
      [ "capture", "download" ].forEach((function(a) {
        z[a] = new v(a, 4, !1, a, null, !1, !1);
      }));
      [ "cols", "rows", "size", "span" ].forEach((function(a) {
        z[a] = new v(a, 6, !1, a, null, !1, !1);
      }));
      [ "rowSpan", "start" ].forEach((function(a) {
        z[a] = new v(a, 5, !1, a.toLowerCase(), null, !1, !1);
      }));
      var ra = /[\-:]([a-z])/g;
      function sa(a) {
        return a[1].toUpperCase();
      }
      "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(a) {
        var b = a.replace(ra, sa);
        z[b] = new v(b, 1, !1, a, null, !1, !1);
      }));
      "xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(a) {
        var b = a.replace(ra, sa);
        z[b] = new v(b, 1, !1, a, "http://www.w3.org/1999/xlink", !1, !1);
      }));
      [ "xml:base", "xml:lang", "xml:space" ].forEach((function(a) {
        var b = a.replace(ra, sa);
        z[b] = new v(b, 1, !1, a, "http://www.w3.org/XML/1998/namespace", !1, !1);
      }));
      [ "tabIndex", "crossOrigin" ].forEach((function(a) {
        z[a] = new v(a, 1, !1, a.toLowerCase(), null, !1, !1);
      }));
      z.xlinkHref = new v("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1);
      [ "src", "href", "action", "formAction" ].forEach((function(a) {
        z[a] = new v(a, 1, !1, a.toLowerCase(), null, !0, !0);
      }));
      function ta(a, b, c, d) {
        var e = z.hasOwnProperty(b) ? z[b] : null;
        if (null !== e ? 0 !== e.type : d || !(2 < b.length) || "o" !== b[0] && "O" !== b[0] || "n" !== b[1] && "N" !== b[1]) qa(b, c, e, d) && (c = null), 
        d || null === e ? oa(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, "" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : "" : c : (b = e.attributeName, 
        d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? "" : "" + c, 
        d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c)));
      }
      var ua = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, va = Symbol.for("react.element"), wa = Symbol.for("react.portal"), ya = Symbol.for("react.fragment"), za = Symbol.for("react.strict_mode"), Aa = Symbol.for("react.profiler"), Ba = Symbol.for("react.provider"), Ca = Symbol.for("react.context"), Da = Symbol.for("react.forward_ref"), Ea = Symbol.for("react.suspense"), Fa = Symbol.for("react.suspense_list"), Ga = Symbol.for("react.memo"), Ha = Symbol.for("react.lazy");
      Symbol.for("react.scope");
      Symbol.for("react.debug_trace_mode");
      var Ia = Symbol.for("react.offscreen");
      Symbol.for("react.legacy_hidden");
      Symbol.for("react.cache");
      Symbol.for("react.tracing_marker");
      var Ja = Symbol.iterator;
      function Ka(a) {
        if (null === a || "object" !== typeof a) return null;
        a = Ja && a[Ja] || a["@@iterator"];
        return "function" === typeof a ? a : null;
      }
      var A = Object.assign, La;
      function Ma(a) {
        if (void 0 === La) try {
          throw Error();
        } catch (c) {
          var b = c.stack.trim().match(/\n( *(at )?)/);
          La = b && b[1] || "";
        }
        return "\n" + La + a;
      }
      var Na = !1;
      function Oa(a, b) {
        if (!a || Na) return "";
        Na = !0;
        var c = Error.prepareStackTrace;
        Error.prepareStackTrace = void 0;
        try {
          if (b) if (b = function() {
            throw Error();
          }, Object.defineProperty(b.prototype, "props", {
            set: function() {
              throw Error();
            }
          }), "object" === typeof Reflect && Reflect.construct) {
            try {
              Reflect.construct(b, []);
            } catch (l) {
              var d = l;
            }
            Reflect.construct(a, [], b);
          } else {
            try {
              b.call();
            } catch (l) {
              d = l;
            }
            a.call(b.prototype);
          } else {
            try {
              throw Error();
            } catch (l) {
              d = l;
            }
            a();
          }
        } catch (l) {
          if (l && d && "string" === typeof l.stack) {
            for (var e = l.stack.split("\n"), f = d.stack.split("\n"), g = e.length - 1, h = f.length - 1; 1 <= g && 0 <= h && e[g] !== f[h]; ) h--;
            for (;1 <= g && 0 <= h; g--, h--) if (e[g] !== f[h]) {
              if (1 !== g || 1 !== h) {
                do {
                  if (g--, h--, 0 > h || e[g] !== f[h]) {
                    var k = "\n" + e[g].replace(" at new ", " at ");
                    a.displayName && k.includes("<anonymous>") && (k = k.replace("<anonymous>", a.displayName));
                    return k;
                  }
                } while (1 <= g && 0 <= h);
              }
              break;
            }
          }
        } finally {
          Na = !1, Error.prepareStackTrace = c;
        }
        return (a = a ? a.displayName || a.name : "") ? Ma(a) : "";
      }
      function Pa(a) {
        switch (a.tag) {
         case 5:
          return Ma(a.type);

         case 16:
          return Ma("Lazy");

         case 13:
          return Ma("Suspense");

         case 19:
          return Ma("SuspenseList");

         case 0:
         case 2:
         case 15:
          return a = Oa(a.type, !1), a;

         case 11:
          return a = Oa(a.type.render, !1), a;

         case 1:
          return a = Oa(a.type, !0), a;

         default:
          return "";
        }
      }
      function Qa(a) {
        if (null == a) return null;
        if ("function" === typeof a) return a.displayName || a.name || null;
        if ("string" === typeof a) return a;
        switch (a) {
         case ya:
          return "Fragment";

         case wa:
          return "Portal";

         case Aa:
          return "Profiler";

         case za:
          return "StrictMode";

         case Ea:
          return "Suspense";

         case Fa:
          return "SuspenseList";
        }
        if ("object" === typeof a) switch (a.$$typeof) {
         case Ca:
          return (a.displayName || "Context") + ".Consumer";

         case Ba:
          return (a._context.displayName || "Context") + ".Provider";

         case Da:
          var b = a.render;
          a = a.displayName;
          a || (a = b.displayName || b.name || "", a = "" !== a ? "ForwardRef(" + a + ")" : "ForwardRef");
          return a;

         case Ga:
          return b = a.displayName || null, null !== b ? b : Qa(a.type) || "Memo";

         case Ha:
          b = a._payload;
          a = a._init;
          try {
            return Qa(a(b));
          } catch (c) {}
        }
        return null;
      }
      function Ra(a) {
        var b = a.type;
        switch (a.tag) {
         case 24:
          return "Cache";

         case 9:
          return (b.displayName || "Context") + ".Consumer";

         case 10:
          return (b._context.displayName || "Context") + ".Provider";

         case 18:
          return "DehydratedFragment";

         case 11:
          return a = b.render, a = a.displayName || a.name || "", b.displayName || ("" !== a ? "ForwardRef(" + a + ")" : "ForwardRef");

         case 7:
          return "Fragment";

         case 5:
          return b;

         case 4:
          return "Portal";

         case 3:
          return "Root";

         case 6:
          return "Text";

         case 16:
          return Qa(b);

         case 8:
          return b === za ? "StrictMode" : "Mode";

         case 22:
          return "Offscreen";

         case 12:
          return "Profiler";

         case 21:
          return "Scope";

         case 13:
          return "Suspense";

         case 19:
          return "SuspenseList";

         case 25:
          return "TracingMarker";

         case 1:
         case 0:
         case 17:
         case 2:
         case 14:
         case 15:
          if ("function" === typeof b) return b.displayName || b.name || null;
          if ("string" === typeof b) return b;
        }
        return null;
      }
      function Sa(a) {
        switch (typeof a) {
         case "boolean":
         case "number":
         case "string":
         case "undefined":
          return a;

         case "object":
          return a;

         default:
          return "";
        }
      }
      function Ta(a) {
        var b = a.type;
        return (a = a.nodeName) && "input" === a.toLowerCase() && ("checkbox" === b || "radio" === b);
      }
      function Ua(a) {
        var b = Ta(a) ? "checked" : "value", c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b), d = "" + a[b];
        if (!a.hasOwnProperty(b) && "undefined" !== typeof c && "function" === typeof c.get && "function" === typeof c.set) {
          var e = c.get, f = c.set;
          Object.defineProperty(a, b, {
            configurable: !0,
            get: function() {
              return e.call(this);
            },
            set: function(a) {
              d = "" + a;
              f.call(this, a);
            }
          });
          Object.defineProperty(a, b, {
            enumerable: c.enumerable
          });
          return {
            getValue: function() {
              return d;
            },
            setValue: function(a) {
              d = "" + a;
            },
            stopTracking: function() {
              a._valueTracker = null;
              delete a[b];
            }
          };
        }
      }
      function Va(a) {
        a._valueTracker || (a._valueTracker = Ua(a));
      }
      function Wa(a) {
        if (!a) return !1;
        var b = a._valueTracker;
        if (!b) return !0;
        var c = b.getValue();
        var d = "";
        a && (d = Ta(a) ? a.checked ? "true" : "false" : a.value);
        a = d;
        return a !== c ? (b.setValue(a), !0) : !1;
      }
      function Xa(a) {
        a = a || ("undefined" !== typeof document ? document : void 0);
        if ("undefined" === typeof a) return null;
        try {
          return a.activeElement || a.body;
        } catch (b) {
          return a.body;
        }
      }
      function Ya(a, b) {
        var c = b.checked;
        return A({}, b, {
          defaultChecked: void 0,
          defaultValue: void 0,
          value: void 0,
          checked: null != c ? c : a._wrapperState.initialChecked
        });
      }
      function Za(a, b) {
        var c = null == b.defaultValue ? "" : b.defaultValue, d = null != b.checked ? b.checked : b.defaultChecked;
        c = Sa(null != b.value ? b.value : c);
        a._wrapperState = {
          initialChecked: d,
          initialValue: c,
          controlled: "checkbox" === b.type || "radio" === b.type ? null != b.checked : null != b.value
        };
      }
      function ab(a, b) {
        b = b.checked;
        null != b && ta(a, "checked", b, !1);
      }
      function bb(a, b) {
        ab(a, b);
        var c = Sa(b.value), d = b.type;
        if (null != c) if ("number" === d) {
          if (0 === c && "" === a.value || a.value != c) a.value = "" + c;
        } else a.value !== "" + c && (a.value = "" + c); else if ("submit" === d || "reset" === d) {
          a.removeAttribute("value");
          return;
        }
        b.hasOwnProperty("value") ? cb(a, b.type, c) : b.hasOwnProperty("defaultValue") && cb(a, b.type, Sa(b.defaultValue));
        null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);
      }
      function db(a, b, c) {
        if (b.hasOwnProperty("value") || b.hasOwnProperty("defaultValue")) {
          var d = b.type;
          if (!("submit" !== d && "reset" !== d || void 0 !== b.value && null !== b.value)) return;
          b = "" + a._wrapperState.initialValue;
          c || b === a.value || (a.value = b);
          a.defaultValue = b;
        }
        c = a.name;
        "" !== c && (a.name = "");
        a.defaultChecked = !!a._wrapperState.initialChecked;
        "" !== c && (a.name = c);
      }
      function cb(a, b, c) {
        if ("number" !== b || Xa(a.ownerDocument) !== a) null == c ? a.defaultValue = "" + a._wrapperState.initialValue : a.defaultValue !== "" + c && (a.defaultValue = "" + c);
      }
      var eb = Array.isArray;
      function fb(a, b, c, d) {
        a = a.options;
        if (b) {
          b = {};
          for (var e = 0; e < c.length; e++) b["$" + c[e]] = !0;
          for (c = 0; c < a.length; c++) e = b.hasOwnProperty("$" + a[c].value), a[c].selected !== e && (a[c].selected = e), 
          e && d && (a[c].defaultSelected = !0);
        } else {
          c = "" + Sa(c);
          b = null;
          for (e = 0; e < a.length; e++) {
            if (a[e].value === c) {
              a[e].selected = !0;
              d && (a[e].defaultSelected = !0);
              return;
            }
            null !== b || a[e].disabled || (b = a[e]);
          }
          null !== b && (b.selected = !0);
        }
      }
      function gb(a, b) {
        if (null != b.dangerouslySetInnerHTML) throw Error(p(91));
        return A({}, b, {
          value: void 0,
          defaultValue: void 0,
          children: "" + a._wrapperState.initialValue
        });
      }
      function hb(a, b) {
        var c = b.value;
        if (null == c) {
          c = b.children;
          b = b.defaultValue;
          if (null != c) {
            if (null != b) throw Error(p(92));
            if (eb(c)) {
              if (1 < c.length) throw Error(p(93));
              c = c[0];
            }
            b = c;
          }
          null == b && (b = "");
          c = b;
        }
        a._wrapperState = {
          initialValue: Sa(c)
        };
      }
      function ib(a, b) {
        var c = Sa(b.value), d = Sa(b.defaultValue);
        null != c && (c = "" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));
        null != d && (a.defaultValue = "" + d);
      }
      function jb(a) {
        var b = a.textContent;
        b === a._wrapperState.initialValue && "" !== b && null !== b && (a.value = b);
      }
      function kb(a) {
        switch (a) {
         case "svg":
          return "http://www.w3.org/2000/svg";

         case "math":
          return "http://www.w3.org/1998/Math/MathML";

         default:
          return "http://www.w3.org/1999/xhtml";
        }
      }
      function lb(a, b) {
        return null == a || "http://www.w3.org/1999/xhtml" === a ? kb(b) : "http://www.w3.org/2000/svg" === a && "foreignObject" === b ? "http://www.w3.org/1999/xhtml" : a;
      }
      var mb, nb = function(a) {
        return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function(b, c, d, e) {
          MSApp.execUnsafeLocalFunction((function() {
            return a(b, c, d, e);
          }));
        } : a;
      }((function(a, b) {
        if ("http://www.w3.org/2000/svg" !== a.namespaceURI || "innerHTML" in a) a.innerHTML = b; else {
          mb = mb || document.createElement("div");
          mb.innerHTML = "<svg>" + b.valueOf().toString() + "</svg>";
          for (b = mb.firstChild; a.firstChild; ) a.removeChild(a.firstChild);
          for (;b.firstChild; ) a.appendChild(b.firstChild);
        }
      }));
      function ob(a, b) {
        if (b) {
          var c = a.firstChild;
          if (c && c === a.lastChild && 3 === c.nodeType) {
            c.nodeValue = b;
            return;
          }
        }
        a.textContent = b;
      }
      var pb = {
        animationIterationCount: !0,
        aspectRatio: !0,
        borderImageOutset: !0,
        borderImageSlice: !0,
        borderImageWidth: !0,
        boxFlex: !0,
        boxFlexGroup: !0,
        boxOrdinalGroup: !0,
        columnCount: !0,
        columns: !0,
        flex: !0,
        flexGrow: !0,
        flexPositive: !0,
        flexShrink: !0,
        flexNegative: !0,
        flexOrder: !0,
        gridArea: !0,
        gridRow: !0,
        gridRowEnd: !0,
        gridRowSpan: !0,
        gridRowStart: !0,
        gridColumn: !0,
        gridColumnEnd: !0,
        gridColumnSpan: !0,
        gridColumnStart: !0,
        fontWeight: !0,
        lineClamp: !0,
        lineHeight: !0,
        opacity: !0,
        order: !0,
        orphans: !0,
        tabSize: !0,
        widows: !0,
        zIndex: !0,
        zoom: !0,
        fillOpacity: !0,
        floodOpacity: !0,
        stopOpacity: !0,
        strokeDasharray: !0,
        strokeDashoffset: !0,
        strokeMiterlimit: !0,
        strokeOpacity: !0,
        strokeWidth: !0
      }, qb = [ "Webkit", "ms", "Moz", "O" ];
      Object.keys(pb).forEach((function(a) {
        qb.forEach((function(b) {
          b = b + a.charAt(0).toUpperCase() + a.substring(1);
          pb[b] = pb[a];
        }));
      }));
      function rb(a, b, c) {
        return null == b || "boolean" === typeof b || "" === b ? "" : c || "number" !== typeof b || 0 === b || pb.hasOwnProperty(a) && pb[a] ? ("" + b).trim() : b + "px";
      }
      function sb(a, b) {
        a = a.style;
        for (var c in b) if (b.hasOwnProperty(c)) {
          var d = 0 === c.indexOf("--"), e = rb(c, b[c], d);
          "float" === c && (c = "cssFloat");
          d ? a.setProperty(c, e) : a[c] = e;
        }
      }
      var tb = A({
        menuitem: !0
      }, {
        area: !0,
        base: !0,
        br: !0,
        col: !0,
        embed: !0,
        hr: !0,
        img: !0,
        input: !0,
        keygen: !0,
        link: !0,
        meta: !0,
        param: !0,
        source: !0,
        track: !0,
        wbr: !0
      });
      function ub(a, b) {
        if (b) {
          if (tb[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(p(137, a));
          if (null != b.dangerouslySetInnerHTML) {
            if (null != b.children) throw Error(p(60));
            if ("object" !== typeof b.dangerouslySetInnerHTML || !("__html" in b.dangerouslySetInnerHTML)) throw Error(p(61));
          }
          if (null != b.style && "object" !== typeof b.style) throw Error(p(62));
        }
      }
      function vb(a, b) {
        if (-1 === a.indexOf("-")) return "string" === typeof b.is;
        switch (a) {
         case "annotation-xml":
         case "color-profile":
         case "font-face":
         case "font-face-src":
         case "font-face-uri":
         case "font-face-format":
         case "font-face-name":
         case "missing-glyph":
          return !1;

         default:
          return !0;
        }
      }
      var wb = null;
      function xb(a) {
        a = a.target || a.srcElement || window;
        a.correspondingUseElement && (a = a.correspondingUseElement);
        return 3 === a.nodeType ? a.parentNode : a;
      }
      var yb = null, zb = null, Ab = null;
      function Bb(a) {
        if (a = Cb(a)) {
          if ("function" !== typeof yb) throw Error(p(280));
          var b = a.stateNode;
          b && (b = Db(b), yb(a.stateNode, a.type, b));
        }
      }
      function Eb(a) {
        zb ? Ab ? Ab.push(a) : Ab = [ a ] : zb = a;
      }
      function Fb() {
        if (zb) {
          var a = zb, b = Ab;
          Ab = zb = null;
          Bb(a);
          if (b) for (a = 0; a < b.length; a++) Bb(b[a]);
        }
      }
      function Gb(a, b) {
        return a(b);
      }
      function Hb() {}
      var Ib = !1;
      function Jb(a, b, c) {
        if (Ib) return a(b, c);
        Ib = !0;
        try {
          return Gb(a, b, c);
        } finally {
          if (Ib = !1, null !== zb || null !== Ab) Hb(), Fb();
        }
      }
      function Kb(a, b) {
        var c = a.stateNode;
        if (null === c) return null;
        var d = Db(c);
        if (null === d) return null;
        c = d[b];
        a: switch (b) {
         case "onClick":
         case "onClickCapture":
         case "onDoubleClick":
         case "onDoubleClickCapture":
         case "onMouseDown":
         case "onMouseDownCapture":
         case "onMouseMove":
         case "onMouseMoveCapture":
         case "onMouseUp":
         case "onMouseUpCapture":
         case "onMouseEnter":
          (d = !d.disabled) || (a = a.type, d = !("button" === a || "input" === a || "select" === a || "textarea" === a));
          a = !d;
          break a;

         default:
          a = !1;
        }
        if (a) return null;
        if (c && "function" !== typeof c) throw Error(p(231, b, typeof c));
        return c;
      }
      var Lb = !1;
      if (ia) try {
        var Mb = {};
        Object.defineProperty(Mb, "passive", {
          get: function() {
            Lb = !0;
          }
        });
        window.addEventListener("test", Mb, Mb);
        window.removeEventListener("test", Mb, Mb);
      } catch (a) {
        Lb = !1;
      }
      function Nb(a, b, c, d, e, f, g, h, k) {
        var l = Array.prototype.slice.call(arguments, 3);
        try {
          b.apply(c, l);
        } catch (m) {
          this.onError(m);
        }
      }
      var Ob = !1, Pb = null, Qb = !1, Rb = null, Sb = {
        onError: function(a) {
          Ob = !0;
          Pb = a;
        }
      };
      function Tb(a, b, c, d, e, f, g, h, k) {
        Ob = !1;
        Pb = null;
        Nb.apply(Sb, arguments);
      }
      function Ub(a, b, c, d, e, f, g, h, k) {
        Tb.apply(this, arguments);
        if (Ob) {
          if (Ob) {
            var l = Pb;
            Ob = !1;
            Pb = null;
          } else throw Error(p(198));
          Qb || (Qb = !0, Rb = l);
        }
      }
      function Vb(a) {
        var b = a, c = a;
        if (a.alternate) for (;b.return; ) b = b.return; else {
          a = b;
          do {
            b = a, 0 !== (b.flags & 4098) && (c = b.return), a = b.return;
          } while (a);
        }
        return 3 === b.tag ? c : null;
      }
      function Wb(a) {
        if (13 === a.tag) {
          var b = a.memoizedState;
          null === b && (a = a.alternate, null !== a && (b = a.memoizedState));
          if (null !== b) return b.dehydrated;
        }
        return null;
      }
      function Xb(a) {
        if (Vb(a) !== a) throw Error(p(188));
      }
      function Yb(a) {
        var b = a.alternate;
        if (!b) {
          b = Vb(a);
          if (null === b) throw Error(p(188));
          return b !== a ? null : a;
        }
        for (var c = a, d = b; ;) {
          var e = c.return;
          if (null === e) break;
          var f = e.alternate;
          if (null === f) {
            d = e.return;
            if (null !== d) {
              c = d;
              continue;
            }
            break;
          }
          if (e.child === f.child) {
            for (f = e.child; f; ) {
              if (f === c) return Xb(e), a;
              if (f === d) return Xb(e), b;
              f = f.sibling;
            }
            throw Error(p(188));
          }
          if (c.return !== d.return) c = e, d = f; else {
            for (var g = !1, h = e.child; h; ) {
              if (h === c) {
                g = !0;
                c = e;
                d = f;
                break;
              }
              if (h === d) {
                g = !0;
                d = e;
                c = f;
                break;
              }
              h = h.sibling;
            }
            if (!g) {
              for (h = f.child; h; ) {
                if (h === c) {
                  g = !0;
                  c = f;
                  d = e;
                  break;
                }
                if (h === d) {
                  g = !0;
                  d = f;
                  c = e;
                  break;
                }
                h = h.sibling;
              }
              if (!g) throw Error(p(189));
            }
          }
          if (c.alternate !== d) throw Error(p(190));
        }
        if (3 !== c.tag) throw Error(p(188));
        return c.stateNode.current === c ? a : b;
      }
      function Zb(a) {
        a = Yb(a);
        return null !== a ? $b(a) : null;
      }
      function $b(a) {
        if (5 === a.tag || 6 === a.tag) return a;
        for (a = a.child; null !== a; ) {
          var b = $b(a);
          if (null !== b) return b;
          a = a.sibling;
        }
        return null;
      }
      var ac = ca.unstable_scheduleCallback, bc = ca.unstable_cancelCallback, cc = ca.unstable_shouldYield, dc = ca.unstable_requestPaint, B = ca.unstable_now, ec = ca.unstable_getCurrentPriorityLevel, fc = ca.unstable_ImmediatePriority, gc = ca.unstable_UserBlockingPriority, hc = ca.unstable_NormalPriority, ic = ca.unstable_LowPriority, jc = ca.unstable_IdlePriority, kc = null, lc = null;
      function mc(a) {
        if (lc && "function" === typeof lc.onCommitFiberRoot) try {
          lc.onCommitFiberRoot(kc, a, void 0, 128 === (a.current.flags & 128));
        } catch (b) {}
      }
      var oc = Math.clz32 ? Math.clz32 : nc, pc = Math.log, qc = Math.LN2;
      function nc(a) {
        a >>>= 0;
        return 0 === a ? 32 : 31 - (pc(a) / qc | 0) | 0;
      }
      var rc = 64, sc = 4194304;
      function tc(a) {
        switch (a & -a) {
         case 1:
          return 1;

         case 2:
          return 2;

         case 4:
          return 4;

         case 8:
          return 8;

         case 16:
          return 16;

         case 32:
          return 32;

         case 64:
         case 128:
         case 256:
         case 512:
         case 1024:
         case 2048:
         case 4096:
         case 8192:
         case 16384:
         case 32768:
         case 65536:
         case 131072:
         case 262144:
         case 524288:
         case 1048576:
         case 2097152:
          return a & 4194240;

         case 4194304:
         case 8388608:
         case 16777216:
         case 33554432:
         case 67108864:
          return a & 130023424;

         case 134217728:
          return 134217728;

         case 268435456:
          return 268435456;

         case 536870912:
          return 536870912;

         case 1073741824:
          return 1073741824;

         default:
          return a;
        }
      }
      function uc(a, b) {
        var c = a.pendingLanes;
        if (0 === c) return 0;
        var d = 0, e = a.suspendedLanes, f = a.pingedLanes, g = c & 268435455;
        if (0 !== g) {
          var h = g & ~e;
          0 !== h ? d = tc(h) : (f &= g, 0 !== f && (d = tc(f)));
        } else g = c & ~e, 0 !== g ? d = tc(g) : 0 !== f && (d = tc(f));
        if (0 === d) return 0;
        if (0 !== b && b !== d && 0 === (b & e) && (e = d & -d, f = b & -b, e >= f || 16 === e && 0 !== (f & 4194240))) return b;
        0 !== (d & 4) && (d |= c & 16);
        b = a.entangledLanes;
        if (0 !== b) for (a = a.entanglements, b &= d; 0 < b; ) c = 31 - oc(b), e = 1 << c, 
        d |= a[c], b &= ~e;
        return d;
      }
      function vc(a, b) {
        switch (a) {
         case 1:
         case 2:
         case 4:
          return b + 250;

         case 8:
         case 16:
         case 32:
         case 64:
         case 128:
         case 256:
         case 512:
         case 1024:
         case 2048:
         case 4096:
         case 8192:
         case 16384:
         case 32768:
         case 65536:
         case 131072:
         case 262144:
         case 524288:
         case 1048576:
         case 2097152:
          return b + 5e3;

         case 4194304:
         case 8388608:
         case 16777216:
         case 33554432:
         case 67108864:
          return -1;

         case 134217728:
         case 268435456:
         case 536870912:
         case 1073741824:
          return -1;

         default:
          return -1;
        }
      }
      function wc(a, b) {
        for (var c = a.suspendedLanes, d = a.pingedLanes, e = a.expirationTimes, f = a.pendingLanes; 0 < f; ) {
          var g = 31 - oc(f), h = 1 << g, k = e[g];
          if (-1 === k) {
            if (0 === (h & c) || 0 !== (h & d)) e[g] = vc(h, b);
          } else k <= b && (a.expiredLanes |= h);
          f &= ~h;
        }
      }
      function xc(a) {
        a = a.pendingLanes & -1073741825;
        return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0;
      }
      function yc() {
        var a = rc;
        rc <<= 1;
        0 === (rc & 4194240) && (rc = 64);
        return a;
      }
      function zc(a) {
        for (var b = [], c = 0; 31 > c; c++) b.push(a);
        return b;
      }
      function Ac(a, b, c) {
        a.pendingLanes |= b;
        536870912 !== b && (a.suspendedLanes = 0, a.pingedLanes = 0);
        a = a.eventTimes;
        b = 31 - oc(b);
        a[b] = c;
      }
      function Bc(a, b) {
        var c = a.pendingLanes & ~b;
        a.pendingLanes = b;
        a.suspendedLanes = 0;
        a.pingedLanes = 0;
        a.expiredLanes &= b;
        a.mutableReadLanes &= b;
        a.entangledLanes &= b;
        b = a.entanglements;
        var d = a.eventTimes;
        for (a = a.expirationTimes; 0 < c; ) {
          var e = 31 - oc(c), f = 1 << e;
          b[e] = 0;
          d[e] = -1;
          a[e] = -1;
          c &= ~f;
        }
      }
      function Cc(a, b) {
        var c = a.entangledLanes |= b;
        for (a = a.entanglements; c; ) {
          var d = 31 - oc(c), e = 1 << d;
          e & b | a[d] & b && (a[d] |= b);
          c &= ~e;
        }
      }
      var C = 0;
      function Dc(a) {
        a &= -a;
        return 1 < a ? 4 < a ? 0 !== (a & 268435455) ? 16 : 536870912 : 4 : 1;
      }
      var Ec, Fc, Gc, Hc, Ic, Jc = !1, Kc = [], Lc = null, Mc = null, Nc = null, Oc = new Map, Pc = new Map, Qc = [], Rc = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");
      function Sc(a, b) {
        switch (a) {
         case "focusin":
         case "focusout":
          Lc = null;
          break;

         case "dragenter":
         case "dragleave":
          Mc = null;
          break;

         case "mouseover":
         case "mouseout":
          Nc = null;
          break;

         case "pointerover":
         case "pointerout":
          Oc.delete(b.pointerId);
          break;

         case "gotpointercapture":
         case "lostpointercapture":
          Pc.delete(b.pointerId);
        }
      }
      function Tc(a, b, c, d, e, f) {
        if (null === a || a.nativeEvent !== f) return a = {
          blockedOn: b,
          domEventName: c,
          eventSystemFlags: d,
          nativeEvent: f,
          targetContainers: [ e ]
        }, null !== b && (b = Cb(b), null !== b && Fc(b)), a;
        a.eventSystemFlags |= d;
        b = a.targetContainers;
        null !== e && -1 === b.indexOf(e) && b.push(e);
        return a;
      }
      function Uc(a, b, c, d, e) {
        switch (b) {
         case "focusin":
          return Lc = Tc(Lc, a, b, c, d, e), !0;

         case "dragenter":
          return Mc = Tc(Mc, a, b, c, d, e), !0;

         case "mouseover":
          return Nc = Tc(Nc, a, b, c, d, e), !0;

         case "pointerover":
          var f = e.pointerId;
          Oc.set(f, Tc(Oc.get(f) || null, a, b, c, d, e));
          return !0;

         case "gotpointercapture":
          return f = e.pointerId, Pc.set(f, Tc(Pc.get(f) || null, a, b, c, d, e)), !0;
        }
        return !1;
      }
      function Vc(a) {
        var b = Wc(a.target);
        if (null !== b) {
          var c = Vb(b);
          if (null !== c) if (b = c.tag, 13 === b) {
            if (b = Wb(c), null !== b) {
              a.blockedOn = b;
              Ic(a.priority, (function() {
                Gc(c);
              }));
              return;
            }
          } else if (3 === b && c.stateNode.current.memoizedState.isDehydrated) {
            a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;
            return;
          }
        }
        a.blockedOn = null;
      }
      function Xc(a) {
        if (null !== a.blockedOn) return !1;
        for (var b = a.targetContainers; 0 < b.length; ) {
          var c = Yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);
          if (null === c) {
            c = a.nativeEvent;
            var d = new c.constructor(c.type, c);
            wb = d;
            c.target.dispatchEvent(d);
            wb = null;
          } else return b = Cb(c), null !== b && Fc(b), a.blockedOn = c, !1;
          b.shift();
        }
        return !0;
      }
      function Zc(a, b, c) {
        Xc(a) && c.delete(b);
      }
      function $c() {
        Jc = !1;
        null !== Lc && Xc(Lc) && (Lc = null);
        null !== Mc && Xc(Mc) && (Mc = null);
        null !== Nc && Xc(Nc) && (Nc = null);
        Oc.forEach(Zc);
        Pc.forEach(Zc);
      }
      function ad(a, b) {
        a.blockedOn === b && (a.blockedOn = null, Jc || (Jc = !0, ca.unstable_scheduleCallback(ca.unstable_NormalPriority, $c)));
      }
      function bd(a) {
        function b(b) {
          return ad(b, a);
        }
        if (0 < Kc.length) {
          ad(Kc[0], a);
          for (var c = 1; c < Kc.length; c++) {
            var d = Kc[c];
            d.blockedOn === a && (d.blockedOn = null);
          }
        }
        null !== Lc && ad(Lc, a);
        null !== Mc && ad(Mc, a);
        null !== Nc && ad(Nc, a);
        Oc.forEach(b);
        Pc.forEach(b);
        for (c = 0; c < Qc.length; c++) d = Qc[c], d.blockedOn === a && (d.blockedOn = null);
        for (;0 < Qc.length && (c = Qc[0], null === c.blockedOn); ) Vc(c), null === c.blockedOn && Qc.shift();
      }
      var cd = ua.ReactCurrentBatchConfig, dd = !0;
      function ed(a, b, c, d) {
        var e = C, f = cd.transition;
        cd.transition = null;
        try {
          C = 1, fd(a, b, c, d);
        } finally {
          C = e, cd.transition = f;
        }
      }
      function gd(a, b, c, d) {
        var e = C, f = cd.transition;
        cd.transition = null;
        try {
          C = 4, fd(a, b, c, d);
        } finally {
          C = e, cd.transition = f;
        }
      }
      function fd(a, b, c, d) {
        if (dd) {
          var e = Yc(a, b, c, d);
          if (null === e) hd(a, b, d, id, c), Sc(a, d); else if (Uc(e, a, b, c, d)) d.stopPropagation(); else if (Sc(a, d), 
          b & 4 && -1 < Rc.indexOf(a)) {
            for (;null !== e; ) {
              var f = Cb(e);
              null !== f && Ec(f);
              f = Yc(a, b, c, d);
              null === f && hd(a, b, d, id, c);
              if (f === e) break;
              e = f;
            }
            null !== e && d.stopPropagation();
          } else hd(a, b, d, null, c);
        }
      }
      var id = null;
      function Yc(a, b, c, d) {
        id = null;
        a = xb(d);
        a = Wc(a);
        if (null !== a) if (b = Vb(a), null === b) a = null; else if (c = b.tag, 13 === c) {
          a = Wb(b);
          if (null !== a) return a;
          a = null;
        } else if (3 === c) {
          if (b.stateNode.current.memoizedState.isDehydrated) return 3 === b.tag ? b.stateNode.containerInfo : null;
          a = null;
        } else b !== a && (a = null);
        id = a;
        return null;
      }
      function jd(a) {
        switch (a) {
         case "cancel":
         case "click":
         case "close":
         case "contextmenu":
         case "copy":
         case "cut":
         case "auxclick":
         case "dblclick":
         case "dragend":
         case "dragstart":
         case "drop":
         case "focusin":
         case "focusout":
         case "input":
         case "invalid":
         case "keydown":
         case "keypress":
         case "keyup":
         case "mousedown":
         case "mouseup":
         case "paste":
         case "pause":
         case "play":
         case "pointercancel":
         case "pointerdown":
         case "pointerup":
         case "ratechange":
         case "reset":
         case "resize":
         case "seeked":
         case "submit":
         case "touchcancel":
         case "touchend":
         case "touchstart":
         case "volumechange":
         case "change":
         case "selectionchange":
         case "textInput":
         case "compositionstart":
         case "compositionend":
         case "compositionupdate":
         case "beforeblur":
         case "afterblur":
         case "beforeinput":
         case "blur":
         case "fullscreenchange":
         case "focus":
         case "hashchange":
         case "popstate":
         case "select":
         case "selectstart":
          return 1;

         case "drag":
         case "dragenter":
         case "dragexit":
         case "dragleave":
         case "dragover":
         case "mousemove":
         case "mouseout":
         case "mouseover":
         case "pointermove":
         case "pointerout":
         case "pointerover":
         case "scroll":
         case "toggle":
         case "touchmove":
         case "wheel":
         case "mouseenter":
         case "mouseleave":
         case "pointerenter":
         case "pointerleave":
          return 4;

         case "message":
          switch (ec()) {
           case fc:
            return 1;

           case gc:
            return 4;

           case hc:
           case ic:
            return 16;

           case jc:
            return 536870912;

           default:
            return 16;
          }

         default:
          return 16;
        }
      }
      var kd = null, ld = null, md = null;
      function nd() {
        if (md) return md;
        var a, b = ld, c = b.length, d, e = "value" in kd ? kd.value : kd.textContent, f = e.length;
        for (a = 0; a < c && b[a] === e[a]; a++) ;
        var g = c - a;
        for (d = 1; d <= g && b[c - d] === e[f - d]; d++) ;
        return md = e.slice(a, 1 < d ? 1 - d : void 0);
      }
      function od(a) {
        var b = a.keyCode;
        "charCode" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;
        10 === a && (a = 13);
        return 32 <= a || 13 === a ? a : 0;
      }
      function pd() {
        return !0;
      }
      function qd() {
        return !1;
      }
      function rd(a) {
        function b(b, d, e, f, g) {
          this._reactName = b;
          this._targetInst = e;
          this.type = d;
          this.nativeEvent = f;
          this.target = g;
          this.currentTarget = null;
          for (var c in a) a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]);
          this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? pd : qd;
          this.isPropagationStopped = qd;
          return this;
        }
        A(b.prototype, {
          preventDefault: function() {
            this.defaultPrevented = !0;
            var a = this.nativeEvent;
            a && (a.preventDefault ? a.preventDefault() : "unknown" !== typeof a.returnValue && (a.returnValue = !1), 
            this.isDefaultPrevented = pd);
          },
          stopPropagation: function() {
            var a = this.nativeEvent;
            a && (a.stopPropagation ? a.stopPropagation() : "unknown" !== typeof a.cancelBubble && (a.cancelBubble = !0), 
            this.isPropagationStopped = pd);
          },
          persist: function() {},
          isPersistent: pd
        });
        return b;
      }
      var sd = {
        eventPhase: 0,
        bubbles: 0,
        cancelable: 0,
        timeStamp: function(a) {
          return a.timeStamp || Date.now();
        },
        defaultPrevented: 0,
        isTrusted: 0
      }, td = rd(sd), ud = A({}, sd, {
        view: 0,
        detail: 0
      }), vd = rd(ud), wd, xd, yd, Ad = A({}, ud, {
        screenX: 0,
        screenY: 0,
        clientX: 0,
        clientY: 0,
        pageX: 0,
        pageY: 0,
        ctrlKey: 0,
        shiftKey: 0,
        altKey: 0,
        metaKey: 0,
        getModifierState: zd,
        button: 0,
        buttons: 0,
        relatedTarget: function(a) {
          return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;
        },
        movementX: function(a) {
          if ("movementX" in a) return a.movementX;
          a !== yd && (yd && "mousemove" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, 
          yd = a);
          return wd;
        },
        movementY: function(a) {
          return "movementY" in a ? a.movementY : xd;
        }
      }), Bd = rd(Ad), Cd = A({}, Ad, {
        dataTransfer: 0
      }), Dd = rd(Cd), Ed = A({}, ud, {
        relatedTarget: 0
      }), Fd = rd(Ed), Gd = A({}, sd, {
        animationName: 0,
        elapsedTime: 0,
        pseudoElement: 0
      }), Hd = rd(Gd), Id = A({}, sd, {
        clipboardData: function(a) {
          return "clipboardData" in a ? a.clipboardData : window.clipboardData;
        }
      }), Jd = rd(Id), Kd = A({}, sd, {
        data: 0
      }), Ld = rd(Kd), Md = {
        Esc: "Escape",
        Spacebar: " ",
        Left: "ArrowLeft",
        Up: "ArrowUp",
        Right: "ArrowRight",
        Down: "ArrowDown",
        Del: "Delete",
        Win: "OS",
        Menu: "ContextMenu",
        Apps: "ContextMenu",
        Scroll: "ScrollLock",
        MozPrintableKey: "Unidentified"
      }, Nd = {
        8: "Backspace",
        9: "Tab",
        12: "Clear",
        13: "Enter",
        16: "Shift",
        17: "Control",
        18: "Alt",
        19: "Pause",
        20: "CapsLock",
        27: "Escape",
        32: " ",
        33: "PageUp",
        34: "PageDown",
        35: "End",
        36: "Home",
        37: "ArrowLeft",
        38: "ArrowUp",
        39: "ArrowRight",
        40: "ArrowDown",
        45: "Insert",
        46: "Delete",
        112: "F1",
        113: "F2",
        114: "F3",
        115: "F4",
        116: "F5",
        117: "F6",
        118: "F7",
        119: "F8",
        120: "F9",
        121: "F10",
        122: "F11",
        123: "F12",
        144: "NumLock",
        145: "ScrollLock",
        224: "Meta"
      }, Od = {
        Alt: "altKey",
        Control: "ctrlKey",
        Meta: "metaKey",
        Shift: "shiftKey"
      };
      function Pd(a) {
        var b = this.nativeEvent;
        return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1;
      }
      function zd() {
        return Pd;
      }
      var Qd = A({}, ud, {
        key: function(a) {
          if (a.key) {
            var b = Md[a.key] || a.key;
            if ("Unidentified" !== b) return b;
          }
          return "keypress" === a.type ? (a = od(a), 13 === a ? "Enter" : String.fromCharCode(a)) : "keydown" === a.type || "keyup" === a.type ? Nd[a.keyCode] || "Unidentified" : "";
        },
        code: 0,
        location: 0,
        ctrlKey: 0,
        shiftKey: 0,
        altKey: 0,
        metaKey: 0,
        repeat: 0,
        locale: 0,
        getModifierState: zd,
        charCode: function(a) {
          return "keypress" === a.type ? od(a) : 0;
        },
        keyCode: function(a) {
          return "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0;
        },
        which: function(a) {
          return "keypress" === a.type ? od(a) : "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0;
        }
      }), Rd = rd(Qd), Sd = A({}, Ad, {
        pointerId: 0,
        width: 0,
        height: 0,
        pressure: 0,
        tangentialPressure: 0,
        tiltX: 0,
        tiltY: 0,
        twist: 0,
        pointerType: 0,
        isPrimary: 0
      }), Td = rd(Sd), Ud = A({}, ud, {
        touches: 0,
        targetTouches: 0,
        changedTouches: 0,
        altKey: 0,
        metaKey: 0,
        ctrlKey: 0,
        shiftKey: 0,
        getModifierState: zd
      }), Vd = rd(Ud), Wd = A({}, sd, {
        propertyName: 0,
        elapsedTime: 0,
        pseudoElement: 0
      }), Xd = rd(Wd), Yd = A({}, Ad, {
        deltaX: function(a) {
          return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0;
        },
        deltaY: function(a) {
          return "deltaY" in a ? a.deltaY : "wheelDeltaY" in a ? -a.wheelDeltaY : "wheelDelta" in a ? -a.wheelDelta : 0;
        },
        deltaZ: 0,
        deltaMode: 0
      }), Zd = rd(Yd), $d = [ 9, 13, 27, 32 ], ae = ia && "CompositionEvent" in window, be = null;
      ia && "documentMode" in document && (be = document.documentMode);
      var ce = ia && "TextEvent" in window && !be, de = ia && (!ae || be && 8 < be && 11 >= be), ee = String.fromCharCode(32), fe = !1;
      function ge(a, b) {
        switch (a) {
         case "keyup":
          return -1 !== $d.indexOf(b.keyCode);

         case "keydown":
          return 229 !== b.keyCode;

         case "keypress":
         case "mousedown":
         case "focusout":
          return !0;

         default:
          return !1;
        }
      }
      function he(a) {
        a = a.detail;
        return "object" === typeof a && "data" in a ? a.data : null;
      }
      var ie = !1;
      function je(a, b) {
        switch (a) {
         case "compositionend":
          return he(b);

         case "keypress":
          if (32 !== b.which) return null;
          fe = !0;
          return ee;

         case "textInput":
          return a = b.data, a === ee && fe ? null : a;

         default:
          return null;
        }
      }
      function ke(a, b) {
        if (ie) return "compositionend" === a || !ae && ge(a, b) ? (a = nd(), md = ld = kd = null, 
        ie = !1, a) : null;
        switch (a) {
         case "paste":
          return null;

         case "keypress":
          if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {
            if (b.char && 1 < b.char.length) return b.char;
            if (b.which) return String.fromCharCode(b.which);
          }
          return null;

         case "compositionend":
          return de && "ko" !== b.locale ? null : b.data;

         default:
          return null;
        }
      }
      var le = {
        color: !0,
        date: !0,
        datetime: !0,
        "datetime-local": !0,
        email: !0,
        month: !0,
        number: !0,
        password: !0,
        range: !0,
        search: !0,
        tel: !0,
        text: !0,
        time: !0,
        url: !0,
        week: !0
      };
      function me(a) {
        var b = a && a.nodeName && a.nodeName.toLowerCase();
        return "input" === b ? !!le[a.type] : "textarea" === b ? !0 : !1;
      }
      function ne(a, b, c, d) {
        Eb(d);
        b = oe(b, "onChange");
        0 < b.length && (c = new td("onChange", "change", null, c, d), a.push({
          event: c,
          listeners: b
        }));
      }
      var pe = null, qe = null;
      function re(a) {
        se(a, 0);
      }
      function te(a) {
        var b = ue(a);
        if (Wa(b)) return a;
      }
      function ve(a, b) {
        if ("change" === a) return b;
      }
      var we = !1;
      if (ia) {
        var xe;
        if (ia) {
          var ye = "oninput" in document;
          if (!ye) {
            var ze = document.createElement("div");
            ze.setAttribute("oninput", "return;");
            ye = "function" === typeof ze.oninput;
          }
          xe = ye;
        } else xe = !1;
        we = xe && (!document.documentMode || 9 < document.documentMode);
      }
      function Ae() {
        pe && (pe.detachEvent("onpropertychange", Be), qe = pe = null);
      }
      function Be(a) {
        if ("value" === a.propertyName && te(qe)) {
          var b = [];
          ne(b, qe, a, xb(a));
          Jb(re, b);
        }
      }
      function Ce(a, b, c) {
        "focusin" === a ? (Ae(), pe = b, qe = c, pe.attachEvent("onpropertychange", Be)) : "focusout" === a && Ae();
      }
      function De(a) {
        if ("selectionchange" === a || "keyup" === a || "keydown" === a) return te(qe);
      }
      function Ee(a, b) {
        if ("click" === a) return te(b);
      }
      function Fe(a, b) {
        if ("input" === a || "change" === a) return te(b);
      }
      function Ge(a, b) {
        return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;
      }
      var He = "function" === typeof Object.is ? Object.is : Ge;
      function Ie(a, b) {
        if (He(a, b)) return !0;
        if ("object" !== typeof a || null === a || "object" !== typeof b || null === b) return !1;
        var c = Object.keys(a), d = Object.keys(b);
        if (c.length !== d.length) return !1;
        for (d = 0; d < c.length; d++) {
          var e = c[d];
          if (!ja.call(b, e) || !He(a[e], b[e])) return !1;
        }
        return !0;
      }
      function Je(a) {
        for (;a && a.firstChild; ) a = a.firstChild;
        return a;
      }
      function Ke(a, b) {
        var c = Je(a);
        a = 0;
        for (var d; c; ) {
          if (3 === c.nodeType) {
            d = a + c.textContent.length;
            if (a <= b && d >= b) return {
              node: c,
              offset: b - a
            };
            a = d;
          }
          a: {
            for (;c; ) {
              if (c.nextSibling) {
                c = c.nextSibling;
                break a;
              }
              c = c.parentNode;
            }
            c = void 0;
          }
          c = Je(c);
        }
      }
      function Le(a, b) {
        return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? Le(a, b.parentNode) : "contains" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;
      }
      function Me() {
        for (var a = window, b = Xa(); b instanceof a.HTMLIFrameElement; ) {
          try {
            var c = "string" === typeof b.contentWindow.location.href;
          } catch (d) {
            c = !1;
          }
          if (c) a = b.contentWindow; else break;
          b = Xa(a.document);
        }
        return b;
      }
      function Ne(a) {
        var b = a && a.nodeName && a.nodeName.toLowerCase();
        return b && ("input" === b && ("text" === a.type || "search" === a.type || "tel" === a.type || "url" === a.type || "password" === a.type) || "textarea" === b || "true" === a.contentEditable);
      }
      function Oe(a) {
        var b = Me(), c = a.focusedElem, d = a.selectionRange;
        if (b !== c && c && c.ownerDocument && Le(c.ownerDocument.documentElement, c)) {
          if (null !== d && Ne(c)) if (b = d.start, a = d.end, void 0 === a && (a = b), "selectionStart" in c) c.selectionStart = b, 
          c.selectionEnd = Math.min(a, c.value.length); else if (a = (b = c.ownerDocument || document) && b.defaultView || window, 
          a.getSelection) {
            a = a.getSelection();
            var e = c.textContent.length, f = Math.min(d.start, e);
            d = void 0 === d.end ? f : Math.min(d.end, e);
            !a.extend && f > d && (e = d, d = f, f = e);
            e = Ke(c, f);
            var g = Ke(c, d);
            e && g && (1 !== a.rangeCount || a.anchorNode !== e.node || a.anchorOffset !== e.offset || a.focusNode !== g.node || a.focusOffset !== g.offset) && (b = b.createRange(), 
            b.setStart(e.node, e.offset), a.removeAllRanges(), f > d ? (a.addRange(b), a.extend(g.node, g.offset)) : (b.setEnd(g.node, g.offset), 
            a.addRange(b)));
          }
          b = [];
          for (a = c; a = a.parentNode; ) 1 === a.nodeType && b.push({
            element: a,
            left: a.scrollLeft,
            top: a.scrollTop
          });
          "function" === typeof c.focus && c.focus();
          for (c = 0; c < b.length; c++) a = b[c], a.element.scrollLeft = a.left, a.element.scrollTop = a.top;
        }
      }
      var Pe = ia && "documentMode" in document && 11 >= document.documentMode, Qe = null, Re = null, Se = null, Te = !1;
      function Ue(a, b, c) {
        var d = c.window === c ? c.document : 9 === c.nodeType ? c : c.ownerDocument;
        Te || null == Qe || Qe !== Xa(d) || (d = Qe, "selectionStart" in d && Ne(d) ? d = {
          start: d.selectionStart,
          end: d.selectionEnd
        } : (d = (d.ownerDocument && d.ownerDocument.defaultView || window).getSelection(), 
        d = {
          anchorNode: d.anchorNode,
          anchorOffset: d.anchorOffset,
          focusNode: d.focusNode,
          focusOffset: d.focusOffset
        }), Se && Ie(Se, d) || (Se = d, d = oe(Re, "onSelect"), 0 < d.length && (b = new td("onSelect", "select", null, b, c), 
        a.push({
          event: b,
          listeners: d
        }), b.target = Qe)));
      }
      function Ve(a, b) {
        var c = {};
        c[a.toLowerCase()] = b.toLowerCase();
        c["Webkit" + a] = "webkit" + b;
        c["Moz" + a] = "moz" + b;
        return c;
      }
      var We = {
        animationend: Ve("Animation", "AnimationEnd"),
        animationiteration: Ve("Animation", "AnimationIteration"),
        animationstart: Ve("Animation", "AnimationStart"),
        transitionend: Ve("Transition", "TransitionEnd")
      }, Xe = {}, Ye = {};
      ia && (Ye = document.createElement("div").style, "AnimationEvent" in window || (delete We.animationend.animation, 
      delete We.animationiteration.animation, delete We.animationstart.animation), "TransitionEvent" in window || delete We.transitionend.transition);
      function Ze(a) {
        if (Xe[a]) return Xe[a];
        if (!We[a]) return a;
        var b = We[a], c;
        for (c in b) if (b.hasOwnProperty(c) && c in Ye) return Xe[a] = b[c];
        return a;
      }
      var $e = Ze("animationend"), af = Ze("animationiteration"), bf = Ze("animationstart"), cf = Ze("transitionend"), df = new Map, ef = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");
      function ff(a, b) {
        df.set(a, b);
        fa(b, [ a ]);
      }
      for (var gf = 0; gf < ef.length; gf++) {
        var hf = ef[gf], jf = hf.toLowerCase(), kf = hf[0].toUpperCase() + hf.slice(1);
        ff(jf, "on" + kf);
      }
      ff($e, "onAnimationEnd");
      ff(af, "onAnimationIteration");
      ff(bf, "onAnimationStart");
      ff("dblclick", "onDoubleClick");
      ff("focusin", "onFocus");
      ff("focusout", "onBlur");
      ff(cf, "onTransitionEnd");
      ha("onMouseEnter", [ "mouseout", "mouseover" ]);
      ha("onMouseLeave", [ "mouseout", "mouseover" ]);
      ha("onPointerEnter", [ "pointerout", "pointerover" ]);
      ha("onPointerLeave", [ "pointerout", "pointerover" ]);
      fa("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" "));
      fa("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));
      fa("onBeforeInput", [ "compositionend", "keypress", "textInput", "paste" ]);
      fa("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" "));
      fa("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" "));
      fa("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" "));
      var lf = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), mf = new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));
      function nf(a, b, c) {
        var d = a.type || "unknown-event";
        a.currentTarget = c;
        Ub(d, b, void 0, a);
        a.currentTarget = null;
      }
      function se(a, b) {
        b = 0 !== (b & 4);
        for (var c = 0; c < a.length; c++) {
          var d = a[c], e = d.event;
          d = d.listeners;
          a: {
            var f = void 0;
            if (b) for (var g = d.length - 1; 0 <= g; g--) {
              var h = d[g], k = h.instance, l = h.currentTarget;
              h = h.listener;
              if (k !== f && e.isPropagationStopped()) break a;
              nf(e, h, l);
              f = k;
            } else for (g = 0; g < d.length; g++) {
              h = d[g];
              k = h.instance;
              l = h.currentTarget;
              h = h.listener;
              if (k !== f && e.isPropagationStopped()) break a;
              nf(e, h, l);
              f = k;
            }
          }
        }
        if (Qb) throw a = Rb, Qb = !1, Rb = null, a;
      }
      function D(a, b) {
        var c = b[of];
        void 0 === c && (c = b[of] = new Set);
        var d = a + "__bubble";
        c.has(d) || (pf(b, a, 2, !1), c.add(d));
      }
      function qf(a, b, c) {
        var d = 0;
        b && (d |= 4);
        pf(c, a, d, b);
      }
      var rf = "_reactListening" + Math.random().toString(36).slice(2);
      function sf(a) {
        if (!a[rf]) {
          a[rf] = !0;
          da.forEach((function(b) {
            "selectionchange" !== b && (mf.has(b) || qf(b, !1, a), qf(b, !0, a));
          }));
          var b = 9 === a.nodeType ? a : a.ownerDocument;
          null === b || b[rf] || (b[rf] = !0, qf("selectionchange", !1, b));
        }
      }
      function pf(a, b, c, d) {
        switch (jd(b)) {
         case 1:
          var e = ed;
          break;

         case 4:
          e = gd;
          break;

         default:
          e = fd;
        }
        c = e.bind(null, b, c, a);
        e = void 0;
        !Lb || "touchstart" !== b && "touchmove" !== b && "wheel" !== b || (e = !0);
        d ? void 0 !== e ? a.addEventListener(b, c, {
          capture: !0,
          passive: e
        }) : a.addEventListener(b, c, !0) : void 0 !== e ? a.addEventListener(b, c, {
          passive: e
        }) : a.addEventListener(b, c, !1);
      }
      function hd(a, b, c, d, e) {
        var f = d;
        if (0 === (b & 1) && 0 === (b & 2) && null !== d) a: for (;;) {
          if (null === d) return;
          var g = d.tag;
          if (3 === g || 4 === g) {
            var h = d.stateNode.containerInfo;
            if (h === e || 8 === h.nodeType && h.parentNode === e) break;
            if (4 === g) for (g = d.return; null !== g; ) {
              var k = g.tag;
              if (3 === k || 4 === k) if (k = g.stateNode.containerInfo, k === e || 8 === k.nodeType && k.parentNode === e) return;
              g = g.return;
            }
            for (;null !== h; ) {
              g = Wc(h);
              if (null === g) return;
              k = g.tag;
              if (5 === k || 6 === k) {
                d = f = g;
                continue a;
              }
              h = h.parentNode;
            }
          }
          d = d.return;
        }
        Jb((function() {
          var d = f, e = xb(c), g = [];
          a: {
            var h = df.get(a);
            if (void 0 !== h) {
              var k = td, n = a;
              switch (a) {
               case "keypress":
                if (0 === od(c)) break a;

               case "keydown":
               case "keyup":
                k = Rd;
                break;

               case "focusin":
                n = "focus";
                k = Fd;
                break;

               case "focusout":
                n = "blur";
                k = Fd;
                break;

               case "beforeblur":
               case "afterblur":
                k = Fd;
                break;

               case "click":
                if (2 === c.button) break a;

               case "auxclick":
               case "dblclick":
               case "mousedown":
               case "mousemove":
               case "mouseup":
               case "mouseout":
               case "mouseover":
               case "contextmenu":
                k = Bd;
                break;

               case "drag":
               case "dragend":
               case "dragenter":
               case "dragexit":
               case "dragleave":
               case "dragover":
               case "dragstart":
               case "drop":
                k = Dd;
                break;

               case "touchcancel":
               case "touchend":
               case "touchmove":
               case "touchstart":
                k = Vd;
                break;

               case $e:
               case af:
               case bf:
                k = Hd;
                break;

               case cf:
                k = Xd;
                break;

               case "scroll":
                k = vd;
                break;

               case "wheel":
                k = Zd;
                break;

               case "copy":
               case "cut":
               case "paste":
                k = Jd;
                break;

               case "gotpointercapture":
               case "lostpointercapture":
               case "pointercancel":
               case "pointerdown":
               case "pointermove":
               case "pointerout":
               case "pointerover":
               case "pointerup":
                k = Td;
              }
              var t = 0 !== (b & 4), J = !t && "scroll" === a, x = t ? null !== h ? h + "Capture" : null : h;
              t = [];
              for (var w = d, u; null !== w; ) {
                u = w;
                var F = u.stateNode;
                5 === u.tag && null !== F && (u = F, null !== x && (F = Kb(w, x), null != F && t.push(tf(w, F, u))));
                if (J) break;
                w = w.return;
              }
              0 < t.length && (h = new k(h, n, null, c, e), g.push({
                event: h,
                listeners: t
              }));
            }
          }
          if (0 === (b & 7)) {
            a: {
              h = "mouseover" === a || "pointerover" === a;
              k = "mouseout" === a || "pointerout" === a;
              if (h && c !== wb && (n = c.relatedTarget || c.fromElement) && (Wc(n) || n[uf])) break a;
              if (k || h) {
                h = e.window === e ? e : (h = e.ownerDocument) ? h.defaultView || h.parentWindow : window;
                if (k) {
                  if (n = c.relatedTarget || c.toElement, k = d, n = n ? Wc(n) : null, null !== n && (J = Vb(n), 
                  n !== J || 5 !== n.tag && 6 !== n.tag)) n = null;
                } else k = null, n = d;
                if (k !== n) {
                  t = Bd;
                  F = "onMouseLeave";
                  x = "onMouseEnter";
                  w = "mouse";
                  if ("pointerout" === a || "pointerover" === a) t = Td, F = "onPointerLeave", x = "onPointerEnter", 
                  w = "pointer";
                  J = null == k ? h : ue(k);
                  u = null == n ? h : ue(n);
                  h = new t(F, w + "leave", k, c, e);
                  h.target = J;
                  h.relatedTarget = u;
                  F = null;
                  Wc(e) === d && (t = new t(x, w + "enter", n, c, e), t.target = u, t.relatedTarget = J, 
                  F = t);
                  J = F;
                  if (k && n) b: {
                    t = k;
                    x = n;
                    w = 0;
                    for (u = t; u; u = vf(u)) w++;
                    u = 0;
                    for (F = x; F; F = vf(F)) u++;
                    for (;0 < w - u; ) t = vf(t), w--;
                    for (;0 < u - w; ) x = vf(x), u--;
                    for (;w--; ) {
                      if (t === x || null !== x && t === x.alternate) break b;
                      t = vf(t);
                      x = vf(x);
                    }
                    t = null;
                  } else t = null;
                  null !== k && wf(g, h, k, t, !1);
                  null !== n && null !== J && wf(g, J, n, t, !0);
                }
              }
            }
            a: {
              h = d ? ue(d) : window;
              k = h.nodeName && h.nodeName.toLowerCase();
              if ("select" === k || "input" === k && "file" === h.type) var na = ve; else if (me(h)) if (we) na = Fe; else {
                na = De;
                var xa = Ce;
              } else (k = h.nodeName) && "input" === k.toLowerCase() && ("checkbox" === h.type || "radio" === h.type) && (na = Ee);
              if (na && (na = na(a, d))) {
                ne(g, na, c, e);
                break a;
              }
              xa && xa(a, h, d);
              "focusout" === a && (xa = h._wrapperState) && xa.controlled && "number" === h.type && cb(h, "number", h.value);
            }
            xa = d ? ue(d) : window;
            switch (a) {
             case "focusin":
              if (me(xa) || "true" === xa.contentEditable) Qe = xa, Re = d, Se = null;
              break;

             case "focusout":
              Se = Re = Qe = null;
              break;

             case "mousedown":
              Te = !0;
              break;

             case "contextmenu":
             case "mouseup":
             case "dragend":
              Te = !1;
              Ue(g, c, e);
              break;

             case "selectionchange":
              if (Pe) break;

             case "keydown":
             case "keyup":
              Ue(g, c, e);
            }
            var $a;
            if (ae) b: {
              switch (a) {
               case "compositionstart":
                var ba = "onCompositionStart";
                break b;

               case "compositionend":
                ba = "onCompositionEnd";
                break b;

               case "compositionupdate":
                ba = "onCompositionUpdate";
                break b;
              }
              ba = void 0;
            } else ie ? ge(a, c) && (ba = "onCompositionEnd") : "keydown" === a && 229 === c.keyCode && (ba = "onCompositionStart");
            ba && (de && "ko" !== c.locale && (ie || "onCompositionStart" !== ba ? "onCompositionEnd" === ba && ie && ($a = nd()) : (kd = e, 
            ld = "value" in kd ? kd.value : kd.textContent, ie = !0)), xa = oe(d, ba), 0 < xa.length && (ba = new Ld(ba, a, null, c, e), 
            g.push({
              event: ba,
              listeners: xa
            }), $a ? ba.data = $a : ($a = he(c), null !== $a && (ba.data = $a))));
            if ($a = ce ? je(a, c) : ke(a, c)) d = oe(d, "onBeforeInput"), 0 < d.length && (e = new Ld("onBeforeInput", "beforeinput", null, c, e), 
            g.push({
              event: e,
              listeners: d
            }), e.data = $a);
          }
          se(g, b);
        }));
      }
      function tf(a, b, c) {
        return {
          instance: a,
          listener: b,
          currentTarget: c
        };
      }
      function oe(a, b) {
        for (var c = b + "Capture", d = []; null !== a; ) {
          var e = a, f = e.stateNode;
          5 === e.tag && null !== f && (e = f, f = Kb(a, c), null != f && d.unshift(tf(a, f, e)), 
          f = Kb(a, b), null != f && d.push(tf(a, f, e)));
          a = a.return;
        }
        return d;
      }
      function vf(a) {
        if (null === a) return null;
        do {
          a = a.return;
        } while (a && 5 !== a.tag);
        return a ? a : null;
      }
      function wf(a, b, c, d, e) {
        for (var f = b._reactName, g = []; null !== c && c !== d; ) {
          var h = c, k = h.alternate, l = h.stateNode;
          if (null !== k && k === d) break;
          5 === h.tag && null !== l && (h = l, e ? (k = Kb(c, f), null != k && g.unshift(tf(c, k, h))) : e || (k = Kb(c, f), 
          null != k && g.push(tf(c, k, h))));
          c = c.return;
        }
        0 !== g.length && a.push({
          event: b,
          listeners: g
        });
      }
      var xf = /\r\n?/g, yf = /\u0000|\uFFFD/g;
      function zf(a) {
        return ("string" === typeof a ? a : "" + a).replace(xf, "\n").replace(yf, "");
      }
      function Af(a, b, c) {
        b = zf(b);
        if (zf(a) !== b && c) throw Error(p(425));
      }
      function Bf() {}
      var Cf = null, Df = null;
      function Ef(a, b) {
        return "textarea" === a || "noscript" === a || "string" === typeof b.children || "number" === typeof b.children || "object" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;
      }
      var Ff = "function" === typeof setTimeout ? setTimeout : void 0, Gf = "function" === typeof clearTimeout ? clearTimeout : void 0, Hf = "function" === typeof Promise ? Promise : void 0, Jf = "function" === typeof queueMicrotask ? queueMicrotask : "undefined" !== typeof Hf ? function(a) {
        return Hf.resolve(null).then(a).catch(If);
      } : Ff;
      function If(a) {
        setTimeout((function() {
          throw a;
        }));
      }
      function Kf(a, b) {
        var c = b, d = 0;
        do {
          var e = c.nextSibling;
          a.removeChild(c);
          if (e && 8 === e.nodeType) if (c = e.data, "/$" === c) {
            if (0 === d) {
              a.removeChild(e);
              bd(b);
              return;
            }
            d--;
          } else "$" !== c && "$?" !== c && "$!" !== c || d++;
          c = e;
        } while (c);
        bd(b);
      }
      function Lf(a) {
        for (;null != a; a = a.nextSibling) {
          var b = a.nodeType;
          if (1 === b || 3 === b) break;
          if (8 === b) {
            b = a.data;
            if ("$" === b || "$!" === b || "$?" === b) break;
            if ("/$" === b) return null;
          }
        }
        return a;
      }
      function Mf(a) {
        a = a.previousSibling;
        for (var b = 0; a; ) {
          if (8 === a.nodeType) {
            var c = a.data;
            if ("$" === c || "$!" === c || "$?" === c) {
              if (0 === b) return a;
              b--;
            } else "/$" === c && b++;
          }
          a = a.previousSibling;
        }
        return null;
      }
      var Nf = Math.random().toString(36).slice(2), Of = "__reactFiber$" + Nf, Pf = "__reactProps$" + Nf, uf = "__reactContainer$" + Nf, of = "__reactEvents$" + Nf, Qf = "__reactListeners$" + Nf, Rf = "__reactHandles$" + Nf;
      function Wc(a) {
        var b = a[Of];
        if (b) return b;
        for (var c = a.parentNode; c; ) {
          if (b = c[uf] || c[Of]) {
            c = b.alternate;
            if (null !== b.child || null !== c && null !== c.child) for (a = Mf(a); null !== a; ) {
              if (c = a[Of]) return c;
              a = Mf(a);
            }
            return b;
          }
          a = c;
          c = a.parentNode;
        }
        return null;
      }
      function Cb(a) {
        a = a[Of] || a[uf];
        return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;
      }
      function ue(a) {
        if (5 === a.tag || 6 === a.tag) return a.stateNode;
        throw Error(p(33));
      }
      function Db(a) {
        return a[Pf] || null;
      }
      var Sf = [], Tf = -1;
      function Uf(a) {
        return {
          current: a
        };
      }
      function E(a) {
        0 > Tf || (a.current = Sf[Tf], Sf[Tf] = null, Tf--);
      }
      function G(a, b) {
        Tf++;
        Sf[Tf] = a.current;
        a.current = b;
      }
      var Vf = {}, H = Uf(Vf), Wf = Uf(!1), Xf = Vf;
      function Yf(a, b) {
        var c = a.type.contextTypes;
        if (!c) return Vf;
        var d = a.stateNode;
        if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;
        var e = {}, f;
        for (f in c) e[f] = b[f];
        d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);
        return e;
      }
      function Zf(a) {
        a = a.childContextTypes;
        return null !== a && void 0 !== a;
      }
      function $f() {
        E(Wf);
        E(H);
      }
      function ag(a, b, c) {
        if (H.current !== Vf) throw Error(p(168));
        G(H, b);
        G(Wf, c);
      }
      function bg(a, b, c) {
        var d = a.stateNode;
        b = b.childContextTypes;
        if ("function" !== typeof d.getChildContext) return c;
        d = d.getChildContext();
        for (var e in d) if (!(e in b)) throw Error(p(108, Ra(a) || "Unknown", e));
        return A({}, c, d);
      }
      function cg(a) {
        a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || Vf;
        Xf = H.current;
        G(H, a);
        G(Wf, Wf.current);
        return !0;
      }
      function dg(a, b, c) {
        var d = a.stateNode;
        if (!d) throw Error(p(169));
        c ? (a = bg(a, b, Xf), d.__reactInternalMemoizedMergedChildContext = a, E(Wf), E(H), 
        G(H, a)) : E(Wf);
        G(Wf, c);
      }
      var eg = null, fg = !1, gg = !1;
      function hg(a) {
        null === eg ? eg = [ a ] : eg.push(a);
      }
      function ig(a) {
        fg = !0;
        hg(a);
      }
      function jg() {
        if (!gg && null !== eg) {
          gg = !0;
          var a = 0, b = C;
          try {
            var c = eg;
            for (C = 1; a < c.length; a++) {
              var d = c[a];
              do {
                d = d(!0);
              } while (null !== d);
            }
            eg = null;
            fg = !1;
          } catch (e) {
            throw null !== eg && (eg = eg.slice(a + 1)), ac(fc, jg), e;
          } finally {
            C = b, gg = !1;
          }
        }
        return null;
      }
      var kg = [], lg = 0, mg = null, ng = 0, og = [], pg = 0, qg = null, rg = 1, sg = "";
      function tg(a, b) {
        kg[lg++] = ng;
        kg[lg++] = mg;
        mg = a;
        ng = b;
      }
      function ug(a, b, c) {
        og[pg++] = rg;
        og[pg++] = sg;
        og[pg++] = qg;
        qg = a;
        var d = rg;
        a = sg;
        var e = 32 - oc(d) - 1;
        d &= ~(1 << e);
        c += 1;
        var f = 32 - oc(b) + e;
        if (30 < f) {
          var g = e - e % 5;
          f = (d & (1 << g) - 1).toString(32);
          d >>= g;
          e -= g;
          rg = 1 << 32 - oc(b) + e | c << e | d;
          sg = f + a;
        } else rg = 1 << f | c << e | d, sg = a;
      }
      function vg(a) {
        null !== a.return && (tg(a, 1), ug(a, 1, 0));
      }
      function wg(a) {
        for (;a === mg; ) mg = kg[--lg], kg[lg] = null, ng = kg[--lg], kg[lg] = null;
        for (;a === qg; ) qg = og[--pg], og[pg] = null, sg = og[--pg], og[pg] = null, rg = og[--pg], 
        og[pg] = null;
      }
      var xg = null, yg = null, I = !1, zg = null;
      function Ag(a, b) {
        var c = Bg(5, null, null, 0);
        c.elementType = "DELETED";
        c.stateNode = b;
        c.return = a;
        b = a.deletions;
        null === b ? (a.deletions = [ c ], a.flags |= 16) : b.push(c);
      }
      function Cg(a, b) {
        switch (a.tag) {
         case 5:
          var c = a.type;
          b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;
          return null !== b ? (a.stateNode = b, xg = a, yg = Lf(b.firstChild), !0) : !1;

         case 6:
          return b = "" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, 
          xg = a, yg = null, !0) : !1;

         case 13:
          return b = 8 !== b.nodeType ? null : b, null !== b ? (c = null !== qg ? {
            id: rg,
            overflow: sg
          } : null, a.memoizedState = {
            dehydrated: b,
            treeContext: c,
            retryLane: 1073741824
          }, c = Bg(18, null, null, 0), c.stateNode = b, c.return = a, a.child = c, xg = a, 
          yg = null, !0) : !1;

         default:
          return !1;
        }
      }
      function Dg(a) {
        return 0 !== (a.mode & 1) && 0 === (a.flags & 128);
      }
      function Eg(a) {
        if (I) {
          var b = yg;
          if (b) {
            var c = b;
            if (!Cg(a, b)) {
              if (Dg(a)) throw Error(p(418));
              b = Lf(c.nextSibling);
              var d = xg;
              b && Cg(a, b) ? Ag(d, c) : (a.flags = a.flags & -4097 | 2, I = !1, xg = a);
            }
          } else {
            if (Dg(a)) throw Error(p(418));
            a.flags = a.flags & -4097 | 2;
            I = !1;
            xg = a;
          }
        }
      }
      function Fg(a) {
        for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag; ) a = a.return;
        xg = a;
      }
      function Gg(a) {
        if (a !== xg) return !1;
        if (!I) return Fg(a), I = !0, !1;
        var b;
        (b = 3 !== a.tag) && !(b = 5 !== a.tag) && (b = a.type, b = "head" !== b && "body" !== b && !Ef(a.type, a.memoizedProps));
        if (b && (b = yg)) {
          if (Dg(a)) throw Hg(), Error(p(418));
          for (;b; ) Ag(a, b), b = Lf(b.nextSibling);
        }
        Fg(a);
        if (13 === a.tag) {
          a = a.memoizedState;
          a = null !== a ? a.dehydrated : null;
          if (!a) throw Error(p(317));
          a: {
            a = a.nextSibling;
            for (b = 0; a; ) {
              if (8 === a.nodeType) {
                var c = a.data;
                if ("/$" === c) {
                  if (0 === b) {
                    yg = Lf(a.nextSibling);
                    break a;
                  }
                  b--;
                } else "$" !== c && "$!" !== c && "$?" !== c || b++;
              }
              a = a.nextSibling;
            }
            yg = null;
          }
        } else yg = xg ? Lf(a.stateNode.nextSibling) : null;
        return !0;
      }
      function Hg() {
        for (var a = yg; a; ) a = Lf(a.nextSibling);
      }
      function Ig() {
        yg = xg = null;
        I = !1;
      }
      function Jg(a) {
        null === zg ? zg = [ a ] : zg.push(a);
      }
      var Kg = ua.ReactCurrentBatchConfig;
      function Lg(a, b, c) {
        a = c.ref;
        if (null !== a && "function" !== typeof a && "object" !== typeof a) {
          if (c._owner) {
            c = c._owner;
            if (c) {
              if (1 !== c.tag) throw Error(p(309));
              var d = c.stateNode;
            }
            if (!d) throw Error(p(147, a));
            var e = d, f = "" + a;
            if (null !== b && null !== b.ref && "function" === typeof b.ref && b.ref._stringRef === f) return b.ref;
            b = function(a) {
              var b = e.refs;
              null === a ? delete b[f] : b[f] = a;
            };
            b._stringRef = f;
            return b;
          }
          if ("string" !== typeof a) throw Error(p(284));
          if (!c._owner) throw Error(p(290, a));
        }
        return a;
      }
      function Mg(a, b) {
        a = Object.prototype.toString.call(b);
        throw Error(p(31, "[object Object]" === a ? "object with keys {" + Object.keys(b).join(", ") + "}" : a));
      }
      function Ng(a) {
        var b = a._init;
        return b(a._payload);
      }
      function Og(a) {
        function b(b, c) {
          if (a) {
            var d = b.deletions;
            null === d ? (b.deletions = [ c ], b.flags |= 16) : d.push(c);
          }
        }
        function c(c, d) {
          if (!a) return null;
          for (;null !== d; ) b(c, d), d = d.sibling;
          return null;
        }
        function d(a, b) {
          for (a = new Map; null !== b; ) null !== b.key ? a.set(b.key, b) : a.set(b.index, b), 
          b = b.sibling;
          return a;
        }
        function e(a, b) {
          a = Pg(a, b);
          a.index = 0;
          a.sibling = null;
          return a;
        }
        function f(b, c, d) {
          b.index = d;
          if (!a) return b.flags |= 1048576, c;
          d = b.alternate;
          if (null !== d) return d = d.index, d < c ? (b.flags |= 2, c) : d;
          b.flags |= 2;
          return c;
        }
        function g(b) {
          a && null === b.alternate && (b.flags |= 2);
          return b;
        }
        function h(a, b, c, d) {
          if (null === b || 6 !== b.tag) return b = Qg(c, a.mode, d), b.return = a, b;
          b = e(b, c);
          b.return = a;
          return b;
        }
        function k(a, b, c, d) {
          var f = c.type;
          if (f === ya) return m(a, b, c.props.children, d, c.key);
          if (null !== b && (b.elementType === f || "object" === typeof f && null !== f && f.$$typeof === Ha && Ng(f) === b.type)) return d = e(b, c.props), 
          d.ref = Lg(a, b, c), d.return = a, d;
          d = Rg(c.type, c.key, c.props, null, a.mode, d);
          d.ref = Lg(a, b, c);
          d.return = a;
          return d;
        }
        function l(a, b, c, d) {
          if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = Sg(c, a.mode, d), 
          b.return = a, b;
          b = e(b, c.children || []);
          b.return = a;
          return b;
        }
        function m(a, b, c, d, f) {
          if (null === b || 7 !== b.tag) return b = Tg(c, a.mode, d, f), b.return = a, b;
          b = e(b, c);
          b.return = a;
          return b;
        }
        function q(a, b, c) {
          if ("string" === typeof b && "" !== b || "number" === typeof b) return b = Qg("" + b, a.mode, c), 
          b.return = a, b;
          if ("object" === typeof b && null !== b) {
            switch (b.$$typeof) {
             case va:
              return c = Rg(b.type, b.key, b.props, null, a.mode, c), c.ref = Lg(a, null, b), 
              c.return = a, c;

             case wa:
              return b = Sg(b, a.mode, c), b.return = a, b;

             case Ha:
              var d = b._init;
              return q(a, d(b._payload), c);
            }
            if (eb(b) || Ka(b)) return b = Tg(b, a.mode, c, null), b.return = a, b;
            Mg(a, b);
          }
          return null;
        }
        function r(a, b, c, d) {
          var e = null !== b ? b.key : null;
          if ("string" === typeof c && "" !== c || "number" === typeof c) return null !== e ? null : h(a, b, "" + c, d);
          if ("object" === typeof c && null !== c) {
            switch (c.$$typeof) {
             case va:
              return c.key === e ? k(a, b, c, d) : null;

             case wa:
              return c.key === e ? l(a, b, c, d) : null;

             case Ha:
              return e = c._init, r(a, b, e(c._payload), d);
            }
            if (eb(c) || Ka(c)) return null !== e ? null : m(a, b, c, d, null);
            Mg(a, c);
          }
          return null;
        }
        function y(a, b, c, d, e) {
          if ("string" === typeof d && "" !== d || "number" === typeof d) return a = a.get(c) || null, 
          h(b, a, "" + d, e);
          if ("object" === typeof d && null !== d) {
            switch (d.$$typeof) {
             case va:
              return a = a.get(null === d.key ? c : d.key) || null, k(b, a, d, e);

             case wa:
              return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);

             case Ha:
              var f = d._init;
              return y(a, b, c, f(d._payload), e);
            }
            if (eb(d) || Ka(d)) return a = a.get(c) || null, m(b, a, d, e, null);
            Mg(b, d);
          }
          return null;
        }
        function n(e, g, h, k) {
          for (var l = null, m = null, u = g, w = g = 0, x = null; null !== u && w < h.length; w++) {
            u.index > w ? (x = u, u = null) : x = u.sibling;
            var n = r(e, u, h[w], k);
            if (null === n) {
              null === u && (u = x);
              break;
            }
            a && u && null === n.alternate && b(e, u);
            g = f(n, g, w);
            null === m ? l = n : m.sibling = n;
            m = n;
            u = x;
          }
          if (w === h.length) return c(e, u), I && tg(e, w), l;
          if (null === u) {
            for (;w < h.length; w++) u = q(e, h[w], k), null !== u && (g = f(u, g, w), null === m ? l = u : m.sibling = u, 
            m = u);
            I && tg(e, w);
            return l;
          }
          for (u = d(e, u); w < h.length; w++) x = y(u, e, w, h[w], k), null !== x && (a && null !== x.alternate && u.delete(null === x.key ? w : x.key), 
          g = f(x, g, w), null === m ? l = x : m.sibling = x, m = x);
          a && u.forEach((function(a) {
            return b(e, a);
          }));
          I && tg(e, w);
          return l;
        }
        function t(e, g, h, k) {
          var l = Ka(h);
          if ("function" !== typeof l) throw Error(p(150));
          h = l.call(h);
          if (null == h) throw Error(p(151));
          for (var u = l = null, m = g, w = g = 0, x = null, n = h.next(); null !== m && !n.done; w++, 
          n = h.next()) {
            m.index > w ? (x = m, m = null) : x = m.sibling;
            var t = r(e, m, n.value, k);
            if (null === t) {
              null === m && (m = x);
              break;
            }
            a && m && null === t.alternate && b(e, m);
            g = f(t, g, w);
            null === u ? l = t : u.sibling = t;
            u = t;
            m = x;
          }
          if (n.done) return c(e, m), I && tg(e, w), l;
          if (null === m) {
            for (;!n.done; w++, n = h.next()) n = q(e, n.value, k), null !== n && (g = f(n, g, w), 
            null === u ? l = n : u.sibling = n, u = n);
            I && tg(e, w);
            return l;
          }
          for (m = d(e, m); !n.done; w++, n = h.next()) n = y(m, e, w, n.value, k), null !== n && (a && null !== n.alternate && m.delete(null === n.key ? w : n.key), 
          g = f(n, g, w), null === u ? l = n : u.sibling = n, u = n);
          a && m.forEach((function(a) {
            return b(e, a);
          }));
          I && tg(e, w);
          return l;
        }
        function J(a, d, f, h) {
          "object" === typeof f && null !== f && f.type === ya && null === f.key && (f = f.props.children);
          if ("object" === typeof f && null !== f) {
            switch (f.$$typeof) {
             case va:
              a: {
                for (var k = f.key, l = d; null !== l; ) {
                  if (l.key === k) {
                    k = f.type;
                    if (k === ya) {
                      if (7 === l.tag) {
                        c(a, l.sibling);
                        d = e(l, f.props.children);
                        d.return = a;
                        a = d;
                        break a;
                      }
                    } else if (l.elementType === k || "object" === typeof k && null !== k && k.$$typeof === Ha && Ng(k) === l.type) {
                      c(a, l.sibling);
                      d = e(l, f.props);
                      d.ref = Lg(a, l, f);
                      d.return = a;
                      a = d;
                      break a;
                    }
                    c(a, l);
                    break;
                  } else b(a, l);
                  l = l.sibling;
                }
                f.type === ya ? (d = Tg(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = Rg(f.type, f.key, f.props, null, a.mode, h), 
                h.ref = Lg(a, d, f), h.return = a, a = h);
              }
              return g(a);

             case wa:
              a: {
                for (l = f.key; null !== d; ) {
                  if (d.key === l) if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {
                    c(a, d.sibling);
                    d = e(d, f.children || []);
                    d.return = a;
                    a = d;
                    break a;
                  } else {
                    c(a, d);
                    break;
                  } else b(a, d);
                  d = d.sibling;
                }
                d = Sg(f, a.mode, h);
                d.return = a;
                a = d;
              }
              return g(a);

             case Ha:
              return l = f._init, J(a, d, l(f._payload), h);
            }
            if (eb(f)) return n(a, d, f, h);
            if (Ka(f)) return t(a, d, f, h);
            Mg(a, f);
          }
          return "string" === typeof f && "" !== f || "number" === typeof f ? (f = "" + f, 
          null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f), d.return = a, a = d) : (c(a, d), 
          d = Qg(f, a.mode, h), d.return = a, a = d), g(a)) : c(a, d);
        }
        return J;
      }
      var Ug = Og(!0), Vg = Og(!1), Wg = Uf(null), Xg = null, Yg = null, Zg = null;
      function $g() {
        Zg = Yg = Xg = null;
      }
      function ah(a) {
        var b = Wg.current;
        E(Wg);
        a._currentValue = b;
      }
      function bh(a, b, c) {
        for (;null !== a; ) {
          var d = a.alternate;
          (a.childLanes & b) !== b ? (a.childLanes |= b, null !== d && (d.childLanes |= b)) : null !== d && (d.childLanes & b) !== b && (d.childLanes |= b);
          if (a === c) break;
          a = a.return;
        }
      }
      function ch(a, b) {
        Xg = a;
        Zg = Yg = null;
        a = a.dependencies;
        null !== a && null !== a.firstContext && (0 !== (a.lanes & b) && (dh = !0), a.firstContext = null);
      }
      function eh(a) {
        var b = a._currentValue;
        if (Zg !== a) if (a = {
          context: a,
          memoizedValue: b,
          next: null
        }, null === Yg) {
          if (null === Xg) throw Error(p(308));
          Yg = a;
          Xg.dependencies = {
            lanes: 0,
            firstContext: a
          };
        } else Yg = Yg.next = a;
        return b;
      }
      var fh = null;
      function gh(a) {
        null === fh ? fh = [ a ] : fh.push(a);
      }
      function hh(a, b, c, d) {
        var e = b.interleaved;
        null === e ? (c.next = c, gh(b)) : (c.next = e.next, e.next = c);
        b.interleaved = c;
        return ih(a, d);
      }
      function ih(a, b) {
        a.lanes |= b;
        var c = a.alternate;
        null !== c && (c.lanes |= b);
        c = a;
        for (a = a.return; null !== a; ) a.childLanes |= b, c = a.alternate, null !== c && (c.childLanes |= b), 
        c = a, a = a.return;
        return 3 === c.tag ? c.stateNode : null;
      }
      var jh = !1;
      function kh(a) {
        a.updateQueue = {
          baseState: a.memoizedState,
          firstBaseUpdate: null,
          lastBaseUpdate: null,
          shared: {
            pending: null,
            interleaved: null,
            lanes: 0
          },
          effects: null
        };
      }
      function lh(a, b) {
        a = a.updateQueue;
        b.updateQueue === a && (b.updateQueue = {
          baseState: a.baseState,
          firstBaseUpdate: a.firstBaseUpdate,
          lastBaseUpdate: a.lastBaseUpdate,
          shared: a.shared,
          effects: a.effects
        });
      }
      function mh(a, b) {
        return {
          eventTime: a,
          lane: b,
          tag: 0,
          payload: null,
          callback: null,
          next: null
        };
      }
      function nh(a, b, c) {
        var d = a.updateQueue;
        if (null === d) return null;
        d = d.shared;
        if (0 !== (K & 2)) {
          var e = d.pending;
          null === e ? b.next = b : (b.next = e.next, e.next = b);
          d.pending = b;
          return ih(a, c);
        }
        e = d.interleaved;
        null === e ? (b.next = b, gh(d)) : (b.next = e.next, e.next = b);
        d.interleaved = b;
        return ih(a, c);
      }
      function oh(a, b, c) {
        b = b.updateQueue;
        if (null !== b && (b = b.shared, 0 !== (c & 4194240))) {
          var d = b.lanes;
          d &= a.pendingLanes;
          c |= d;
          b.lanes = c;
          Cc(a, c);
        }
      }
      function ph(a, b) {
        var c = a.updateQueue, d = a.alternate;
        if (null !== d && (d = d.updateQueue, c === d)) {
          var e = null, f = null;
          c = c.firstBaseUpdate;
          if (null !== c) {
            do {
              var g = {
                eventTime: c.eventTime,
                lane: c.lane,
                tag: c.tag,
                payload: c.payload,
                callback: c.callback,
                next: null
              };
              null === f ? e = f = g : f = f.next = g;
              c = c.next;
            } while (null !== c);
            null === f ? e = f = b : f = f.next = b;
          } else e = f = b;
          c = {
            baseState: d.baseState,
            firstBaseUpdate: e,
            lastBaseUpdate: f,
            shared: d.shared,
            effects: d.effects
          };
          a.updateQueue = c;
          return;
        }
        a = c.lastBaseUpdate;
        null === a ? c.firstBaseUpdate = b : a.next = b;
        c.lastBaseUpdate = b;
      }
      function qh(a, b, c, d) {
        var e = a.updateQueue;
        jh = !1;
        var f = e.firstBaseUpdate, g = e.lastBaseUpdate, h = e.shared.pending;
        if (null !== h) {
          e.shared.pending = null;
          var k = h, l = k.next;
          k.next = null;
          null === g ? f = l : g.next = l;
          g = k;
          var m = a.alternate;
          null !== m && (m = m.updateQueue, h = m.lastBaseUpdate, h !== g && (null === h ? m.firstBaseUpdate = l : h.next = l, 
          m.lastBaseUpdate = k));
        }
        if (null !== f) {
          var q = e.baseState;
          g = 0;
          m = l = k = null;
          h = f;
          do {
            var r = h.lane, y = h.eventTime;
            if ((d & r) === r) {
              null !== m && (m = m.next = {
                eventTime: y,
                lane: 0,
                tag: h.tag,
                payload: h.payload,
                callback: h.callback,
                next: null
              });
              a: {
                var n = a, t = h;
                r = b;
                y = c;
                switch (t.tag) {
                 case 1:
                  n = t.payload;
                  if ("function" === typeof n) {
                    q = n.call(y, q, r);
                    break a;
                  }
                  q = n;
                  break a;

                 case 3:
                  n.flags = n.flags & -65537 | 128;

                 case 0:
                  n = t.payload;
                  r = "function" === typeof n ? n.call(y, q, r) : n;
                  if (null === r || void 0 === r) break a;
                  q = A({}, q, r);
                  break a;

                 case 2:
                  jh = !0;
                }
              }
              null !== h.callback && 0 !== h.lane && (a.flags |= 64, r = e.effects, null === r ? e.effects = [ h ] : r.push(h));
            } else y = {
              eventTime: y,
              lane: r,
              tag: h.tag,
              payload: h.payload,
              callback: h.callback,
              next: null
            }, null === m ? (l = m = y, k = q) : m = m.next = y, g |= r;
            h = h.next;
            if (null === h) if (h = e.shared.pending, null === h) break; else r = h, h = r.next, 
            r.next = null, e.lastBaseUpdate = r, e.shared.pending = null;
          } while (1);
          null === m && (k = q);
          e.baseState = k;
          e.firstBaseUpdate = l;
          e.lastBaseUpdate = m;
          b = e.shared.interleaved;
          if (null !== b) {
            e = b;
            do {
              g |= e.lane, e = e.next;
            } while (e !== b);
          } else null === f && (e.shared.lanes = 0);
          rh |= g;
          a.lanes = g;
          a.memoizedState = q;
        }
      }
      function sh(a, b, c) {
        a = b.effects;
        b.effects = null;
        if (null !== a) for (b = 0; b < a.length; b++) {
          var d = a[b], e = d.callback;
          if (null !== e) {
            d.callback = null;
            d = c;
            if ("function" !== typeof e) throw Error(p(191, e));
            e.call(d);
          }
        }
      }
      var th = {}, uh = Uf(th), vh = Uf(th), wh = Uf(th);
      function xh(a) {
        if (a === th) throw Error(p(174));
        return a;
      }
      function yh(a, b) {
        G(wh, b);
        G(vh, a);
        G(uh, th);
        a = b.nodeType;
        switch (a) {
         case 9:
         case 11:
          b = (b = b.documentElement) ? b.namespaceURI : lb(null, "");
          break;

         default:
          a = 8 === a ? b.parentNode : b, b = a.namespaceURI || null, a = a.tagName, b = lb(b, a);
        }
        E(uh);
        G(uh, b);
      }
      function zh() {
        E(uh);
        E(vh);
        E(wh);
      }
      function Ah(a) {
        xh(wh.current);
        var b = xh(uh.current);
        var c = lb(b, a.type);
        b !== c && (G(vh, a), G(uh, c));
      }
      function Bh(a) {
        vh.current === a && (E(uh), E(vh));
      }
      var L = Uf(0);
      function Ch(a) {
        for (var b = a; null !== b; ) {
          if (13 === b.tag) {
            var c = b.memoizedState;
            if (null !== c && (c = c.dehydrated, null === c || "$?" === c.data || "$!" === c.data)) return b;
          } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {
            if (0 !== (b.flags & 128)) return b;
          } else if (null !== b.child) {
            b.child.return = b;
            b = b.child;
            continue;
          }
          if (b === a) break;
          for (;null === b.sibling; ) {
            if (null === b.return || b.return === a) return null;
            b = b.return;
          }
          b.sibling.return = b.return;
          b = b.sibling;
        }
        return null;
      }
      var Dh = [];
      function Eh() {
        for (var a = 0; a < Dh.length; a++) Dh[a]._workInProgressVersionPrimary = null;
        Dh.length = 0;
      }
      var Fh = ua.ReactCurrentDispatcher, Gh = ua.ReactCurrentBatchConfig, Hh = 0, M = null, N = null, O = null, Ih = !1, Jh = !1, Kh = 0, Lh = 0;
      function P() {
        throw Error(p(321));
      }
      function Mh(a, b) {
        if (null === b) return !1;
        for (var c = 0; c < b.length && c < a.length; c++) if (!He(a[c], b[c])) return !1;
        return !0;
      }
      function Nh(a, b, c, d, e, f) {
        Hh = f;
        M = b;
        b.memoizedState = null;
        b.updateQueue = null;
        b.lanes = 0;
        Fh.current = null === a || null === a.memoizedState ? Oh : Ph;
        a = c(d, e);
        if (Jh) {
          f = 0;
          do {
            Jh = !1;
            Kh = 0;
            if (25 <= f) throw Error(p(301));
            f += 1;
            O = N = null;
            b.updateQueue = null;
            Fh.current = Qh;
            a = c(d, e);
          } while (Jh);
        }
        Fh.current = Rh;
        b = null !== N && null !== N.next;
        Hh = 0;
        O = N = M = null;
        Ih = !1;
        if (b) throw Error(p(300));
        return a;
      }
      function Sh() {
        var a = 0 !== Kh;
        Kh = 0;
        return a;
      }
      function Th() {
        var a = {
          memoizedState: null,
          baseState: null,
          baseQueue: null,
          queue: null,
          next: null
        };
        null === O ? M.memoizedState = O = a : O = O.next = a;
        return O;
      }
      function Uh() {
        if (null === N) {
          var a = M.alternate;
          a = null !== a ? a.memoizedState : null;
        } else a = N.next;
        var b = null === O ? M.memoizedState : O.next;
        if (null !== b) O = b, N = a; else {
          if (null === a) throw Error(p(310));
          N = a;
          a = {
            memoizedState: N.memoizedState,
            baseState: N.baseState,
            baseQueue: N.baseQueue,
            queue: N.queue,
            next: null
          };
          null === O ? M.memoizedState = O = a : O = O.next = a;
        }
        return O;
      }
      function Vh(a, b) {
        return "function" === typeof b ? b(a) : b;
      }
      function Wh(a) {
        var b = Uh(), c = b.queue;
        if (null === c) throw Error(p(311));
        c.lastRenderedReducer = a;
        var d = N, e = d.baseQueue, f = c.pending;
        if (null !== f) {
          if (null !== e) {
            var g = e.next;
            e.next = f.next;
            f.next = g;
          }
          d.baseQueue = e = f;
          c.pending = null;
        }
        if (null !== e) {
          f = e.next;
          d = d.baseState;
          var h = g = null, k = null, l = f;
          do {
            var m = l.lane;
            if ((Hh & m) === m) null !== k && (k = k.next = {
              lane: 0,
              action: l.action,
              hasEagerState: l.hasEagerState,
              eagerState: l.eagerState,
              next: null
            }), d = l.hasEagerState ? l.eagerState : a(d, l.action); else {
              var q = {
                lane: m,
                action: l.action,
                hasEagerState: l.hasEagerState,
                eagerState: l.eagerState,
                next: null
              };
              null === k ? (h = k = q, g = d) : k = k.next = q;
              M.lanes |= m;
              rh |= m;
            }
            l = l.next;
          } while (null !== l && l !== f);
          null === k ? g = d : k.next = h;
          He(d, b.memoizedState) || (dh = !0);
          b.memoizedState = d;
          b.baseState = g;
          b.baseQueue = k;
          c.lastRenderedState = d;
        }
        a = c.interleaved;
        if (null !== a) {
          e = a;
          do {
            f = e.lane, M.lanes |= f, rh |= f, e = e.next;
          } while (e !== a);
        } else null === e && (c.lanes = 0);
        return [ b.memoizedState, c.dispatch ];
      }
      function Xh(a) {
        var b = Uh(), c = b.queue;
        if (null === c) throw Error(p(311));
        c.lastRenderedReducer = a;
        var d = c.dispatch, e = c.pending, f = b.memoizedState;
        if (null !== e) {
          c.pending = null;
          var g = e = e.next;
          do {
            f = a(f, g.action), g = g.next;
          } while (g !== e);
          He(f, b.memoizedState) || (dh = !0);
          b.memoizedState = f;
          null === b.baseQueue && (b.baseState = f);
          c.lastRenderedState = f;
        }
        return [ f, d ];
      }
      function Yh() {}
      function Zh(a, b) {
        var c = M, d = Uh(), e = b(), f = !He(d.memoizedState, e);
        f && (d.memoizedState = e, dh = !0);
        d = d.queue;
        $h(ai.bind(null, c, d, a), [ a ]);
        if (d.getSnapshot !== b || f || null !== O && O.memoizedState.tag & 1) {
          c.flags |= 2048;
          bi(9, ci.bind(null, c, d, e, b), void 0, null);
          if (null === Q) throw Error(p(349));
          0 !== (Hh & 30) || di(c, b, e);
        }
        return e;
      }
      function di(a, b, c) {
        a.flags |= 16384;
        a = {
          getSnapshot: b,
          value: c
        };
        b = M.updateQueue;
        null === b ? (b = {
          lastEffect: null,
          stores: null
        }, M.updateQueue = b, b.stores = [ a ]) : (c = b.stores, null === c ? b.stores = [ a ] : c.push(a));
      }
      function ci(a, b, c, d) {
        b.value = c;
        b.getSnapshot = d;
        ei(b) && fi(a);
      }
      function ai(a, b, c) {
        return c((function() {
          ei(b) && fi(a);
        }));
      }
      function ei(a) {
        var b = a.getSnapshot;
        a = a.value;
        try {
          var c = b();
          return !He(a, c);
        } catch (d) {
          return !0;
        }
      }
      function fi(a) {
        var b = ih(a, 1);
        null !== b && gi(b, a, 1, -1);
      }
      function hi(a) {
        var b = Th();
        "function" === typeof a && (a = a());
        b.memoizedState = b.baseState = a;
        a = {
          pending: null,
          interleaved: null,
          lanes: 0,
          dispatch: null,
          lastRenderedReducer: Vh,
          lastRenderedState: a
        };
        b.queue = a;
        a = a.dispatch = ii.bind(null, M, a);
        return [ b.memoizedState, a ];
      }
      function bi(a, b, c, d) {
        a = {
          tag: a,
          create: b,
          destroy: c,
          deps: d,
          next: null
        };
        b = M.updateQueue;
        null === b ? (b = {
          lastEffect: null,
          stores: null
        }, M.updateQueue = b, b.lastEffect = a.next = a) : (c = b.lastEffect, null === c ? b.lastEffect = a.next = a : (d = c.next, 
        c.next = a, a.next = d, b.lastEffect = a));
        return a;
      }
      function ji() {
        return Uh().memoizedState;
      }
      function ki(a, b, c, d) {
        var e = Th();
        M.flags |= a;
        e.memoizedState = bi(1 | b, c, void 0, void 0 === d ? null : d);
      }
      function li(a, b, c, d) {
        var e = Uh();
        d = void 0 === d ? null : d;
        var f = void 0;
        if (null !== N) {
          var g = N.memoizedState;
          f = g.destroy;
          if (null !== d && Mh(d, g.deps)) {
            e.memoizedState = bi(b, c, f, d);
            return;
          }
        }
        M.flags |= a;
        e.memoizedState = bi(1 | b, c, f, d);
      }
      function mi(a, b) {
        return ki(8390656, 8, a, b);
      }
      function $h(a, b) {
        return li(2048, 8, a, b);
      }
      function ni(a, b) {
        return li(4, 2, a, b);
      }
      function oi(a, b) {
        return li(4, 4, a, b);
      }
      function pi(a, b) {
        if ("function" === typeof b) return a = a(), b(a), function() {
          b(null);
        };
        if (null !== b && void 0 !== b) return a = a(), b.current = a, function() {
          b.current = null;
        };
      }
      function qi(a, b, c) {
        c = null !== c && void 0 !== c ? c.concat([ a ]) : null;
        return li(4, 4, pi.bind(null, b, a), c);
      }
      function ri() {}
      function si(a, b) {
        var c = Uh();
        b = void 0 === b ? null : b;
        var d = c.memoizedState;
        if (null !== d && null !== b && Mh(b, d[1])) return d[0];
        c.memoizedState = [ a, b ];
        return a;
      }
      function ti(a, b) {
        var c = Uh();
        b = void 0 === b ? null : b;
        var d = c.memoizedState;
        if (null !== d && null !== b && Mh(b, d[1])) return d[0];
        a = a();
        c.memoizedState = [ a, b ];
        return a;
      }
      function ui(a, b, c) {
        if (0 === (Hh & 21)) return a.baseState && (a.baseState = !1, dh = !0), a.memoizedState = c;
        He(c, b) || (c = yc(), M.lanes |= c, rh |= c, a.baseState = !0);
        return b;
      }
      function vi(a, b) {
        var c = C;
        C = 0 !== c && 4 > c ? c : 4;
        a(!0);
        var d = Gh.transition;
        Gh.transition = {};
        try {
          a(!1), b();
        } finally {
          C = c, Gh.transition = d;
        }
      }
      function wi() {
        return Uh().memoizedState;
      }
      function xi(a, b, c) {
        var d = yi(a);
        c = {
          lane: d,
          action: c,
          hasEagerState: !1,
          eagerState: null,
          next: null
        };
        if (zi(a)) Ai(b, c); else if (c = hh(a, b, c, d), null !== c) {
          var e = R();
          gi(c, a, d, e);
          Bi(c, b, d);
        }
      }
      function ii(a, b, c) {
        var d = yi(a), e = {
          lane: d,
          action: c,
          hasEagerState: !1,
          eagerState: null,
          next: null
        };
        if (zi(a)) Ai(b, e); else {
          var f = a.alternate;
          if (0 === a.lanes && (null === f || 0 === f.lanes) && (f = b.lastRenderedReducer, 
          null !== f)) try {
            var g = b.lastRenderedState, h = f(g, c);
            e.hasEagerState = !0;
            e.eagerState = h;
            if (He(h, g)) {
              var k = b.interleaved;
              null === k ? (e.next = e, gh(b)) : (e.next = k.next, k.next = e);
              b.interleaved = e;
              return;
            }
          } catch (l) {} finally {}
          c = hh(a, b, e, d);
          null !== c && (e = R(), gi(c, a, d, e), Bi(c, b, d));
        }
      }
      function zi(a) {
        var b = a.alternate;
        return a === M || null !== b && b === M;
      }
      function Ai(a, b) {
        Jh = Ih = !0;
        var c = a.pending;
        null === c ? b.next = b : (b.next = c.next, c.next = b);
        a.pending = b;
      }
      function Bi(a, b, c) {
        if (0 !== (c & 4194240)) {
          var d = b.lanes;
          d &= a.pendingLanes;
          c |= d;
          b.lanes = c;
          Cc(a, c);
        }
      }
      var Rh = {
        readContext: eh,
        useCallback: P,
        useContext: P,
        useEffect: P,
        useImperativeHandle: P,
        useInsertionEffect: P,
        useLayoutEffect: P,
        useMemo: P,
        useReducer: P,
        useRef: P,
        useState: P,
        useDebugValue: P,
        useDeferredValue: P,
        useTransition: P,
        useMutableSource: P,
        useSyncExternalStore: P,
        useId: P,
        unstable_isNewReconciler: !1
      }, Oh = {
        readContext: eh,
        useCallback: function(a, b) {
          Th().memoizedState = [ a, void 0 === b ? null : b ];
          return a;
        },
        useContext: eh,
        useEffect: mi,
        useImperativeHandle: function(a, b, c) {
          c = null !== c && void 0 !== c ? c.concat([ a ]) : null;
          return ki(4194308, 4, pi.bind(null, b, a), c);
        },
        useLayoutEffect: function(a, b) {
          return ki(4194308, 4, a, b);
        },
        useInsertionEffect: function(a, b) {
          return ki(4, 2, a, b);
        },
        useMemo: function(a, b) {
          var c = Th();
          b = void 0 === b ? null : b;
          a = a();
          c.memoizedState = [ a, b ];
          return a;
        },
        useReducer: function(a, b, c) {
          var d = Th();
          b = void 0 !== c ? c(b) : b;
          d.memoizedState = d.baseState = b;
          a = {
            pending: null,
            interleaved: null,
            lanes: 0,
            dispatch: null,
            lastRenderedReducer: a,
            lastRenderedState: b
          };
          d.queue = a;
          a = a.dispatch = xi.bind(null, M, a);
          return [ d.memoizedState, a ];
        },
        useRef: function(a) {
          var b = Th();
          a = {
            current: a
          };
          return b.memoizedState = a;
        },
        useState: hi,
        useDebugValue: ri,
        useDeferredValue: function(a) {
          return Th().memoizedState = a;
        },
        useTransition: function() {
          var a = hi(!1), b = a[0];
          a = vi.bind(null, a[1]);
          Th().memoizedState = a;
          return [ b, a ];
        },
        useMutableSource: function() {},
        useSyncExternalStore: function(a, b, c) {
          var d = M, e = Th();
          if (I) {
            if (void 0 === c) throw Error(p(407));
            c = c();
          } else {
            c = b();
            if (null === Q) throw Error(p(349));
            0 !== (Hh & 30) || di(d, b, c);
          }
          e.memoizedState = c;
          var f = {
            value: c,
            getSnapshot: b
          };
          e.queue = f;
          mi(ai.bind(null, d, f, a), [ a ]);
          d.flags |= 2048;
          bi(9, ci.bind(null, d, f, c, b), void 0, null);
          return c;
        },
        useId: function() {
          var a = Th(), b = Q.identifierPrefix;
          if (I) {
            var c = sg;
            var d = rg;
            c = (d & ~(1 << 32 - oc(d) - 1)).toString(32) + c;
            b = ":" + b + "R" + c;
            c = Kh++;
            0 < c && (b += "H" + c.toString(32));
            b += ":";
          } else c = Lh++, b = ":" + b + "r" + c.toString(32) + ":";
          return a.memoizedState = b;
        },
        unstable_isNewReconciler: !1
      }, Ph = {
        readContext: eh,
        useCallback: si,
        useContext: eh,
        useEffect: $h,
        useImperativeHandle: qi,
        useInsertionEffect: ni,
        useLayoutEffect: oi,
        useMemo: ti,
        useReducer: Wh,
        useRef: ji,
        useState: function() {
          return Wh(Vh);
        },
        useDebugValue: ri,
        useDeferredValue: function(a) {
          var b = Uh();
          return ui(b, N.memoizedState, a);
        },
        useTransition: function() {
          var a = Wh(Vh)[0], b = Uh().memoizedState;
          return [ a, b ];
        },
        useMutableSource: Yh,
        useSyncExternalStore: Zh,
        useId: wi,
        unstable_isNewReconciler: !1
      }, Qh = {
        readContext: eh,
        useCallback: si,
        useContext: eh,
        useEffect: $h,
        useImperativeHandle: qi,
        useInsertionEffect: ni,
        useLayoutEffect: oi,
        useMemo: ti,
        useReducer: Xh,
        useRef: ji,
        useState: function() {
          return Xh(Vh);
        },
        useDebugValue: ri,
        useDeferredValue: function(a) {
          var b = Uh();
          return null === N ? b.memoizedState = a : ui(b, N.memoizedState, a);
        },
        useTransition: function() {
          var a = Xh(Vh)[0], b = Uh().memoizedState;
          return [ a, b ];
        },
        useMutableSource: Yh,
        useSyncExternalStore: Zh,
        useId: wi,
        unstable_isNewReconciler: !1
      };
      function Ci(a, b) {
        if (a && a.defaultProps) {
          b = A({}, b);
          a = a.defaultProps;
          for (var c in a) void 0 === b[c] && (b[c] = a[c]);
          return b;
        }
        return b;
      }
      function Di(a, b, c, d) {
        b = a.memoizedState;
        c = c(d, b);
        c = null === c || void 0 === c ? b : A({}, b, c);
        a.memoizedState = c;
        0 === a.lanes && (a.updateQueue.baseState = c);
      }
      var Ei = {
        isMounted: function(a) {
          return (a = a._reactInternals) ? Vb(a) === a : !1;
        },
        enqueueSetState: function(a, b, c) {
          a = a._reactInternals;
          var d = R(), e = yi(a), f = mh(d, e);
          f.payload = b;
          void 0 !== c && null !== c && (f.callback = c);
          b = nh(a, f, e);
          null !== b && (gi(b, a, e, d), oh(b, a, e));
        },
        enqueueReplaceState: function(a, b, c) {
          a = a._reactInternals;
          var d = R(), e = yi(a), f = mh(d, e);
          f.tag = 1;
          f.payload = b;
          void 0 !== c && null !== c && (f.callback = c);
          b = nh(a, f, e);
          null !== b && (gi(b, a, e, d), oh(b, a, e));
        },
        enqueueForceUpdate: function(a, b) {
          a = a._reactInternals;
          var c = R(), d = yi(a), e = mh(c, d);
          e.tag = 2;
          void 0 !== b && null !== b && (e.callback = b);
          b = nh(a, e, d);
          null !== b && (gi(b, a, d, c), oh(b, a, d));
        }
      };
      function Fi(a, b, c, d, e, f, g) {
        a = a.stateNode;
        return "function" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !Ie(c, d) || !Ie(e, f) : !0;
      }
      function Gi(a, b, c) {
        var d = !1, e = Vf;
        var f = b.contextType;
        "object" === typeof f && null !== f ? f = eh(f) : (e = Zf(b) ? Xf : H.current, d = b.contextTypes, 
        f = (d = null !== d && void 0 !== d) ? Yf(a, e) : Vf);
        b = new b(c, f);
        a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;
        b.updater = Ei;
        a.stateNode = b;
        b._reactInternals = a;
        d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);
        return b;
      }
      function Hi(a, b, c, d) {
        a = b.state;
        "function" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);
        "function" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);
        b.state !== a && Ei.enqueueReplaceState(b, b.state, null);
      }
      function Ii(a, b, c, d) {
        var e = a.stateNode;
        e.props = c;
        e.state = a.memoizedState;
        e.refs = {};
        kh(a);
        var f = b.contextType;
        "object" === typeof f && null !== f ? e.context = eh(f) : (f = Zf(b) ? Xf : H.current, 
        e.context = Yf(a, f));
        e.state = a.memoizedState;
        f = b.getDerivedStateFromProps;
        "function" === typeof f && (Di(a, b, f, c), e.state = a.memoizedState);
        "function" === typeof b.getDerivedStateFromProps || "function" === typeof e.getSnapshotBeforeUpdate || "function" !== typeof e.UNSAFE_componentWillMount && "function" !== typeof e.componentWillMount || (b = e.state, 
        "function" === typeof e.componentWillMount && e.componentWillMount(), "function" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), 
        b !== e.state && Ei.enqueueReplaceState(e, e.state, null), qh(a, c, e, d), e.state = a.memoizedState);
        "function" === typeof e.componentDidMount && (a.flags |= 4194308);
      }
      function Ji(a, b) {
        try {
          var c = "", d = b;
          do {
            c += Pa(d), d = d.return;
          } while (d);
          var e = c;
        } catch (f) {
          e = "\nError generating stack: " + f.message + "\n" + f.stack;
        }
        return {
          value: a,
          source: b,
          stack: e,
          digest: null
        };
      }
      function Ki(a, b, c) {
        return {
          value: a,
          source: null,
          stack: null != c ? c : null,
          digest: null != b ? b : null
        };
      }
      function Li(a, b) {
        try {
          console.error(b.value);
        } catch (c) {
          setTimeout((function() {
            throw c;
          }));
        }
      }
      var Mi = "function" === typeof WeakMap ? WeakMap : Map;
      function Ni(a, b, c) {
        c = mh(-1, c);
        c.tag = 3;
        c.payload = {
          element: null
        };
        var d = b.value;
        c.callback = function() {
          Oi || (Oi = !0, Pi = d);
          Li(a, b);
        };
        return c;
      }
      function Qi(a, b, c) {
        c = mh(-1, c);
        c.tag = 3;
        var d = a.type.getDerivedStateFromError;
        if ("function" === typeof d) {
          var e = b.value;
          c.payload = function() {
            return d(e);
          };
          c.callback = function() {
            Li(a, b);
          };
        }
        var f = a.stateNode;
        null !== f && "function" === typeof f.componentDidCatch && (c.callback = function() {
          Li(a, b);
          "function" !== typeof d && (null === Ri ? Ri = new Set([ this ]) : Ri.add(this));
          var c = b.stack;
          this.componentDidCatch(b.value, {
            componentStack: null !== c ? c : ""
          });
        });
        return c;
      }
      function Si(a, b, c) {
        var d = a.pingCache;
        if (null === d) {
          d = a.pingCache = new Mi;
          var e = new Set;
          d.set(b, e);
        } else e = d.get(b), void 0 === e && (e = new Set, d.set(b, e));
        e.has(c) || (e.add(c), a = Ti.bind(null, a, b, c), b.then(a, a));
      }
      function Ui(a) {
        do {
          var b;
          if (b = 13 === a.tag) b = a.memoizedState, b = null !== b ? null !== b.dehydrated ? !0 : !1 : !0;
          if (b) return a;
          a = a.return;
        } while (null !== a);
        return null;
      }
      function Vi(a, b, c, d, e) {
        if (0 === (a.mode & 1)) return a === b ? a.flags |= 65536 : (a.flags |= 128, c.flags |= 131072, 
        c.flags &= -52805, 1 === c.tag && (null === c.alternate ? c.tag = 17 : (b = mh(-1, 1), 
        b.tag = 2, nh(c, b, 1))), c.lanes |= 1), a;
        a.flags |= 65536;
        a.lanes = e;
        return a;
      }
      var Wi = ua.ReactCurrentOwner, dh = !1;
      function Xi(a, b, c, d) {
        b.child = null === a ? Vg(b, null, c, d) : Ug(b, a.child, c, d);
      }
      function Yi(a, b, c, d, e) {
        c = c.render;
        var f = b.ref;
        ch(b, e);
        d = Nh(a, b, c, d, f, e);
        c = Sh();
        if (null !== a && !dh) return b.updateQueue = a.updateQueue, b.flags &= -2053, a.lanes &= ~e, 
        Zi(a, b, e);
        I && c && vg(b);
        b.flags |= 1;
        Xi(a, b, d, e);
        return b.child;
      }
      function $i(a, b, c, d, e) {
        if (null === a) {
          var f = c.type;
          if ("function" === typeof f && !aj(f) && void 0 === f.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, 
          b.type = f, bj(a, b, f, d, e);
          a = Rg(c.type, null, d, b, b.mode, e);
          a.ref = b.ref;
          a.return = b;
          return b.child = a;
        }
        f = a.child;
        if (0 === (a.lanes & e)) {
          var g = f.memoizedProps;
          c = c.compare;
          c = null !== c ? c : Ie;
          if (c(g, d) && a.ref === b.ref) return Zi(a, b, e);
        }
        b.flags |= 1;
        a = Pg(f, d);
        a.ref = b.ref;
        a.return = b;
        return b.child = a;
      }
      function bj(a, b, c, d, e) {
        if (null !== a) {
          var f = a.memoizedProps;
          if (Ie(f, d) && a.ref === b.ref) if (dh = !1, b.pendingProps = d = f, 0 !== (a.lanes & e)) 0 !== (a.flags & 131072) && (dh = !0); else return b.lanes = a.lanes, 
          Zi(a, b, e);
        }
        return cj(a, b, c, d, e);
      }
      function dj(a, b, c) {
        var d = b.pendingProps, e = d.children, f = null !== a ? a.memoizedState : null;
        if ("hidden" === d.mode) if (0 === (b.mode & 1)) b.memoizedState = {
          baseLanes: 0,
          cachePool: null,
          transitions: null
        }, G(ej, fj), fj |= c; else {
          if (0 === (c & 1073741824)) return a = null !== f ? f.baseLanes | c : c, b.lanes = b.childLanes = 1073741824, 
          b.memoizedState = {
            baseLanes: a,
            cachePool: null,
            transitions: null
          }, b.updateQueue = null, G(ej, fj), fj |= a, null;
          b.memoizedState = {
            baseLanes: 0,
            cachePool: null,
            transitions: null
          };
          d = null !== f ? f.baseLanes : c;
          G(ej, fj);
          fj |= d;
        } else null !== f ? (d = f.baseLanes | c, b.memoizedState = null) : d = c, G(ej, fj), 
        fj |= d;
        Xi(a, b, e, c);
        return b.child;
      }
      function gj(a, b) {
        var c = b.ref;
        if (null === a && null !== c || null !== a && a.ref !== c) b.flags |= 512, b.flags |= 2097152;
      }
      function cj(a, b, c, d, e) {
        var f = Zf(c) ? Xf : H.current;
        f = Yf(b, f);
        ch(b, e);
        c = Nh(a, b, c, d, f, e);
        d = Sh();
        if (null !== a && !dh) return b.updateQueue = a.updateQueue, b.flags &= -2053, a.lanes &= ~e, 
        Zi(a, b, e);
        I && d && vg(b);
        b.flags |= 1;
        Xi(a, b, c, e);
        return b.child;
      }
      function hj(a, b, c, d, e) {
        if (Zf(c)) {
          var f = !0;
          cg(b);
        } else f = !1;
        ch(b, e);
        if (null === b.stateNode) ij(a, b), Gi(b, c, d), Ii(b, c, d, e), d = !0; else if (null === a) {
          var g = b.stateNode, h = b.memoizedProps;
          g.props = h;
          var k = g.context, l = c.contextType;
          "object" === typeof l && null !== l ? l = eh(l) : (l = Zf(c) ? Xf : H.current, l = Yf(b, l));
          var m = c.getDerivedStateFromProps, q = "function" === typeof m || "function" === typeof g.getSnapshotBeforeUpdate;
          q || "function" !== typeof g.UNSAFE_componentWillReceiveProps && "function" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Hi(b, g, d, l);
          jh = !1;
          var r = b.memoizedState;
          g.state = r;
          qh(b, d, g, e);
          k = b.memoizedState;
          h !== d || r !== k || Wf.current || jh ? ("function" === typeof m && (Di(b, c, m, d), 
          k = b.memoizedState), (h = jh || Fi(b, c, h, d, r, k, l)) ? (q || "function" !== typeof g.UNSAFE_componentWillMount && "function" !== typeof g.componentWillMount || ("function" === typeof g.componentWillMount && g.componentWillMount(), 
          "function" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), 
          "function" === typeof g.componentDidMount && (b.flags |= 4194308)) : ("function" === typeof g.componentDidMount && (b.flags |= 4194308), 
          b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, 
          d = h) : ("function" === typeof g.componentDidMount && (b.flags |= 4194308), d = !1);
        } else {
          g = b.stateNode;
          lh(a, b);
          h = b.memoizedProps;
          l = b.type === b.elementType ? h : Ci(b.type, h);
          g.props = l;
          q = b.pendingProps;
          r = g.context;
          k = c.contextType;
          "object" === typeof k && null !== k ? k = eh(k) : (k = Zf(c) ? Xf : H.current, k = Yf(b, k));
          var y = c.getDerivedStateFromProps;
          (m = "function" === typeof y || "function" === typeof g.getSnapshotBeforeUpdate) || "function" !== typeof g.UNSAFE_componentWillReceiveProps && "function" !== typeof g.componentWillReceiveProps || (h !== q || r !== k) && Hi(b, g, d, k);
          jh = !1;
          r = b.memoizedState;
          g.state = r;
          qh(b, d, g, e);
          var n = b.memoizedState;
          h !== q || r !== n || Wf.current || jh ? ("function" === typeof y && (Di(b, c, y, d), 
          n = b.memoizedState), (l = jh || Fi(b, c, l, d, r, n, k) || !1) ? (m || "function" !== typeof g.UNSAFE_componentWillUpdate && "function" !== typeof g.componentWillUpdate || ("function" === typeof g.componentWillUpdate && g.componentWillUpdate(d, n, k), 
          "function" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, n, k)), 
          "function" === typeof g.componentDidUpdate && (b.flags |= 4), "function" === typeof g.getSnapshotBeforeUpdate && (b.flags |= 1024)) : ("function" !== typeof g.componentDidUpdate || h === a.memoizedProps && r === a.memoizedState || (b.flags |= 4), 
          "function" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && r === a.memoizedState || (b.flags |= 1024), 
          b.memoizedProps = d, b.memoizedState = n), g.props = d, g.state = n, g.context = k, 
          d = l) : ("function" !== typeof g.componentDidUpdate || h === a.memoizedProps && r === a.memoizedState || (b.flags |= 4), 
          "function" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && r === a.memoizedState || (b.flags |= 1024), 
          d = !1);
        }
        return jj(a, b, c, d, f, e);
      }
      function jj(a, b, c, d, e, f) {
        gj(a, b);
        var g = 0 !== (b.flags & 128);
        if (!d && !g) return e && dg(b, c, !1), Zi(a, b, f);
        d = b.stateNode;
        Wi.current = b;
        var h = g && "function" !== typeof c.getDerivedStateFromError ? null : d.render();
        b.flags |= 1;
        null !== a && g ? (b.child = Ug(b, a.child, null, f), b.child = Ug(b, null, h, f)) : Xi(a, b, h, f);
        b.memoizedState = d.state;
        e && dg(b, c, !0);
        return b.child;
      }
      function kj(a) {
        var b = a.stateNode;
        b.pendingContext ? ag(a, b.pendingContext, b.pendingContext !== b.context) : b.context && ag(a, b.context, !1);
        yh(a, b.containerInfo);
      }
      function lj(a, b, c, d, e) {
        Ig();
        Jg(e);
        b.flags |= 256;
        Xi(a, b, c, d);
        return b.child;
      }
      var mj = {
        dehydrated: null,
        treeContext: null,
        retryLane: 0
      };
      function nj(a) {
        return {
          baseLanes: a,
          cachePool: null,
          transitions: null
        };
      }
      function oj(a, b, c) {
        var d = b.pendingProps, e = L.current, f = !1, g = 0 !== (b.flags & 128), h;
        (h = g) || (h = null !== a && null === a.memoizedState ? !1 : 0 !== (e & 2));
        if (h) f = !0, b.flags &= -129; else if (null === a || null !== a.memoizedState) e |= 1;
        G(L, e & 1);
        if (null === a) {
          Eg(b);
          a = b.memoizedState;
          if (null !== a && (a = a.dehydrated, null !== a)) return 0 === (b.mode & 1) ? b.lanes = 1 : "$!" === a.data ? b.lanes = 8 : b.lanes = 1073741824, 
          null;
          g = d.children;
          a = d.fallback;
          return f ? (d = b.mode, f = b.child, g = {
            mode: "hidden",
            children: g
          }, 0 === (d & 1) && null !== f ? (f.childLanes = 0, f.pendingProps = g) : f = pj(g, d, 0, null), 
          a = Tg(a, d, c, null), f.return = b, a.return = b, f.sibling = a, b.child = f, b.child.memoizedState = nj(c), 
          b.memoizedState = mj, a) : qj(b, g);
        }
        e = a.memoizedState;
        if (null !== e && (h = e.dehydrated, null !== h)) return rj(a, b, g, d, h, e, c);
        if (f) {
          f = d.fallback;
          g = b.mode;
          e = a.child;
          h = e.sibling;
          var k = {
            mode: "hidden",
            children: d.children
          };
          0 === (g & 1) && b.child !== e ? (d = b.child, d.childLanes = 0, d.pendingProps = k, 
          b.deletions = null) : (d = Pg(e, k), d.subtreeFlags = e.subtreeFlags & 14680064);
          null !== h ? f = Pg(h, f) : (f = Tg(f, g, c, null), f.flags |= 2);
          f.return = b;
          d.return = b;
          d.sibling = f;
          b.child = d;
          d = f;
          f = b.child;
          g = a.child.memoizedState;
          g = null === g ? nj(c) : {
            baseLanes: g.baseLanes | c,
            cachePool: null,
            transitions: g.transitions
          };
          f.memoizedState = g;
          f.childLanes = a.childLanes & ~c;
          b.memoizedState = mj;
          return d;
        }
        f = a.child;
        a = f.sibling;
        d = Pg(f, {
          mode: "visible",
          children: d.children
        });
        0 === (b.mode & 1) && (d.lanes = c);
        d.return = b;
        d.sibling = null;
        null !== a && (c = b.deletions, null === c ? (b.deletions = [ a ], b.flags |= 16) : c.push(a));
        b.child = d;
        b.memoizedState = null;
        return d;
      }
      function qj(a, b) {
        b = pj({
          mode: "visible",
          children: b
        }, a.mode, 0, null);
        b.return = a;
        return a.child = b;
      }
      function sj(a, b, c, d) {
        null !== d && Jg(d);
        Ug(b, a.child, null, c);
        a = qj(b, b.pendingProps.children);
        a.flags |= 2;
        b.memoizedState = null;
        return a;
      }
      function rj(a, b, c, d, e, f, g) {
        if (c) {
          if (b.flags & 256) return b.flags &= -257, d = Ki(Error(p(422))), sj(a, b, g, d);
          if (null !== b.memoizedState) return b.child = a.child, b.flags |= 128, null;
          f = d.fallback;
          e = b.mode;
          d = pj({
            mode: "visible",
            children: d.children
          }, e, 0, null);
          f = Tg(f, e, g, null);
          f.flags |= 2;
          d.return = b;
          f.return = b;
          d.sibling = f;
          b.child = d;
          0 !== (b.mode & 1) && Ug(b, a.child, null, g);
          b.child.memoizedState = nj(g);
          b.memoizedState = mj;
          return f;
        }
        if (0 === (b.mode & 1)) return sj(a, b, g, null);
        if ("$!" === e.data) {
          d = e.nextSibling && e.nextSibling.dataset;
          if (d) var h = d.dgst;
          d = h;
          f = Error(p(419));
          d = Ki(f, d, void 0);
          return sj(a, b, g, d);
        }
        h = 0 !== (g & a.childLanes);
        if (dh || h) {
          d = Q;
          if (null !== d) {
            switch (g & -g) {
             case 4:
              e = 2;
              break;

             case 16:
              e = 8;
              break;

             case 64:
             case 128:
             case 256:
             case 512:
             case 1024:
             case 2048:
             case 4096:
             case 8192:
             case 16384:
             case 32768:
             case 65536:
             case 131072:
             case 262144:
             case 524288:
             case 1048576:
             case 2097152:
             case 4194304:
             case 8388608:
             case 16777216:
             case 33554432:
             case 67108864:
              e = 32;
              break;

             case 536870912:
              e = 268435456;
              break;

             default:
              e = 0;
            }
            e = 0 !== (e & (d.suspendedLanes | g)) ? 0 : e;
            0 !== e && e !== f.retryLane && (f.retryLane = e, ih(a, e), gi(d, a, e, -1));
          }
          tj();
          d = Ki(Error(p(421)));
          return sj(a, b, g, d);
        }
        if ("$?" === e.data) return b.flags |= 128, b.child = a.child, b = uj.bind(null, a), 
        e._reactRetry = b, null;
        a = f.treeContext;
        yg = Lf(e.nextSibling);
        xg = b;
        I = !0;
        zg = null;
        null !== a && (og[pg++] = rg, og[pg++] = sg, og[pg++] = qg, rg = a.id, sg = a.overflow, 
        qg = b);
        b = qj(b, d.children);
        b.flags |= 4096;
        return b;
      }
      function vj(a, b, c) {
        a.lanes |= b;
        var d = a.alternate;
        null !== d && (d.lanes |= b);
        bh(a.return, b, c);
      }
      function wj(a, b, c, d, e) {
        var f = a.memoizedState;
        null === f ? a.memoizedState = {
          isBackwards: b,
          rendering: null,
          renderingStartTime: 0,
          last: d,
          tail: c,
          tailMode: e
        } : (f.isBackwards = b, f.rendering = null, f.renderingStartTime = 0, f.last = d, 
        f.tail = c, f.tailMode = e);
      }
      function xj(a, b, c) {
        var d = b.pendingProps, e = d.revealOrder, f = d.tail;
        Xi(a, b, d.children, c);
        d = L.current;
        if (0 !== (d & 2)) d = d & 1 | 2, b.flags |= 128; else {
          if (null !== a && 0 !== (a.flags & 128)) a: for (a = b.child; null !== a; ) {
            if (13 === a.tag) null !== a.memoizedState && vj(a, c, b); else if (19 === a.tag) vj(a, c, b); else if (null !== a.child) {
              a.child.return = a;
              a = a.child;
              continue;
            }
            if (a === b) break a;
            for (;null === a.sibling; ) {
              if (null === a.return || a.return === b) break a;
              a = a.return;
            }
            a.sibling.return = a.return;
            a = a.sibling;
          }
          d &= 1;
        }
        G(L, d);
        if (0 === (b.mode & 1)) b.memoizedState = null; else switch (e) {
         case "forwards":
          c = b.child;
          for (e = null; null !== c; ) a = c.alternate, null !== a && null === Ch(a) && (e = c), 
          c = c.sibling;
          c = e;
          null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);
          wj(b, !1, e, c, f);
          break;

         case "backwards":
          c = null;
          e = b.child;
          for (b.child = null; null !== e; ) {
            a = e.alternate;
            if (null !== a && null === Ch(a)) {
              b.child = e;
              break;
            }
            a = e.sibling;
            e.sibling = c;
            c = e;
            e = a;
          }
          wj(b, !0, c, null, f);
          break;

         case "together":
          wj(b, !1, null, null, void 0);
          break;

         default:
          b.memoizedState = null;
        }
        return b.child;
      }
      function ij(a, b) {
        0 === (b.mode & 1) && null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2);
      }
      function Zi(a, b, c) {
        null !== a && (b.dependencies = a.dependencies);
        rh |= b.lanes;
        if (0 === (c & b.childLanes)) return null;
        if (null !== a && b.child !== a.child) throw Error(p(153));
        if (null !== b.child) {
          a = b.child;
          c = Pg(a, a.pendingProps);
          b.child = c;
          for (c.return = b; null !== a.sibling; ) a = a.sibling, c = c.sibling = Pg(a, a.pendingProps), 
          c.return = b;
          c.sibling = null;
        }
        return b.child;
      }
      function yj(a, b, c) {
        switch (b.tag) {
         case 3:
          kj(b);
          Ig();
          break;

         case 5:
          Ah(b);
          break;

         case 1:
          Zf(b.type) && cg(b);
          break;

         case 4:
          yh(b, b.stateNode.containerInfo);
          break;

         case 10:
          var d = b.type._context, e = b.memoizedProps.value;
          G(Wg, d._currentValue);
          d._currentValue = e;
          break;

         case 13:
          d = b.memoizedState;
          if (null !== d) {
            if (null !== d.dehydrated) return G(L, L.current & 1), b.flags |= 128, null;
            if (0 !== (c & b.child.childLanes)) return oj(a, b, c);
            G(L, L.current & 1);
            a = Zi(a, b, c);
            return null !== a ? a.sibling : null;
          }
          G(L, L.current & 1);
          break;

         case 19:
          d = 0 !== (c & b.childLanes);
          if (0 !== (a.flags & 128)) {
            if (d) return xj(a, b, c);
            b.flags |= 128;
          }
          e = b.memoizedState;
          null !== e && (e.rendering = null, e.tail = null, e.lastEffect = null);
          G(L, L.current);
          if (d) break; else return null;

         case 22:
         case 23:
          return b.lanes = 0, dj(a, b, c);
        }
        return Zi(a, b, c);
      }
      var zj, Aj, Bj, Cj;
      zj = function(a, b) {
        for (var c = b.child; null !== c; ) {
          if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode); else if (4 !== c.tag && null !== c.child) {
            c.child.return = c;
            c = c.child;
            continue;
          }
          if (c === b) break;
          for (;null === c.sibling; ) {
            if (null === c.return || c.return === b) return;
            c = c.return;
          }
          c.sibling.return = c.return;
          c = c.sibling;
        }
      };
      Aj = function() {};
      Bj = function(a, b, c, d) {
        var e = a.memoizedProps;
        if (e !== d) {
          a = b.stateNode;
          xh(uh.current);
          var f = null;
          switch (c) {
           case "input":
            e = Ya(a, e);
            d = Ya(a, d);
            f = [];
            break;

           case "select":
            e = A({}, e, {
              value: void 0
            });
            d = A({}, d, {
              value: void 0
            });
            f = [];
            break;

           case "textarea":
            e = gb(a, e);
            d = gb(a, d);
            f = [];
            break;

           default:
            "function" !== typeof e.onClick && "function" === typeof d.onClick && (a.onclick = Bf);
          }
          ub(c, d);
          var g;
          c = null;
          for (l in e) if (!d.hasOwnProperty(l) && e.hasOwnProperty(l) && null != e[l]) if ("style" === l) {
            var h = e[l];
            for (g in h) h.hasOwnProperty(g) && (c || (c = {}), c[g] = "");
          } else "dangerouslySetInnerHTML" !== l && "children" !== l && "suppressContentEditableWarning" !== l && "suppressHydrationWarning" !== l && "autoFocus" !== l && (ea.hasOwnProperty(l) ? f || (f = []) : (f = f || []).push(l, null));
          for (l in d) {
            var k = d[l];
            h = null != e ? e[l] : void 0;
            if (d.hasOwnProperty(l) && k !== h && (null != k || null != h)) if ("style" === l) if (h) {
              for (g in h) !h.hasOwnProperty(g) || k && k.hasOwnProperty(g) || (c || (c = {}), 
              c[g] = "");
              for (g in k) k.hasOwnProperty(g) && h[g] !== k[g] && (c || (c = {}), c[g] = k[g]);
            } else c || (f || (f = []), f.push(l, c)), c = k; else "dangerouslySetInnerHTML" === l ? (k = k ? k.__html : void 0, 
            h = h ? h.__html : void 0, null != k && h !== k && (f = f || []).push(l, k)) : "children" === l ? "string" !== typeof k && "number" !== typeof k || (f = f || []).push(l, "" + k) : "suppressContentEditableWarning" !== l && "suppressHydrationWarning" !== l && (ea.hasOwnProperty(l) ? (null != k && "onScroll" === l && D("scroll", a), 
            f || h === k || (f = [])) : (f = f || []).push(l, k));
          }
          c && (f = f || []).push("style", c);
          var l = f;
          if (b.updateQueue = l) b.flags |= 4;
        }
      };
      Cj = function(a, b, c, d) {
        c !== d && (b.flags |= 4);
      };
      function Dj(a, b) {
        if (!I) switch (a.tailMode) {
         case "hidden":
          b = a.tail;
          for (var c = null; null !== b; ) null !== b.alternate && (c = b), b = b.sibling;
          null === c ? a.tail = null : c.sibling = null;
          break;

         case "collapsed":
          c = a.tail;
          for (var d = null; null !== c; ) null !== c.alternate && (d = c), c = c.sibling;
          null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;
        }
      }
      function S(a) {
        var b = null !== a.alternate && a.alternate.child === a.child, c = 0, d = 0;
        if (b) for (var e = a.child; null !== e; ) c |= e.lanes | e.childLanes, d |= e.subtreeFlags & 14680064, 
        d |= e.flags & 14680064, e.return = a, e = e.sibling; else for (e = a.child; null !== e; ) c |= e.lanes | e.childLanes, 
        d |= e.subtreeFlags, d |= e.flags, e.return = a, e = e.sibling;
        a.subtreeFlags |= d;
        a.childLanes = c;
        return b;
      }
      function Ej(a, b, c) {
        var d = b.pendingProps;
        wg(b);
        switch (b.tag) {
         case 2:
         case 16:
         case 15:
         case 0:
         case 11:
         case 7:
         case 8:
         case 12:
         case 9:
         case 14:
          return S(b), null;

         case 1:
          return Zf(b.type) && $f(), S(b), null;

         case 3:
          d = b.stateNode;
          zh();
          E(Wf);
          E(H);
          Eh();
          d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null);
          if (null === a || null === a.child) Gg(b) ? b.flags |= 4 : null === a || a.memoizedState.isDehydrated && 0 === (b.flags & 256) || (b.flags |= 1024, 
          null !== zg && (Fj(zg), zg = null));
          Aj(a, b);
          S(b);
          return null;

         case 5:
          Bh(b);
          var e = xh(wh.current);
          c = b.type;
          if (null !== a && null != b.stateNode) Bj(a, b, c, d, e), a.ref !== b.ref && (b.flags |= 512, 
          b.flags |= 2097152); else {
            if (!d) {
              if (null === b.stateNode) throw Error(p(166));
              S(b);
              return null;
            }
            a = xh(uh.current);
            if (Gg(b)) {
              d = b.stateNode;
              c = b.type;
              var f = b.memoizedProps;
              d[Of] = b;
              d[Pf] = f;
              a = 0 !== (b.mode & 1);
              switch (c) {
               case "dialog":
                D("cancel", d);
                D("close", d);
                break;

               case "iframe":
               case "object":
               case "embed":
                D("load", d);
                break;

               case "video":
               case "audio":
                for (e = 0; e < lf.length; e++) D(lf[e], d);
                break;

               case "source":
                D("error", d);
                break;

               case "img":
               case "image":
               case "link":
                D("error", d);
                D("load", d);
                break;

               case "details":
                D("toggle", d);
                break;

               case "input":
                Za(d, f);
                D("invalid", d);
                break;

               case "select":
                d._wrapperState = {
                  wasMultiple: !!f.multiple
                };
                D("invalid", d);
                break;

               case "textarea":
                hb(d, f), D("invalid", d);
              }
              ub(c, f);
              e = null;
              for (var g in f) if (f.hasOwnProperty(g)) {
                var h = f[g];
                "children" === g ? "string" === typeof h ? d.textContent !== h && (!0 !== f.suppressHydrationWarning && Af(d.textContent, h, a), 
                e = [ "children", h ]) : "number" === typeof h && d.textContent !== "" + h && (!0 !== f.suppressHydrationWarning && Af(d.textContent, h, a), 
                e = [ "children", "" + h ]) : ea.hasOwnProperty(g) && null != h && "onScroll" === g && D("scroll", d);
              }
              switch (c) {
               case "input":
                Va(d);
                db(d, f, !0);
                break;

               case "textarea":
                Va(d);
                jb(d);
                break;

               case "select":
               case "option":
                break;

               default:
                "function" === typeof f.onClick && (d.onclick = Bf);
              }
              d = e;
              b.updateQueue = d;
              null !== d && (b.flags |= 4);
            } else {
              g = 9 === e.nodeType ? e : e.ownerDocument;
              "http://www.w3.org/1999/xhtml" === a && (a = kb(c));
              "http://www.w3.org/1999/xhtml" === a ? "script" === c ? (a = g.createElement("div"), 
              a.innerHTML = "<script><\/script>", a = a.removeChild(a.firstChild)) : "string" === typeof d.is ? a = g.createElement(c, {
                is: d.is
              }) : (a = g.createElement(c), "select" === c && (g = a, d.multiple ? g.multiple = !0 : d.size && (g.size = d.size))) : a = g.createElementNS(a, c);
              a[Of] = b;
              a[Pf] = d;
              zj(a, b, !1, !1);
              b.stateNode = a;
              a: {
                g = vb(c, d);
                switch (c) {
                 case "dialog":
                  D("cancel", a);
                  D("close", a);
                  e = d;
                  break;

                 case "iframe":
                 case "object":
                 case "embed":
                  D("load", a);
                  e = d;
                  break;

                 case "video":
                 case "audio":
                  for (e = 0; e < lf.length; e++) D(lf[e], a);
                  e = d;
                  break;

                 case "source":
                  D("error", a);
                  e = d;
                  break;

                 case "img":
                 case "image":
                 case "link":
                  D("error", a);
                  D("load", a);
                  e = d;
                  break;

                 case "details":
                  D("toggle", a);
                  e = d;
                  break;

                 case "input":
                  Za(a, d);
                  e = Ya(a, d);
                  D("invalid", a);
                  break;

                 case "option":
                  e = d;
                  break;

                 case "select":
                  a._wrapperState = {
                    wasMultiple: !!d.multiple
                  };
                  e = A({}, d, {
                    value: void 0
                  });
                  D("invalid", a);
                  break;

                 case "textarea":
                  hb(a, d);
                  e = gb(a, d);
                  D("invalid", a);
                  break;

                 default:
                  e = d;
                }
                ub(c, e);
                h = e;
                for (f in h) if (h.hasOwnProperty(f)) {
                  var k = h[f];
                  "style" === f ? sb(a, k) : "dangerouslySetInnerHTML" === f ? (k = k ? k.__html : void 0, 
                  null != k && nb(a, k)) : "children" === f ? "string" === typeof k ? ("textarea" !== c || "" !== k) && ob(a, k) : "number" === typeof k && ob(a, "" + k) : "suppressContentEditableWarning" !== f && "suppressHydrationWarning" !== f && "autoFocus" !== f && (ea.hasOwnProperty(f) ? null != k && "onScroll" === f && D("scroll", a) : null != k && ta(a, f, k, g));
                }
                switch (c) {
                 case "input":
                  Va(a);
                  db(a, d, !1);
                  break;

                 case "textarea":
                  Va(a);
                  jb(a);
                  break;

                 case "option":
                  null != d.value && a.setAttribute("value", "" + Sa(d.value));
                  break;

                 case "select":
                  a.multiple = !!d.multiple;
                  f = d.value;
                  null != f ? fb(a, !!d.multiple, f, !1) : null != d.defaultValue && fb(a, !!d.multiple, d.defaultValue, !0);
                  break;

                 default:
                  "function" === typeof e.onClick && (a.onclick = Bf);
                }
                switch (c) {
                 case "button":
                 case "input":
                 case "select":
                 case "textarea":
                  d = !!d.autoFocus;
                  break a;

                 case "img":
                  d = !0;
                  break a;

                 default:
                  d = !1;
                }
              }
              d && (b.flags |= 4);
            }
            null !== b.ref && (b.flags |= 512, b.flags |= 2097152);
          }
          S(b);
          return null;

         case 6:
          if (a && null != b.stateNode) Cj(a, b, a.memoizedProps, d); else {
            if ("string" !== typeof d && null === b.stateNode) throw Error(p(166));
            c = xh(wh.current);
            xh(uh.current);
            if (Gg(b)) {
              d = b.stateNode;
              c = b.memoizedProps;
              d[Of] = b;
              if (f = d.nodeValue !== c) if (a = xg, null !== a) switch (a.tag) {
               case 3:
                Af(d.nodeValue, c, 0 !== (a.mode & 1));
                break;

               case 5:
                !0 !== a.memoizedProps.suppressHydrationWarning && Af(d.nodeValue, c, 0 !== (a.mode & 1));
              }
              f && (b.flags |= 4);
            } else d = (9 === c.nodeType ? c : c.ownerDocument).createTextNode(d), d[Of] = b, 
            b.stateNode = d;
          }
          S(b);
          return null;

         case 13:
          E(L);
          d = b.memoizedState;
          if (null === a || null !== a.memoizedState && null !== a.memoizedState.dehydrated) {
            if (I && null !== yg && 0 !== (b.mode & 1) && 0 === (b.flags & 128)) Hg(), Ig(), 
            b.flags |= 98560, f = !1; else if (f = Gg(b), null !== d && null !== d.dehydrated) {
              if (null === a) {
                if (!f) throw Error(p(318));
                f = b.memoizedState;
                f = null !== f ? f.dehydrated : null;
                if (!f) throw Error(p(317));
                f[Of] = b;
              } else Ig(), 0 === (b.flags & 128) && (b.memoizedState = null), b.flags |= 4;
              S(b);
              f = !1;
            } else null !== zg && (Fj(zg), zg = null), f = !0;
            if (!f) return b.flags & 65536 ? b : null;
          }
          if (0 !== (b.flags & 128)) return b.lanes = c, b;
          d = null !== d;
          d !== (null !== a && null !== a.memoizedState) && d && (b.child.flags |= 8192, 0 !== (b.mode & 1) && (null === a || 0 !== (L.current & 1) ? 0 === T && (T = 3) : tj()));
          null !== b.updateQueue && (b.flags |= 4);
          S(b);
          return null;

         case 4:
          return zh(), Aj(a, b), null === a && sf(b.stateNode.containerInfo), S(b), null;

         case 10:
          return ah(b.type._context), S(b), null;

         case 17:
          return Zf(b.type) && $f(), S(b), null;

         case 19:
          E(L);
          f = b.memoizedState;
          if (null === f) return S(b), null;
          d = 0 !== (b.flags & 128);
          g = f.rendering;
          if (null === g) if (d) Dj(f, !1); else {
            if (0 !== T || null !== a && 0 !== (a.flags & 128)) for (a = b.child; null !== a; ) {
              g = Ch(a);
              if (null !== g) {
                b.flags |= 128;
                Dj(f, !1);
                d = g.updateQueue;
                null !== d && (b.updateQueue = d, b.flags |= 4);
                b.subtreeFlags = 0;
                d = c;
                for (c = b.child; null !== c; ) f = c, a = d, f.flags &= 14680066, g = f.alternate, 
                null === g ? (f.childLanes = 0, f.lanes = a, f.child = null, f.subtreeFlags = 0, 
                f.memoizedProps = null, f.memoizedState = null, f.updateQueue = null, f.dependencies = null, 
                f.stateNode = null) : (f.childLanes = g.childLanes, f.lanes = g.lanes, f.child = g.child, 
                f.subtreeFlags = 0, f.deletions = null, f.memoizedProps = g.memoizedProps, f.memoizedState = g.memoizedState, 
                f.updateQueue = g.updateQueue, f.type = g.type, a = g.dependencies, f.dependencies = null === a ? null : {
                  lanes: a.lanes,
                  firstContext: a.firstContext
                }), c = c.sibling;
                G(L, L.current & 1 | 2);
                return b.child;
              }
              a = a.sibling;
            }
            null !== f.tail && B() > Gj && (b.flags |= 128, d = !0, Dj(f, !1), b.lanes = 4194304);
          } else {
            if (!d) if (a = Ch(g), null !== a) {
              if (b.flags |= 128, d = !0, c = a.updateQueue, null !== c && (b.updateQueue = c, 
              b.flags |= 4), Dj(f, !0), null === f.tail && "hidden" === f.tailMode && !g.alternate && !I) return S(b), 
              null;
            } else 2 * B() - f.renderingStartTime > Gj && 1073741824 !== c && (b.flags |= 128, 
            d = !0, Dj(f, !1), b.lanes = 4194304);
            f.isBackwards ? (g.sibling = b.child, b.child = g) : (c = f.last, null !== c ? c.sibling = g : b.child = g, 
            f.last = g);
          }
          if (null !== f.tail) return b = f.tail, f.rendering = b, f.tail = b.sibling, f.renderingStartTime = B(), 
          b.sibling = null, c = L.current, G(L, d ? c & 1 | 2 : c & 1), b;
          S(b);
          return null;

         case 22:
         case 23:
          return Hj(), d = null !== b.memoizedState, null !== a && null !== a.memoizedState !== d && (b.flags |= 8192), 
          d && 0 !== (b.mode & 1) ? 0 !== (fj & 1073741824) && (S(b), b.subtreeFlags & 6 && (b.flags |= 8192)) : S(b), 
          null;

         case 24:
          return null;

         case 25:
          return null;
        }
        throw Error(p(156, b.tag));
      }
      function Ij(a, b) {
        wg(b);
        switch (b.tag) {
         case 1:
          return Zf(b.type) && $f(), a = b.flags, a & 65536 ? (b.flags = a & -65537 | 128, 
          b) : null;

         case 3:
          return zh(), E(Wf), E(H), Eh(), a = b.flags, 0 !== (a & 65536) && 0 === (a & 128) ? (b.flags = a & -65537 | 128, 
          b) : null;

         case 5:
          return Bh(b), null;

         case 13:
          E(L);
          a = b.memoizedState;
          if (null !== a && null !== a.dehydrated) {
            if (null === b.alternate) throw Error(p(340));
            Ig();
          }
          a = b.flags;
          return a & 65536 ? (b.flags = a & -65537 | 128, b) : null;

         case 19:
          return E(L), null;

         case 4:
          return zh(), null;

         case 10:
          return ah(b.type._context), null;

         case 22:
         case 23:
          return Hj(), null;

         case 24:
          return null;

         default:
          return null;
        }
      }
      var Jj = !1, U = !1, Kj = "function" === typeof WeakSet ? WeakSet : Set, V = null;
      function Lj(a, b) {
        var c = a.ref;
        if (null !== c) if ("function" === typeof c) try {
          c(null);
        } catch (d) {
          W(a, b, d);
        } else c.current = null;
      }
      function Mj(a, b, c) {
        try {
          c();
        } catch (d) {
          W(a, b, d);
        }
      }
      var Nj = !1;
      function Oj(a, b) {
        Cf = dd;
        a = Me();
        if (Ne(a)) {
          if ("selectionStart" in a) var c = {
            start: a.selectionStart,
            end: a.selectionEnd
          }; else a: {
            c = (c = a.ownerDocument) && c.defaultView || window;
            var d = c.getSelection && c.getSelection();
            if (d && 0 !== d.rangeCount) {
              c = d.anchorNode;
              var e = d.anchorOffset, f = d.focusNode;
              d = d.focusOffset;
              try {
                c.nodeType, f.nodeType;
              } catch (F) {
                c = null;
                break a;
              }
              var g = 0, h = -1, k = -1, l = 0, m = 0, q = a, r = null;
              b: for (;;) {
                for (var y; ;) {
                  q !== c || 0 !== e && 3 !== q.nodeType || (h = g + e);
                  q !== f || 0 !== d && 3 !== q.nodeType || (k = g + d);
                  3 === q.nodeType && (g += q.nodeValue.length);
                  if (null === (y = q.firstChild)) break;
                  r = q;
                  q = y;
                }
                for (;;) {
                  if (q === a) break b;
                  r === c && ++l === e && (h = g);
                  r === f && ++m === d && (k = g);
                  if (null !== (y = q.nextSibling)) break;
                  q = r;
                  r = q.parentNode;
                }
                q = y;
              }
              c = -1 === h || -1 === k ? null : {
                start: h,
                end: k
              };
            } else c = null;
          }
          c = c || {
            start: 0,
            end: 0
          };
        } else c = null;
        Df = {
          focusedElem: a,
          selectionRange: c
        };
        dd = !1;
        for (V = b; null !== V; ) if (b = V, a = b.child, 0 !== (b.subtreeFlags & 1028) && null !== a) a.return = b, 
        V = a; else for (;null !== V; ) {
          b = V;
          try {
            var n = b.alternate;
            if (0 !== (b.flags & 1024)) switch (b.tag) {
             case 0:
             case 11:
             case 15:
              break;

             case 1:
              if (null !== n) {
                var t = n.memoizedProps, J = n.memoizedState, x = b.stateNode, w = x.getSnapshotBeforeUpdate(b.elementType === b.type ? t : Ci(b.type, t), J);
                x.__reactInternalSnapshotBeforeUpdate = w;
              }
              break;

             case 3:
              var u = b.stateNode.containerInfo;
              1 === u.nodeType ? u.textContent = "" : 9 === u.nodeType && u.documentElement && u.removeChild(u.documentElement);
              break;

             case 5:
             case 6:
             case 4:
             case 17:
              break;

             default:
              throw Error(p(163));
            }
          } catch (F) {
            W(b, b.return, F);
          }
          a = b.sibling;
          if (null !== a) {
            a.return = b.return;
            V = a;
            break;
          }
          V = b.return;
        }
        n = Nj;
        Nj = !1;
        return n;
      }
      function Pj(a, b, c) {
        var d = b.updateQueue;
        d = null !== d ? d.lastEffect : null;
        if (null !== d) {
          var e = d = d.next;
          do {
            if ((e.tag & a) === a) {
              var f = e.destroy;
              e.destroy = void 0;
              void 0 !== f && Mj(b, c, f);
            }
            e = e.next;
          } while (e !== d);
        }
      }
      function Qj(a, b) {
        b = b.updateQueue;
        b = null !== b ? b.lastEffect : null;
        if (null !== b) {
          var c = b = b.next;
          do {
            if ((c.tag & a) === a) {
              var d = c.create;
              c.destroy = d();
            }
            c = c.next;
          } while (c !== b);
        }
      }
      function Rj(a) {
        var b = a.ref;
        if (null !== b) {
          var c = a.stateNode;
          switch (a.tag) {
           case 5:
            a = c;
            break;

           default:
            a = c;
          }
          "function" === typeof b ? b(a) : b.current = a;
        }
      }
      function Sj(a) {
        var b = a.alternate;
        null !== b && (a.alternate = null, Sj(b));
        a.child = null;
        a.deletions = null;
        a.sibling = null;
        5 === a.tag && (b = a.stateNode, null !== b && (delete b[Of], delete b[Pf], delete b[of], 
        delete b[Qf], delete b[Rf]));
        a.stateNode = null;
        a.return = null;
        a.dependencies = null;
        a.memoizedProps = null;
        a.memoizedState = null;
        a.pendingProps = null;
        a.stateNode = null;
        a.updateQueue = null;
      }
      function Tj(a) {
        return 5 === a.tag || 3 === a.tag || 4 === a.tag;
      }
      function Uj(a) {
        a: for (;;) {
          for (;null === a.sibling; ) {
            if (null === a.return || Tj(a.return)) return null;
            a = a.return;
          }
          a.sibling.return = a.return;
          for (a = a.sibling; 5 !== a.tag && 6 !== a.tag && 18 !== a.tag; ) {
            if (a.flags & 2) continue a;
            if (null === a.child || 4 === a.tag) continue a; else a.child.return = a, a = a.child;
          }
          if (!(a.flags & 2)) return a.stateNode;
        }
      }
      function Vj(a, b, c) {
        var d = a.tag;
        if (5 === d || 6 === d) a = a.stateNode, b ? 8 === c.nodeType ? c.parentNode.insertBefore(a, b) : c.insertBefore(a, b) : (8 === c.nodeType ? (b = c.parentNode, 
        b.insertBefore(a, c)) : (b = c, b.appendChild(a)), c = c._reactRootContainer, null !== c && void 0 !== c || null !== b.onclick || (b.onclick = Bf)); else if (4 !== d && (a = a.child, 
        null !== a)) for (Vj(a, b, c), a = a.sibling; null !== a; ) Vj(a, b, c), a = a.sibling;
      }
      function Wj(a, b, c) {
        var d = a.tag;
        if (5 === d || 6 === d) a = a.stateNode, b ? c.insertBefore(a, b) : c.appendChild(a); else if (4 !== d && (a = a.child, 
        null !== a)) for (Wj(a, b, c), a = a.sibling; null !== a; ) Wj(a, b, c), a = a.sibling;
      }
      var X = null, Xj = !1;
      function Yj(a, b, c) {
        for (c = c.child; null !== c; ) Zj(a, b, c), c = c.sibling;
      }
      function Zj(a, b, c) {
        if (lc && "function" === typeof lc.onCommitFiberUnmount) try {
          lc.onCommitFiberUnmount(kc, c);
        } catch (h) {}
        switch (c.tag) {
         case 5:
          U || Lj(c, b);

         case 6:
          var d = X, e = Xj;
          X = null;
          Yj(a, b, c);
          X = d;
          Xj = e;
          null !== X && (Xj ? (a = X, c = c.stateNode, 8 === a.nodeType ? a.parentNode.removeChild(c) : a.removeChild(c)) : X.removeChild(c.stateNode));
          break;

         case 18:
          null !== X && (Xj ? (a = X, c = c.stateNode, 8 === a.nodeType ? Kf(a.parentNode, c) : 1 === a.nodeType && Kf(a, c), 
          bd(a)) : Kf(X, c.stateNode));
          break;

         case 4:
          d = X;
          e = Xj;
          X = c.stateNode.containerInfo;
          Xj = !0;
          Yj(a, b, c);
          X = d;
          Xj = e;
          break;

         case 0:
         case 11:
         case 14:
         case 15:
          if (!U && (d = c.updateQueue, null !== d && (d = d.lastEffect, null !== d))) {
            e = d = d.next;
            do {
              var f = e, g = f.destroy;
              f = f.tag;
              void 0 !== g && (0 !== (f & 2) ? Mj(c, b, g) : 0 !== (f & 4) && Mj(c, b, g));
              e = e.next;
            } while (e !== d);
          }
          Yj(a, b, c);
          break;

         case 1:
          if (!U && (Lj(c, b), d = c.stateNode, "function" === typeof d.componentWillUnmount)) try {
            d.props = c.memoizedProps, d.state = c.memoizedState, d.componentWillUnmount();
          } catch (h) {
            W(c, b, h);
          }
          Yj(a, b, c);
          break;

         case 21:
          Yj(a, b, c);
          break;

         case 22:
          c.mode & 1 ? (U = (d = U) || null !== c.memoizedState, Yj(a, b, c), U = d) : Yj(a, b, c);
          break;

         default:
          Yj(a, b, c);
        }
      }
      function ak(a) {
        var b = a.updateQueue;
        if (null !== b) {
          a.updateQueue = null;
          var c = a.stateNode;
          null === c && (c = a.stateNode = new Kj);
          b.forEach((function(b) {
            var d = bk.bind(null, a, b);
            c.has(b) || (c.add(b), b.then(d, d));
          }));
        }
      }
      function ck(a, b) {
        var c = b.deletions;
        if (null !== c) for (var d = 0; d < c.length; d++) {
          var e = c[d];
          try {
            var f = a, g = b, h = g;
            a: for (;null !== h; ) {
              switch (h.tag) {
               case 5:
                X = h.stateNode;
                Xj = !1;
                break a;

               case 3:
                X = h.stateNode.containerInfo;
                Xj = !0;
                break a;

               case 4:
                X = h.stateNode.containerInfo;
                Xj = !0;
                break a;
              }
              h = h.return;
            }
            if (null === X) throw Error(p(160));
            Zj(f, g, e);
            X = null;
            Xj = !1;
            var k = e.alternate;
            null !== k && (k.return = null);
            e.return = null;
          } catch (l) {
            W(e, b, l);
          }
        }
        if (b.subtreeFlags & 12854) for (b = b.child; null !== b; ) dk(b, a), b = b.sibling;
      }
      function dk(a, b) {
        var c = a.alternate, d = a.flags;
        switch (a.tag) {
         case 0:
         case 11:
         case 14:
         case 15:
          ck(b, a);
          ek(a);
          if (d & 4) {
            try {
              Pj(3, a, a.return), Qj(3, a);
            } catch (t) {
              W(a, a.return, t);
            }
            try {
              Pj(5, a, a.return);
            } catch (t) {
              W(a, a.return, t);
            }
          }
          break;

         case 1:
          ck(b, a);
          ek(a);
          d & 512 && null !== c && Lj(c, c.return);
          break;

         case 5:
          ck(b, a);
          ek(a);
          d & 512 && null !== c && Lj(c, c.return);
          if (a.flags & 32) {
            var e = a.stateNode;
            try {
              ob(e, "");
            } catch (t) {
              W(a, a.return, t);
            }
          }
          if (d & 4 && (e = a.stateNode, null != e)) {
            var f = a.memoizedProps, g = null !== c ? c.memoizedProps : f, h = a.type, k = a.updateQueue;
            a.updateQueue = null;
            if (null !== k) try {
              "input" === h && "radio" === f.type && null != f.name && ab(e, f);
              vb(h, g);
              var l = vb(h, f);
              for (g = 0; g < k.length; g += 2) {
                var m = k[g], q = k[g + 1];
                "style" === m ? sb(e, q) : "dangerouslySetInnerHTML" === m ? nb(e, q) : "children" === m ? ob(e, q) : ta(e, m, q, l);
              }
              switch (h) {
               case "input":
                bb(e, f);
                break;

               case "textarea":
                ib(e, f);
                break;

               case "select":
                var r = e._wrapperState.wasMultiple;
                e._wrapperState.wasMultiple = !!f.multiple;
                var y = f.value;
                null != y ? fb(e, !!f.multiple, y, !1) : r !== !!f.multiple && (null != f.defaultValue ? fb(e, !!f.multiple, f.defaultValue, !0) : fb(e, !!f.multiple, f.multiple ? [] : "", !1));
              }
              e[Pf] = f;
            } catch (t) {
              W(a, a.return, t);
            }
          }
          break;

         case 6:
          ck(b, a);
          ek(a);
          if (d & 4) {
            if (null === a.stateNode) throw Error(p(162));
            e = a.stateNode;
            f = a.memoizedProps;
            try {
              e.nodeValue = f;
            } catch (t) {
              W(a, a.return, t);
            }
          }
          break;

         case 3:
          ck(b, a);
          ek(a);
          if (d & 4 && null !== c && c.memoizedState.isDehydrated) try {
            bd(b.containerInfo);
          } catch (t) {
            W(a, a.return, t);
          }
          break;

         case 4:
          ck(b, a);
          ek(a);
          break;

         case 13:
          ck(b, a);
          ek(a);
          e = a.child;
          e.flags & 8192 && (f = null !== e.memoizedState, e.stateNode.isHidden = f, !f || null !== e.alternate && null !== e.alternate.memoizedState || (fk = B()));
          d & 4 && ak(a);
          break;

         case 22:
          m = null !== c && null !== c.memoizedState;
          a.mode & 1 ? (U = (l = U) || m, ck(b, a), U = l) : ck(b, a);
          ek(a);
          if (d & 8192) {
            l = null !== a.memoizedState;
            if ((a.stateNode.isHidden = l) && !m && 0 !== (a.mode & 1)) for (V = a, m = a.child; null !== m; ) {
              for (q = V = m; null !== V; ) {
                r = V;
                y = r.child;
                switch (r.tag) {
                 case 0:
                 case 11:
                 case 14:
                 case 15:
                  Pj(4, r, r.return);
                  break;

                 case 1:
                  Lj(r, r.return);
                  var n = r.stateNode;
                  if ("function" === typeof n.componentWillUnmount) {
                    d = r;
                    c = r.return;
                    try {
                      b = d, n.props = b.memoizedProps, n.state = b.memoizedState, n.componentWillUnmount();
                    } catch (t) {
                      W(d, c, t);
                    }
                  }
                  break;

                 case 5:
                  Lj(r, r.return);
                  break;

                 case 22:
                  if (null !== r.memoizedState) {
                    gk(q);
                    continue;
                  }
                }
                null !== y ? (y.return = r, V = y) : gk(q);
              }
              m = m.sibling;
            }
            a: for (m = null, q = a; ;) {
              if (5 === q.tag) {
                if (null === m) {
                  m = q;
                  try {
                    e = q.stateNode, l ? (f = e.style, "function" === typeof f.setProperty ? f.setProperty("display", "none", "important") : f.display = "none") : (h = q.stateNode, 
                    k = q.memoizedProps.style, g = void 0 !== k && null !== k && k.hasOwnProperty("display") ? k.display : null, 
                    h.style.display = rb("display", g));
                  } catch (t) {
                    W(a, a.return, t);
                  }
                }
              } else if (6 === q.tag) {
                if (null === m) try {
                  q.stateNode.nodeValue = l ? "" : q.memoizedProps;
                } catch (t) {
                  W(a, a.return, t);
                }
              } else if ((22 !== q.tag && 23 !== q.tag || null === q.memoizedState || q === a) && null !== q.child) {
                q.child.return = q;
                q = q.child;
                continue;
              }
              if (q === a) break a;
              for (;null === q.sibling; ) {
                if (null === q.return || q.return === a) break a;
                m === q && (m = null);
                q = q.return;
              }
              m === q && (m = null);
              q.sibling.return = q.return;
              q = q.sibling;
            }
          }
          break;

         case 19:
          ck(b, a);
          ek(a);
          d & 4 && ak(a);
          break;

         case 21:
          break;

         default:
          ck(b, a), ek(a);
        }
      }
      function ek(a) {
        var b = a.flags;
        if (b & 2) {
          try {
            a: {
              for (var c = a.return; null !== c; ) {
                if (Tj(c)) {
                  var d = c;
                  break a;
                }
                c = c.return;
              }
              throw Error(p(160));
            }
            switch (d.tag) {
             case 5:
              var e = d.stateNode;
              d.flags & 32 && (ob(e, ""), d.flags &= -33);
              var f = Uj(a);
              Wj(a, f, e);
              break;

             case 3:
             case 4:
              var g = d.stateNode.containerInfo, h = Uj(a);
              Vj(a, h, g);
              break;

             default:
              throw Error(p(161));
            }
          } catch (k) {
            W(a, a.return, k);
          }
          a.flags &= -3;
        }
        b & 4096 && (a.flags &= -4097);
      }
      function hk(a, b, c) {
        V = a;
        ik(a, b, c);
      }
      function ik(a, b, c) {
        for (var d = 0 !== (a.mode & 1); null !== V; ) {
          var e = V, f = e.child;
          if (22 === e.tag && d) {
            var g = null !== e.memoizedState || Jj;
            if (!g) {
              var h = e.alternate, k = null !== h && null !== h.memoizedState || U;
              h = Jj;
              var l = U;
              Jj = g;
              if ((U = k) && !l) for (V = e; null !== V; ) g = V, k = g.child, 22 === g.tag && null !== g.memoizedState ? jk(e) : null !== k ? (k.return = g, 
              V = k) : jk(e);
              for (;null !== f; ) V = f, ik(f, b, c), f = f.sibling;
              V = e;
              Jj = h;
              U = l;
            }
            kk(a, b, c);
          } else 0 !== (e.subtreeFlags & 8772) && null !== f ? (f.return = e, V = f) : kk(a, b, c);
        }
      }
      function kk(a) {
        for (;null !== V; ) {
          var b = V;
          if (0 !== (b.flags & 8772)) {
            var c = b.alternate;
            try {
              if (0 !== (b.flags & 8772)) switch (b.tag) {
               case 0:
               case 11:
               case 15:
                U || Qj(5, b);
                break;

               case 1:
                var d = b.stateNode;
                if (b.flags & 4 && !U) if (null === c) d.componentDidMount(); else {
                  var e = b.elementType === b.type ? c.memoizedProps : Ci(b.type, c.memoizedProps);
                  d.componentDidUpdate(e, c.memoizedState, d.__reactInternalSnapshotBeforeUpdate);
                }
                var f = b.updateQueue;
                null !== f && sh(b, f, d);
                break;

               case 3:
                var g = b.updateQueue;
                if (null !== g) {
                  c = null;
                  if (null !== b.child) switch (b.child.tag) {
                   case 5:
                    c = b.child.stateNode;
                    break;

                   case 1:
                    c = b.child.stateNode;
                  }
                  sh(b, g, c);
                }
                break;

               case 5:
                var h = b.stateNode;
                if (null === c && b.flags & 4) {
                  c = h;
                  var k = b.memoizedProps;
                  switch (b.type) {
                   case "button":
                   case "input":
                   case "select":
                   case "textarea":
                    k.autoFocus && c.focus();
                    break;

                   case "img":
                    k.src && (c.src = k.src);
                  }
                }
                break;

               case 6:
                break;

               case 4:
                break;

               case 12:
                break;

               case 13:
                if (null === b.memoizedState) {
                  var l = b.alternate;
                  if (null !== l) {
                    var m = l.memoizedState;
                    if (null !== m) {
                      var q = m.dehydrated;
                      null !== q && bd(q);
                    }
                  }
                }
                break;

               case 19:
               case 17:
               case 21:
               case 22:
               case 23:
               case 25:
                break;

               default:
                throw Error(p(163));
              }
              U || b.flags & 512 && Rj(b);
            } catch (r) {
              W(b, b.return, r);
            }
          }
          if (b === a) {
            V = null;
            break;
          }
          c = b.sibling;
          if (null !== c) {
            c.return = b.return;
            V = c;
            break;
          }
          V = b.return;
        }
      }
      function gk(a) {
        for (;null !== V; ) {
          var b = V;
          if (b === a) {
            V = null;
            break;
          }
          var c = b.sibling;
          if (null !== c) {
            c.return = b.return;
            V = c;
            break;
          }
          V = b.return;
        }
      }
      function jk(a) {
        for (;null !== V; ) {
          var b = V;
          try {
            switch (b.tag) {
             case 0:
             case 11:
             case 15:
              var c = b.return;
              try {
                Qj(4, b);
              } catch (k) {
                W(b, c, k);
              }
              break;

             case 1:
              var d = b.stateNode;
              if ("function" === typeof d.componentDidMount) {
                var e = b.return;
                try {
                  d.componentDidMount();
                } catch (k) {
                  W(b, e, k);
                }
              }
              var f = b.return;
              try {
                Rj(b);
              } catch (k) {
                W(b, f, k);
              }
              break;

             case 5:
              var g = b.return;
              try {
                Rj(b);
              } catch (k) {
                W(b, g, k);
              }
            }
          } catch (k) {
            W(b, b.return, k);
          }
          if (b === a) {
            V = null;
            break;
          }
          var h = b.sibling;
          if (null !== h) {
            h.return = b.return;
            V = h;
            break;
          }
          V = b.return;
        }
      }
      var lk = Math.ceil, mk = ua.ReactCurrentDispatcher, nk = ua.ReactCurrentOwner, ok = ua.ReactCurrentBatchConfig, K = 0, Q = null, Y = null, Z = 0, fj = 0, ej = Uf(0), T = 0, pk = null, rh = 0, qk = 0, rk = 0, sk = null, tk = null, fk = 0, Gj = Infinity, uk = null, Oi = !1, Pi = null, Ri = null, vk = !1, wk = null, xk = 0, yk = 0, zk = null, Ak = -1, Bk = 0;
      function R() {
        return 0 !== (K & 6) ? B() : -1 !== Ak ? Ak : Ak = B();
      }
      function yi(a) {
        if (0 === (a.mode & 1)) return 1;
        if (0 !== (K & 2) && 0 !== Z) return Z & -Z;
        if (null !== Kg.transition) return 0 === Bk && (Bk = yc()), Bk;
        a = C;
        if (0 !== a) return a;
        a = window.event;
        a = void 0 === a ? 16 : jd(a.type);
        return a;
      }
      function gi(a, b, c, d) {
        if (50 < yk) throw yk = 0, zk = null, Error(p(185));
        Ac(a, c, d);
        if (0 === (K & 2) || a !== Q) a === Q && (0 === (K & 2) && (qk |= c), 4 === T && Ck(a, Z)), 
        Dk(a, d), 1 === c && 0 === K && 0 === (b.mode & 1) && (Gj = B() + 500, fg && jg());
      }
      function Dk(a, b) {
        var c = a.callbackNode;
        wc(a, b);
        var d = uc(a, a === Q ? Z : 0);
        if (0 === d) null !== c && bc(c), a.callbackNode = null, a.callbackPriority = 0; else if (b = d & -d, 
        a.callbackPriority !== b) {
          null != c && bc(c);
          if (1 === b) 0 === a.tag ? ig(Ek.bind(null, a)) : hg(Ek.bind(null, a)), Jf((function() {
            0 === (K & 6) && jg();
          })), c = null; else {
            switch (Dc(d)) {
             case 1:
              c = fc;
              break;

             case 4:
              c = gc;
              break;

             case 16:
              c = hc;
              break;

             case 536870912:
              c = jc;
              break;

             default:
              c = hc;
            }
            c = Fk(c, Gk.bind(null, a));
          }
          a.callbackPriority = b;
          a.callbackNode = c;
        }
      }
      function Gk(a, b) {
        Ak = -1;
        Bk = 0;
        if (0 !== (K & 6)) throw Error(p(327));
        var c = a.callbackNode;
        if (Hk() && a.callbackNode !== c) return null;
        var d = uc(a, a === Q ? Z : 0);
        if (0 === d) return null;
        if (0 !== (d & 30) || 0 !== (d & a.expiredLanes) || b) b = Ik(a, d); else {
          b = d;
          var e = K;
          K |= 2;
          var f = Jk();
          if (Q !== a || Z !== b) uk = null, Gj = B() + 500, Kk(a, b);
          do {
            try {
              Lk();
              break;
            } catch (h) {
              Mk(a, h);
            }
          } while (1);
          $g();
          mk.current = f;
          K = e;
          null !== Y ? b = 0 : (Q = null, Z = 0, b = T);
        }
        if (0 !== b) {
          2 === b && (e = xc(a), 0 !== e && (d = e, b = Nk(a, e)));
          if (1 === b) throw c = pk, Kk(a, 0), Ck(a, d), Dk(a, B()), c;
          if (6 === b) Ck(a, d); else {
            e = a.current.alternate;
            if (0 === (d & 30) && !Ok(e) && (b = Ik(a, d), 2 === b && (f = xc(a), 0 !== f && (d = f, 
            b = Nk(a, f))), 1 === b)) throw c = pk, Kk(a, 0), Ck(a, d), Dk(a, B()), c;
            a.finishedWork = e;
            a.finishedLanes = d;
            switch (b) {
             case 0:
             case 1:
              throw Error(p(345));

             case 2:
              Pk(a, tk, uk);
              break;

             case 3:
              Ck(a, d);
              if ((d & 130023424) === d && (b = fk + 500 - B(), 10 < b)) {
                if (0 !== uc(a, 0)) break;
                e = a.suspendedLanes;
                if ((e & d) !== d) {
                  R();
                  a.pingedLanes |= a.suspendedLanes & e;
                  break;
                }
                a.timeoutHandle = Ff(Pk.bind(null, a, tk, uk), b);
                break;
              }
              Pk(a, tk, uk);
              break;

             case 4:
              Ck(a, d);
              if ((d & 4194240) === d) break;
              b = a.eventTimes;
              for (e = -1; 0 < d; ) {
                var g = 31 - oc(d);
                f = 1 << g;
                g = b[g];
                g > e && (e = g);
                d &= ~f;
              }
              d = e;
              d = B() - d;
              d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3e3 > d ? 3e3 : 4320 > d ? 4320 : 1960 * lk(d / 1960)) - d;
              if (10 < d) {
                a.timeoutHandle = Ff(Pk.bind(null, a, tk, uk), d);
                break;
              }
              Pk(a, tk, uk);
              break;

             case 5:
              Pk(a, tk, uk);
              break;

             default:
              throw Error(p(329));
            }
          }
        }
        Dk(a, B());
        return a.callbackNode === c ? Gk.bind(null, a) : null;
      }
      function Nk(a, b) {
        var c = sk;
        a.current.memoizedState.isDehydrated && (Kk(a, b).flags |= 256);
        a = Ik(a, b);
        2 !== a && (b = tk, tk = c, null !== b && Fj(b));
        return a;
      }
      function Fj(a) {
        null === tk ? tk = a : tk.push.apply(tk, a);
      }
      function Ok(a) {
        for (var b = a; ;) {
          if (b.flags & 16384) {
            var c = b.updateQueue;
            if (null !== c && (c = c.stores, null !== c)) for (var d = 0; d < c.length; d++) {
              var e = c[d], f = e.getSnapshot;
              e = e.value;
              try {
                if (!He(f(), e)) return !1;
              } catch (g) {
                return !1;
              }
            }
          }
          c = b.child;
          if (b.subtreeFlags & 16384 && null !== c) c.return = b, b = c; else {
            if (b === a) break;
            for (;null === b.sibling; ) {
              if (null === b.return || b.return === a) return !0;
              b = b.return;
            }
            b.sibling.return = b.return;
            b = b.sibling;
          }
        }
        return !0;
      }
      function Ck(a, b) {
        b &= ~rk;
        b &= ~qk;
        a.suspendedLanes |= b;
        a.pingedLanes &= ~b;
        for (a = a.expirationTimes; 0 < b; ) {
          var c = 31 - oc(b), d = 1 << c;
          a[c] = -1;
          b &= ~d;
        }
      }
      function Ek(a) {
        if (0 !== (K & 6)) throw Error(p(327));
        Hk();
        var b = uc(a, 0);
        if (0 === (b & 1)) return Dk(a, B()), null;
        var c = Ik(a, b);
        if (0 !== a.tag && 2 === c) {
          var d = xc(a);
          0 !== d && (b = d, c = Nk(a, d));
        }
        if (1 === c) throw c = pk, Kk(a, 0), Ck(a, b), Dk(a, B()), c;
        if (6 === c) throw Error(p(345));
        a.finishedWork = a.current.alternate;
        a.finishedLanes = b;
        Pk(a, tk, uk);
        Dk(a, B());
        return null;
      }
      function Qk(a, b) {
        var c = K;
        K |= 1;
        try {
          return a(b);
        } finally {
          K = c, 0 === K && (Gj = B() + 500, fg && jg());
        }
      }
      function Rk(a) {
        null !== wk && 0 === wk.tag && 0 === (K & 6) && Hk();
        var b = K;
        K |= 1;
        var c = ok.transition, d = C;
        try {
          if (ok.transition = null, C = 1, a) return a();
        } finally {
          C = d, ok.transition = c, K = b, 0 === (K & 6) && jg();
        }
      }
      function Hj() {
        fj = ej.current;
        E(ej);
      }
      function Kk(a, b) {
        a.finishedWork = null;
        a.finishedLanes = 0;
        var c = a.timeoutHandle;
        -1 !== c && (a.timeoutHandle = -1, Gf(c));
        if (null !== Y) for (c = Y.return; null !== c; ) {
          var d = c;
          wg(d);
          switch (d.tag) {
           case 1:
            d = d.type.childContextTypes;
            null !== d && void 0 !== d && $f();
            break;

           case 3:
            zh();
            E(Wf);
            E(H);
            Eh();
            break;

           case 5:
            Bh(d);
            break;

           case 4:
            zh();
            break;

           case 13:
            E(L);
            break;

           case 19:
            E(L);
            break;

           case 10:
            ah(d.type._context);
            break;

           case 22:
           case 23:
            Hj();
          }
          c = c.return;
        }
        Q = a;
        Y = a = Pg(a.current, null);
        Z = fj = b;
        T = 0;
        pk = null;
        rk = qk = rh = 0;
        tk = sk = null;
        if (null !== fh) {
          for (b = 0; b < fh.length; b++) if (c = fh[b], d = c.interleaved, null !== d) {
            c.interleaved = null;
            var e = d.next, f = c.pending;
            if (null !== f) {
              var g = f.next;
              f.next = e;
              d.next = g;
            }
            c.pending = d;
          }
          fh = null;
        }
        return a;
      }
      function Mk(a, b) {
        do {
          var c = Y;
          try {
            $g();
            Fh.current = Rh;
            if (Ih) {
              for (var d = M.memoizedState; null !== d; ) {
                var e = d.queue;
                null !== e && (e.pending = null);
                d = d.next;
              }
              Ih = !1;
            }
            Hh = 0;
            O = N = M = null;
            Jh = !1;
            Kh = 0;
            nk.current = null;
            if (null === c || null === c.return) {
              T = 1;
              pk = b;
              Y = null;
              break;
            }
            a: {
              var f = a, g = c.return, h = c, k = b;
              b = Z;
              h.flags |= 32768;
              if (null !== k && "object" === typeof k && "function" === typeof k.then) {
                var l = k, m = h, q = m.tag;
                if (0 === (m.mode & 1) && (0 === q || 11 === q || 15 === q)) {
                  var r = m.alternate;
                  r ? (m.updateQueue = r.updateQueue, m.memoizedState = r.memoizedState, m.lanes = r.lanes) : (m.updateQueue = null, 
                  m.memoizedState = null);
                }
                var y = Ui(g);
                if (null !== y) {
                  y.flags &= -257;
                  Vi(y, g, h, f, b);
                  y.mode & 1 && Si(f, l, b);
                  b = y;
                  k = l;
                  var n = b.updateQueue;
                  if (null === n) {
                    var t = new Set;
                    t.add(k);
                    b.updateQueue = t;
                  } else n.add(k);
                  break a;
                } else {
                  if (0 === (b & 1)) {
                    Si(f, l, b);
                    tj();
                    break a;
                  }
                  k = Error(p(426));
                }
              } else if (I && h.mode & 1) {
                var J = Ui(g);
                if (null !== J) {
                  0 === (J.flags & 65536) && (J.flags |= 256);
                  Vi(J, g, h, f, b);
                  Jg(Ji(k, h));
                  break a;
                }
              }
              f = k = Ji(k, h);
              4 !== T && (T = 2);
              null === sk ? sk = [ f ] : sk.push(f);
              f = g;
              do {
                switch (f.tag) {
                 case 3:
                  f.flags |= 65536;
                  b &= -b;
                  f.lanes |= b;
                  var x = Ni(f, k, b);
                  ph(f, x);
                  break a;

                 case 1:
                  h = k;
                  var w = f.type, u = f.stateNode;
                  if (0 === (f.flags & 128) && ("function" === typeof w.getDerivedStateFromError || null !== u && "function" === typeof u.componentDidCatch && (null === Ri || !Ri.has(u)))) {
                    f.flags |= 65536;
                    b &= -b;
                    f.lanes |= b;
                    var F = Qi(f, h, b);
                    ph(f, F);
                    break a;
                  }
                }
                f = f.return;
              } while (null !== f);
            }
            Sk(c);
          } catch (na) {
            b = na;
            Y === c && null !== c && (Y = c = c.return);
            continue;
          }
          break;
        } while (1);
      }
      function Jk() {
        var a = mk.current;
        mk.current = Rh;
        return null === a ? Rh : a;
      }
      function tj() {
        if (0 === T || 3 === T || 2 === T) T = 4;
        null === Q || 0 === (rh & 268435455) && 0 === (qk & 268435455) || Ck(Q, Z);
      }
      function Ik(a, b) {
        var c = K;
        K |= 2;
        var d = Jk();
        if (Q !== a || Z !== b) uk = null, Kk(a, b);
        do {
          try {
            Tk();
            break;
          } catch (e) {
            Mk(a, e);
          }
        } while (1);
        $g();
        K = c;
        mk.current = d;
        if (null !== Y) throw Error(p(261));
        Q = null;
        Z = 0;
        return T;
      }
      function Tk() {
        for (;null !== Y; ) Uk(Y);
      }
      function Lk() {
        for (;null !== Y && !cc(); ) Uk(Y);
      }
      function Uk(a) {
        var b = Vk(a.alternate, a, fj);
        a.memoizedProps = a.pendingProps;
        null === b ? Sk(a) : Y = b;
        nk.current = null;
      }
      function Sk(a) {
        var b = a;
        do {
          var c = b.alternate;
          a = b.return;
          if (0 === (b.flags & 32768)) {
            if (c = Ej(c, b, fj), null !== c) {
              Y = c;
              return;
            }
          } else {
            c = Ij(c, b);
            if (null !== c) {
              c.flags &= 32767;
              Y = c;
              return;
            }
            if (null !== a) a.flags |= 32768, a.subtreeFlags = 0, a.deletions = null; else {
              T = 6;
              Y = null;
              return;
            }
          }
          b = b.sibling;
          if (null !== b) {
            Y = b;
            return;
          }
          Y = b = a;
        } while (null !== b);
        0 === T && (T = 5);
      }
      function Pk(a, b, c) {
        var d = C, e = ok.transition;
        try {
          ok.transition = null, C = 1, Wk(a, b, c, d);
        } finally {
          ok.transition = e, C = d;
        }
        return null;
      }
      function Wk(a, b, c, d) {
        do {
          Hk();
        } while (null !== wk);
        if (0 !== (K & 6)) throw Error(p(327));
        c = a.finishedWork;
        var e = a.finishedLanes;
        if (null === c) return null;
        a.finishedWork = null;
        a.finishedLanes = 0;
        if (c === a.current) throw Error(p(177));
        a.callbackNode = null;
        a.callbackPriority = 0;
        var f = c.lanes | c.childLanes;
        Bc(a, f);
        a === Q && (Y = Q = null, Z = 0);
        0 === (c.subtreeFlags & 2064) && 0 === (c.flags & 2064) || vk || (vk = !0, Fk(hc, (function() {
          Hk();
          return null;
        })));
        f = 0 !== (c.flags & 15990);
        if (0 !== (c.subtreeFlags & 15990) || f) {
          f = ok.transition;
          ok.transition = null;
          var g = C;
          C = 1;
          var h = K;
          K |= 4;
          nk.current = null;
          Oj(a, c);
          dk(c, a);
          Oe(Df);
          dd = !!Cf;
          Df = Cf = null;
          a.current = c;
          hk(c, a, e);
          dc();
          K = h;
          C = g;
          ok.transition = f;
        } else a.current = c;
        vk && (vk = !1, wk = a, xk = e);
        f = a.pendingLanes;
        0 === f && (Ri = null);
        mc(c.stateNode, d);
        Dk(a, B());
        if (null !== b) for (d = a.onRecoverableError, c = 0; c < b.length; c++) e = b[c], 
        d(e.value, {
          componentStack: e.stack,
          digest: e.digest
        });
        if (Oi) throw Oi = !1, a = Pi, Pi = null, a;
        0 !== (xk & 1) && 0 !== a.tag && Hk();
        f = a.pendingLanes;
        0 !== (f & 1) ? a === zk ? yk++ : (yk = 0, zk = a) : yk = 0;
        jg();
        return null;
      }
      function Hk() {
        if (null !== wk) {
          var a = Dc(xk), b = ok.transition, c = C;
          try {
            ok.transition = null;
            C = 16 > a ? 16 : a;
            if (null === wk) var d = !1; else {
              a = wk;
              wk = null;
              xk = 0;
              if (0 !== (K & 6)) throw Error(p(331));
              var e = K;
              K |= 4;
              for (V = a.current; null !== V; ) {
                var f = V, g = f.child;
                if (0 !== (V.flags & 16)) {
                  var h = f.deletions;
                  if (null !== h) {
                    for (var k = 0; k < h.length; k++) {
                      var l = h[k];
                      for (V = l; null !== V; ) {
                        var m = V;
                        switch (m.tag) {
                         case 0:
                         case 11:
                         case 15:
                          Pj(8, m, f);
                        }
                        var q = m.child;
                        if (null !== q) q.return = m, V = q; else for (;null !== V; ) {
                          m = V;
                          var r = m.sibling, y = m.return;
                          Sj(m);
                          if (m === l) {
                            V = null;
                            break;
                          }
                          if (null !== r) {
                            r.return = y;
                            V = r;
                            break;
                          }
                          V = y;
                        }
                      }
                    }
                    var n = f.alternate;
                    if (null !== n) {
                      var t = n.child;
                      if (null !== t) {
                        n.child = null;
                        do {
                          var J = t.sibling;
                          t.sibling = null;
                          t = J;
                        } while (null !== t);
                      }
                    }
                    V = f;
                  }
                }
                if (0 !== (f.subtreeFlags & 2064) && null !== g) g.return = f, V = g; else b: for (;null !== V; ) {
                  f = V;
                  if (0 !== (f.flags & 2048)) switch (f.tag) {
                   case 0:
                   case 11:
                   case 15:
                    Pj(9, f, f.return);
                  }
                  var x = f.sibling;
                  if (null !== x) {
                    x.return = f.return;
                    V = x;
                    break b;
                  }
                  V = f.return;
                }
              }
              var w = a.current;
              for (V = w; null !== V; ) {
                g = V;
                var u = g.child;
                if (0 !== (g.subtreeFlags & 2064) && null !== u) u.return = g, V = u; else b: for (g = w; null !== V; ) {
                  h = V;
                  if (0 !== (h.flags & 2048)) try {
                    switch (h.tag) {
                     case 0:
                     case 11:
                     case 15:
                      Qj(9, h);
                    }
                  } catch (na) {
                    W(h, h.return, na);
                  }
                  if (h === g) {
                    V = null;
                    break b;
                  }
                  var F = h.sibling;
                  if (null !== F) {
                    F.return = h.return;
                    V = F;
                    break b;
                  }
                  V = h.return;
                }
              }
              K = e;
              jg();
              if (lc && "function" === typeof lc.onPostCommitFiberRoot) try {
                lc.onPostCommitFiberRoot(kc, a);
              } catch (na) {}
              d = !0;
            }
            return d;
          } finally {
            C = c, ok.transition = b;
          }
        }
        return !1;
      }
      function Xk(a, b, c) {
        b = Ji(c, b);
        b = Ni(a, b, 1);
        a = nh(a, b, 1);
        b = R();
        null !== a && (Ac(a, 1, b), Dk(a, b));
      }
      function W(a, b, c) {
        if (3 === a.tag) Xk(a, a, c); else for (;null !== b; ) {
          if (3 === b.tag) {
            Xk(b, a, c);
            break;
          } else if (1 === b.tag) {
            var d = b.stateNode;
            if ("function" === typeof b.type.getDerivedStateFromError || "function" === typeof d.componentDidCatch && (null === Ri || !Ri.has(d))) {
              a = Ji(c, a);
              a = Qi(b, a, 1);
              b = nh(b, a, 1);
              a = R();
              null !== b && (Ac(b, 1, a), Dk(b, a));
              break;
            }
          }
          b = b.return;
        }
      }
      function Ti(a, b, c) {
        var d = a.pingCache;
        null !== d && d.delete(b);
        b = R();
        a.pingedLanes |= a.suspendedLanes & c;
        Q === a && (Z & c) === c && (4 === T || 3 === T && (Z & 130023424) === Z && 500 > B() - fk ? Kk(a, 0) : rk |= c);
        Dk(a, b);
      }
      function Yk(a, b) {
        0 === b && (0 === (a.mode & 1) ? b = 1 : (b = sc, sc <<= 1, 0 === (sc & 130023424) && (sc = 4194304)));
        var c = R();
        a = ih(a, b);
        null !== a && (Ac(a, b, c), Dk(a, c));
      }
      function uj(a) {
        var b = a.memoizedState, c = 0;
        null !== b && (c = b.retryLane);
        Yk(a, c);
      }
      function bk(a, b) {
        var c = 0;
        switch (a.tag) {
         case 13:
          var d = a.stateNode;
          var e = a.memoizedState;
          null !== e && (c = e.retryLane);
          break;

         case 19:
          d = a.stateNode;
          break;

         default:
          throw Error(p(314));
        }
        null !== d && d.delete(b);
        Yk(a, c);
      }
      var Vk;
      Vk = function(a, b, c) {
        if (null !== a) if (a.memoizedProps !== b.pendingProps || Wf.current) dh = !0; else {
          if (0 === (a.lanes & c) && 0 === (b.flags & 128)) return dh = !1, yj(a, b, c);
          dh = 0 !== (a.flags & 131072) ? !0 : !1;
        } else dh = !1, I && 0 !== (b.flags & 1048576) && ug(b, ng, b.index);
        b.lanes = 0;
        switch (b.tag) {
         case 2:
          var d = b.type;
          ij(a, b);
          a = b.pendingProps;
          var e = Yf(b, H.current);
          ch(b, c);
          e = Nh(null, b, d, a, e, c);
          var f = Sh();
          b.flags |= 1;
          "object" === typeof e && null !== e && "function" === typeof e.render && void 0 === e.$$typeof ? (b.tag = 1, 
          b.memoizedState = null, b.updateQueue = null, Zf(d) ? (f = !0, cg(b)) : f = !1, 
          b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null, kh(b), 
          e.updater = Ei, b.stateNode = e, e._reactInternals = b, Ii(b, d, a, c), b = jj(null, b, d, !0, f, c)) : (b.tag = 0, 
          I && f && vg(b), Xi(null, b, e, c), b = b.child);
          return b;

         case 16:
          d = b.elementType;
          a: {
            ij(a, b);
            a = b.pendingProps;
            e = d._init;
            d = e(d._payload);
            b.type = d;
            e = b.tag = Zk(d);
            a = Ci(d, a);
            switch (e) {
             case 0:
              b = cj(null, b, d, a, c);
              break a;

             case 1:
              b = hj(null, b, d, a, c);
              break a;

             case 11:
              b = Yi(null, b, d, a, c);
              break a;

             case 14:
              b = $i(null, b, d, Ci(d.type, a), c);
              break a;
            }
            throw Error(p(306, d, ""));
          }
          return b;

         case 0:
          return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : Ci(d, e), cj(a, b, d, e, c);

         case 1:
          return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : Ci(d, e), hj(a, b, d, e, c);

         case 3:
          a: {
            kj(b);
            if (null === a) throw Error(p(387));
            d = b.pendingProps;
            f = b.memoizedState;
            e = f.element;
            lh(a, b);
            qh(b, d, null, c);
            var g = b.memoizedState;
            d = g.element;
            if (f.isDehydrated) if (f = {
              element: d,
              isDehydrated: !1,
              cache: g.cache,
              pendingSuspenseBoundaries: g.pendingSuspenseBoundaries,
              transitions: g.transitions
            }, b.updateQueue.baseState = f, b.memoizedState = f, b.flags & 256) {
              e = Ji(Error(p(423)), b);
              b = lj(a, b, d, c, e);
              break a;
            } else if (d !== e) {
              e = Ji(Error(p(424)), b);
              b = lj(a, b, d, c, e);
              break a;
            } else for (yg = Lf(b.stateNode.containerInfo.firstChild), xg = b, I = !0, zg = null, 
            c = Vg(b, null, d, c), b.child = c; c; ) c.flags = c.flags & -3 | 4096, c = c.sibling; else {
              Ig();
              if (d === e) {
                b = Zi(a, b, c);
                break a;
              }
              Xi(a, b, d, c);
            }
            b = b.child;
          }
          return b;

         case 5:
          return Ah(b), null === a && Eg(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, 
          g = e.children, Ef(d, e) ? g = null : null !== f && Ef(d, f) && (b.flags |= 32), 
          gj(a, b), Xi(a, b, g, c), b.child;

         case 6:
          return null === a && Eg(b), null;

         case 13:
          return oj(a, b, c);

         case 4:
          return yh(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = Ug(b, null, d, c) : Xi(a, b, d, c), 
          b.child;

         case 11:
          return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : Ci(d, e), Yi(a, b, d, e, c);

         case 7:
          return Xi(a, b, b.pendingProps, c), b.child;

         case 8:
          return Xi(a, b, b.pendingProps.children, c), b.child;

         case 12:
          return Xi(a, b, b.pendingProps.children, c), b.child;

         case 10:
          a: {
            d = b.type._context;
            e = b.pendingProps;
            f = b.memoizedProps;
            g = e.value;
            G(Wg, d._currentValue);
            d._currentValue = g;
            if (null !== f) if (He(f.value, g)) {
              if (f.children === e.children && !Wf.current) {
                b = Zi(a, b, c);
                break a;
              }
            } else for (f = b.child, null !== f && (f.return = b); null !== f; ) {
              var h = f.dependencies;
              if (null !== h) {
                g = f.child;
                for (var k = h.firstContext; null !== k; ) {
                  if (k.context === d) {
                    if (1 === f.tag) {
                      k = mh(-1, c & -c);
                      k.tag = 2;
                      var l = f.updateQueue;
                      if (null !== l) {
                        l = l.shared;
                        var m = l.pending;
                        null === m ? k.next = k : (k.next = m.next, m.next = k);
                        l.pending = k;
                      }
                    }
                    f.lanes |= c;
                    k = f.alternate;
                    null !== k && (k.lanes |= c);
                    bh(f.return, c, b);
                    h.lanes |= c;
                    break;
                  }
                  k = k.next;
                }
              } else if (10 === f.tag) g = f.type === b.type ? null : f.child; else if (18 === f.tag) {
                g = f.return;
                if (null === g) throw Error(p(341));
                g.lanes |= c;
                h = g.alternate;
                null !== h && (h.lanes |= c);
                bh(g, c, b);
                g = f.sibling;
              } else g = f.child;
              if (null !== g) g.return = f; else for (g = f; null !== g; ) {
                if (g === b) {
                  g = null;
                  break;
                }
                f = g.sibling;
                if (null !== f) {
                  f.return = g.return;
                  g = f;
                  break;
                }
                g = g.return;
              }
              f = g;
            }
            Xi(a, b, e.children, c);
            b = b.child;
          }
          return b;

         case 9:
          return e = b.type, d = b.pendingProps.children, ch(b, c), e = eh(e), d = d(e), b.flags |= 1, 
          Xi(a, b, d, c), b.child;

         case 14:
          return d = b.type, e = Ci(d, b.pendingProps), e = Ci(d.type, e), $i(a, b, d, e, c);

         case 15:
          return bj(a, b, b.type, b.pendingProps, c);

         case 17:
          return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : Ci(d, e), ij(a, b), 
          b.tag = 1, Zf(d) ? (a = !0, cg(b)) : a = !1, ch(b, c), Gi(b, d, e), Ii(b, d, e, c), 
          jj(null, b, d, !0, a, c);

         case 19:
          return xj(a, b, c);

         case 22:
          return dj(a, b, c);
        }
        throw Error(p(156, b.tag));
      };
      function Fk(a, b) {
        return ac(a, b);
      }
      function $k(a, b, c, d) {
        this.tag = a;
        this.key = c;
        this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;
        this.index = 0;
        this.ref = null;
        this.pendingProps = b;
        this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;
        this.mode = d;
        this.subtreeFlags = this.flags = 0;
        this.deletions = null;
        this.childLanes = this.lanes = 0;
        this.alternate = null;
      }
      function Bg(a, b, c, d) {
        return new $k(a, b, c, d);
      }
      function aj(a) {
        a = a.prototype;
        return !(!a || !a.isReactComponent);
      }
      function Zk(a) {
        if ("function" === typeof a) return aj(a) ? 1 : 0;
        if (void 0 !== a && null !== a) {
          a = a.$$typeof;
          if (a === Da) return 11;
          if (a === Ga) return 14;
        }
        return 2;
      }
      function Pg(a, b) {
        var c = a.alternate;
        null === c ? (c = Bg(a.tag, b, a.key, a.mode), c.elementType = a.elementType, c.type = a.type, 
        c.stateNode = a.stateNode, c.alternate = a, a.alternate = c) : (c.pendingProps = b, 
        c.type = a.type, c.flags = 0, c.subtreeFlags = 0, c.deletions = null);
        c.flags = a.flags & 14680064;
        c.childLanes = a.childLanes;
        c.lanes = a.lanes;
        c.child = a.child;
        c.memoizedProps = a.memoizedProps;
        c.memoizedState = a.memoizedState;
        c.updateQueue = a.updateQueue;
        b = a.dependencies;
        c.dependencies = null === b ? null : {
          lanes: b.lanes,
          firstContext: b.firstContext
        };
        c.sibling = a.sibling;
        c.index = a.index;
        c.ref = a.ref;
        return c;
      }
      function Rg(a, b, c, d, e, f) {
        var g = 2;
        d = a;
        if ("function" === typeof a) aj(a) && (g = 1); else if ("string" === typeof a) g = 5; else a: switch (a) {
         case ya:
          return Tg(c.children, e, f, b);

         case za:
          g = 8;
          e |= 8;
          break;

         case Aa:
          return a = Bg(12, c, b, e | 2), a.elementType = Aa, a.lanes = f, a;

         case Ea:
          return a = Bg(13, c, b, e), a.elementType = Ea, a.lanes = f, a;

         case Fa:
          return a = Bg(19, c, b, e), a.elementType = Fa, a.lanes = f, a;

         case Ia:
          return pj(c, e, f, b);

         default:
          if ("object" === typeof a && null !== a) switch (a.$$typeof) {
           case Ba:
            g = 10;
            break a;

           case Ca:
            g = 9;
            break a;

           case Da:
            g = 11;
            break a;

           case Ga:
            g = 14;
            break a;

           case Ha:
            g = 16;
            d = null;
            break a;
          }
          throw Error(p(130, null == a ? a : typeof a, ""));
        }
        b = Bg(g, c, b, e);
        b.elementType = a;
        b.type = d;
        b.lanes = f;
        return b;
      }
      function Tg(a, b, c, d) {
        a = Bg(7, a, d, b);
        a.lanes = c;
        return a;
      }
      function pj(a, b, c, d) {
        a = Bg(22, a, d, b);
        a.elementType = Ia;
        a.lanes = c;
        a.stateNode = {
          isHidden: !1
        };
        return a;
      }
      function Qg(a, b, c) {
        a = Bg(6, a, null, b);
        a.lanes = c;
        return a;
      }
      function Sg(a, b, c) {
        b = Bg(4, null !== a.children ? a.children : [], a.key, b);
        b.lanes = c;
        b.stateNode = {
          containerInfo: a.containerInfo,
          pendingChildren: null,
          implementation: a.implementation
        };
        return b;
      }
      function al(a, b, c, d, e) {
        this.tag = b;
        this.containerInfo = a;
        this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;
        this.timeoutHandle = -1;
        this.callbackNode = this.pendingContext = this.context = null;
        this.callbackPriority = 0;
        this.eventTimes = zc(0);
        this.expirationTimes = zc(-1);
        this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;
        this.entanglements = zc(0);
        this.identifierPrefix = d;
        this.onRecoverableError = e;
        this.mutableSourceEagerHydrationData = null;
      }
      function bl(a, b, c, d, e, f, g, h, k) {
        a = new al(a, b, c, h, k);
        1 === b ? (b = 1, !0 === f && (b |= 8)) : b = 0;
        f = Bg(3, null, null, b);
        a.current = f;
        f.stateNode = a;
        f.memoizedState = {
          element: d,
          isDehydrated: c,
          cache: null,
          transitions: null,
          pendingSuspenseBoundaries: null
        };
        kh(f);
        return a;
      }
      function cl(a, b, c) {
        var d = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
        return {
          $$typeof: wa,
          key: null == d ? null : "" + d,
          children: a,
          containerInfo: b,
          implementation: c
        };
      }
      function dl(a) {
        if (!a) return Vf;
        a = a._reactInternals;
        a: {
          if (Vb(a) !== a || 1 !== a.tag) throw Error(p(170));
          var b = a;
          do {
            switch (b.tag) {
             case 3:
              b = b.stateNode.context;
              break a;

             case 1:
              if (Zf(b.type)) {
                b = b.stateNode.__reactInternalMemoizedMergedChildContext;
                break a;
              }
            }
            b = b.return;
          } while (null !== b);
          throw Error(p(171));
        }
        if (1 === a.tag) {
          var c = a.type;
          if (Zf(c)) return bg(a, c, b);
        }
        return b;
      }
      function el(a, b, c, d, e, f, g, h, k) {
        a = bl(c, d, !0, a, e, f, g, h, k);
        a.context = dl(null);
        c = a.current;
        d = R();
        e = yi(c);
        f = mh(d, e);
        f.callback = void 0 !== b && null !== b ? b : null;
        nh(c, f, e);
        a.current.lanes = e;
        Ac(a, e, d);
        Dk(a, d);
        return a;
      }
      function fl(a, b, c, d) {
        var e = b.current, f = R(), g = yi(e);
        c = dl(c);
        null === b.context ? b.context = c : b.pendingContext = c;
        b = mh(f, g);
        b.payload = {
          element: a
        };
        d = void 0 === d ? null : d;
        null !== d && (b.callback = d);
        a = nh(e, b, g);
        null !== a && (gi(a, e, g, f), oh(a, e, g));
        return g;
      }
      function gl(a) {
        a = a.current;
        if (!a.child) return null;
        switch (a.child.tag) {
         case 5:
          return a.child.stateNode;

         default:
          return a.child.stateNode;
        }
      }
      function hl(a, b) {
        a = a.memoizedState;
        if (null !== a && null !== a.dehydrated) {
          var c = a.retryLane;
          a.retryLane = 0 !== c && c < b ? c : b;
        }
      }
      function il(a, b) {
        hl(a, b);
        (a = a.alternate) && hl(a, b);
      }
      function jl() {
        return null;
      }
      var kl = "function" === typeof reportError ? reportError : function(a) {
        console.error(a);
      };
      function ll(a) {
        this._internalRoot = a;
      }
      ml.prototype.render = ll.prototype.render = function(a) {
        var b = this._internalRoot;
        if (null === b) throw Error(p(409));
        fl(a, b, null, null);
      };
      ml.prototype.unmount = ll.prototype.unmount = function() {
        var a = this._internalRoot;
        if (null !== a) {
          this._internalRoot = null;
          var b = a.containerInfo;
          Rk((function() {
            fl(null, a, null, null);
          }));
          b[uf] = null;
        }
      };
      function ml(a) {
        this._internalRoot = a;
      }
      ml.prototype.unstable_scheduleHydration = function(a) {
        if (a) {
          var b = Hc();
          a = {
            blockedOn: null,
            target: a,
            priority: b
          };
          for (var c = 0; c < Qc.length && 0 !== b && b < Qc[c].priority; c++) ;
          Qc.splice(c, 0, a);
          0 === c && Vc(a);
        }
      };
      function nl(a) {
        return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType);
      }
      function ol(a) {
        return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || " react-mount-point-unstable " !== a.nodeValue));
      }
      function pl() {}
      function ql(a, b, c, d, e) {
        if (e) {
          if ("function" === typeof d) {
            var f = d;
            d = function() {
              var a = gl(g);
              f.call(a);
            };
          }
          var g = el(b, d, a, 0, null, !1, !1, "", pl);
          a._reactRootContainer = g;
          a[uf] = g.current;
          sf(8 === a.nodeType ? a.parentNode : a);
          Rk();
          return g;
        }
        for (;e = a.lastChild; ) a.removeChild(e);
        if ("function" === typeof d) {
          var h = d;
          d = function() {
            var a = gl(k);
            h.call(a);
          };
        }
        var k = bl(a, 0, !1, null, null, !1, !1, "", pl);
        a._reactRootContainer = k;
        a[uf] = k.current;
        sf(8 === a.nodeType ? a.parentNode : a);
        Rk((function() {
          fl(b, k, c, d);
        }));
        return k;
      }
      function rl(a, b, c, d, e) {
        var f = c._reactRootContainer;
        if (f) {
          var g = f;
          if ("function" === typeof e) {
            var h = e;
            e = function() {
              var a = gl(g);
              h.call(a);
            };
          }
          fl(b, g, a, e);
        } else g = ql(c, b, a, e, d);
        return gl(g);
      }
      Ec = function(a) {
        switch (a.tag) {
         case 3:
          var b = a.stateNode;
          if (b.current.memoizedState.isDehydrated) {
            var c = tc(b.pendingLanes);
            0 !== c && (Cc(b, c | 1), Dk(b, B()), 0 === (K & 6) && (Gj = B() + 500, jg()));
          }
          break;

         case 13:
          Rk((function() {
            var b = ih(a, 1);
            if (null !== b) {
              var c = R();
              gi(b, a, 1, c);
            }
          })), il(a, 1);
        }
      };
      Fc = function(a) {
        if (13 === a.tag) {
          var b = ih(a, 134217728);
          if (null !== b) {
            var c = R();
            gi(b, a, 134217728, c);
          }
          il(a, 134217728);
        }
      };
      Gc = function(a) {
        if (13 === a.tag) {
          var b = yi(a), c = ih(a, b);
          if (null !== c) {
            var d = R();
            gi(c, a, b, d);
          }
          il(a, b);
        }
      };
      Hc = function() {
        return C;
      };
      Ic = function(a, b) {
        var c = C;
        try {
          return C = a, b();
        } finally {
          C = c;
        }
      };
      yb = function(a, b, c) {
        switch (b) {
         case "input":
          bb(a, c);
          b = c.name;
          if ("radio" === c.type && null != b) {
            for (c = a; c.parentNode; ) c = c.parentNode;
            c = c.querySelectorAll("input[name=" + JSON.stringify("" + b) + '][type="radio"]');
            for (b = 0; b < c.length; b++) {
              var d = c[b];
              if (d !== a && d.form === a.form) {
                var e = Db(d);
                if (!e) throw Error(p(90));
                Wa(d);
                bb(d, e);
              }
            }
          }
          break;

         case "textarea":
          ib(a, c);
          break;

         case "select":
          b = c.value, null != b && fb(a, !!c.multiple, b, !1);
        }
      };
      Gb = Qk;
      Hb = Rk;
      var sl = {
        usingClientEntryPoint: !1,
        Events: [ Cb, ue, Db, Eb, Fb, Qk ]
      }, tl = {
        findFiberByHostInstance: Wc,
        bundleType: 0,
        version: "18.3.1",
        rendererPackageName: "react-dom"
      };
      var ul = {
        bundleType: tl.bundleType,
        version: tl.version,
        rendererPackageName: tl.rendererPackageName,
        rendererConfig: tl.rendererConfig,
        overrideHookState: null,
        overrideHookStateDeletePath: null,
        overrideHookStateRenamePath: null,
        overrideProps: null,
        overridePropsDeletePath: null,
        overridePropsRenamePath: null,
        setErrorHandler: null,
        setSuspenseHandler: null,
        scheduleUpdate: null,
        currentDispatcherRef: ua.ReactCurrentDispatcher,
        findHostInstanceByFiber: function(a) {
          a = Zb(a);
          return null === a ? null : a.stateNode;
        },
        findFiberByHostInstance: tl.findFiberByHostInstance || jl,
        findHostInstancesForRefresh: null,
        scheduleRefresh: null,
        scheduleRoot: null,
        setRefreshHandler: null,
        getCurrentFiber: null,
        reconcilerVersion: "18.3.1-next-f1338f8080-20240426"
      };
      if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
        var vl = __REACT_DEVTOOLS_GLOBAL_HOOK__;
        if (!vl.isDisabled && vl.supportsFiber) try {
          kc = vl.inject(ul), lc = vl;
        } catch (a) {}
      }
      exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sl;
      exports.createPortal = function(a, b) {
        var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
        if (!nl(b)) throw Error(p(200));
        return cl(a, b, null, c);
      };
      exports.createRoot = function(a, b) {
        if (!nl(a)) throw Error(p(299));
        var c = !1, d = "", e = kl;
        null !== b && void 0 !== b && (!0 === b.unstable_strictMode && (c = !0), void 0 !== b.identifierPrefix && (d = b.identifierPrefix), 
        void 0 !== b.onRecoverableError && (e = b.onRecoverableError));
        b = bl(a, 1, !1, null, null, c, !1, d, e);
        a[uf] = b.current;
        sf(8 === a.nodeType ? a.parentNode : a);
        return new ll(b);
      };
      exports.findDOMNode = function(a) {
        if (null == a) return null;
        if (1 === a.nodeType) return a;
        var b = a._reactInternals;
        if (void 0 === b) {
          if ("function" === typeof a.render) throw Error(p(188));
          a = Object.keys(a).join(",");
          throw Error(p(268, a));
        }
        a = Zb(b);
        a = null === a ? null : a.stateNode;
        return a;
      };
      exports.flushSync = function(a) {
        return Rk(a);
      };
      exports.hydrate = function(a, b, c) {
        if (!ol(b)) throw Error(p(200));
        return rl(null, a, b, !0, c);
      };
      exports.hydrateRoot = function(a, b, c) {
        if (!nl(a)) throw Error(p(405));
        var d = null != c && c.hydratedSources || null, e = !1, f = "", g = kl;
        null !== c && void 0 !== c && (!0 === c.unstable_strictMode && (e = !0), void 0 !== c.identifierPrefix && (f = c.identifierPrefix), 
        void 0 !== c.onRecoverableError && (g = c.onRecoverableError));
        b = el(b, null, a, 1, null != c ? c : null, e, !1, f, g);
        a[uf] = b.current;
        sf(a);
        if (d) for (a = 0; a < d.length; a++) c = d[a], e = c._getVersion, e = e(c._source), 
        null == b.mutableSourceEagerHydrationData ? b.mutableSourceEagerHydrationData = [ c, e ] : b.mutableSourceEagerHydrationData.push(c, e);
        return new ml(b);
      };
      exports.render = function(a, b, c) {
        if (!ol(b)) throw Error(p(200));
        return rl(null, a, b, !1, c);
      };
      exports.unmountComponentAtNode = function(a) {
        if (!ol(a)) throw Error(p(40));
        return a._reactRootContainer ? (Rk((function() {
          rl(null, null, a, !1, (function() {
            a._reactRootContainer = null;
            a[uf] = null;
          }));
        })), !0) : !1;
      };
      exports.unstable_batchedUpdates = Qk;
      exports.unstable_renderSubtreeIntoContainer = function(a, b, c, d) {
        if (!ol(c)) throw Error(p(200));
        if (null == a || void 0 === a._reactInternals) throw Error(p(38));
        return rl(a, b, c, !1, d);
      };
      exports.version = "18.3.1-next-f1338f8080-20240426";
    },
    5338(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var m = __webpack_require__(961);
      if (true) {
        exports.createRoot = m.createRoot;
        exports.hydrateRoot = m.hydrateRoot;
      } else {
        var i;
      }
    },
    961(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      function checkDCE() {
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
          return;
        }
        if (false) {}
        try {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
        } catch (err) {
          console.error(err);
        }
      }
      if (true) {
        checkDCE();
        module.exports = __webpack_require__(2551);
      } else {}
    },
    4740(__unused_webpack_module, exports, __webpack_require__) {
      (function(global, factory) {
        true ? factory(exports, __webpack_require__(6540)) : 0;
      })(this, (function(exports, React) {
        "use strict";
        function _interopNamespace(e) {
          if (e && e.__esModule) return e;
          var n = Object.create(null);
          if (e) {
            Object.keys(e).forEach((function(k) {
              if (k !== "default") {
                var d = Object.getOwnPropertyDescriptor(e, k);
                Object.defineProperty(n, k, d.get ? d : {
                  enumerable: true,
                  get: function() {
                    return e[k];
                  }
                });
              }
            }));
          }
          n["default"] = e;
          return Object.freeze(n);
        }
        var React__namespace = _interopNamespace(React);
        function _setPrototypeOf(o, p) {
          _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
            o.__proto__ = p;
            return o;
          };
          return _setPrototypeOf(o, p);
        }
        function _inheritsLoose(subClass, superClass) {
          subClass.prototype = Object.create(superClass.prototype);
          subClass.prototype.constructor = subClass;
          _setPrototypeOf(subClass, superClass);
        }
        var changedArray = function changedArray(a, b) {
          if (a === void 0) {
            a = [];
          }
          if (b === void 0) {
            b = [];
          }
          return a.length !== b.length || a.some((function(item, index) {
            return !Object.is(item, b[index]);
          }));
        };
        var initialState = {
          error: null
        };
        var ErrorBoundary = function(_React$Component) {
          _inheritsLoose(ErrorBoundary, _React$Component);
          function ErrorBoundary() {
            var _this;
            for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
              _args[_key] = arguments[_key];
            }
            _this = _React$Component.call.apply(_React$Component, [ this ].concat(_args)) || this;
            _this.state = initialState;
            _this.resetErrorBoundary = function() {
              var _this$props;
              for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                args[_key2] = arguments[_key2];
              }
              _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);
              _this.reset();
            };
            return _this;
          }
          ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {
            return {
              error
            };
          };
          var _proto = ErrorBoundary.prototype;
          _proto.reset = function reset() {
            this.setState(initialState);
          };
          _proto.componentDidCatch = function componentDidCatch(error, info) {
            var _this$props$onError, _this$props2;
            (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);
          };
          _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
            var error = this.state.error;
            var resetKeys = this.props.resetKeys;
            if (error !== null && prevState.error !== null && changedArray(prevProps.resetKeys, resetKeys)) {
              var _this$props$onResetKe, _this$props3;
              (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);
              this.reset();
            }
          };
          _proto.render = function render() {
            var error = this.state.error;
            var _this$props4 = this.props, fallbackRender = _this$props4.fallbackRender, FallbackComponent = _this$props4.FallbackComponent, fallback = _this$props4.fallback;
            if (error !== null) {
              var _props = {
                error,
                resetErrorBoundary: this.resetErrorBoundary
              };
              if (React__namespace.isValidElement(fallback)) {
                return fallback;
              } else if (typeof fallbackRender === "function") {
                return fallbackRender(_props);
              } else if (FallbackComponent) {
                return React__namespace.createElement(FallbackComponent, _props);
              } else {
                throw new Error("react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop");
              }
            }
            return this.props.children;
          };
          return ErrorBoundary;
        }(React__namespace.Component);
        function withErrorBoundary(Component, errorBoundaryProps) {
          var Wrapped = function Wrapped(props) {
            return React__namespace.createElement(ErrorBoundary, errorBoundaryProps, React__namespace.createElement(Component, props));
          };
          var name = Component.displayName || Component.name || "Unknown";
          Wrapped.displayName = "withErrorBoundary(" + name + ")";
          return Wrapped;
        }
        function useErrorHandler(givenError) {
          var _React$useState = React__namespace.useState(null), error = _React$useState[0], setError = _React$useState[1];
          if (givenError != null) throw givenError;
          if (error != null) throw error;
          return setError;
        }
        exports.ErrorBoundary = ErrorBoundary;
        exports.useErrorHandler = useErrorHandler;
        exports.withErrorBoundary = withErrorBoundary;
        Object.defineProperty(exports, "__esModule", {
          value: true
        });
      }));
    },
    1853(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      var _extends = Object.assign || function(target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      var _propTypes = __webpack_require__(5556);
      var _propTypes2 = _interopRequireDefault(_propTypes);
      var _react = __webpack_require__(6540);
      var _react2 = _interopRequireDefault(_react);
      function _interopRequireDefault(obj) {
        return obj && obj.__esModule ? obj : {
          default: obj
        };
      }
      function _objectWithoutProperties(obj, keys) {
        var target = {};
        for (var i in obj) {
          if (keys.indexOf(i) >= 0) continue;
          if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
          target[i] = obj[i];
        }
        return target;
      }
      var propTypes = {
        bgColor: _propTypes2.default.oneOfType([ _propTypes2.default.object, _propTypes2.default.string ]).isRequired,
        bgD: _propTypes2.default.string.isRequired,
        fgColor: _propTypes2.default.oneOfType([ _propTypes2.default.object, _propTypes2.default.string ]).isRequired,
        fgD: _propTypes2.default.string.isRequired,
        size: _propTypes2.default.number.isRequired,
        title: _propTypes2.default.string,
        viewBoxSize: _propTypes2.default.number.isRequired,
        xmlns: _propTypes2.default.string
      };
      var defaultProps = {
        title: undefined,
        xmlns: "http://www.w3.org/2000/svg"
      };
      var QRCodeSvg = (0, _react.forwardRef)((function(_ref, ref) {
        var bgColor = _ref.bgColor, bgD = _ref.bgD, fgD = _ref.fgD, fgColor = _ref.fgColor, size = _ref.size, title = _ref.title, viewBoxSize = _ref.viewBoxSize, props = _objectWithoutProperties(_ref, [ "bgColor", "bgD", "fgD", "fgColor", "size", "title", "viewBoxSize" ]);
        return _react2.default.createElement("svg", _extends({}, props, {
          height: size,
          ref,
          viewBox: "0 0 " + viewBoxSize + " " + viewBoxSize,
          width: size
        }), title ? _react2.default.createElement("title", null, title) : null, _react2.default.createElement("path", {
          d: bgD,
          fill: bgColor
        }), _react2.default.createElement("path", {
          d: fgD,
          fill: fgColor
        }));
      }));
      QRCodeSvg.displayName = "QRCodeSvg";
      QRCodeSvg.propTypes = propTypes;
      QRCodeSvg.defaultProps = defaultProps;
      exports["default"] = QRCodeSvg;
    },
    194(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __webpack_unused_export__;
      __webpack_unused_export__ = {
        value: true
      };
      var _extends = Object.assign || function(target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      var _QRCode = __webpack_require__(6641);
      var _QRCode2 = _interopRequireDefault(_QRCode);
      var _ErrorCorrectLevel = __webpack_require__(1537);
      var _ErrorCorrectLevel2 = _interopRequireDefault(_ErrorCorrectLevel);
      var _propTypes = __webpack_require__(5556);
      var _propTypes2 = _interopRequireDefault(_propTypes);
      var _react = __webpack_require__(6540);
      var _react2 = _interopRequireDefault(_react);
      var _QRCodeSvg = __webpack_require__(1853);
      var _QRCodeSvg2 = _interopRequireDefault(_QRCodeSvg);
      function _interopRequireDefault(obj) {
        return obj && obj.__esModule ? obj : {
          default: obj
        };
      }
      function _objectWithoutProperties(obj, keys) {
        var target = {};
        for (var i in obj) {
          if (keys.indexOf(i) >= 0) continue;
          if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
          target[i] = obj[i];
        }
        return target;
      }
      var propTypes = {
        bgColor: _propTypes2.default.oneOfType([ _propTypes2.default.object, _propTypes2.default.string ]),
        fgColor: _propTypes2.default.oneOfType([ _propTypes2.default.object, _propTypes2.default.string ]),
        level: _propTypes2.default.string,
        size: _propTypes2.default.number,
        value: _propTypes2.default.string.isRequired
      };
      var defaultProps = {
        bgColor: "#FFFFFF",
        fgColor: "#000000",
        level: "L",
        size: 256
      };
      var QRCode = (0, _react.forwardRef)((function(_ref, ref) {
        var bgColor = _ref.bgColor, fgColor = _ref.fgColor, level = _ref.level, size = _ref.size, value = _ref.value, props = _objectWithoutProperties(_ref, [ "bgColor", "fgColor", "level", "size", "value" ]);
        var qrcode = new _QRCode2.default(-1, _ErrorCorrectLevel2.default[level]);
        qrcode.addData(value);
        qrcode.make();
        var cells = qrcode.modules;
        return _react2.default.createElement(_QRCodeSvg2.default, _extends({}, props, {
          bgColor,
          bgD: cells.map((function(row, rowIndex) {
            return row.map((function(cell, cellIndex) {
              return !cell ? "M " + cellIndex + " " + rowIndex + " l 1 0 0 1 -1 0 Z" : "";
            })).join(" ");
          })).join(" "),
          fgColor,
          fgD: cells.map((function(row, rowIndex) {
            return row.map((function(cell, cellIndex) {
              return cell ? "M " + cellIndex + " " + rowIndex + " l 1 0 0 1 -1 0 Z" : "";
            })).join(" ");
          })).join(" "),
          ref,
          size,
          viewBoxSize: cells.length
        }));
      }));
      QRCode.displayName = "QRCode";
      QRCode.propTypes = propTypes;
      QRCode.defaultProps = defaultProps;
      exports.A = QRCode;
    },
    9375(module) {
      module.exports = Array.isArray || function(arr) {
        return Object.prototype.toString.call(arr) == "[object Array]";
      };
    },
    8505(module, __unused_webpack_exports, __webpack_require__) {
      var isarray = __webpack_require__(9375);
      module.exports = pathToRegexp;
      module.exports.parse = parse;
      module.exports.compile = compile;
      module.exports.tokensToFunction = tokensToFunction;
      module.exports.tokensToRegExp = tokensToRegExp;
      var PATH_REGEXP = new RegExp([ "(\\\\.)", "([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))" ].join("|"), "g");
      function parse(str, options) {
        var tokens = [];
        var key = 0;
        var index = 0;
        var path = "";
        var defaultDelimiter = options && options.delimiter || "/";
        var res;
        while ((res = PATH_REGEXP.exec(str)) != null) {
          var m = res[0];
          var escaped = res[1];
          var offset = res.index;
          path += str.slice(index, offset);
          index = offset + m.length;
          if (escaped) {
            path += escaped[1];
            continue;
          }
          var next = str[index];
          var prefix = res[2];
          var name = res[3];
          var capture = res[4];
          var group = res[5];
          var modifier = res[6];
          var asterisk = res[7];
          if (path) {
            tokens.push(path);
            path = "";
          }
          var partial = prefix != null && next != null && next !== prefix;
          var repeat = modifier === "+" || modifier === "*";
          var optional = modifier === "?" || modifier === "*";
          var delimiter = prefix || defaultDelimiter;
          var pattern = capture || group;
          var prevText = prefix || (typeof tokens[tokens.length - 1] === "string" ? tokens[tokens.length - 1] : "");
          tokens.push({
            name: name || key++,
            prefix: prefix || "",
            delimiter,
            optional,
            repeat,
            partial,
            asterisk: !!asterisk,
            pattern: pattern ? escapeGroup(pattern) : asterisk ? ".*" : restrictBacktrack(delimiter, prevText)
          });
        }
        if (index < str.length) {
          path += str.substr(index);
        }
        if (path) {
          tokens.push(path);
        }
        return tokens;
      }
      function restrictBacktrack(delimiter, prevText) {
        if (!prevText || prevText.indexOf(delimiter) > -1) {
          return "[^" + escapeString(delimiter) + "]+?";
        }
        return escapeString(prevText) + "|(?:(?!" + escapeString(prevText) + ")[^" + escapeString(delimiter) + "])+?";
      }
      function compile(str, options) {
        return tokensToFunction(parse(str, options), options);
      }
      function encodeURIComponentPretty(str) {
        return encodeURI(str).replace(/[\/?#]/g, (function(c) {
          return "%" + c.charCodeAt(0).toString(16).toUpperCase();
        }));
      }
      function encodeAsterisk(str) {
        return encodeURI(str).replace(/[?#]/g, (function(c) {
          return "%" + c.charCodeAt(0).toString(16).toUpperCase();
        }));
      }
      function tokensToFunction(tokens, options) {
        var matches = new Array(tokens.length);
        for (var i = 0; i < tokens.length; i++) {
          if (typeof tokens[i] === "object") {
            matches[i] = new RegExp("^(?:" + tokens[i].pattern + ")$", flags(options));
          }
        }
        return function(obj, opts) {
          var path = "";
          var data = obj || {};
          var options = opts || {};
          var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;
          for (var i = 0; i < tokens.length; i++) {
            var token = tokens[i];
            if (typeof token === "string") {
              path += token;
              continue;
            }
            var value = data[token.name];
            var segment;
            if (value == null) {
              if (token.optional) {
                if (token.partial) {
                  path += token.prefix;
                }
                continue;
              } else {
                throw new TypeError('Expected "' + token.name + '" to be defined');
              }
            }
            if (isarray(value)) {
              if (!token.repeat) {
                throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + "`");
              }
              if (value.length === 0) {
                if (token.optional) {
                  continue;
                } else {
                  throw new TypeError('Expected "' + token.name + '" to not be empty');
                }
              }
              for (var j = 0; j < value.length; j++) {
                segment = encode(value[j]);
                if (!matches[i].test(segment)) {
                  throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + "`");
                }
                path += (j === 0 ? token.prefix : token.delimiter) + segment;
              }
              continue;
            }
            segment = token.asterisk ? encodeAsterisk(value) : encode(value);
            if (!matches[i].test(segment)) {
              throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"');
            }
            path += token.prefix + segment;
          }
          return path;
        };
      }
      function escapeString(str) {
        return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, "\\$1");
      }
      function escapeGroup(group) {
        return group.replace(/([=!:$\/()])/g, "\\$1");
      }
      function attachKeys(re, keys) {
        re.keys = keys;
        return re;
      }
      function flags(options) {
        return options && options.sensitive ? "" : "i";
      }
      function regexpToRegexp(path, keys) {
        var groups = path.source.match(/\((?!\?)/g);
        if (groups) {
          for (var i = 0; i < groups.length; i++) {
            keys.push({
              name: i,
              prefix: null,
              delimiter: null,
              optional: false,
              repeat: false,
              partial: false,
              asterisk: false,
              pattern: null
            });
          }
        }
        return attachKeys(path, keys);
      }
      function arrayToRegexp(path, keys, options) {
        var parts = [];
        for (var i = 0; i < path.length; i++) {
          parts.push(pathToRegexp(path[i], keys, options).source);
        }
        var regexp = new RegExp("(?:" + parts.join("|") + ")", flags(options));
        return attachKeys(regexp, keys);
      }
      function stringToRegexp(path, keys, options) {
        return tokensToRegExp(parse(path, options), keys, options);
      }
      function tokensToRegExp(tokens, keys, options) {
        if (!isarray(keys)) {
          options = keys || options;
          keys = [];
        }
        options = options || {};
        var strict = options.strict;
        var end = options.end !== false;
        var route = "";
        for (var i = 0; i < tokens.length; i++) {
          var token = tokens[i];
          if (typeof token === "string") {
            route += escapeString(token);
          } else {
            var prefix = escapeString(token.prefix);
            var capture = "(?:" + token.pattern + ")";
            keys.push(token);
            if (token.repeat) {
              capture += "(?:" + prefix + capture + ")*";
            }
            if (token.optional) {
              if (!token.partial) {
                capture = "(?:" + prefix + "(" + capture + "))?";
              } else {
                capture = prefix + "(" + capture + ")?";
              }
            } else {
              capture = prefix + "(" + capture + ")";
            }
            route += capture;
          }
        }
        var delimiter = escapeString(options.delimiter || "/");
        var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;
        if (!strict) {
          route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + "(?:" + delimiter + "(?=$))?";
        }
        if (end) {
          route += "$";
        } else {
          route += strict && endsWithDelimiter ? "" : "(?=" + delimiter + "|$)";
        }
        return attachKeys(new RegExp("^" + route, flags(options)), keys);
      }
      function pathToRegexp(path, keys, options) {
        if (!isarray(keys)) {
          options = keys || options;
          keys = [];
        }
        options = options || {};
        if (path instanceof RegExp) {
          return regexpToRegexp(path, keys);
        }
        if (isarray(path)) {
          return arrayToRegexp(path, keys, options);
        }
        return stringToRegexp(path, keys, options);
      }
    },
    4912(__unused_webpack_module, exports) {
      "use strict";
      var __webpack_unused_export__;
      var b = "function" === typeof Symbol && Symbol.for, c = b ? Symbol.for("react.element") : 60103, d = b ? Symbol.for("react.portal") : 60106, e = b ? Symbol.for("react.fragment") : 60107, f = b ? Symbol.for("react.strict_mode") : 60108, g = b ? Symbol.for("react.profiler") : 60114, h = b ? Symbol.for("react.provider") : 60109, k = b ? Symbol.for("react.context") : 60110, l = b ? Symbol.for("react.async_mode") : 60111, m = b ? Symbol.for("react.concurrent_mode") : 60111, n = b ? Symbol.for("react.forward_ref") : 60112, p = b ? Symbol.for("react.suspense") : 60113, q = b ? Symbol.for("react.suspense_list") : 60120, r = b ? Symbol.for("react.memo") : 60115, t = b ? Symbol.for("react.lazy") : 60116, v = b ? Symbol.for("react.block") : 60121, w = b ? Symbol.for("react.fundamental") : 60117, x = b ? Symbol.for("react.responder") : 60118, y = b ? Symbol.for("react.scope") : 60119;
      function z(a) {
        if ("object" === typeof a && null !== a) {
          var u = a.$$typeof;
          switch (u) {
           case c:
            switch (a = a.type, a) {
             case l:
             case m:
             case e:
             case g:
             case f:
             case p:
              return a;

             default:
              switch (a = a && a.$$typeof, a) {
               case k:
               case n:
               case t:
               case r:
               case h:
                return a;

               default:
                return u;
              }
            }

           case d:
            return u;
          }
        }
      }
      function A(a) {
        return z(a) === m;
      }
      __webpack_unused_export__ = l;
      __webpack_unused_export__ = m;
      __webpack_unused_export__ = k;
      __webpack_unused_export__ = h;
      __webpack_unused_export__ = c;
      __webpack_unused_export__ = n;
      __webpack_unused_export__ = e;
      __webpack_unused_export__ = t;
      __webpack_unused_export__ = r;
      __webpack_unused_export__ = d;
      __webpack_unused_export__ = g;
      __webpack_unused_export__ = f;
      __webpack_unused_export__ = p;
      __webpack_unused_export__ = function(a) {
        return A(a) || z(a) === l;
      };
      __webpack_unused_export__ = A;
      __webpack_unused_export__ = function(a) {
        return z(a) === k;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === h;
      };
      __webpack_unused_export__ = function(a) {
        return "object" === typeof a && null !== a && a.$$typeof === c;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === n;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === e;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === t;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === r;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === d;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === g;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === f;
      };
      __webpack_unused_export__ = function(a) {
        return z(a) === p;
      };
      __webpack_unused_export__ = function(a) {
        return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
      };
      __webpack_unused_export__ = z;
    },
    7564(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      if (true) {
        __webpack_require__(4912);
      } else {}
    },
    5287(__unused_webpack_module, exports) {
      "use strict";
      var l = Symbol.for("react.element"), n = Symbol.for("react.portal"), p = Symbol.for("react.fragment"), q = Symbol.for("react.strict_mode"), r = Symbol.for("react.profiler"), t = Symbol.for("react.provider"), u = Symbol.for("react.context"), v = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), x = Symbol.for("react.memo"), y = Symbol.for("react.lazy"), z = Symbol.iterator;
      function A(a) {
        if (null === a || "object" !== typeof a) return null;
        a = z && a[z] || a["@@iterator"];
        return "function" === typeof a ? a : null;
      }
      var B = {
        isMounted: function() {
          return !1;
        },
        enqueueForceUpdate: function() {},
        enqueueReplaceState: function() {},
        enqueueSetState: function() {}
      }, C = Object.assign, D = {};
      function E(a, b, e) {
        this.props = a;
        this.context = b;
        this.refs = D;
        this.updater = e || B;
      }
      E.prototype.isReactComponent = {};
      E.prototype.setState = function(a, b) {
        if ("object" !== typeof a && "function" !== typeof a && null != a) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
        this.updater.enqueueSetState(this, a, b, "setState");
      };
      E.prototype.forceUpdate = function(a) {
        this.updater.enqueueForceUpdate(this, a, "forceUpdate");
      };
      function F() {}
      F.prototype = E.prototype;
      function G(a, b, e) {
        this.props = a;
        this.context = b;
        this.refs = D;
        this.updater = e || B;
      }
      var H = G.prototype = new F;
      H.constructor = G;
      C(H, E.prototype);
      H.isPureReactComponent = !0;
      var I = Array.isArray, J = Object.prototype.hasOwnProperty, K = {
        current: null
      }, L = {
        key: !0,
        ref: !0,
        __self: !0,
        __source: !0
      };
      function M(a, b, e) {
        var d, c = {}, k = null, h = null;
        if (null != b) for (d in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = "" + b.key), 
        b) J.call(b, d) && !L.hasOwnProperty(d) && (c[d] = b[d]);
        var g = arguments.length - 2;
        if (1 === g) c.children = e; else if (1 < g) {
          for (var f = Array(g), m = 0; m < g; m++) f[m] = arguments[m + 2];
          c.children = f;
        }
        if (a && a.defaultProps) for (d in g = a.defaultProps, g) void 0 === c[d] && (c[d] = g[d]);
        return {
          $$typeof: l,
          type: a,
          key: k,
          ref: h,
          props: c,
          _owner: K.current
        };
      }
      function N(a, b) {
        return {
          $$typeof: l,
          type: a.type,
          key: b,
          ref: a.ref,
          props: a.props,
          _owner: a._owner
        };
      }
      function O(a) {
        return "object" === typeof a && null !== a && a.$$typeof === l;
      }
      function escape(a) {
        var b = {
          "=": "=0",
          ":": "=2"
        };
        return "$" + a.replace(/[=:]/g, (function(a) {
          return b[a];
        }));
      }
      var P = /\/+/g;
      function Q(a, b) {
        return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b.toString(36);
      }
      function R(a, b, e, d, c) {
        var k = typeof a;
        if ("undefined" === k || "boolean" === k) a = null;
        var h = !1;
        if (null === a) h = !0; else switch (k) {
         case "string":
         case "number":
          h = !0;
          break;

         case "object":
          switch (a.$$typeof) {
           case l:
           case n:
            h = !0;
          }
        }
        if (h) return h = a, c = c(h), a = "" === d ? "." + Q(h, 0) : d, I(c) ? (e = "", 
        null != a && (e = a.replace(P, "$&/") + "/"), R(c, b, e, "", (function(a) {
          return a;
        }))) : null != c && (O(c) && (c = N(c, e + (!c.key || h && h.key === c.key ? "" : ("" + c.key).replace(P, "$&/") + "/") + a)), 
        b.push(c)), 1;
        h = 0;
        d = "" === d ? "." : d + ":";
        if (I(a)) for (var g = 0; g < a.length; g++) {
          k = a[g];
          var f = d + Q(k, g);
          h += R(k, b, e, f, c);
        } else if (f = A(a), "function" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done; ) k = k.value, 
        f = d + Q(k, g++), h += R(k, b, e, f, c); else if ("object" === k) throw b = String(a), 
        Error("Objects are not valid as a React child (found: " + ("[object Object]" === b ? "object with keys {" + Object.keys(a).join(", ") + "}" : b) + "). If you meant to render a collection of children, use an array instead.");
        return h;
      }
      function S(a, b, e) {
        if (null == a) return a;
        var d = [], c = 0;
        R(a, d, "", "", (function(a) {
          return b.call(e, a, c++);
        }));
        return d;
      }
      function T(a) {
        if (-1 === a._status) {
          var b = a._result;
          b = b();
          b.then((function(b) {
            if (0 === a._status || -1 === a._status) a._status = 1, a._result = b;
          }), (function(b) {
            if (0 === a._status || -1 === a._status) a._status = 2, a._result = b;
          }));
          -1 === a._status && (a._status = 0, a._result = b);
        }
        if (1 === a._status) return a._result.default;
        throw a._result;
      }
      var U = {
        current: null
      }, V = {
        transition: null
      }, W = {
        ReactCurrentDispatcher: U,
        ReactCurrentBatchConfig: V,
        ReactCurrentOwner: K
      };
      function X() {
        throw Error("act(...) is not supported in production builds of React.");
      }
      exports.Children = {
        map: S,
        forEach: function(a, b, e) {
          S(a, (function() {
            b.apply(this, arguments);
          }), e);
        },
        count: function(a) {
          var b = 0;
          S(a, (function() {
            b++;
          }));
          return b;
        },
        toArray: function(a) {
          return S(a, (function(a) {
            return a;
          })) || [];
        },
        only: function(a) {
          if (!O(a)) throw Error("React.Children.only expected to receive a single React element child.");
          return a;
        }
      };
      exports.Component = E;
      exports.Fragment = p;
      exports.Profiler = r;
      exports.PureComponent = G;
      exports.StrictMode = q;
      exports.Suspense = w;
      exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = W;
      exports.act = X;
      exports.cloneElement = function(a, b, e) {
        if (null === a || void 0 === a) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + a + ".");
        var d = C({}, a.props), c = a.key, k = a.ref, h = a._owner;
        if (null != b) {
          void 0 !== b.ref && (k = b.ref, h = K.current);
          void 0 !== b.key && (c = "" + b.key);
          if (a.type && a.type.defaultProps) var g = a.type.defaultProps;
          for (f in b) J.call(b, f) && !L.hasOwnProperty(f) && (d[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);
        }
        var f = arguments.length - 2;
        if (1 === f) d.children = e; else if (1 < f) {
          g = Array(f);
          for (var m = 0; m < f; m++) g[m] = arguments[m + 2];
          d.children = g;
        }
        return {
          $$typeof: l,
          type: a.type,
          key: c,
          ref: k,
          props: d,
          _owner: h
        };
      };
      exports.createContext = function(a) {
        a = {
          $$typeof: u,
          _currentValue: a,
          _currentValue2: a,
          _threadCount: 0,
          Provider: null,
          Consumer: null,
          _defaultValue: null,
          _globalName: null
        };
        a.Provider = {
          $$typeof: t,
          _context: a
        };
        return a.Consumer = a;
      };
      exports.createElement = M;
      exports.createFactory = function(a) {
        var b = M.bind(null, a);
        b.type = a;
        return b;
      };
      exports.createRef = function() {
        return {
          current: null
        };
      };
      exports.forwardRef = function(a) {
        return {
          $$typeof: v,
          render: a
        };
      };
      exports.isValidElement = O;
      exports.lazy = function(a) {
        return {
          $$typeof: y,
          _payload: {
            _status: -1,
            _result: a
          },
          _init: T
        };
      };
      exports.memo = function(a, b) {
        return {
          $$typeof: x,
          type: a,
          compare: void 0 === b ? null : b
        };
      };
      exports.startTransition = function(a) {
        var b = V.transition;
        V.transition = {};
        try {
          a();
        } finally {
          V.transition = b;
        }
      };
      exports.unstable_act = X;
      exports.useCallback = function(a, b) {
        return U.current.useCallback(a, b);
      };
      exports.useContext = function(a) {
        return U.current.useContext(a);
      };
      exports.useDebugValue = function() {};
      exports.useDeferredValue = function(a) {
        return U.current.useDeferredValue(a);
      };
      exports.useEffect = function(a, b) {
        return U.current.useEffect(a, b);
      };
      exports.useId = function() {
        return U.current.useId();
      };
      exports.useImperativeHandle = function(a, b, e) {
        return U.current.useImperativeHandle(a, b, e);
      };
      exports.useInsertionEffect = function(a, b) {
        return U.current.useInsertionEffect(a, b);
      };
      exports.useLayoutEffect = function(a, b) {
        return U.current.useLayoutEffect(a, b);
      };
      exports.useMemo = function(a, b) {
        return U.current.useMemo(a, b);
      };
      exports.useReducer = function(a, b, e) {
        return U.current.useReducer(a, b, e);
      };
      exports.useRef = function(a) {
        return U.current.useRef(a);
      };
      exports.useState = function(a) {
        return U.current.useState(a);
      };
      exports.useSyncExternalStore = function(a, b, e) {
        return U.current.useSyncExternalStore(a, b, e);
      };
      exports.useTransition = function() {
        return U.current.useTransition();
      };
      exports.version = "18.3.1";
    },
    6540(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      if (true) {
        module.exports = __webpack_require__(5287);
      } else {}
    },
    6048(module) {
      "use strict";
      function _inheritsLoose(subClass, superClass) {
        subClass.prototype = Object.create(superClass.prototype);
        subClass.prototype.constructor = subClass;
        subClass.__proto__ = superClass;
      }
      var codes = {};
      function createErrorType(code, message, Base) {
        if (!Base) {
          Base = Error;
        }
        function getMessage(arg1, arg2, arg3) {
          if (typeof message === "string") {
            return message;
          } else {
            return message(arg1, arg2, arg3);
          }
        }
        var NodeError = function(_Base) {
          _inheritsLoose(NodeError, _Base);
          function NodeError(arg1, arg2, arg3) {
            return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;
          }
          return NodeError;
        }(Base);
        NodeError.prototype.name = Base.name;
        NodeError.prototype.code = code;
        codes[code] = NodeError;
      }
      function oneOf(expected, thing) {
        if (Array.isArray(expected)) {
          var len = expected.length;
          expected = expected.map((function(i) {
            return String(i);
          }));
          if (len > 2) {
            return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(", "), ", or ") + expected[len - 1];
          } else if (len === 2) {
            return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
          } else {
            return "of ".concat(thing, " ").concat(expected[0]);
          }
        } else {
          return "of ".concat(thing, " ").concat(String(expected));
        }
      }
      function startsWith(str, search, pos) {
        return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
      }
      function endsWith(str, search, this_len) {
        if (this_len === undefined || this_len > str.length) {
          this_len = str.length;
        }
        return str.substring(this_len - search.length, this_len) === search;
      }
      function includes(str, search, start) {
        if (typeof start !== "number") {
          start = 0;
        }
        if (start + search.length > str.length) {
          return false;
        } else {
          return str.indexOf(search, start) !== -1;
        }
      }
      createErrorType("ERR_INVALID_OPT_VALUE", (function(name, value) {
        return 'The value "' + value + '" is invalid for option "' + name + '"';
      }), TypeError);
      createErrorType("ERR_INVALID_ARG_TYPE", (function(name, expected, actual) {
        var determiner;
        if (typeof expected === "string" && startsWith(expected, "not ")) {
          determiner = "must not be";
          expected = expected.replace(/^not /, "");
        } else {
          determiner = "must be";
        }
        var msg;
        if (endsWith(name, " argument")) {
          msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, "type"));
        } else {
          var type = includes(name, ".") ? "property" : "argument";
          msg = 'The "'.concat(name, '" ').concat(type, " ").concat(determiner, " ").concat(oneOf(expected, "type"));
        }
        msg += ". Received type ".concat(typeof actual);
        return msg;
      }), TypeError);
      createErrorType("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF");
      createErrorType("ERR_METHOD_NOT_IMPLEMENTED", (function(name) {
        return "The " + name + " method is not implemented";
      }));
      createErrorType("ERR_STREAM_PREMATURE_CLOSE", "Premature close");
      createErrorType("ERR_STREAM_DESTROYED", (function(name) {
        return "Cannot call " + name + " after a stream was destroyed";
      }));
      createErrorType("ERR_MULTIPLE_CALLBACK", "Callback called multiple times");
      createErrorType("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable");
      createErrorType("ERR_STREAM_WRITE_AFTER_END", "write after end");
      createErrorType("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError);
      createErrorType("ERR_UNKNOWN_ENCODING", (function(arg) {
        return "Unknown encoding: " + arg;
      }), TypeError);
      createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event");
      module.exports.F = codes;
    },
    5382(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var objectKeys = Object.keys || function(obj) {
        var keys = [];
        for (var key in obj) keys.push(key);
        return keys;
      };
      module.exports = Duplex;
      var Readable = __webpack_require__(5412);
      var Writable = __webpack_require__(6708);
      __webpack_require__(6698)(Duplex, Readable);
      {
        var keys = objectKeys(Writable.prototype);
        for (var v = 0; v < keys.length; v++) {
          var method = keys[v];
          if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
        }
      }
      function Duplex(options) {
        if (!(this instanceof Duplex)) return new Duplex(options);
        Readable.call(this, options);
        Writable.call(this, options);
        this.allowHalfOpen = true;
        if (options) {
          if (options.readable === false) this.readable = false;
          if (options.writable === false) this.writable = false;
          if (options.allowHalfOpen === false) {
            this.allowHalfOpen = false;
            this.once("end", onend);
          }
        }
      }
      Object.defineProperty(Duplex.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function get() {
          return this._writableState.highWaterMark;
        }
      });
      Object.defineProperty(Duplex.prototype, "writableBuffer", {
        enumerable: false,
        get: function get() {
          return this._writableState && this._writableState.getBuffer();
        }
      });
      Object.defineProperty(Duplex.prototype, "writableLength", {
        enumerable: false,
        get: function get() {
          return this._writableState.length;
        }
      });
      function onend() {
        if (this._writableState.ended) return;
        process.nextTick(onEndNT, this);
      }
      function onEndNT(self) {
        self.end();
      }
      Object.defineProperty(Duplex.prototype, "destroyed", {
        enumerable: false,
        get: function get() {
          if (this._readableState === undefined || this._writableState === undefined) {
            return false;
          }
          return this._readableState.destroyed && this._writableState.destroyed;
        },
        set: function set(value) {
          if (this._readableState === undefined || this._writableState === undefined) {
            return;
          }
          this._readableState.destroyed = value;
          this._writableState.destroyed = value;
        }
      });
    },
    3600(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = PassThrough;
      var Transform = __webpack_require__(4610);
      __webpack_require__(6698)(PassThrough, Transform);
      function PassThrough(options) {
        if (!(this instanceof PassThrough)) return new PassThrough(options);
        Transform.call(this, options);
      }
      PassThrough.prototype._transform = function(chunk, encoding, cb) {
        cb(null, chunk);
      };
    },
    5412(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      module.exports = Readable;
      var Duplex;
      Readable.ReadableState = ReadableState;
      var EE = __webpack_require__(7007).EventEmitter;
      var EElistenerCount = function EElistenerCount(emitter, type) {
        return emitter.listeners(type).length;
      };
      var Stream = __webpack_require__(345);
      var Buffer = __webpack_require__(8287).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var debugUtil = __webpack_require__(9838);
      var debug;
      if (debugUtil && debugUtil.debuglog) {
        debug = debugUtil.debuglog("stream");
      } else {
        debug = function debug() {};
      }
      var BufferList = __webpack_require__(2726);
      var destroyImpl = __webpack_require__(5896);
      var _require = __webpack_require__(5291), getHighWaterMark = _require.getHighWaterMark;
      var _require$codes = __webpack_require__(6048).F, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
      var StringDecoder;
      var createReadableStreamAsyncIterator;
      var from;
      __webpack_require__(6698)(Readable, Stream);
      var errorOrDestroy = destroyImpl.errorOrDestroy;
      var kProxyEvents = [ "error", "close", "destroy", "pause", "resume" ];
      function prependListener(emitter, event, fn) {
        if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn);
        if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn); else emitter._events[event] = [ fn, emitter._events[event] ];
      }
      function ReadableState(options, stream, isDuplex) {
        Duplex = Duplex || __webpack_require__(5382);
        options = options || {};
        if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
        this.highWaterMark = getHighWaterMark(this, options, "readableHighWaterMark", isDuplex);
        this.buffer = new BufferList;
        this.length = 0;
        this.pipes = null;
        this.pipesCount = 0;
        this.flowing = null;
        this.ended = false;
        this.endEmitted = false;
        this.reading = false;
        this.sync = true;
        this.needReadable = false;
        this.emittedReadable = false;
        this.readableListening = false;
        this.resumeScheduled = false;
        this.paused = true;
        this.emitClose = options.emitClose !== false;
        this.autoDestroy = !!options.autoDestroy;
        this.destroyed = false;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.awaitDrain = 0;
        this.readingMore = false;
        this.decoder = null;
        this.encoding = null;
        if (options.encoding) {
          if (!StringDecoder) StringDecoder = __webpack_require__(3141).I;
          this.decoder = new StringDecoder(options.encoding);
          this.encoding = options.encoding;
        }
      }
      function Readable(options) {
        Duplex = Duplex || __webpack_require__(5382);
        if (!(this instanceof Readable)) return new Readable(options);
        var isDuplex = this instanceof Duplex;
        this._readableState = new ReadableState(options, this, isDuplex);
        this.readable = true;
        if (options) {
          if (typeof options.read === "function") this._read = options.read;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
        }
        Stream.call(this);
      }
      Object.defineProperty(Readable.prototype, "destroyed", {
        enumerable: false,
        get: function get() {
          if (this._readableState === undefined) {
            return false;
          }
          return this._readableState.destroyed;
        },
        set: function set(value) {
          if (!this._readableState) {
            return;
          }
          this._readableState.destroyed = value;
        }
      });
      Readable.prototype.destroy = destroyImpl.destroy;
      Readable.prototype._undestroy = destroyImpl.undestroy;
      Readable.prototype._destroy = function(err, cb) {
        cb(err);
      };
      Readable.prototype.push = function(chunk, encoding) {
        var state = this._readableState;
        var skipChunkCheck;
        if (!state.objectMode) {
          if (typeof chunk === "string") {
            encoding = encoding || state.defaultEncoding;
            if (encoding !== state.encoding) {
              chunk = Buffer.from(chunk, encoding);
              encoding = "";
            }
            skipChunkCheck = true;
          }
        } else {
          skipChunkCheck = true;
        }
        return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
      };
      Readable.prototype.unshift = function(chunk) {
        return readableAddChunk(this, chunk, null, true, false);
      };
      function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
        debug("readableAddChunk", chunk);
        var state = stream._readableState;
        if (chunk === null) {
          state.reading = false;
          onEofChunk(stream, state);
        } else {
          var er;
          if (!skipChunkCheck) er = chunkInvalid(state, chunk);
          if (er) {
            errorOrDestroy(stream, er);
          } else if (state.objectMode || chunk && chunk.length > 0) {
            if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
              chunk = _uint8ArrayToBuffer(chunk);
            }
            if (addToFront) {
              if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT); else addChunk(stream, state, chunk, true);
            } else if (state.ended) {
              errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF);
            } else if (state.destroyed) {
              return false;
            } else {
              state.reading = false;
              if (state.decoder && !encoding) {
                chunk = state.decoder.write(chunk);
                if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); else maybeReadMore(stream, state);
              } else {
                addChunk(stream, state, chunk, false);
              }
            }
          } else if (!addToFront) {
            state.reading = false;
            maybeReadMore(stream, state);
          }
        }
        return !state.ended && (state.length < state.highWaterMark || state.length === 0);
      }
      function addChunk(stream, state, chunk, addToFront) {
        if (state.flowing && state.length === 0 && !state.sync) {
          state.awaitDrain = 0;
          stream.emit("data", chunk);
        } else {
          state.length += state.objectMode ? 1 : chunk.length;
          if (addToFront) state.buffer.unshift(chunk); else state.buffer.push(chunk);
          if (state.needReadable) emitReadable(stream);
        }
        maybeReadMore(stream, state);
      }
      function chunkInvalid(state, chunk) {
        var er;
        if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
          er = new ERR_INVALID_ARG_TYPE("chunk", [ "string", "Buffer", "Uint8Array" ], chunk);
        }
        return er;
      }
      Readable.prototype.isPaused = function() {
        return this._readableState.flowing === false;
      };
      Readable.prototype.setEncoding = function(enc) {
        if (!StringDecoder) StringDecoder = __webpack_require__(3141).I;
        var decoder = new StringDecoder(enc);
        this._readableState.decoder = decoder;
        this._readableState.encoding = this._readableState.decoder.encoding;
        var p = this._readableState.buffer.head;
        var content = "";
        while (p !== null) {
          content += decoder.write(p.data);
          p = p.next;
        }
        this._readableState.buffer.clear();
        if (content !== "") this._readableState.buffer.push(content);
        this._readableState.length = content.length;
        return this;
      };
      var MAX_HWM = 1073741824;
      function computeNewHighWaterMark(n) {
        if (n >= MAX_HWM) {
          n = MAX_HWM;
        } else {
          n--;
          n |= n >>> 1;
          n |= n >>> 2;
          n |= n >>> 4;
          n |= n >>> 8;
          n |= n >>> 16;
          n++;
        }
        return n;
      }
      function howMuchToRead(n, state) {
        if (n <= 0 || state.length === 0 && state.ended) return 0;
        if (state.objectMode) return 1;
        if (n !== n) {
          if (state.flowing && state.length) return state.buffer.head.data.length; else return state.length;
        }
        if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
        if (n <= state.length) return n;
        if (!state.ended) {
          state.needReadable = true;
          return 0;
        }
        return state.length;
      }
      Readable.prototype.read = function(n) {
        debug("read", n);
        n = parseInt(n, 10);
        var state = this._readableState;
        var nOrig = n;
        if (n !== 0) state.emittedReadable = false;
        if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
          debug("read: emitReadable", state.length, state.ended);
          if (state.length === 0 && state.ended) endReadable(this); else emitReadable(this);
          return null;
        }
        n = howMuchToRead(n, state);
        if (n === 0 && state.ended) {
          if (state.length === 0) endReadable(this);
          return null;
        }
        var doRead = state.needReadable;
        debug("need readable", doRead);
        if (state.length === 0 || state.length - n < state.highWaterMark) {
          doRead = true;
          debug("length less than watermark", doRead);
        }
        if (state.ended || state.reading) {
          doRead = false;
          debug("reading or ended", doRead);
        } else if (doRead) {
          debug("do read");
          state.reading = true;
          state.sync = true;
          if (state.length === 0) state.needReadable = true;
          this._read(state.highWaterMark);
          state.sync = false;
          if (!state.reading) n = howMuchToRead(nOrig, state);
        }
        var ret;
        if (n > 0) ret = fromList(n, state); else ret = null;
        if (ret === null) {
          state.needReadable = state.length <= state.highWaterMark;
          n = 0;
        } else {
          state.length -= n;
          state.awaitDrain = 0;
        }
        if (state.length === 0) {
          if (!state.ended) state.needReadable = true;
          if (nOrig !== n && state.ended) endReadable(this);
        }
        if (ret !== null) this.emit("data", ret);
        return ret;
      };
      function onEofChunk(stream, state) {
        debug("onEofChunk");
        if (state.ended) return;
        if (state.decoder) {
          var chunk = state.decoder.end();
          if (chunk && chunk.length) {
            state.buffer.push(chunk);
            state.length += state.objectMode ? 1 : chunk.length;
          }
        }
        state.ended = true;
        if (state.sync) {
          emitReadable(stream);
        } else {
          state.needReadable = false;
          if (!state.emittedReadable) {
            state.emittedReadable = true;
            emitReadable_(stream);
          }
        }
      }
      function emitReadable(stream) {
        var state = stream._readableState;
        debug("emitReadable", state.needReadable, state.emittedReadable);
        state.needReadable = false;
        if (!state.emittedReadable) {
          debug("emitReadable", state.flowing);
          state.emittedReadable = true;
          process.nextTick(emitReadable_, stream);
        }
      }
      function emitReadable_(stream) {
        var state = stream._readableState;
        debug("emitReadable_", state.destroyed, state.length, state.ended);
        if (!state.destroyed && (state.length || state.ended)) {
          stream.emit("readable");
          state.emittedReadable = false;
        }
        state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
        flow(stream);
      }
      function maybeReadMore(stream, state) {
        if (!state.readingMore) {
          state.readingMore = true;
          process.nextTick(maybeReadMore_, stream, state);
        }
      }
      function maybeReadMore_(stream, state) {
        while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
          var len = state.length;
          debug("maybeReadMore read 0");
          stream.read(0);
          if (len === state.length) break;
        }
        state.readingMore = false;
      }
      Readable.prototype._read = function(n) {
        errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED("_read()"));
      };
      Readable.prototype.pipe = function(dest, pipeOpts) {
        var src = this;
        var state = this._readableState;
        switch (state.pipesCount) {
         case 0:
          state.pipes = dest;
          break;

         case 1:
          state.pipes = [ state.pipes, dest ];
          break;

         default:
          state.pipes.push(dest);
          break;
        }
        state.pipesCount += 1;
        debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
        var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
        var endFn = doEnd ? onend : unpipe;
        if (state.endEmitted) process.nextTick(endFn); else src.once("end", endFn);
        dest.on("unpipe", onunpipe);
        function onunpipe(readable, unpipeInfo) {
          debug("onunpipe");
          if (readable === src) {
            if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
              unpipeInfo.hasUnpiped = true;
              cleanup();
            }
          }
        }
        function onend() {
          debug("onend");
          dest.end();
        }
        var ondrain = pipeOnDrain(src);
        dest.on("drain", ondrain);
        var cleanedUp = false;
        function cleanup() {
          debug("cleanup");
          dest.removeListener("close", onclose);
          dest.removeListener("finish", onfinish);
          dest.removeListener("drain", ondrain);
          dest.removeListener("error", onerror);
          dest.removeListener("unpipe", onunpipe);
          src.removeListener("end", onend);
          src.removeListener("end", unpipe);
          src.removeListener("data", ondata);
          cleanedUp = true;
          if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
        }
        src.on("data", ondata);
        function ondata(chunk) {
          debug("ondata");
          var ret = dest.write(chunk);
          debug("dest.write", ret);
          if (ret === false) {
            if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
              debug("false write response, pause", state.awaitDrain);
              state.awaitDrain++;
            }
            src.pause();
          }
        }
        function onerror(er) {
          debug("onerror", er);
          unpipe();
          dest.removeListener("error", onerror);
          if (EElistenerCount(dest, "error") === 0) errorOrDestroy(dest, er);
        }
        prependListener(dest, "error", onerror);
        function onclose() {
          dest.removeListener("finish", onfinish);
          unpipe();
        }
        dest.once("close", onclose);
        function onfinish() {
          debug("onfinish");
          dest.removeListener("close", onclose);
          unpipe();
        }
        dest.once("finish", onfinish);
        function unpipe() {
          debug("unpipe");
          src.unpipe(dest);
        }
        dest.emit("pipe", src);
        if (!state.flowing) {
          debug("pipe resume");
          src.resume();
        }
        return dest;
      };
      function pipeOnDrain(src) {
        return function pipeOnDrainFunctionResult() {
          var state = src._readableState;
          debug("pipeOnDrain", state.awaitDrain);
          if (state.awaitDrain) state.awaitDrain--;
          if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
            state.flowing = true;
            flow(src);
          }
        };
      }
      Readable.prototype.unpipe = function(dest) {
        var state = this._readableState;
        var unpipeInfo = {
          hasUnpiped: false
        };
        if (state.pipesCount === 0) return this;
        if (state.pipesCount === 1) {
          if (dest && dest !== state.pipes) return this;
          if (!dest) dest = state.pipes;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          if (dest) dest.emit("unpipe", this, unpipeInfo);
          return this;
        }
        if (!dest) {
          var dests = state.pipes;
          var len = state.pipesCount;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          for (var i = 0; i < len; i++) dests[i].emit("unpipe", this, {
            hasUnpiped: false
          });
          return this;
        }
        var index = indexOf(state.pipes, dest);
        if (index === -1) return this;
        state.pipes.splice(index, 1);
        state.pipesCount -= 1;
        if (state.pipesCount === 1) state.pipes = state.pipes[0];
        dest.emit("unpipe", this, unpipeInfo);
        return this;
      };
      Readable.prototype.on = function(ev, fn) {
        var res = Stream.prototype.on.call(this, ev, fn);
        var state = this._readableState;
        if (ev === "data") {
          state.readableListening = this.listenerCount("readable") > 0;
          if (state.flowing !== false) this.resume();
        } else if (ev === "readable") {
          if (!state.endEmitted && !state.readableListening) {
            state.readableListening = state.needReadable = true;
            state.flowing = false;
            state.emittedReadable = false;
            debug("on readable", state.length, state.reading);
            if (state.length) {
              emitReadable(this);
            } else if (!state.reading) {
              process.nextTick(nReadingNextTick, this);
            }
          }
        }
        return res;
      };
      Readable.prototype.addListener = Readable.prototype.on;
      Readable.prototype.removeListener = function(ev, fn) {
        var res = Stream.prototype.removeListener.call(this, ev, fn);
        if (ev === "readable") {
          process.nextTick(updateReadableListening, this);
        }
        return res;
      };
      Readable.prototype.removeAllListeners = function(ev) {
        var res = Stream.prototype.removeAllListeners.apply(this, arguments);
        if (ev === "readable" || ev === undefined) {
          process.nextTick(updateReadableListening, this);
        }
        return res;
      };
      function updateReadableListening(self) {
        var state = self._readableState;
        state.readableListening = self.listenerCount("readable") > 0;
        if (state.resumeScheduled && !state.paused) {
          state.flowing = true;
        } else if (self.listenerCount("data") > 0) {
          self.resume();
        }
      }
      function nReadingNextTick(self) {
        debug("readable nexttick read 0");
        self.read(0);
      }
      Readable.prototype.resume = function() {
        var state = this._readableState;
        if (!state.flowing) {
          debug("resume");
          state.flowing = !state.readableListening;
          resume(this, state);
        }
        state.paused = false;
        return this;
      };
      function resume(stream, state) {
        if (!state.resumeScheduled) {
          state.resumeScheduled = true;
          process.nextTick(resume_, stream, state);
        }
      }
      function resume_(stream, state) {
        debug("resume", state.reading);
        if (!state.reading) {
          stream.read(0);
        }
        state.resumeScheduled = false;
        stream.emit("resume");
        flow(stream);
        if (state.flowing && !state.reading) stream.read(0);
      }
      Readable.prototype.pause = function() {
        debug("call pause flowing=%j", this._readableState.flowing);
        if (this._readableState.flowing !== false) {
          debug("pause");
          this._readableState.flowing = false;
          this.emit("pause");
        }
        this._readableState.paused = true;
        return this;
      };
      function flow(stream) {
        var state = stream._readableState;
        debug("flow", state.flowing);
        while (state.flowing && stream.read() !== null) ;
      }
      Readable.prototype.wrap = function(stream) {
        var _this = this;
        var state = this._readableState;
        var paused = false;
        stream.on("end", (function() {
          debug("wrapped end");
          if (state.decoder && !state.ended) {
            var chunk = state.decoder.end();
            if (chunk && chunk.length) _this.push(chunk);
          }
          _this.push(null);
        }));
        stream.on("data", (function(chunk) {
          debug("wrapped data");
          if (state.decoder) chunk = state.decoder.write(chunk);
          if (state.objectMode && (chunk === null || chunk === undefined)) return; else if (!state.objectMode && (!chunk || !chunk.length)) return;
          var ret = _this.push(chunk);
          if (!ret) {
            paused = true;
            stream.pause();
          }
        }));
        for (var i in stream) {
          if (this[i] === undefined && typeof stream[i] === "function") {
            this[i] = function methodWrap(method) {
              return function methodWrapReturnFunction() {
                return stream[method].apply(stream, arguments);
              };
            }(i);
          }
        }
        for (var n = 0; n < kProxyEvents.length; n++) {
          stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
        }
        this._read = function(n) {
          debug("wrapped _read", n);
          if (paused) {
            paused = false;
            stream.resume();
          }
        };
        return this;
      };
      if (typeof Symbol === "function") {
        Readable.prototype[Symbol.asyncIterator] = function() {
          if (createReadableStreamAsyncIterator === undefined) {
            createReadableStreamAsyncIterator = __webpack_require__(2955);
          }
          return createReadableStreamAsyncIterator(this);
        };
      }
      Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
        enumerable: false,
        get: function get() {
          return this._readableState.highWaterMark;
        }
      });
      Object.defineProperty(Readable.prototype, "readableBuffer", {
        enumerable: false,
        get: function get() {
          return this._readableState && this._readableState.buffer;
        }
      });
      Object.defineProperty(Readable.prototype, "readableFlowing", {
        enumerable: false,
        get: function get() {
          return this._readableState.flowing;
        },
        set: function set(state) {
          if (this._readableState) {
            this._readableState.flowing = state;
          }
        }
      });
      Readable._fromList = fromList;
      Object.defineProperty(Readable.prototype, "readableLength", {
        enumerable: false,
        get: function get() {
          return this._readableState.length;
        }
      });
      function fromList(n, state) {
        if (state.length === 0) return null;
        var ret;
        if (state.objectMode) ret = state.buffer.shift(); else if (!n || n >= state.length) {
          if (state.decoder) ret = state.buffer.join(""); else if (state.buffer.length === 1) ret = state.buffer.first(); else ret = state.buffer.concat(state.length);
          state.buffer.clear();
        } else {
          ret = state.buffer.consume(n, state.decoder);
        }
        return ret;
      }
      function endReadable(stream) {
        var state = stream._readableState;
        debug("endReadable", state.endEmitted);
        if (!state.endEmitted) {
          state.ended = true;
          process.nextTick(endReadableNT, state, stream);
        }
      }
      function endReadableNT(state, stream) {
        debug("endReadableNT", state.endEmitted, state.length);
        if (!state.endEmitted && state.length === 0) {
          state.endEmitted = true;
          stream.readable = false;
          stream.emit("end");
          if (state.autoDestroy) {
            var wState = stream._writableState;
            if (!wState || wState.autoDestroy && wState.finished) {
              stream.destroy();
            }
          }
        }
      }
      if (typeof Symbol === "function") {
        Readable.from = function(iterable, opts) {
          if (from === undefined) {
            from = __webpack_require__(5157);
          }
          return from(Readable, iterable, opts);
        };
      }
      function indexOf(xs, x) {
        for (var i = 0, l = xs.length; i < l; i++) {
          if (xs[i] === x) return i;
        }
        return -1;
      }
    },
    4610(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = Transform;
      var _require$codes = __webpack_require__(6048).F, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
      var Duplex = __webpack_require__(5382);
      __webpack_require__(6698)(Transform, Duplex);
      function afterTransform(er, data) {
        var ts = this._transformState;
        ts.transforming = false;
        var cb = ts.writecb;
        if (cb === null) {
          return this.emit("error", new ERR_MULTIPLE_CALLBACK);
        }
        ts.writechunk = null;
        ts.writecb = null;
        if (data != null) this.push(data);
        cb(er);
        var rs = this._readableState;
        rs.reading = false;
        if (rs.needReadable || rs.length < rs.highWaterMark) {
          this._read(rs.highWaterMark);
        }
      }
      function Transform(options) {
        if (!(this instanceof Transform)) return new Transform(options);
        Duplex.call(this, options);
        this._transformState = {
          afterTransform: afterTransform.bind(this),
          needTransform: false,
          transforming: false,
          writecb: null,
          writechunk: null,
          writeencoding: null
        };
        this._readableState.needReadable = true;
        this._readableState.sync = false;
        if (options) {
          if (typeof options.transform === "function") this._transform = options.transform;
          if (typeof options.flush === "function") this._flush = options.flush;
        }
        this.on("prefinish", prefinish);
      }
      function prefinish() {
        var _this = this;
        if (typeof this._flush === "function" && !this._readableState.destroyed) {
          this._flush((function(er, data) {
            done(_this, er, data);
          }));
        } else {
          done(this, null, null);
        }
      }
      Transform.prototype.push = function(chunk, encoding) {
        this._transformState.needTransform = false;
        return Duplex.prototype.push.call(this, chunk, encoding);
      };
      Transform.prototype._transform = function(chunk, encoding, cb) {
        cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"));
      };
      Transform.prototype._write = function(chunk, encoding, cb) {
        var ts = this._transformState;
        ts.writecb = cb;
        ts.writechunk = chunk;
        ts.writeencoding = encoding;
        if (!ts.transforming) {
          var rs = this._readableState;
          if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
        }
      };
      Transform.prototype._read = function(n) {
        var ts = this._transformState;
        if (ts.writechunk !== null && !ts.transforming) {
          ts.transforming = true;
          this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
        } else {
          ts.needTransform = true;
        }
      };
      Transform.prototype._destroy = function(err, cb) {
        Duplex.prototype._destroy.call(this, err, (function(err2) {
          cb(err2);
        }));
      };
      function done(stream, er, data) {
        if (er) return stream.emit("error", er);
        if (data != null) stream.push(data);
        if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0;
        if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING;
        return stream.push(null);
      }
    },
    6708(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      module.exports = Writable;
      function WriteReq(chunk, encoding, cb) {
        this.chunk = chunk;
        this.encoding = encoding;
        this.callback = cb;
        this.next = null;
      }
      function CorkedRequest(state) {
        var _this = this;
        this.next = null;
        this.entry = null;
        this.finish = function() {
          onCorkedFinish(_this, state);
        };
      }
      var Duplex;
      Writable.WritableState = WritableState;
      var internalUtil = {
        deprecate: __webpack_require__(4643)
      };
      var Stream = __webpack_require__(345);
      var Buffer = __webpack_require__(8287).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var destroyImpl = __webpack_require__(5896);
      var _require = __webpack_require__(5291), getHighWaterMark = _require.getHighWaterMark;
      var _require$codes = __webpack_require__(6048).F, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
      var errorOrDestroy = destroyImpl.errorOrDestroy;
      __webpack_require__(6698)(Writable, Stream);
      function nop() {}
      function WritableState(options, stream, isDuplex) {
        Duplex = Duplex || __webpack_require__(5382);
        options = options || {};
        if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
        this.highWaterMark = getHighWaterMark(this, options, "writableHighWaterMark", isDuplex);
        this.finalCalled = false;
        this.needDrain = false;
        this.ending = false;
        this.ended = false;
        this.finished = false;
        this.destroyed = false;
        var noDecode = options.decodeStrings === false;
        this.decodeStrings = !noDecode;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.length = 0;
        this.writing = false;
        this.corked = 0;
        this.sync = true;
        this.bufferProcessing = false;
        this.onwrite = function(er) {
          onwrite(stream, er);
        };
        this.writecb = null;
        this.writelen = 0;
        this.bufferedRequest = null;
        this.lastBufferedRequest = null;
        this.pendingcb = 0;
        this.prefinished = false;
        this.errorEmitted = false;
        this.emitClose = options.emitClose !== false;
        this.autoDestroy = !!options.autoDestroy;
        this.bufferedRequestCount = 0;
        this.corkedRequestsFree = new CorkedRequest(this);
      }
      WritableState.prototype.getBuffer = function getBuffer() {
        var current = this.bufferedRequest;
        var out = [];
        while (current) {
          out.push(current);
          current = current.next;
        }
        return out;
      };
      (function() {
        try {
          Object.defineProperty(WritableState.prototype, "buffer", {
            get: internalUtil.deprecate((function writableStateBufferGetter() {
              return this.getBuffer();
            }), "_writableState.buffer is deprecated. Use _writableState.getBuffer " + "instead.", "DEP0003")
          });
        } catch (_) {}
      })();
      var realHasInstance;
      if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
        realHasInstance = Function.prototype[Symbol.hasInstance];
        Object.defineProperty(Writable, Symbol.hasInstance, {
          value: function value(object) {
            if (realHasInstance.call(this, object)) return true;
            if (this !== Writable) return false;
            return object && object._writableState instanceof WritableState;
          }
        });
      } else {
        realHasInstance = function realHasInstance(object) {
          return object instanceof this;
        };
      }
      function Writable(options) {
        Duplex = Duplex || __webpack_require__(5382);
        var isDuplex = this instanceof Duplex;
        if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);
        this._writableState = new WritableState(options, this, isDuplex);
        this.writable = true;
        if (options) {
          if (typeof options.write === "function") this._write = options.write;
          if (typeof options.writev === "function") this._writev = options.writev;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
          if (typeof options.final === "function") this._final = options.final;
        }
        Stream.call(this);
      }
      Writable.prototype.pipe = function() {
        errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE);
      };
      function writeAfterEnd(stream, cb) {
        var er = new ERR_STREAM_WRITE_AFTER_END;
        errorOrDestroy(stream, er);
        process.nextTick(cb, er);
      }
      function validChunk(stream, state, chunk, cb) {
        var er;
        if (chunk === null) {
          er = new ERR_STREAM_NULL_VALUES;
        } else if (typeof chunk !== "string" && !state.objectMode) {
          er = new ERR_INVALID_ARG_TYPE("chunk", [ "string", "Buffer" ], chunk);
        }
        if (er) {
          errorOrDestroy(stream, er);
          process.nextTick(cb, er);
          return false;
        }
        return true;
      }
      Writable.prototype.write = function(chunk, encoding, cb) {
        var state = this._writableState;
        var ret = false;
        var isBuf = !state.objectMode && _isUint8Array(chunk);
        if (isBuf && !Buffer.isBuffer(chunk)) {
          chunk = _uint8ArrayToBuffer(chunk);
        }
        if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (isBuf) encoding = "buffer"; else if (!encoding) encoding = state.defaultEncoding;
        if (typeof cb !== "function") cb = nop;
        if (state.ending) writeAfterEnd(this, cb); else if (isBuf || validChunk(this, state, chunk, cb)) {
          state.pendingcb++;
          ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
        }
        return ret;
      };
      Writable.prototype.cork = function() {
        this._writableState.corked++;
      };
      Writable.prototype.uncork = function() {
        var state = this._writableState;
        if (state.corked) {
          state.corked--;
          if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
        }
      };
      Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
        if (typeof encoding === "string") encoding = encoding.toLowerCase();
        if (!([ "hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw" ].indexOf((encoding + "").toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);
        this._writableState.defaultEncoding = encoding;
        return this;
      };
      Object.defineProperty(Writable.prototype, "writableBuffer", {
        enumerable: false,
        get: function get() {
          return this._writableState && this._writableState.getBuffer();
        }
      });
      function decodeChunk(state, chunk, encoding) {
        if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
          chunk = Buffer.from(chunk, encoding);
        }
        return chunk;
      }
      Object.defineProperty(Writable.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function get() {
          return this._writableState.highWaterMark;
        }
      });
      function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
        if (!isBuf) {
          var newChunk = decodeChunk(state, chunk, encoding);
          if (chunk !== newChunk) {
            isBuf = true;
            encoding = "buffer";
            chunk = newChunk;
          }
        }
        var len = state.objectMode ? 1 : chunk.length;
        state.length += len;
        var ret = state.length < state.highWaterMark;
        if (!ret) state.needDrain = true;
        if (state.writing || state.corked) {
          var last = state.lastBufferedRequest;
          state.lastBufferedRequest = {
            chunk,
            encoding,
            isBuf,
            callback: cb,
            next: null
          };
          if (last) {
            last.next = state.lastBufferedRequest;
          } else {
            state.bufferedRequest = state.lastBufferedRequest;
          }
          state.bufferedRequestCount += 1;
        } else {
          doWrite(stream, state, false, len, chunk, encoding, cb);
        }
        return ret;
      }
      function doWrite(stream, state, writev, len, chunk, encoding, cb) {
        state.writelen = len;
        state.writecb = cb;
        state.writing = true;
        state.sync = true;
        if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED("write")); else if (writev) stream._writev(chunk, state.onwrite); else stream._write(chunk, encoding, state.onwrite);
        state.sync = false;
      }
      function onwriteError(stream, state, sync, er, cb) {
        --state.pendingcb;
        if (sync) {
          process.nextTick(cb, er);
          process.nextTick(finishMaybe, stream, state);
          stream._writableState.errorEmitted = true;
          errorOrDestroy(stream, er);
        } else {
          cb(er);
          stream._writableState.errorEmitted = true;
          errorOrDestroy(stream, er);
          finishMaybe(stream, state);
        }
      }
      function onwriteStateUpdate(state) {
        state.writing = false;
        state.writecb = null;
        state.length -= state.writelen;
        state.writelen = 0;
      }
      function onwrite(stream, er) {
        var state = stream._writableState;
        var sync = state.sync;
        var cb = state.writecb;
        if (typeof cb !== "function") throw new ERR_MULTIPLE_CALLBACK;
        onwriteStateUpdate(state);
        if (er) onwriteError(stream, state, sync, er, cb); else {
          var finished = needFinish(state) || stream.destroyed;
          if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
            clearBuffer(stream, state);
          }
          if (sync) {
            process.nextTick(afterWrite, stream, state, finished, cb);
          } else {
            afterWrite(stream, state, finished, cb);
          }
        }
      }
      function afterWrite(stream, state, finished, cb) {
        if (!finished) onwriteDrain(stream, state);
        state.pendingcb--;
        cb();
        finishMaybe(stream, state);
      }
      function onwriteDrain(stream, state) {
        if (state.length === 0 && state.needDrain) {
          state.needDrain = false;
          stream.emit("drain");
        }
      }
      function clearBuffer(stream, state) {
        state.bufferProcessing = true;
        var entry = state.bufferedRequest;
        if (stream._writev && entry && entry.next) {
          var l = state.bufferedRequestCount;
          var buffer = new Array(l);
          var holder = state.corkedRequestsFree;
          holder.entry = entry;
          var count = 0;
          var allBuffers = true;
          while (entry) {
            buffer[count] = entry;
            if (!entry.isBuf) allBuffers = false;
            entry = entry.next;
            count += 1;
          }
          buffer.allBuffers = allBuffers;
          doWrite(stream, state, true, state.length, buffer, "", holder.finish);
          state.pendingcb++;
          state.lastBufferedRequest = null;
          if (holder.next) {
            state.corkedRequestsFree = holder.next;
            holder.next = null;
          } else {
            state.corkedRequestsFree = new CorkedRequest(state);
          }
          state.bufferedRequestCount = 0;
        } else {
          while (entry) {
            var chunk = entry.chunk;
            var encoding = entry.encoding;
            var cb = entry.callback;
            var len = state.objectMode ? 1 : chunk.length;
            doWrite(stream, state, false, len, chunk, encoding, cb);
            entry = entry.next;
            state.bufferedRequestCount--;
            if (state.writing) {
              break;
            }
          }
          if (entry === null) state.lastBufferedRequest = null;
        }
        state.bufferedRequest = entry;
        state.bufferProcessing = false;
      }
      Writable.prototype._write = function(chunk, encoding, cb) {
        cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()"));
      };
      Writable.prototype._writev = null;
      Writable.prototype.end = function(chunk, encoding, cb) {
        var state = this._writableState;
        if (typeof chunk === "function") {
          cb = chunk;
          chunk = null;
          encoding = null;
        } else if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
        if (state.corked) {
          state.corked = 1;
          this.uncork();
        }
        if (!state.ending) endWritable(this, state, cb);
        return this;
      };
      Object.defineProperty(Writable.prototype, "writableLength", {
        enumerable: false,
        get: function get() {
          return this._writableState.length;
        }
      });
      function needFinish(state) {
        return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
      }
      function callFinal(stream, state) {
        stream._final((function(err) {
          state.pendingcb--;
          if (err) {
            errorOrDestroy(stream, err);
          }
          state.prefinished = true;
          stream.emit("prefinish");
          finishMaybe(stream, state);
        }));
      }
      function prefinish(stream, state) {
        if (!state.prefinished && !state.finalCalled) {
          if (typeof stream._final === "function" && !state.destroyed) {
            state.pendingcb++;
            state.finalCalled = true;
            process.nextTick(callFinal, stream, state);
          } else {
            state.prefinished = true;
            stream.emit("prefinish");
          }
        }
      }
      function finishMaybe(stream, state) {
        var need = needFinish(state);
        if (need) {
          prefinish(stream, state);
          if (state.pendingcb === 0) {
            state.finished = true;
            stream.emit("finish");
            if (state.autoDestroy) {
              var rState = stream._readableState;
              if (!rState || rState.autoDestroy && rState.endEmitted) {
                stream.destroy();
              }
            }
          }
        }
        return need;
      }
      function endWritable(stream, state, cb) {
        state.ending = true;
        finishMaybe(stream, state);
        if (cb) {
          if (state.finished) process.nextTick(cb); else stream.once("finish", cb);
        }
        state.ended = true;
        stream.writable = false;
      }
      function onCorkedFinish(corkReq, state, err) {
        var entry = corkReq.entry;
        corkReq.entry = null;
        while (entry) {
          var cb = entry.callback;
          state.pendingcb--;
          cb(err);
          entry = entry.next;
        }
        state.corkedRequestsFree.next = corkReq;
      }
      Object.defineProperty(Writable.prototype, "destroyed", {
        enumerable: false,
        get: function get() {
          if (this._writableState === undefined) {
            return false;
          }
          return this._writableState.destroyed;
        },
        set: function set(value) {
          if (!this._writableState) {
            return;
          }
          this._writableState.destroyed = value;
        }
      });
      Writable.prototype.destroy = destroyImpl.destroy;
      Writable.prototype._undestroy = destroyImpl.undestroy;
      Writable.prototype._destroy = function(err, cb) {
        cb(err);
      };
    },
    2955(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var _Object$setPrototypeO;
      function _defineProperty(obj, key, value) {
        key = _toPropertyKey(key);
        if (key in obj) {
          Object.defineProperty(obj, key, {
            value,
            enumerable: true,
            configurable: true,
            writable: true
          });
        } else {
          obj[key] = value;
        }
        return obj;
      }
      function _toPropertyKey(arg) {
        var key = _toPrimitive(arg, "string");
        return typeof key === "symbol" ? key : String(key);
      }
      function _toPrimitive(input, hint) {
        if (typeof input !== "object" || input === null) return input;
        var prim = input[Symbol.toPrimitive];
        if (prim !== undefined) {
          var res = prim.call(input, hint || "default");
          if (typeof res !== "object") return res;
          throw new TypeError("@@toPrimitive must return a primitive value.");
        }
        return (hint === "string" ? String : Number)(input);
      }
      var finished = __webpack_require__(6238);
      var kLastResolve = Symbol("lastResolve");
      var kLastReject = Symbol("lastReject");
      var kError = Symbol("error");
      var kEnded = Symbol("ended");
      var kLastPromise = Symbol("lastPromise");
      var kHandlePromise = Symbol("handlePromise");
      var kStream = Symbol("stream");
      function createIterResult(value, done) {
        return {
          value,
          done
        };
      }
      function readAndResolve(iter) {
        var resolve = iter[kLastResolve];
        if (resolve !== null) {
          var data = iter[kStream].read();
          if (data !== null) {
            iter[kLastPromise] = null;
            iter[kLastResolve] = null;
            iter[kLastReject] = null;
            resolve(createIterResult(data, false));
          }
        }
      }
      function onReadable(iter) {
        process.nextTick(readAndResolve, iter);
      }
      function wrapForNext(lastPromise, iter) {
        return function(resolve, reject) {
          lastPromise.then((function() {
            if (iter[kEnded]) {
              resolve(createIterResult(undefined, true));
              return;
            }
            iter[kHandlePromise](resolve, reject);
          }), reject);
        };
      }
      var AsyncIteratorPrototype = Object.getPrototypeOf((function() {}));
      var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
        get stream() {
          return this[kStream];
        },
        next: function next() {
          var _this = this;
          var error = this[kError];
          if (error !== null) {
            return Promise.reject(error);
          }
          if (this[kEnded]) {
            return Promise.resolve(createIterResult(undefined, true));
          }
          if (this[kStream].destroyed) {
            return new Promise((function(resolve, reject) {
              process.nextTick((function() {
                if (_this[kError]) {
                  reject(_this[kError]);
                } else {
                  resolve(createIterResult(undefined, true));
                }
              }));
            }));
          }
          var lastPromise = this[kLastPromise];
          var promise;
          if (lastPromise) {
            promise = new Promise(wrapForNext(lastPromise, this));
          } else {
            var data = this[kStream].read();
            if (data !== null) {
              return Promise.resolve(createIterResult(data, false));
            }
            promise = new Promise(this[kHandlePromise]);
          }
          this[kLastPromise] = promise;
          return promise;
        }
      }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, (function() {
        return this;
      })), _defineProperty(_Object$setPrototypeO, "return", (function _return() {
        var _this2 = this;
        return new Promise((function(resolve, reject) {
          _this2[kStream].destroy(null, (function(err) {
            if (err) {
              reject(err);
              return;
            }
            resolve(createIterResult(undefined, true));
          }));
        }));
      })), _Object$setPrototypeO), AsyncIteratorPrototype);
      var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
        var _Object$create;
        var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, 
        _defineProperty(_Object$create, kStream, {
          value: stream,
          writable: true
        }), _defineProperty(_Object$create, kLastResolve, {
          value: null,
          writable: true
        }), _defineProperty(_Object$create, kLastReject, {
          value: null,
          writable: true
        }), _defineProperty(_Object$create, kError, {
          value: null,
          writable: true
        }), _defineProperty(_Object$create, kEnded, {
          value: stream._readableState.endEmitted,
          writable: true
        }), _defineProperty(_Object$create, kHandlePromise, {
          value: function value(resolve, reject) {
            var data = iterator[kStream].read();
            if (data) {
              iterator[kLastPromise] = null;
              iterator[kLastResolve] = null;
              iterator[kLastReject] = null;
              resolve(createIterResult(data, false));
            } else {
              iterator[kLastResolve] = resolve;
              iterator[kLastReject] = reject;
            }
          },
          writable: true
        }), _Object$create));
        iterator[kLastPromise] = null;
        finished(stream, (function(err) {
          if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
            var reject = iterator[kLastReject];
            if (reject !== null) {
              iterator[kLastPromise] = null;
              iterator[kLastResolve] = null;
              iterator[kLastReject] = null;
              reject(err);
            }
            iterator[kError] = err;
            return;
          }
          var resolve = iterator[kLastResolve];
          if (resolve !== null) {
            iterator[kLastPromise] = null;
            iterator[kLastResolve] = null;
            iterator[kLastReject] = null;
            resolve(createIterResult(undefined, true));
          }
          iterator[kEnded] = true;
        }));
        stream.on("readable", onReadable.bind(null, iterator));
        return iterator;
      };
      module.exports = createReadableStreamAsyncIterator;
    },
    2726(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      function ownKeys(object, enumerableOnly) {
        var keys = Object.keys(object);
        if (Object.getOwnPropertySymbols) {
          var symbols = Object.getOwnPropertySymbols(object);
          enumerableOnly && (symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }))), keys.push.apply(keys, symbols);
        }
        return keys;
      }
      function _objectSpread(target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = null != arguments[i] ? arguments[i] : {};
          i % 2 ? ownKeys(Object(source), !0).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
        return target;
      }
      function _defineProperty(obj, key, value) {
        key = _toPropertyKey(key);
        if (key in obj) {
          Object.defineProperty(obj, key, {
            value,
            enumerable: true,
            configurable: true,
            writable: true
          });
        } else {
          obj[key] = value;
        }
        return obj;
      }
      function _classCallCheck(instance, Constructor) {
        if (!(instance instanceof Constructor)) {
          throw new TypeError("Cannot call a class as a function");
        }
      }
      function _defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
          var descriptor = props[i];
          descriptor.enumerable = descriptor.enumerable || false;
          descriptor.configurable = true;
          if ("value" in descriptor) descriptor.writable = true;
          Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
        }
      }
      function _createClass(Constructor, protoProps, staticProps) {
        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
        if (staticProps) _defineProperties(Constructor, staticProps);
        Object.defineProperty(Constructor, "prototype", {
          writable: false
        });
        return Constructor;
      }
      function _toPropertyKey(arg) {
        var key = _toPrimitive(arg, "string");
        return typeof key === "symbol" ? key : String(key);
      }
      function _toPrimitive(input, hint) {
        if (typeof input !== "object" || input === null) return input;
        var prim = input[Symbol.toPrimitive];
        if (prim !== undefined) {
          var res = prim.call(input, hint || "default");
          if (typeof res !== "object") return res;
          throw new TypeError("@@toPrimitive must return a primitive value.");
        }
        return (hint === "string" ? String : Number)(input);
      }
      var _require = __webpack_require__(8287), Buffer = _require.Buffer;
      var _require2 = __webpack_require__(5340), inspect = _require2.inspect;
      var custom = inspect && inspect.custom || "inspect";
      function copyBuffer(src, target, offset) {
        Buffer.prototype.copy.call(src, target, offset);
      }
      module.exports = function() {
        function BufferList() {
          _classCallCheck(this, BufferList);
          this.head = null;
          this.tail = null;
          this.length = 0;
        }
        _createClass(BufferList, [ {
          key: "push",
          value: function push(v) {
            var entry = {
              data: v,
              next: null
            };
            if (this.length > 0) this.tail.next = entry; else this.head = entry;
            this.tail = entry;
            ++this.length;
          }
        }, {
          key: "unshift",
          value: function unshift(v) {
            var entry = {
              data: v,
              next: this.head
            };
            if (this.length === 0) this.tail = entry;
            this.head = entry;
            ++this.length;
          }
        }, {
          key: "shift",
          value: function shift() {
            if (this.length === 0) return;
            var ret = this.head.data;
            if (this.length === 1) this.head = this.tail = null; else this.head = this.head.next;
            --this.length;
            return ret;
          }
        }, {
          key: "clear",
          value: function clear() {
            this.head = this.tail = null;
            this.length = 0;
          }
        }, {
          key: "join",
          value: function join(s) {
            if (this.length === 0) return "";
            var p = this.head;
            var ret = "" + p.data;
            while (p = p.next) ret += s + p.data;
            return ret;
          }
        }, {
          key: "concat",
          value: function concat(n) {
            if (this.length === 0) return Buffer.alloc(0);
            var ret = Buffer.allocUnsafe(n >>> 0);
            var p = this.head;
            var i = 0;
            while (p) {
              copyBuffer(p.data, ret, i);
              i += p.data.length;
              p = p.next;
            }
            return ret;
          }
        }, {
          key: "consume",
          value: function consume(n, hasStrings) {
            var ret;
            if (n < this.head.data.length) {
              ret = this.head.data.slice(0, n);
              this.head.data = this.head.data.slice(n);
            } else if (n === this.head.data.length) {
              ret = this.shift();
            } else {
              ret = hasStrings ? this._getString(n) : this._getBuffer(n);
            }
            return ret;
          }
        }, {
          key: "first",
          value: function first() {
            return this.head.data;
          }
        }, {
          key: "_getString",
          value: function _getString(n) {
            var p = this.head;
            var c = 1;
            var ret = p.data;
            n -= ret.length;
            while (p = p.next) {
              var str = p.data;
              var nb = n > str.length ? str.length : n;
              if (nb === str.length) ret += str; else ret += str.slice(0, n);
              n -= nb;
              if (n === 0) {
                if (nb === str.length) {
                  ++c;
                  if (p.next) this.head = p.next; else this.head = this.tail = null;
                } else {
                  this.head = p;
                  p.data = str.slice(nb);
                }
                break;
              }
              ++c;
            }
            this.length -= c;
            return ret;
          }
        }, {
          key: "_getBuffer",
          value: function _getBuffer(n) {
            var ret = Buffer.allocUnsafe(n);
            var p = this.head;
            var c = 1;
            p.data.copy(ret);
            n -= p.data.length;
            while (p = p.next) {
              var buf = p.data;
              var nb = n > buf.length ? buf.length : n;
              buf.copy(ret, ret.length - n, 0, nb);
              n -= nb;
              if (n === 0) {
                if (nb === buf.length) {
                  ++c;
                  if (p.next) this.head = p.next; else this.head = this.tail = null;
                } else {
                  this.head = p;
                  p.data = buf.slice(nb);
                }
                break;
              }
              ++c;
            }
            this.length -= c;
            return ret;
          }
        }, {
          key: custom,
          value: function value(_, options) {
            return inspect(this, _objectSpread(_objectSpread({}, options), {}, {
              depth: 0,
              customInspect: false
            }));
          }
        } ]);
        return BufferList;
      }();
    },
    5896(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      function destroy(err, cb) {
        var _this = this;
        var readableDestroyed = this._readableState && this._readableState.destroyed;
        var writableDestroyed = this._writableState && this._writableState.destroyed;
        if (readableDestroyed || writableDestroyed) {
          if (cb) {
            cb(err);
          } else if (err) {
            if (!this._writableState) {
              process.nextTick(emitErrorNT, this, err);
            } else if (!this._writableState.errorEmitted) {
              this._writableState.errorEmitted = true;
              process.nextTick(emitErrorNT, this, err);
            }
          }
          return this;
        }
        if (this._readableState) {
          this._readableState.destroyed = true;
        }
        if (this._writableState) {
          this._writableState.destroyed = true;
        }
        this._destroy(err || null, (function(err) {
          if (!cb && err) {
            if (!_this._writableState) {
              process.nextTick(emitErrorAndCloseNT, _this, err);
            } else if (!_this._writableState.errorEmitted) {
              _this._writableState.errorEmitted = true;
              process.nextTick(emitErrorAndCloseNT, _this, err);
            } else {
              process.nextTick(emitCloseNT, _this);
            }
          } else if (cb) {
            process.nextTick(emitCloseNT, _this);
            cb(err);
          } else {
            process.nextTick(emitCloseNT, _this);
          }
        }));
        return this;
      }
      function emitErrorAndCloseNT(self, err) {
        emitErrorNT(self, err);
        emitCloseNT(self);
      }
      function emitCloseNT(self) {
        if (self._writableState && !self._writableState.emitClose) return;
        if (self._readableState && !self._readableState.emitClose) return;
        self.emit("close");
      }
      function undestroy() {
        if (this._readableState) {
          this._readableState.destroyed = false;
          this._readableState.reading = false;
          this._readableState.ended = false;
          this._readableState.endEmitted = false;
        }
        if (this._writableState) {
          this._writableState.destroyed = false;
          this._writableState.ended = false;
          this._writableState.ending = false;
          this._writableState.finalCalled = false;
          this._writableState.prefinished = false;
          this._writableState.finished = false;
          this._writableState.errorEmitted = false;
        }
      }
      function emitErrorNT(self, err) {
        self.emit("error", err);
      }
      function errorOrDestroy(stream, err) {
        var rState = stream._readableState;
        var wState = stream._writableState;
        if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err); else stream.emit("error", err);
      }
      module.exports = {
        destroy,
        undestroy,
        errorOrDestroy
      };
    },
    6238(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var ERR_STREAM_PREMATURE_CLOSE = __webpack_require__(6048).F.ERR_STREAM_PREMATURE_CLOSE;
      function once(callback) {
        var called = false;
        return function() {
          if (called) return;
          called = true;
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          callback.apply(this, args);
        };
      }
      function noop() {}
      function isRequest(stream) {
        return stream.setHeader && typeof stream.abort === "function";
      }
      function eos(stream, opts, callback) {
        if (typeof opts === "function") return eos(stream, null, opts);
        if (!opts) opts = {};
        callback = once(callback || noop);
        var readable = opts.readable || opts.readable !== false && stream.readable;
        var writable = opts.writable || opts.writable !== false && stream.writable;
        var onlegacyfinish = function onlegacyfinish() {
          if (!stream.writable) onfinish();
        };
        var writableEnded = stream._writableState && stream._writableState.finished;
        var onfinish = function onfinish() {
          writable = false;
          writableEnded = true;
          if (!readable) callback.call(stream);
        };
        var readableEnded = stream._readableState && stream._readableState.endEmitted;
        var onend = function onend() {
          readable = false;
          readableEnded = true;
          if (!writable) callback.call(stream);
        };
        var onerror = function onerror(err) {
          callback.call(stream, err);
        };
        var onclose = function onclose() {
          var err;
          if (readable && !readableEnded) {
            if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE;
            return callback.call(stream, err);
          }
          if (writable && !writableEnded) {
            if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE;
            return callback.call(stream, err);
          }
        };
        var onrequest = function onrequest() {
          stream.req.on("finish", onfinish);
        };
        if (isRequest(stream)) {
          stream.on("complete", onfinish);
          stream.on("abort", onclose);
          if (stream.req) onrequest(); else stream.on("request", onrequest);
        } else if (writable && !stream._writableState) {
          stream.on("end", onlegacyfinish);
          stream.on("close", onlegacyfinish);
        }
        stream.on("end", onend);
        stream.on("finish", onfinish);
        if (opts.error !== false) stream.on("error", onerror);
        stream.on("close", onclose);
        return function() {
          stream.removeListener("complete", onfinish);
          stream.removeListener("abort", onclose);
          stream.removeListener("request", onrequest);
          if (stream.req) stream.req.removeListener("finish", onfinish);
          stream.removeListener("end", onlegacyfinish);
          stream.removeListener("close", onlegacyfinish);
          stream.removeListener("finish", onfinish);
          stream.removeListener("end", onend);
          stream.removeListener("error", onerror);
          stream.removeListener("close", onclose);
        };
      }
      module.exports = eos;
    },
    5157(module) {
      module.exports = function() {
        throw new Error("Readable.from is not available in the browser");
      };
    },
    7758(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var eos;
      function once(callback) {
        var called = false;
        return function() {
          if (called) return;
          called = true;
          callback.apply(void 0, arguments);
        };
      }
      var _require$codes = __webpack_require__(6048).F, ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
      function noop(err) {
        if (err) throw err;
      }
      function isRequest(stream) {
        return stream.setHeader && typeof stream.abort === "function";
      }
      function destroyer(stream, reading, writing, callback) {
        callback = once(callback);
        var closed = false;
        stream.on("close", (function() {
          closed = true;
        }));
        if (eos === undefined) eos = __webpack_require__(6238);
        eos(stream, {
          readable: reading,
          writable: writing
        }, (function(err) {
          if (err) return callback(err);
          closed = true;
          callback();
        }));
        var destroyed = false;
        return function(err) {
          if (closed) return;
          if (destroyed) return;
          destroyed = true;
          if (isRequest(stream)) return stream.abort();
          if (typeof stream.destroy === "function") return stream.destroy();
          callback(err || new ERR_STREAM_DESTROYED("pipe"));
        };
      }
      function call(fn) {
        fn();
      }
      function pipe(from, to) {
        return from.pipe(to);
      }
      function popCallback(streams) {
        if (!streams.length) return noop;
        if (typeof streams[streams.length - 1] !== "function") return noop;
        return streams.pop();
      }
      function pipeline() {
        for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
          streams[_key] = arguments[_key];
        }
        var callback = popCallback(streams);
        if (Array.isArray(streams[0])) streams = streams[0];
        if (streams.length < 2) {
          throw new ERR_MISSING_ARGS("streams");
        }
        var error;
        var destroys = streams.map((function(stream, i) {
          var reading = i < streams.length - 1;
          var writing = i > 0;
          return destroyer(stream, reading, writing, (function(err) {
            if (!error) error = err;
            if (err) destroys.forEach(call);
            if (reading) return;
            destroys.forEach(call);
            callback(error);
          }));
        }));
        return streams.reduce(pipe);
      }
      module.exports = pipeline;
    },
    5291(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var ERR_INVALID_OPT_VALUE = __webpack_require__(6048).F.ERR_INVALID_OPT_VALUE;
      function highWaterMarkFrom(options, isDuplex, duplexKey) {
        return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
      }
      function getHighWaterMark(state, options, duplexKey, isDuplex) {
        var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
        if (hwm != null) {
          if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
            var name = isDuplex ? duplexKey : "highWaterMark";
            throw new ERR_INVALID_OPT_VALUE(name, hwm);
          }
          return Math.floor(hwm);
        }
        return state.objectMode ? 16 : 16 * 1024;
      }
      module.exports = {
        getHighWaterMark
      };
    },
    345(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = __webpack_require__(7007).EventEmitter;
    },
    6011(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(8287).Buffer;
      var inherits = __webpack_require__(6698);
      var HashBase = __webpack_require__(1147);
      var ARRAY16 = new Array(16);
      var zl = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 ];
      var zr = [ 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 ];
      var sl = [ 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ];
      var sr = [ 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ];
      var hl = [ 0, 1518500249, 1859775393, 2400959708, 2840853838 ];
      var hr = [ 1352829926, 1548603684, 1836072691, 2053994217, 0 ];
      function rotl(x, n) {
        return x << n | x >>> 32 - n;
      }
      function fn1(a, b, c, d, e, m, k, s) {
        return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0;
      }
      function fn2(a, b, c, d, e, m, k, s) {
        return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0;
      }
      function fn3(a, b, c, d, e, m, k, s) {
        return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0;
      }
      function fn4(a, b, c, d, e, m, k, s) {
        return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0;
      }
      function fn5(a, b, c, d, e, m, k, s) {
        return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0;
      }
      function RIPEMD160() {
        HashBase.call(this, 64);
        this._a = 1732584193;
        this._b = 4023233417;
        this._c = 2562383102;
        this._d = 271733878;
        this._e = 3285377520;
      }
      inherits(RIPEMD160, HashBase);
      RIPEMD160.prototype._update = function() {
        var words = ARRAY16;
        for (var j = 0; j < 16; ++j) {
          words[j] = this._block.readInt32LE(j * 4);
        }
        var al = this._a | 0;
        var bl = this._b | 0;
        var cl = this._c | 0;
        var dl = this._d | 0;
        var el = this._e | 0;
        var ar = this._a | 0;
        var br = this._b | 0;
        var cr = this._c | 0;
        var dr = this._d | 0;
        var er = this._e | 0;
        for (var i = 0; i < 80; i += 1) {
          var tl;
          var tr;
          if (i < 16) {
            tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]);
            tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]);
          } else if (i < 32) {
            tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]);
            tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]);
          } else if (i < 48) {
            tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]);
            tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]);
          } else if (i < 64) {
            tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]);
            tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]);
          } else {
            tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]);
            tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]);
          }
          al = el;
          el = dl;
          dl = rotl(cl, 10);
          cl = bl;
          bl = tl;
          ar = er;
          er = dr;
          dr = rotl(cr, 10);
          cr = br;
          br = tr;
        }
        var t = this._b + cl + dr | 0;
        this._b = this._c + dl + er | 0;
        this._c = this._d + el + ar | 0;
        this._d = this._e + al + br | 0;
        this._e = this._a + bl + cr | 0;
        this._a = t;
      };
      RIPEMD160.prototype._digest = function() {
        this._block[this._blockOffset] = 128;
        this._blockOffset += 1;
        if (this._blockOffset > 56) {
          this._block.fill(0, this._blockOffset, 64);
          this._update();
          this._blockOffset = 0;
        }
        this._block.fill(0, this._blockOffset, 56);
        this._block.writeUInt32LE(this._length[0], 56);
        this._block.writeUInt32LE(this._length[1], 60);
        this._update();
        var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);
        buffer.writeInt32LE(this._a, 0);
        buffer.writeInt32LE(this._b, 4);
        buffer.writeInt32LE(this._c, 8);
        buffer.writeInt32LE(this._d, 12);
        buffer.writeInt32LE(this._e, 16);
        return buffer;
      };
      module.exports = RIPEMD160;
    },
    1147(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var toBuffer = __webpack_require__(8537);
      var Transform = __webpack_require__(1077).Transform;
      var inherits = __webpack_require__(6698);
      function HashBase(blockSize) {
        Transform.call(this);
        this._block = Buffer.allocUnsafe(blockSize);
        this._blockSize = blockSize;
        this._blockOffset = 0;
        this._length = [ 0, 0, 0, 0 ];
        this._finalized = false;
      }
      inherits(HashBase, Transform);
      HashBase.prototype._transform = function(chunk, encoding, callback) {
        var error = null;
        try {
          this.update(chunk, encoding);
        } catch (err) {
          error = err;
        }
        callback(error);
      };
      HashBase.prototype._flush = function(callback) {
        var error = null;
        try {
          this.push(this.digest());
        } catch (err) {
          error = err;
        }
        callback(error);
      };
      HashBase.prototype.update = function(data, encoding) {
        if (this._finalized) {
          throw new Error("Digest already called");
        }
        var dataBuffer = toBuffer(data, encoding);
        var block = this._block;
        var offset = 0;
        while (this._blockOffset + dataBuffer.length - offset >= this._blockSize) {
          for (var i = this._blockOffset; i < this._blockSize; ) {
            block[i] = dataBuffer[offset];
            i += 1;
            offset += 1;
          }
          this._update();
          this._blockOffset = 0;
        }
        while (offset < dataBuffer.length) {
          block[this._blockOffset] = dataBuffer[offset];
          this._blockOffset += 1;
          offset += 1;
        }
        for (var j = 0, carry = dataBuffer.length * 8; carry > 0; ++j) {
          this._length[j] += carry;
          carry = this._length[j] / 4294967296 | 0;
          if (carry > 0) {
            this._length[j] -= 4294967296 * carry;
          }
        }
        return this;
      };
      HashBase.prototype._update = function() {
        throw new Error("_update is not implemented");
      };
      HashBase.prototype.digest = function(encoding) {
        if (this._finalized) {
          throw new Error("Digest already called");
        }
        this._finalized = true;
        var digest = this._digest();
        if (encoding !== undefined) {
          digest = digest.toString(encoding);
        }
        this._block.fill(0);
        this._blockOffset = 0;
        for (var i = 0; i < 4; ++i) {
          this._length[i] = 0;
        }
        return digest;
      };
      HashBase.prototype._digest = function() {
        throw new Error("_digest is not implemented");
      };
      module.exports = HashBase;
    },
    8537(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var toBuffer = __webpack_require__(5377);
      var useUint8Array = typeof Uint8Array !== "undefined";
      var useArrayBuffer = useUint8Array && typeof ArrayBuffer !== "undefined";
      var isView = useArrayBuffer && ArrayBuffer.isView;
      module.exports = function(thing, encoding) {
        if (typeof thing === "string" || Buffer.isBuffer(thing) || useUint8Array && thing instanceof Uint8Array || isView && isView(thing)) {
          return toBuffer(thing, encoding);
        }
        throw new TypeError('The "data" argument must be a string, a Buffer, a Uint8Array, or a DataView');
      };
    },
    9860(module) {
      var toString = {}.toString;
      module.exports = Array.isArray || function(arr) {
        return toString.call(arr) == "[object Array]";
      };
    },
    308(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var pna = __webpack_require__(3225);
      var objectKeys = Object.keys || function(obj) {
        var keys = [];
        for (var key in obj) {
          keys.push(key);
        }
        return keys;
      };
      module.exports = Duplex;
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var Readable = __webpack_require__(1706);
      var Writable = __webpack_require__(2398);
      util.inherits(Duplex, Readable);
      {
        var keys = objectKeys(Writable.prototype);
        for (var v = 0; v < keys.length; v++) {
          var method = keys[v];
          if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
        }
      }
      function Duplex(options) {
        if (!(this instanceof Duplex)) return new Duplex(options);
        Readable.call(this, options);
        Writable.call(this, options);
        if (options && options.readable === false) this.readable = false;
        if (options && options.writable === false) this.writable = false;
        this.allowHalfOpen = true;
        if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
        this.once("end", onend);
      }
      Object.defineProperty(Duplex.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._writableState.highWaterMark;
        }
      });
      function onend() {
        if (this.allowHalfOpen || this._writableState.ended) return;
        pna.nextTick(onEndNT, this);
      }
      function onEndNT(self) {
        self.end();
      }
      Object.defineProperty(Duplex.prototype, "destroyed", {
        get: function() {
          if (this._readableState === undefined || this._writableState === undefined) {
            return false;
          }
          return this._readableState.destroyed && this._writableState.destroyed;
        },
        set: function(value) {
          if (this._readableState === undefined || this._writableState === undefined) {
            return;
          }
          this._readableState.destroyed = value;
          this._writableState.destroyed = value;
        }
      });
      Duplex.prototype._destroy = function(err, cb) {
        this.push(null);
        this.end();
        pna.nextTick(cb, err);
      };
    },
    8158(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = PassThrough;
      var Transform = __webpack_require__(5972);
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      util.inherits(PassThrough, Transform);
      function PassThrough(options) {
        if (!(this instanceof PassThrough)) return new PassThrough(options);
        Transform.call(this, options);
      }
      PassThrough.prototype._transform = function(chunk, encoding, cb) {
        cb(null, chunk);
      };
    },
    1706(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var pna = __webpack_require__(3225);
      module.exports = Readable;
      var isArray = __webpack_require__(9860);
      var Duplex;
      Readable.ReadableState = ReadableState;
      var EE = __webpack_require__(7007).EventEmitter;
      var EElistenerCount = function(emitter, type) {
        return emitter.listeners(type).length;
      };
      var Stream = __webpack_require__(1667);
      var Buffer = __webpack_require__(3392).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var debugUtil = __webpack_require__(5248);
      var debug = void 0;
      if (debugUtil && debugUtil.debuglog) {
        debug = debugUtil.debuglog("stream");
      } else {
        debug = function() {};
      }
      var BufferList = __webpack_require__(6972);
      var destroyImpl = __webpack_require__(330);
      var StringDecoder;
      util.inherits(Readable, Stream);
      var kProxyEvents = [ "error", "close", "destroy", "pause", "resume" ];
      function prependListener(emitter, event, fn) {
        if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn);
        if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn); else emitter._events[event] = [ fn, emitter._events[event] ];
      }
      function ReadableState(options, stream) {
        Duplex = Duplex || __webpack_require__(308);
        options = options || {};
        var isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
        var hwm = options.highWaterMark;
        var readableHwm = options.readableHighWaterMark;
        var defaultHwm = this.objectMode ? 16 : 16 * 1024;
        if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm; else this.highWaterMark = defaultHwm;
        this.highWaterMark = Math.floor(this.highWaterMark);
        this.buffer = new BufferList;
        this.length = 0;
        this.pipes = null;
        this.pipesCount = 0;
        this.flowing = null;
        this.ended = false;
        this.endEmitted = false;
        this.reading = false;
        this.sync = true;
        this.needReadable = false;
        this.emittedReadable = false;
        this.readableListening = false;
        this.resumeScheduled = false;
        this.destroyed = false;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.awaitDrain = 0;
        this.readingMore = false;
        this.decoder = null;
        this.encoding = null;
        if (options.encoding) {
          if (!StringDecoder) StringDecoder = __webpack_require__(7479).I;
          this.decoder = new StringDecoder(options.encoding);
          this.encoding = options.encoding;
        }
      }
      function Readable(options) {
        Duplex = Duplex || __webpack_require__(308);
        if (!(this instanceof Readable)) return new Readable(options);
        this._readableState = new ReadableState(options, this);
        this.readable = true;
        if (options) {
          if (typeof options.read === "function") this._read = options.read;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
        }
        Stream.call(this);
      }
      Object.defineProperty(Readable.prototype, "destroyed", {
        get: function() {
          if (this._readableState === undefined) {
            return false;
          }
          return this._readableState.destroyed;
        },
        set: function(value) {
          if (!this._readableState) {
            return;
          }
          this._readableState.destroyed = value;
        }
      });
      Readable.prototype.destroy = destroyImpl.destroy;
      Readable.prototype._undestroy = destroyImpl.undestroy;
      Readable.prototype._destroy = function(err, cb) {
        this.push(null);
        cb(err);
      };
      Readable.prototype.push = function(chunk, encoding) {
        var state = this._readableState;
        var skipChunkCheck;
        if (!state.objectMode) {
          if (typeof chunk === "string") {
            encoding = encoding || state.defaultEncoding;
            if (encoding !== state.encoding) {
              chunk = Buffer.from(chunk, encoding);
              encoding = "";
            }
            skipChunkCheck = true;
          }
        } else {
          skipChunkCheck = true;
        }
        return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
      };
      Readable.prototype.unshift = function(chunk) {
        return readableAddChunk(this, chunk, null, true, false);
      };
      function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
        var state = stream._readableState;
        if (chunk === null) {
          state.reading = false;
          onEofChunk(stream, state);
        } else {
          var er;
          if (!skipChunkCheck) er = chunkInvalid(state, chunk);
          if (er) {
            stream.emit("error", er);
          } else if (state.objectMode || chunk && chunk.length > 0) {
            if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
              chunk = _uint8ArrayToBuffer(chunk);
            }
            if (addToFront) {
              if (state.endEmitted) stream.emit("error", new Error("stream.unshift() after end event")); else addChunk(stream, state, chunk, true);
            } else if (state.ended) {
              stream.emit("error", new Error("stream.push() after EOF"));
            } else {
              state.reading = false;
              if (state.decoder && !encoding) {
                chunk = state.decoder.write(chunk);
                if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); else maybeReadMore(stream, state);
              } else {
                addChunk(stream, state, chunk, false);
              }
            }
          } else if (!addToFront) {
            state.reading = false;
          }
        }
        return needMoreData(state);
      }
      function addChunk(stream, state, chunk, addToFront) {
        if (state.flowing && state.length === 0 && !state.sync) {
          stream.emit("data", chunk);
          stream.read(0);
        } else {
          state.length += state.objectMode ? 1 : chunk.length;
          if (addToFront) state.buffer.unshift(chunk); else state.buffer.push(chunk);
          if (state.needReadable) emitReadable(stream);
        }
        maybeReadMore(stream, state);
      }
      function chunkInvalid(state, chunk) {
        var er;
        if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
          er = new TypeError("Invalid non-string/buffer chunk");
        }
        return er;
      }
      function needMoreData(state) {
        return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
      }
      Readable.prototype.isPaused = function() {
        return this._readableState.flowing === false;
      };
      Readable.prototype.setEncoding = function(enc) {
        if (!StringDecoder) StringDecoder = __webpack_require__(7479).I;
        this._readableState.decoder = new StringDecoder(enc);
        this._readableState.encoding = enc;
        return this;
      };
      var MAX_HWM = 8388608;
      function computeNewHighWaterMark(n) {
        if (n >= MAX_HWM) {
          n = MAX_HWM;
        } else {
          n--;
          n |= n >>> 1;
          n |= n >>> 2;
          n |= n >>> 4;
          n |= n >>> 8;
          n |= n >>> 16;
          n++;
        }
        return n;
      }
      function howMuchToRead(n, state) {
        if (n <= 0 || state.length === 0 && state.ended) return 0;
        if (state.objectMode) return 1;
        if (n !== n) {
          if (state.flowing && state.length) return state.buffer.head.data.length; else return state.length;
        }
        if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
        if (n <= state.length) return n;
        if (!state.ended) {
          state.needReadable = true;
          return 0;
        }
        return state.length;
      }
      Readable.prototype.read = function(n) {
        debug("read", n);
        n = parseInt(n, 10);
        var state = this._readableState;
        var nOrig = n;
        if (n !== 0) state.emittedReadable = false;
        if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
          debug("read: emitReadable", state.length, state.ended);
          if (state.length === 0 && state.ended) endReadable(this); else emitReadable(this);
          return null;
        }
        n = howMuchToRead(n, state);
        if (n === 0 && state.ended) {
          if (state.length === 0) endReadable(this);
          return null;
        }
        var doRead = state.needReadable;
        debug("need readable", doRead);
        if (state.length === 0 || state.length - n < state.highWaterMark) {
          doRead = true;
          debug("length less than watermark", doRead);
        }
        if (state.ended || state.reading) {
          doRead = false;
          debug("reading or ended", doRead);
        } else if (doRead) {
          debug("do read");
          state.reading = true;
          state.sync = true;
          if (state.length === 0) state.needReadable = true;
          this._read(state.highWaterMark);
          state.sync = false;
          if (!state.reading) n = howMuchToRead(nOrig, state);
        }
        var ret;
        if (n > 0) ret = fromList(n, state); else ret = null;
        if (ret === null) {
          state.needReadable = true;
          n = 0;
        } else {
          state.length -= n;
        }
        if (state.length === 0) {
          if (!state.ended) state.needReadable = true;
          if (nOrig !== n && state.ended) endReadable(this);
        }
        if (ret !== null) this.emit("data", ret);
        return ret;
      };
      function onEofChunk(stream, state) {
        if (state.ended) return;
        if (state.decoder) {
          var chunk = state.decoder.end();
          if (chunk && chunk.length) {
            state.buffer.push(chunk);
            state.length += state.objectMode ? 1 : chunk.length;
          }
        }
        state.ended = true;
        emitReadable(stream);
      }
      function emitReadable(stream) {
        var state = stream._readableState;
        state.needReadable = false;
        if (!state.emittedReadable) {
          debug("emitReadable", state.flowing);
          state.emittedReadable = true;
          if (state.sync) pna.nextTick(emitReadable_, stream); else emitReadable_(stream);
        }
      }
      function emitReadable_(stream) {
        debug("emit readable");
        stream.emit("readable");
        flow(stream);
      }
      function maybeReadMore(stream, state) {
        if (!state.readingMore) {
          state.readingMore = true;
          pna.nextTick(maybeReadMore_, stream, state);
        }
      }
      function maybeReadMore_(stream, state) {
        var len = state.length;
        while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
          debug("maybeReadMore read 0");
          stream.read(0);
          if (len === state.length) break; else len = state.length;
        }
        state.readingMore = false;
      }
      Readable.prototype._read = function(n) {
        this.emit("error", new Error("_read() is not implemented"));
      };
      Readable.prototype.pipe = function(dest, pipeOpts) {
        var src = this;
        var state = this._readableState;
        switch (state.pipesCount) {
         case 0:
          state.pipes = dest;
          break;

         case 1:
          state.pipes = [ state.pipes, dest ];
          break;

         default:
          state.pipes.push(dest);
          break;
        }
        state.pipesCount += 1;
        debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
        var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
        var endFn = doEnd ? onend : unpipe;
        if (state.endEmitted) pna.nextTick(endFn); else src.once("end", endFn);
        dest.on("unpipe", onunpipe);
        function onunpipe(readable, unpipeInfo) {
          debug("onunpipe");
          if (readable === src) {
            if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
              unpipeInfo.hasUnpiped = true;
              cleanup();
            }
          }
        }
        function onend() {
          debug("onend");
          dest.end();
        }
        var ondrain = pipeOnDrain(src);
        dest.on("drain", ondrain);
        var cleanedUp = false;
        function cleanup() {
          debug("cleanup");
          dest.removeListener("close", onclose);
          dest.removeListener("finish", onfinish);
          dest.removeListener("drain", ondrain);
          dest.removeListener("error", onerror);
          dest.removeListener("unpipe", onunpipe);
          src.removeListener("end", onend);
          src.removeListener("end", unpipe);
          src.removeListener("data", ondata);
          cleanedUp = true;
          if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
        }
        var increasedAwaitDrain = false;
        src.on("data", ondata);
        function ondata(chunk) {
          debug("ondata");
          increasedAwaitDrain = false;
          var ret = dest.write(chunk);
          if (false === ret && !increasedAwaitDrain) {
            if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
              debug("false write response, pause", state.awaitDrain);
              state.awaitDrain++;
              increasedAwaitDrain = true;
            }
            src.pause();
          }
        }
        function onerror(er) {
          debug("onerror", er);
          unpipe();
          dest.removeListener("error", onerror);
          if (EElistenerCount(dest, "error") === 0) dest.emit("error", er);
        }
        prependListener(dest, "error", onerror);
        function onclose() {
          dest.removeListener("finish", onfinish);
          unpipe();
        }
        dest.once("close", onclose);
        function onfinish() {
          debug("onfinish");
          dest.removeListener("close", onclose);
          unpipe();
        }
        dest.once("finish", onfinish);
        function unpipe() {
          debug("unpipe");
          src.unpipe(dest);
        }
        dest.emit("pipe", src);
        if (!state.flowing) {
          debug("pipe resume");
          src.resume();
        }
        return dest;
      };
      function pipeOnDrain(src) {
        return function() {
          var state = src._readableState;
          debug("pipeOnDrain", state.awaitDrain);
          if (state.awaitDrain) state.awaitDrain--;
          if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
            state.flowing = true;
            flow(src);
          }
        };
      }
      Readable.prototype.unpipe = function(dest) {
        var state = this._readableState;
        var unpipeInfo = {
          hasUnpiped: false
        };
        if (state.pipesCount === 0) return this;
        if (state.pipesCount === 1) {
          if (dest && dest !== state.pipes) return this;
          if (!dest) dest = state.pipes;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          if (dest) dest.emit("unpipe", this, unpipeInfo);
          return this;
        }
        if (!dest) {
          var dests = state.pipes;
          var len = state.pipesCount;
          state.pipes = null;
          state.pipesCount = 0;
          state.flowing = false;
          for (var i = 0; i < len; i++) {
            dests[i].emit("unpipe", this, {
              hasUnpiped: false
            });
          }
          return this;
        }
        var index = indexOf(state.pipes, dest);
        if (index === -1) return this;
        state.pipes.splice(index, 1);
        state.pipesCount -= 1;
        if (state.pipesCount === 1) state.pipes = state.pipes[0];
        dest.emit("unpipe", this, unpipeInfo);
        return this;
      };
      Readable.prototype.on = function(ev, fn) {
        var res = Stream.prototype.on.call(this, ev, fn);
        if (ev === "data") {
          if (this._readableState.flowing !== false) this.resume();
        } else if (ev === "readable") {
          var state = this._readableState;
          if (!state.endEmitted && !state.readableListening) {
            state.readableListening = state.needReadable = true;
            state.emittedReadable = false;
            if (!state.reading) {
              pna.nextTick(nReadingNextTick, this);
            } else if (state.length) {
              emitReadable(this);
            }
          }
        }
        return res;
      };
      Readable.prototype.addListener = Readable.prototype.on;
      function nReadingNextTick(self) {
        debug("readable nexttick read 0");
        self.read(0);
      }
      Readable.prototype.resume = function() {
        var state = this._readableState;
        if (!state.flowing) {
          debug("resume");
          state.flowing = true;
          resume(this, state);
        }
        return this;
      };
      function resume(stream, state) {
        if (!state.resumeScheduled) {
          state.resumeScheduled = true;
          pna.nextTick(resume_, stream, state);
        }
      }
      function resume_(stream, state) {
        if (!state.reading) {
          debug("resume read 0");
          stream.read(0);
        }
        state.resumeScheduled = false;
        state.awaitDrain = 0;
        stream.emit("resume");
        flow(stream);
        if (state.flowing && !state.reading) stream.read(0);
      }
      Readable.prototype.pause = function() {
        debug("call pause flowing=%j", this._readableState.flowing);
        if (false !== this._readableState.flowing) {
          debug("pause");
          this._readableState.flowing = false;
          this.emit("pause");
        }
        return this;
      };
      function flow(stream) {
        var state = stream._readableState;
        debug("flow", state.flowing);
        while (state.flowing && stream.read() !== null) {}
      }
      Readable.prototype.wrap = function(stream) {
        var _this = this;
        var state = this._readableState;
        var paused = false;
        stream.on("end", (function() {
          debug("wrapped end");
          if (state.decoder && !state.ended) {
            var chunk = state.decoder.end();
            if (chunk && chunk.length) _this.push(chunk);
          }
          _this.push(null);
        }));
        stream.on("data", (function(chunk) {
          debug("wrapped data");
          if (state.decoder) chunk = state.decoder.write(chunk);
          if (state.objectMode && (chunk === null || chunk === undefined)) return; else if (!state.objectMode && (!chunk || !chunk.length)) return;
          var ret = _this.push(chunk);
          if (!ret) {
            paused = true;
            stream.pause();
          }
        }));
        for (var i in stream) {
          if (this[i] === undefined && typeof stream[i] === "function") {
            this[i] = function(method) {
              return function() {
                return stream[method].apply(stream, arguments);
              };
            }(i);
          }
        }
        for (var n = 0; n < kProxyEvents.length; n++) {
          stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
        }
        this._read = function(n) {
          debug("wrapped _read", n);
          if (paused) {
            paused = false;
            stream.resume();
          }
        };
        return this;
      };
      Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._readableState.highWaterMark;
        }
      });
      Readable._fromList = fromList;
      function fromList(n, state) {
        if (state.length === 0) return null;
        var ret;
        if (state.objectMode) ret = state.buffer.shift(); else if (!n || n >= state.length) {
          if (state.decoder) ret = state.buffer.join(""); else if (state.buffer.length === 1) ret = state.buffer.head.data; else ret = state.buffer.concat(state.length);
          state.buffer.clear();
        } else {
          ret = fromListPartial(n, state.buffer, state.decoder);
        }
        return ret;
      }
      function fromListPartial(n, list, hasStrings) {
        var ret;
        if (n < list.head.data.length) {
          ret = list.head.data.slice(0, n);
          list.head.data = list.head.data.slice(n);
        } else if (n === list.head.data.length) {
          ret = list.shift();
        } else {
          ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
        }
        return ret;
      }
      function copyFromBufferString(n, list) {
        var p = list.head;
        var c = 1;
        var ret = p.data;
        n -= ret.length;
        while (p = p.next) {
          var str = p.data;
          var nb = n > str.length ? str.length : n;
          if (nb === str.length) ret += str; else ret += str.slice(0, n);
          n -= nb;
          if (n === 0) {
            if (nb === str.length) {
              ++c;
              if (p.next) list.head = p.next; else list.head = list.tail = null;
            } else {
              list.head = p;
              p.data = str.slice(nb);
            }
            break;
          }
          ++c;
        }
        list.length -= c;
        return ret;
      }
      function copyFromBuffer(n, list) {
        var ret = Buffer.allocUnsafe(n);
        var p = list.head;
        var c = 1;
        p.data.copy(ret);
        n -= p.data.length;
        while (p = p.next) {
          var buf = p.data;
          var nb = n > buf.length ? buf.length : n;
          buf.copy(ret, ret.length - n, 0, nb);
          n -= nb;
          if (n === 0) {
            if (nb === buf.length) {
              ++c;
              if (p.next) list.head = p.next; else list.head = list.tail = null;
            } else {
              list.head = p;
              p.data = buf.slice(nb);
            }
            break;
          }
          ++c;
        }
        list.length -= c;
        return ret;
      }
      function endReadable(stream) {
        var state = stream._readableState;
        if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
        if (!state.endEmitted) {
          state.ended = true;
          pna.nextTick(endReadableNT, state, stream);
        }
      }
      function endReadableNT(state, stream) {
        if (!state.endEmitted && state.length === 0) {
          state.endEmitted = true;
          stream.readable = false;
          stream.emit("end");
        }
      }
      function indexOf(xs, x) {
        for (var i = 0, l = xs.length; i < l; i++) {
          if (xs[i] === x) return i;
        }
        return -1;
      }
    },
    5972(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = Transform;
      var Duplex = __webpack_require__(308);
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      util.inherits(Transform, Duplex);
      function afterTransform(er, data) {
        var ts = this._transformState;
        ts.transforming = false;
        var cb = ts.writecb;
        if (!cb) {
          return this.emit("error", new Error("write callback called multiple times"));
        }
        ts.writechunk = null;
        ts.writecb = null;
        if (data != null) this.push(data);
        cb(er);
        var rs = this._readableState;
        rs.reading = false;
        if (rs.needReadable || rs.length < rs.highWaterMark) {
          this._read(rs.highWaterMark);
        }
      }
      function Transform(options) {
        if (!(this instanceof Transform)) return new Transform(options);
        Duplex.call(this, options);
        this._transformState = {
          afterTransform: afterTransform.bind(this),
          needTransform: false,
          transforming: false,
          writecb: null,
          writechunk: null,
          writeencoding: null
        };
        this._readableState.needReadable = true;
        this._readableState.sync = false;
        if (options) {
          if (typeof options.transform === "function") this._transform = options.transform;
          if (typeof options.flush === "function") this._flush = options.flush;
        }
        this.on("prefinish", prefinish);
      }
      function prefinish() {
        var _this = this;
        if (typeof this._flush === "function") {
          this._flush((function(er, data) {
            done(_this, er, data);
          }));
        } else {
          done(this, null, null);
        }
      }
      Transform.prototype.push = function(chunk, encoding) {
        this._transformState.needTransform = false;
        return Duplex.prototype.push.call(this, chunk, encoding);
      };
      Transform.prototype._transform = function(chunk, encoding, cb) {
        throw new Error("_transform() is not implemented");
      };
      Transform.prototype._write = function(chunk, encoding, cb) {
        var ts = this._transformState;
        ts.writecb = cb;
        ts.writechunk = chunk;
        ts.writeencoding = encoding;
        if (!ts.transforming) {
          var rs = this._readableState;
          if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
        }
      };
      Transform.prototype._read = function(n) {
        var ts = this._transformState;
        if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
          ts.transforming = true;
          this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
        } else {
          ts.needTransform = true;
        }
      };
      Transform.prototype._destroy = function(err, cb) {
        var _this2 = this;
        Duplex.prototype._destroy.call(this, err, (function(err2) {
          cb(err2);
          _this2.emit("close");
        }));
      };
      function done(stream, er, data) {
        if (er) return stream.emit("error", er);
        if (data != null) stream.push(data);
        if (stream._writableState.length) throw new Error("Calling transform done when ws.length != 0");
        if (stream._transformState.transforming) throw new Error("Calling transform done when still transforming");
        return stream.push(null);
      }
    },
    2398(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var process = __webpack_require__(5606);
      var pna = __webpack_require__(3225);
      module.exports = Writable;
      function WriteReq(chunk, encoding, cb) {
        this.chunk = chunk;
        this.encoding = encoding;
        this.callback = cb;
        this.next = null;
      }
      function CorkedRequest(state) {
        var _this = this;
        this.next = null;
        this.entry = null;
        this.finish = function() {
          onCorkedFinish(_this, state);
        };
      }
      var asyncWrite = !process.browser && [ "v0.10", "v0.9." ].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
      var Duplex;
      Writable.WritableState = WritableState;
      var util = Object.create(__webpack_require__(5622));
      util.inherits = __webpack_require__(6698);
      var internalUtil = {
        deprecate: __webpack_require__(4643)
      };
      var Stream = __webpack_require__(1667);
      var Buffer = __webpack_require__(3392).Buffer;
      var OurUint8Array = (typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {};
      function _uint8ArrayToBuffer(chunk) {
        return Buffer.from(chunk);
      }
      function _isUint8Array(obj) {
        return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
      }
      var destroyImpl = __webpack_require__(330);
      util.inherits(Writable, Stream);
      function nop() {}
      function WritableState(options, stream) {
        Duplex = Duplex || __webpack_require__(308);
        options = options || {};
        var isDuplex = stream instanceof Duplex;
        this.objectMode = !!options.objectMode;
        if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
        var hwm = options.highWaterMark;
        var writableHwm = options.writableHighWaterMark;
        var defaultHwm = this.objectMode ? 16 : 16 * 1024;
        if (hwm || hwm === 0) this.highWaterMark = hwm; else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm; else this.highWaterMark = defaultHwm;
        this.highWaterMark = Math.floor(this.highWaterMark);
        this.finalCalled = false;
        this.needDrain = false;
        this.ending = false;
        this.ended = false;
        this.finished = false;
        this.destroyed = false;
        var noDecode = options.decodeStrings === false;
        this.decodeStrings = !noDecode;
        this.defaultEncoding = options.defaultEncoding || "utf8";
        this.length = 0;
        this.writing = false;
        this.corked = 0;
        this.sync = true;
        this.bufferProcessing = false;
        this.onwrite = function(er) {
          onwrite(stream, er);
        };
        this.writecb = null;
        this.writelen = 0;
        this.bufferedRequest = null;
        this.lastBufferedRequest = null;
        this.pendingcb = 0;
        this.prefinished = false;
        this.errorEmitted = false;
        this.bufferedRequestCount = 0;
        this.corkedRequestsFree = new CorkedRequest(this);
      }
      WritableState.prototype.getBuffer = function getBuffer() {
        var current = this.bufferedRequest;
        var out = [];
        while (current) {
          out.push(current);
          current = current.next;
        }
        return out;
      };
      (function() {
        try {
          Object.defineProperty(WritableState.prototype, "buffer", {
            get: internalUtil.deprecate((function() {
              return this.getBuffer();
            }), "_writableState.buffer is deprecated. Use _writableState.getBuffer " + "instead.", "DEP0003")
          });
        } catch (_) {}
      })();
      var realHasInstance;
      if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
        realHasInstance = Function.prototype[Symbol.hasInstance];
        Object.defineProperty(Writable, Symbol.hasInstance, {
          value: function(object) {
            if (realHasInstance.call(this, object)) return true;
            if (this !== Writable) return false;
            return object && object._writableState instanceof WritableState;
          }
        });
      } else {
        realHasInstance = function(object) {
          return object instanceof this;
        };
      }
      function Writable(options) {
        Duplex = Duplex || __webpack_require__(308);
        if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
          return new Writable(options);
        }
        this._writableState = new WritableState(options, this);
        this.writable = true;
        if (options) {
          if (typeof options.write === "function") this._write = options.write;
          if (typeof options.writev === "function") this._writev = options.writev;
          if (typeof options.destroy === "function") this._destroy = options.destroy;
          if (typeof options.final === "function") this._final = options.final;
        }
        Stream.call(this);
      }
      Writable.prototype.pipe = function() {
        this.emit("error", new Error("Cannot pipe, not readable"));
      };
      function writeAfterEnd(stream, cb) {
        var er = new Error("write after end");
        stream.emit("error", er);
        pna.nextTick(cb, er);
      }
      function validChunk(stream, state, chunk, cb) {
        var valid = true;
        var er = false;
        if (chunk === null) {
          er = new TypeError("May not write null values to stream");
        } else if (typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
          er = new TypeError("Invalid non-string/buffer chunk");
        }
        if (er) {
          stream.emit("error", er);
          pna.nextTick(cb, er);
          valid = false;
        }
        return valid;
      }
      Writable.prototype.write = function(chunk, encoding, cb) {
        var state = this._writableState;
        var ret = false;
        var isBuf = !state.objectMode && _isUint8Array(chunk);
        if (isBuf && !Buffer.isBuffer(chunk)) {
          chunk = _uint8ArrayToBuffer(chunk);
        }
        if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (isBuf) encoding = "buffer"; else if (!encoding) encoding = state.defaultEncoding;
        if (typeof cb !== "function") cb = nop;
        if (state.ended) writeAfterEnd(this, cb); else if (isBuf || validChunk(this, state, chunk, cb)) {
          state.pendingcb++;
          ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
        }
        return ret;
      };
      Writable.prototype.cork = function() {
        var state = this._writableState;
        state.corked++;
      };
      Writable.prototype.uncork = function() {
        var state = this._writableState;
        if (state.corked) {
          state.corked--;
          if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
        }
      };
      Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
        if (typeof encoding === "string") encoding = encoding.toLowerCase();
        if (!([ "hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw" ].indexOf((encoding + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + encoding);
        this._writableState.defaultEncoding = encoding;
        return this;
      };
      function decodeChunk(state, chunk, encoding) {
        if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
          chunk = Buffer.from(chunk, encoding);
        }
        return chunk;
      }
      Object.defineProperty(Writable.prototype, "writableHighWaterMark", {
        enumerable: false,
        get: function() {
          return this._writableState.highWaterMark;
        }
      });
      function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
        if (!isBuf) {
          var newChunk = decodeChunk(state, chunk, encoding);
          if (chunk !== newChunk) {
            isBuf = true;
            encoding = "buffer";
            chunk = newChunk;
          }
        }
        var len = state.objectMode ? 1 : chunk.length;
        state.length += len;
        var ret = state.length < state.highWaterMark;
        if (!ret) state.needDrain = true;
        if (state.writing || state.corked) {
          var last = state.lastBufferedRequest;
          state.lastBufferedRequest = {
            chunk,
            encoding,
            isBuf,
            callback: cb,
            next: null
          };
          if (last) {
            last.next = state.lastBufferedRequest;
          } else {
            state.bufferedRequest = state.lastBufferedRequest;
          }
          state.bufferedRequestCount += 1;
        } else {
          doWrite(stream, state, false, len, chunk, encoding, cb);
        }
        return ret;
      }
      function doWrite(stream, state, writev, len, chunk, encoding, cb) {
        state.writelen = len;
        state.writecb = cb;
        state.writing = true;
        state.sync = true;
        if (writev) stream._writev(chunk, state.onwrite); else stream._write(chunk, encoding, state.onwrite);
        state.sync = false;
      }
      function onwriteError(stream, state, sync, er, cb) {
        --state.pendingcb;
        if (sync) {
          pna.nextTick(cb, er);
          pna.nextTick(finishMaybe, stream, state);
          stream._writableState.errorEmitted = true;
          stream.emit("error", er);
        } else {
          cb(er);
          stream._writableState.errorEmitted = true;
          stream.emit("error", er);
          finishMaybe(stream, state);
        }
      }
      function onwriteStateUpdate(state) {
        state.writing = false;
        state.writecb = null;
        state.length -= state.writelen;
        state.writelen = 0;
      }
      function onwrite(stream, er) {
        var state = stream._writableState;
        var sync = state.sync;
        var cb = state.writecb;
        onwriteStateUpdate(state);
        if (er) onwriteError(stream, state, sync, er, cb); else {
          var finished = needFinish(state);
          if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
            clearBuffer(stream, state);
          }
          if (sync) {
            asyncWrite(afterWrite, stream, state, finished, cb);
          } else {
            afterWrite(stream, state, finished, cb);
          }
        }
      }
      function afterWrite(stream, state, finished, cb) {
        if (!finished) onwriteDrain(stream, state);
        state.pendingcb--;
        cb();
        finishMaybe(stream, state);
      }
      function onwriteDrain(stream, state) {
        if (state.length === 0 && state.needDrain) {
          state.needDrain = false;
          stream.emit("drain");
        }
      }
      function clearBuffer(stream, state) {
        state.bufferProcessing = true;
        var entry = state.bufferedRequest;
        if (stream._writev && entry && entry.next) {
          var l = state.bufferedRequestCount;
          var buffer = new Array(l);
          var holder = state.corkedRequestsFree;
          holder.entry = entry;
          var count = 0;
          var allBuffers = true;
          while (entry) {
            buffer[count] = entry;
            if (!entry.isBuf) allBuffers = false;
            entry = entry.next;
            count += 1;
          }
          buffer.allBuffers = allBuffers;
          doWrite(stream, state, true, state.length, buffer, "", holder.finish);
          state.pendingcb++;
          state.lastBufferedRequest = null;
          if (holder.next) {
            state.corkedRequestsFree = holder.next;
            holder.next = null;
          } else {
            state.corkedRequestsFree = new CorkedRequest(state);
          }
          state.bufferedRequestCount = 0;
        } else {
          while (entry) {
            var chunk = entry.chunk;
            var encoding = entry.encoding;
            var cb = entry.callback;
            var len = state.objectMode ? 1 : chunk.length;
            doWrite(stream, state, false, len, chunk, encoding, cb);
            entry = entry.next;
            state.bufferedRequestCount--;
            if (state.writing) {
              break;
            }
          }
          if (entry === null) state.lastBufferedRequest = null;
        }
        state.bufferedRequest = entry;
        state.bufferProcessing = false;
      }
      Writable.prototype._write = function(chunk, encoding, cb) {
        cb(new Error("_write() is not implemented"));
      };
      Writable.prototype._writev = null;
      Writable.prototype.end = function(chunk, encoding, cb) {
        var state = this._writableState;
        if (typeof chunk === "function") {
          cb = chunk;
          chunk = null;
          encoding = null;
        } else if (typeof encoding === "function") {
          cb = encoding;
          encoding = null;
        }
        if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
        if (state.corked) {
          state.corked = 1;
          this.uncork();
        }
        if (!state.ending) endWritable(this, state, cb);
      };
      function needFinish(state) {
        return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
      }
      function callFinal(stream, state) {
        stream._final((function(err) {
          state.pendingcb--;
          if (err) {
            stream.emit("error", err);
          }
          state.prefinished = true;
          stream.emit("prefinish");
          finishMaybe(stream, state);
        }));
      }
      function prefinish(stream, state) {
        if (!state.prefinished && !state.finalCalled) {
          if (typeof stream._final === "function") {
            state.pendingcb++;
            state.finalCalled = true;
            pna.nextTick(callFinal, stream, state);
          } else {
            state.prefinished = true;
            stream.emit("prefinish");
          }
        }
      }
      function finishMaybe(stream, state) {
        var need = needFinish(state);
        if (need) {
          prefinish(stream, state);
          if (state.pendingcb === 0) {
            state.finished = true;
            stream.emit("finish");
          }
        }
        return need;
      }
      function endWritable(stream, state, cb) {
        state.ending = true;
        finishMaybe(stream, state);
        if (cb) {
          if (state.finished) pna.nextTick(cb); else stream.once("finish", cb);
        }
        state.ended = true;
        stream.writable = false;
      }
      function onCorkedFinish(corkReq, state, err) {
        var entry = corkReq.entry;
        corkReq.entry = null;
        while (entry) {
          var cb = entry.callback;
          state.pendingcb--;
          cb(err);
          entry = entry.next;
        }
        state.corkedRequestsFree.next = corkReq;
      }
      Object.defineProperty(Writable.prototype, "destroyed", {
        get: function() {
          if (this._writableState === undefined) {
            return false;
          }
          return this._writableState.destroyed;
        },
        set: function(value) {
          if (!this._writableState) {
            return;
          }
          this._writableState.destroyed = value;
        }
      });
      Writable.prototype.destroy = destroyImpl.destroy;
      Writable.prototype._undestroy = destroyImpl.undestroy;
      Writable.prototype._destroy = function(err, cb) {
        this.end();
        cb(err);
      };
    },
    6972(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      function _classCallCheck(instance, Constructor) {
        if (!(instance instanceof Constructor)) {
          throw new TypeError("Cannot call a class as a function");
        }
      }
      var Buffer = __webpack_require__(3392).Buffer;
      var util = __webpack_require__(5394);
      function copyBuffer(src, target, offset) {
        src.copy(target, offset);
      }
      module.exports = function() {
        function BufferList() {
          _classCallCheck(this, BufferList);
          this.head = null;
          this.tail = null;
          this.length = 0;
        }
        BufferList.prototype.push = function push(v) {
          var entry = {
            data: v,
            next: null
          };
          if (this.length > 0) this.tail.next = entry; else this.head = entry;
          this.tail = entry;
          ++this.length;
        };
        BufferList.prototype.unshift = function unshift(v) {
          var entry = {
            data: v,
            next: this.head
          };
          if (this.length === 0) this.tail = entry;
          this.head = entry;
          ++this.length;
        };
        BufferList.prototype.shift = function shift() {
          if (this.length === 0) return;
          var ret = this.head.data;
          if (this.length === 1) this.head = this.tail = null; else this.head = this.head.next;
          --this.length;
          return ret;
        };
        BufferList.prototype.clear = function clear() {
          this.head = this.tail = null;
          this.length = 0;
        };
        BufferList.prototype.join = function join(s) {
          if (this.length === 0) return "";
          var p = this.head;
          var ret = "" + p.data;
          while (p = p.next) {
            ret += s + p.data;
          }
          return ret;
        };
        BufferList.prototype.concat = function concat(n) {
          if (this.length === 0) return Buffer.alloc(0);
          var ret = Buffer.allocUnsafe(n >>> 0);
          var p = this.head;
          var i = 0;
          while (p) {
            copyBuffer(p.data, ret, i);
            i += p.data.length;
            p = p.next;
          }
          return ret;
        };
        return BufferList;
      }();
      if (util && util.inspect && util.inspect.custom) {
        module.exports.prototype[util.inspect.custom] = function() {
          var obj = util.inspect({
            length: this.length
          });
          return this.constructor.name + " " + obj;
        };
      }
    },
    330(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var pna = __webpack_require__(3225);
      function destroy(err, cb) {
        var _this = this;
        var readableDestroyed = this._readableState && this._readableState.destroyed;
        var writableDestroyed = this._writableState && this._writableState.destroyed;
        if (readableDestroyed || writableDestroyed) {
          if (cb) {
            cb(err);
          } else if (err) {
            if (!this._writableState) {
              pna.nextTick(emitErrorNT, this, err);
            } else if (!this._writableState.errorEmitted) {
              this._writableState.errorEmitted = true;
              pna.nextTick(emitErrorNT, this, err);
            }
          }
          return this;
        }
        if (this._readableState) {
          this._readableState.destroyed = true;
        }
        if (this._writableState) {
          this._writableState.destroyed = true;
        }
        this._destroy(err || null, (function(err) {
          if (!cb && err) {
            if (!_this._writableState) {
              pna.nextTick(emitErrorNT, _this, err);
            } else if (!_this._writableState.errorEmitted) {
              _this._writableState.errorEmitted = true;
              pna.nextTick(emitErrorNT, _this, err);
            }
          } else if (cb) {
            cb(err);
          }
        }));
        return this;
      }
      function undestroy() {
        if (this._readableState) {
          this._readableState.destroyed = false;
          this._readableState.reading = false;
          this._readableState.ended = false;
          this._readableState.endEmitted = false;
        }
        if (this._writableState) {
          this._writableState.destroyed = false;
          this._writableState.ended = false;
          this._writableState.ending = false;
          this._writableState.finalCalled = false;
          this._writableState.prefinished = false;
          this._writableState.finished = false;
          this._writableState.errorEmitted = false;
        }
      }
      function emitErrorNT(self, err) {
        self.emit("error", err);
      }
      module.exports = {
        destroy,
        undestroy
      };
    },
    1667(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = __webpack_require__(7007).EventEmitter;
    },
    3392(module, exports, __webpack_require__) {
      var buffer = __webpack_require__(8287);
      var Buffer = buffer.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer;
      } else {
        copyProps(buffer, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          throw new TypeError("Argument must not be a number");
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function(size, fill, encoding) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === "string") {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return buffer.SlowBuffer(size);
      };
    },
    1077(module, exports, __webpack_require__) {
      exports = module.exports = __webpack_require__(1706);
      exports.Stream = exports;
      exports.Readable = exports;
      exports.Writable = __webpack_require__(2398);
      exports.Duplex = __webpack_require__(308);
      exports.Transform = __webpack_require__(5972);
      exports.PassThrough = __webpack_require__(8158);
    },
    7479(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(6229).Buffer;
      var isEncoding = Buffer.isEncoding || function(encoding) {
        encoding = "" + encoding;
        switch (encoding && encoding.toLowerCase()) {
         case "hex":
         case "utf8":
         case "utf-8":
         case "ascii":
         case "binary":
         case "base64":
         case "ucs2":
         case "ucs-2":
         case "utf16le":
         case "utf-16le":
         case "raw":
          return true;

         default:
          return false;
        }
      };
      function _normalizeEncoding(enc) {
        if (!enc) return "utf8";
        var retried;
        while (true) {
          switch (enc) {
           case "utf8":
           case "utf-8":
            return "utf8";

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return "utf16le";

           case "latin1":
           case "binary":
            return "latin1";

           case "base64":
           case "ascii":
           case "hex":
            return enc;

           default:
            if (retried) return;
            enc = ("" + enc).toLowerCase();
            retried = true;
          }
        }
      }
      function normalizeEncoding(enc) {
        var nenc = _normalizeEncoding(enc);
        if (typeof nenc !== "string" && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc);
        return nenc || enc;
      }
      exports.I = StringDecoder;
      function StringDecoder(encoding) {
        this.encoding = normalizeEncoding(encoding);
        var nb;
        switch (this.encoding) {
         case "utf16le":
          this.text = utf16Text;
          this.end = utf16End;
          nb = 4;
          break;

         case "utf8":
          this.fillLast = utf8FillLast;
          nb = 4;
          break;

         case "base64":
          this.text = base64Text;
          this.end = base64End;
          nb = 3;
          break;

         default:
          this.write = simpleWrite;
          this.end = simpleEnd;
          return;
        }
        this.lastNeed = 0;
        this.lastTotal = 0;
        this.lastChar = Buffer.allocUnsafe(nb);
      }
      StringDecoder.prototype.write = function(buf) {
        if (buf.length === 0) return "";
        var r;
        var i;
        if (this.lastNeed) {
          r = this.fillLast(buf);
          if (r === undefined) return "";
          i = this.lastNeed;
          this.lastNeed = 0;
        } else {
          i = 0;
        }
        if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
        return r || "";
      };
      StringDecoder.prototype.end = utf8End;
      StringDecoder.prototype.text = utf8Text;
      StringDecoder.prototype.fillLast = function(buf) {
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
        this.lastNeed -= buf.length;
      };
      function utf8CheckByte(byte) {
        if (byte <= 127) return 0; else if (byte >> 5 === 6) return 2; else if (byte >> 4 === 14) return 3; else if (byte >> 3 === 30) return 4;
        return byte >> 6 === 2 ? -1 : -2;
      }
      function utf8CheckIncomplete(self, buf, i) {
        var j = buf.length - 1;
        if (j < i) return 0;
        var nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 1;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 2;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) {
            if (nb === 2) nb = 0; else self.lastNeed = nb - 3;
          }
          return nb;
        }
        return 0;
      }
      function utf8CheckExtraBytes(self, buf, p) {
        if ((buf[0] & 192) !== 128) {
          self.lastNeed = 0;
          return "�";
        }
        if (self.lastNeed > 1 && buf.length > 1) {
          if ((buf[1] & 192) !== 128) {
            self.lastNeed = 1;
            return "�";
          }
          if (self.lastNeed > 2 && buf.length > 2) {
            if ((buf[2] & 192) !== 128) {
              self.lastNeed = 2;
              return "�";
            }
          }
        }
      }
      function utf8FillLast(buf) {
        var p = this.lastTotal - this.lastNeed;
        var r = utf8CheckExtraBytes(this, buf, p);
        if (r !== undefined) return r;
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, p, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, p, 0, buf.length);
        this.lastNeed -= buf.length;
      }
      function utf8Text(buf, i) {
        var total = utf8CheckIncomplete(this, buf, i);
        if (!this.lastNeed) return buf.toString("utf8", i);
        this.lastTotal = total;
        var end = buf.length - (total - this.lastNeed);
        buf.copy(this.lastChar, 0, end);
        return buf.toString("utf8", i, end);
      }
      function utf8End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + "�";
        return r;
      }
      function utf16Text(buf, i) {
        if ((buf.length - i) % 2 === 0) {
          var r = buf.toString("utf16le", i);
          if (r) {
            var c = r.charCodeAt(r.length - 1);
            if (c >= 55296 && c <= 56319) {
              this.lastNeed = 2;
              this.lastTotal = 4;
              this.lastChar[0] = buf[buf.length - 2];
              this.lastChar[1] = buf[buf.length - 1];
              return r.slice(0, -1);
            }
          }
          return r;
        }
        this.lastNeed = 1;
        this.lastTotal = 2;
        this.lastChar[0] = buf[buf.length - 1];
        return buf.toString("utf16le", i, buf.length - 1);
      }
      function utf16End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) {
          var end = this.lastTotal - this.lastNeed;
          return r + this.lastChar.toString("utf16le", 0, end);
        }
        return r;
      }
      function base64Text(buf, i) {
        var n = (buf.length - i) % 3;
        if (n === 0) return buf.toString("base64", i);
        this.lastNeed = 3 - n;
        this.lastTotal = 3;
        if (n === 1) {
          this.lastChar[0] = buf[buf.length - 1];
        } else {
          this.lastChar[0] = buf[buf.length - 2];
          this.lastChar[1] = buf[buf.length - 1];
        }
        return buf.toString("base64", i, buf.length - n);
      }
      function base64End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
        return r;
      }
      function simpleWrite(buf) {
        return buf.toString(this.encoding);
      }
      function simpleEnd(buf) {
        return buf && buf.length ? this.write(buf) : "";
      }
    },
    6229(module, exports, __webpack_require__) {
      var buffer = __webpack_require__(8287);
      var Buffer = buffer.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer;
      } else {
        copyProps(buffer, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          throw new TypeError("Argument must not be a number");
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function(size, fill, encoding) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === "string") {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return buffer.SlowBuffer(size);
      };
    },
    2861(module, exports, __webpack_require__) {
      var buffer = __webpack_require__(8287);
      var Buffer = buffer.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer;
      } else {
        copyProps(buffer, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      SafeBuffer.prototype = Object.create(Buffer.prototype);
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function(arg, encodingOrOffset, length) {
        if (typeof arg === "number") {
          throw new TypeError("Argument must not be a number");
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function(size, fill, encoding) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === "string") {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function(size) {
        if (typeof size !== "number") {
          throw new TypeError("Argument must be a number");
        }
        return buffer.SlowBuffer(size);
      };
    },
    7463(__unused_webpack_module, exports) {
      "use strict";
      function f(a, b) {
        var c = a.length;
        a.push(b);
        a: for (;0 < c; ) {
          var d = c - 1 >>> 1, e = a[d];
          if (0 < g(e, b)) a[d] = b, a[c] = e, c = d; else break a;
        }
      }
      function h(a) {
        return 0 === a.length ? null : a[0];
      }
      function k(a) {
        if (0 === a.length) return null;
        var b = a[0], c = a.pop();
        if (c !== b) {
          a[0] = c;
          a: for (var d = 0, e = a.length, w = e >>> 1; d < w; ) {
            var m = 2 * (d + 1) - 1, C = a[m], n = m + 1, x = a[n];
            if (0 > g(C, c)) n < e && 0 > g(x, C) ? (a[d] = x, a[n] = c, d = n) : (a[d] = C, 
            a[m] = c, d = m); else if (n < e && 0 > g(x, c)) a[d] = x, a[n] = c, d = n; else break a;
          }
        }
        return b;
      }
      function g(a, b) {
        var c = a.sortIndex - b.sortIndex;
        return 0 !== c ? c : a.id - b.id;
      }
      if ("object" === typeof performance && "function" === typeof performance.now) {
        var l = performance;
        exports.unstable_now = function() {
          return l.now();
        };
      } else {
        var p = Date, q = p.now();
        exports.unstable_now = function() {
          return p.now() - q;
        };
      }
      var r = [], t = [], u = 1, v = null, y = 3, z = !1, A = !1, B = !1, D = "function" === typeof setTimeout ? setTimeout : null, E = "function" === typeof clearTimeout ? clearTimeout : null, F = "undefined" !== typeof setImmediate ? setImmediate : null;
      "undefined" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);
      function G(a) {
        for (var b = h(t); null !== b; ) {
          if (null === b.callback) k(t); else if (b.startTime <= a) k(t), b.sortIndex = b.expirationTime, 
          f(r, b); else break;
          b = h(t);
        }
      }
      function H(a) {
        B = !1;
        G(a);
        if (!A) if (null !== h(r)) A = !0, I(J); else {
          var b = h(t);
          null !== b && K(H, b.startTime - a);
        }
      }
      function J(a, b) {
        A = !1;
        B && (B = !1, E(L), L = -1);
        z = !0;
        var c = y;
        try {
          G(b);
          for (v = h(r); null !== v && (!(v.expirationTime > b) || a && !M()); ) {
            var d = v.callback;
            if ("function" === typeof d) {
              v.callback = null;
              y = v.priorityLevel;
              var e = d(v.expirationTime <= b);
              b = exports.unstable_now();
              "function" === typeof e ? v.callback = e : v === h(r) && k(r);
              G(b);
            } else k(r);
            v = h(r);
          }
          if (null !== v) var w = !0; else {
            var m = h(t);
            null !== m && K(H, m.startTime - b);
            w = !1;
          }
          return w;
        } finally {
          v = null, y = c, z = !1;
        }
      }
      var N = !1, O = null, L = -1, P = 5, Q = -1;
      function M() {
        return exports.unstable_now() - Q < P ? !1 : !0;
      }
      function R() {
        if (null !== O) {
          var a = exports.unstable_now();
          Q = a;
          var b = !0;
          try {
            b = O(!0, a);
          } finally {
            b ? S() : (N = !1, O = null);
          }
        } else N = !1;
      }
      var S;
      if ("function" === typeof F) S = function() {
        F(R);
      }; else if ("undefined" !== typeof MessageChannel) {
        var T = new MessageChannel, U = T.port2;
        T.port1.onmessage = R;
        S = function() {
          U.postMessage(null);
        };
      } else S = function() {
        D(R, 0);
      };
      function I(a) {
        O = a;
        N || (N = !0, S());
      }
      function K(a, b) {
        L = D((function() {
          a(exports.unstable_now());
        }), b);
      }
      exports.unstable_IdlePriority = 5;
      exports.unstable_ImmediatePriority = 1;
      exports.unstable_LowPriority = 4;
      exports.unstable_NormalPriority = 3;
      exports.unstable_Profiling = null;
      exports.unstable_UserBlockingPriority = 2;
      exports.unstable_cancelCallback = function(a) {
        a.callback = null;
      };
      exports.unstable_continueExecution = function() {
        A || z || (A = !0, I(J));
      };
      exports.unstable_forceFrameRate = function(a) {
        0 > a || 125 < a ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : P = 0 < a ? Math.floor(1e3 / a) : 5;
      };
      exports.unstable_getCurrentPriorityLevel = function() {
        return y;
      };
      exports.unstable_getFirstCallbackNode = function() {
        return h(r);
      };
      exports.unstable_next = function(a) {
        switch (y) {
         case 1:
         case 2:
         case 3:
          var b = 3;
          break;

         default:
          b = y;
        }
        var c = y;
        y = b;
        try {
          return a();
        } finally {
          y = c;
        }
      };
      exports.unstable_pauseExecution = function() {};
      exports.unstable_requestPaint = function() {};
      exports.unstable_runWithPriority = function(a, b) {
        switch (a) {
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
          break;

         default:
          a = 3;
        }
        var c = y;
        y = a;
        try {
          return b();
        } finally {
          y = c;
        }
      };
      exports.unstable_scheduleCallback = function(a, b, c) {
        var d = exports.unstable_now();
        "object" === typeof c && null !== c ? (c = c.delay, c = "number" === typeof c && 0 < c ? d + c : d) : c = d;
        switch (a) {
         case 1:
          var e = -1;
          break;

         case 2:
          e = 250;
          break;

         case 5:
          e = 1073741823;
          break;

         case 4:
          e = 1e4;
          break;

         default:
          e = 5e3;
        }
        e = c + e;
        a = {
          id: u++,
          callback: b,
          priorityLevel: a,
          startTime: c,
          expirationTime: e,
          sortIndex: -1
        };
        c > d ? (a.sortIndex = c, f(t, a), null === h(r) && a === h(t) && (B ? (E(L), L = -1) : B = !0, 
        K(H, c - d))) : (a.sortIndex = e, f(r, a), A || z || (A = !0, I(J)));
        return a;
      };
      exports.unstable_shouldYield = M;
      exports.unstable_wrapCallback = function(a) {
        var b = y;
        return function() {
          var c = y;
          y = b;
          try {
            return a.apply(this, arguments);
          } finally {
            y = c;
          }
        };
      };
    },
    9982(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      if (true) {
        module.exports = __webpack_require__(7463);
      } else {}
    },
    9983(module) {
      "use strict";
      (function(root) {
        const MAX_VALUE = 2147483647;
        function SHA256(m) {
          const K = new Uint32Array([ 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 ]);
          let h0 = 1779033703, h1 = 3144134277, h2 = 1013904242, h3 = 2773480762;
          let h4 = 1359893119, h5 = 2600822924, h6 = 528734635, h7 = 1541459225;
          const w = new Uint32Array(64);
          function blocks(p) {
            let off = 0, len = p.length;
            while (len >= 64) {
              let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;
              for (i = 0; i < 16; i++) {
                j = off + i * 4;
                w[i] = (p[j] & 255) << 24 | (p[j + 1] & 255) << 16 | (p[j + 2] & 255) << 8 | p[j + 3] & 255;
              }
              for (i = 16; i < 64; i++) {
                u = w[i - 2];
                t1 = (u >>> 17 | u << 32 - 17) ^ (u >>> 19 | u << 32 - 19) ^ u >>> 10;
                u = w[i - 15];
                t2 = (u >>> 7 | u << 32 - 7) ^ (u >>> 18 | u << 32 - 18) ^ u >>> 3;
                w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0) | 0;
              }
              for (i = 0; i < 64; i++) {
                t1 = (((e >>> 6 | e << 32 - 6) ^ (e >>> 11 | e << 32 - 11) ^ (e >>> 25 | e << 32 - 25)) + (e & f ^ ~e & g) | 0) + (h + (K[i] + w[i] | 0) | 0) | 0;
                t2 = ((a >>> 2 | a << 32 - 2) ^ (a >>> 13 | a << 32 - 13) ^ (a >>> 22 | a << 32 - 22)) + (a & b ^ a & c ^ b & c) | 0;
                h = g;
                g = f;
                f = e;
                e = d + t1 | 0;
                d = c;
                c = b;
                b = a;
                a = t1 + t2 | 0;
              }
              h0 = h0 + a | 0;
              h1 = h1 + b | 0;
              h2 = h2 + c | 0;
              h3 = h3 + d | 0;
              h4 = h4 + e | 0;
              h5 = h5 + f | 0;
              h6 = h6 + g | 0;
              h7 = h7 + h | 0;
              off += 64;
              len -= 64;
            }
          }
          blocks(m);
          let i, bytesLeft = m.length % 64, bitLenHi = m.length / 536870912 | 0, bitLenLo = m.length << 3, numZeros = bytesLeft < 56 ? 56 : 120, p = m.slice(m.length - bytesLeft, m.length);
          p.push(128);
          for (i = bytesLeft + 1; i < numZeros; i++) {
            p.push(0);
          }
          p.push(bitLenHi >>> 24 & 255);
          p.push(bitLenHi >>> 16 & 255);
          p.push(bitLenHi >>> 8 & 255);
          p.push(bitLenHi >>> 0 & 255);
          p.push(bitLenLo >>> 24 & 255);
          p.push(bitLenLo >>> 16 & 255);
          p.push(bitLenLo >>> 8 & 255);
          p.push(bitLenLo >>> 0 & 255);
          blocks(p);
          return [ h0 >>> 24 & 255, h0 >>> 16 & 255, h0 >>> 8 & 255, h0 >>> 0 & 255, h1 >>> 24 & 255, h1 >>> 16 & 255, h1 >>> 8 & 255, h1 >>> 0 & 255, h2 >>> 24 & 255, h2 >>> 16 & 255, h2 >>> 8 & 255, h2 >>> 0 & 255, h3 >>> 24 & 255, h3 >>> 16 & 255, h3 >>> 8 & 255, h3 >>> 0 & 255, h4 >>> 24 & 255, h4 >>> 16 & 255, h4 >>> 8 & 255, h4 >>> 0 & 255, h5 >>> 24 & 255, h5 >>> 16 & 255, h5 >>> 8 & 255, h5 >>> 0 & 255, h6 >>> 24 & 255, h6 >>> 16 & 255, h6 >>> 8 & 255, h6 >>> 0 & 255, h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 >>> 0 & 255 ];
        }
        function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {
          password = password.length <= 64 ? password : SHA256(password);
          const innerLen = 64 + salt.length + 4;
          const inner = new Array(innerLen);
          const outerKey = new Array(64);
          let i;
          let dk = [];
          for (i = 0; i < 64; i++) {
            inner[i] = 54;
          }
          for (i = 0; i < password.length; i++) {
            inner[i] ^= password[i];
          }
          for (i = 0; i < salt.length; i++) {
            inner[64 + i] = salt[i];
          }
          for (i = innerLen - 4; i < innerLen; i++) {
            inner[i] = 0;
          }
          for (i = 0; i < 64; i++) outerKey[i] = 92;
          for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];
          function incrementCounter() {
            for (let i = innerLen - 1; i >= innerLen - 4; i--) {
              inner[i]++;
              if (inner[i] <= 255) return;
              inner[i] = 0;
            }
          }
          while (dkLen >= 32) {
            incrementCounter();
            dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));
            dkLen -= 32;
          }
          if (dkLen > 0) {
            incrementCounter();
            dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));
          }
          return dk;
        }
        function blockmix_salsa8(BY, Yi, r, x, _X) {
          let i;
          arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);
          for (i = 0; i < 2 * r; i++) {
            blockxor(BY, i * 16, _X, 16);
            salsa20_8(_X, x);
            arraycopy(_X, 0, BY, Yi + i * 16, 16);
          }
          for (i = 0; i < r; i++) {
            arraycopy(BY, Yi + i * 2 * 16, BY, i * 16, 16);
          }
          for (i = 0; i < r; i++) {
            arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);
          }
        }
        function R(a, b) {
          return a << b | a >>> 32 - b;
        }
        function salsa20_8(B, x) {
          arraycopy(B, 0, x, 0, 16);
          for (let i = 8; i > 0; i -= 2) {
            x[4] ^= R(x[0] + x[12], 7);
            x[8] ^= R(x[4] + x[0], 9);
            x[12] ^= R(x[8] + x[4], 13);
            x[0] ^= R(x[12] + x[8], 18);
            x[9] ^= R(x[5] + x[1], 7);
            x[13] ^= R(x[9] + x[5], 9);
            x[1] ^= R(x[13] + x[9], 13);
            x[5] ^= R(x[1] + x[13], 18);
            x[14] ^= R(x[10] + x[6], 7);
            x[2] ^= R(x[14] + x[10], 9);
            x[6] ^= R(x[2] + x[14], 13);
            x[10] ^= R(x[6] + x[2], 18);
            x[3] ^= R(x[15] + x[11], 7);
            x[7] ^= R(x[3] + x[15], 9);
            x[11] ^= R(x[7] + x[3], 13);
            x[15] ^= R(x[11] + x[7], 18);
            x[1] ^= R(x[0] + x[3], 7);
            x[2] ^= R(x[1] + x[0], 9);
            x[3] ^= R(x[2] + x[1], 13);
            x[0] ^= R(x[3] + x[2], 18);
            x[6] ^= R(x[5] + x[4], 7);
            x[7] ^= R(x[6] + x[5], 9);
            x[4] ^= R(x[7] + x[6], 13);
            x[5] ^= R(x[4] + x[7], 18);
            x[11] ^= R(x[10] + x[9], 7);
            x[8] ^= R(x[11] + x[10], 9);
            x[9] ^= R(x[8] + x[11], 13);
            x[10] ^= R(x[9] + x[8], 18);
            x[12] ^= R(x[15] + x[14], 7);
            x[13] ^= R(x[12] + x[15], 9);
            x[14] ^= R(x[13] + x[12], 13);
            x[15] ^= R(x[14] + x[13], 18);
          }
          for (let i = 0; i < 16; ++i) {
            B[i] += x[i];
          }
        }
        function blockxor(S, Si, D, len) {
          for (let i = 0; i < len; i++) {
            D[i] ^= S[Si + i];
          }
        }
        function arraycopy(src, srcPos, dest, destPos, length) {
          while (length--) {
            dest[destPos++] = src[srcPos++];
          }
        }
        function checkBufferish(o) {
          if (!o || typeof o.length !== "number") {
            return false;
          }
          for (let i = 0; i < o.length; i++) {
            const v = o[i];
            if (typeof v !== "number" || v % 1 || v < 0 || v >= 256) {
              return false;
            }
          }
          return true;
        }
        function ensureInteger(value, name) {
          if (typeof value !== "number" || value % 1) {
            throw new Error("invalid " + name);
          }
          return value;
        }
        function _scrypt(password, salt, N, r, p, dkLen, callback) {
          N = ensureInteger(N, "N");
          r = ensureInteger(r, "r");
          p = ensureInteger(p, "p");
          dkLen = ensureInteger(dkLen, "dkLen");
          if (N === 0 || (N & N - 1) !== 0) {
            throw new Error("N must be power of 2");
          }
          if (N > MAX_VALUE / 128 / r) {
            throw new Error("N too large");
          }
          if (r > MAX_VALUE / 128 / p) {
            throw new Error("r too large");
          }
          if (!checkBufferish(password)) {
            throw new Error("password must be an array or buffer");
          }
          password = Array.prototype.slice.call(password);
          if (!checkBufferish(salt)) {
            throw new Error("salt must be an array or buffer");
          }
          salt = Array.prototype.slice.call(salt);
          let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);
          const B = new Uint32Array(p * 32 * r);
          for (let i = 0; i < B.length; i++) {
            const j = i * 4;
            B[i] = (b[j + 3] & 255) << 24 | (b[j + 2] & 255) << 16 | (b[j + 1] & 255) << 8 | (b[j + 0] & 255) << 0;
          }
          const XY = new Uint32Array(64 * r);
          const V = new Uint32Array(32 * r * N);
          const Yi = 32 * r;
          const x = new Uint32Array(16);
          const _X = new Uint32Array(16);
          const totalOps = p * N * 2;
          let currentOp = 0;
          let lastPercent10 = null;
          let stop = false;
          let state = 0;
          let i0 = 0, i1;
          let Bi;
          const limit = callback ? parseInt(1e3 / r) : 4294967295;
          const nextTick = typeof setImmediate !== "undefined" ? setImmediate : setTimeout;
          const incrementalSMix = function() {
            if (stop) {
              return callback(new Error("cancelled"), currentOp / totalOps);
            }
            let steps;
            switch (state) {
             case 0:
              Bi = i0 * 32 * r;
              arraycopy(B, Bi, XY, 0, Yi);
              state = 1;
              i1 = 0;

             case 1:
              steps = N - i1;
              if (steps > limit) {
                steps = limit;
              }
              for (let i = 0; i < steps; i++) {
                arraycopy(XY, 0, V, (i1 + i) * Yi, Yi);
                blockmix_salsa8(XY, Yi, r, x, _X);
              }
              i1 += steps;
              currentOp += steps;
              if (callback) {
                const percent10 = parseInt(1e3 * currentOp / totalOps);
                if (percent10 !== lastPercent10) {
                  stop = callback(null, currentOp / totalOps);
                  if (stop) {
                    break;
                  }
                  lastPercent10 = percent10;
                }
              }
              if (i1 < N) {
                break;
              }
              i1 = 0;
              state = 2;

             case 2:
              steps = N - i1;
              if (steps > limit) {
                steps = limit;
              }
              for (let i = 0; i < steps; i++) {
                const offset = (2 * r - 1) * 16;
                const j = XY[offset] & N - 1;
                blockxor(V, j * Yi, XY, Yi);
                blockmix_salsa8(XY, Yi, r, x, _X);
              }
              i1 += steps;
              currentOp += steps;
              if (callback) {
                const percent10 = parseInt(1e3 * currentOp / totalOps);
                if (percent10 !== lastPercent10) {
                  stop = callback(null, currentOp / totalOps);
                  if (stop) {
                    break;
                  }
                  lastPercent10 = percent10;
                }
              }
              if (i1 < N) {
                break;
              }
              arraycopy(XY, 0, B, Bi, Yi);
              i0++;
              if (i0 < p) {
                state = 0;
                break;
              }
              b = [];
              for (let i = 0; i < B.length; i++) {
                b.push(B[i] >> 0 & 255);
                b.push(B[i] >> 8 & 255);
                b.push(B[i] >> 16 & 255);
                b.push(B[i] >> 24 & 255);
              }
              const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);
              if (callback) {
                callback(null, 1, derivedKey);
              }
              return derivedKey;
            }
            if (callback) {
              nextTick(incrementalSMix);
            }
          };
          if (!callback) {
            while (true) {
              const derivedKey = incrementalSMix();
              if (derivedKey != undefined) {
                return derivedKey;
              }
            }
          }
          incrementalSMix();
        }
        const lib = {
          scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {
            return new Promise((function(resolve, reject) {
              let lastProgress = 0;
              if (progressCallback) {
                progressCallback(0);
              }
              _scrypt(password, salt, N, r, p, dkLen, (function(error, progress, key) {
                if (error) {
                  reject(error);
                } else if (key) {
                  if (progressCallback && lastProgress !== 1) {
                    progressCallback(1);
                  }
                  resolve(new Uint8Array(key));
                } else if (progressCallback && progress !== lastProgress) {
                  lastProgress = progress;
                  return progressCallback(progress);
                }
              }));
            }));
          },
          syncScrypt: function(password, salt, N, r, p, dkLen) {
            return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));
          }
        };
        if (true) {
          module.exports = lib;
        } else {}
      })(this);
    },
    6897(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var GetIntrinsic = __webpack_require__(453);
      var define = __webpack_require__(41);
      var hasDescriptors = __webpack_require__(592)();
      var gOPD = __webpack_require__(5795);
      var $TypeError = __webpack_require__(9675);
      var $floor = GetIntrinsic("%Math.floor%");
      module.exports = function setFunctionLength(fn, length) {
        if (typeof fn !== "function") {
          throw new $TypeError("`fn` is not a function");
        }
        if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) {
          throw new $TypeError("`length` must be a positive 32-bit integer");
        }
        var loose = arguments.length > 2 && !!arguments[2];
        var functionLengthIsConfigurable = true;
        var functionLengthIsWritable = true;
        if ("length" in fn && gOPD) {
          var desc = gOPD(fn, "length");
          if (desc && !desc.configurable) {
            functionLengthIsConfigurable = false;
          }
          if (desc && !desc.writable) {
            functionLengthIsWritable = false;
          }
        }
        if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {
          if (hasDescriptors) {
            define(fn, "length", length, true, true);
          } else {
            define(fn, "length", length);
          }
        }
        return fn;
      };
    },
    392(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var toBuffer = __webpack_require__(5377);
      function Hash(blockSize, finalSize) {
        this._block = Buffer.alloc(blockSize);
        this._finalSize = finalSize;
        this._blockSize = blockSize;
        this._len = 0;
      }
      Hash.prototype.update = function(data, enc) {
        data = toBuffer(data, enc || "utf8");
        var block = this._block;
        var blockSize = this._blockSize;
        var length = data.length;
        var accum = this._len;
        for (var offset = 0; offset < length; ) {
          var assigned = accum % blockSize;
          var remainder = Math.min(length - offset, blockSize - assigned);
          for (var i = 0; i < remainder; i++) {
            block[assigned + i] = data[offset + i];
          }
          accum += remainder;
          offset += remainder;
          if (accum % blockSize === 0) {
            this._update(block);
          }
        }
        this._len += length;
        return this;
      };
      Hash.prototype.digest = function(enc) {
        var rem = this._len % this._blockSize;
        this._block[rem] = 128;
        this._block.fill(0, rem + 1);
        if (rem >= this._finalSize) {
          this._update(this._block);
          this._block.fill(0);
        }
        var bits = this._len * 8;
        if (bits <= 4294967295) {
          this._block.writeUInt32BE(bits, this._blockSize - 4);
        } else {
          var lowBits = (bits & 4294967295) >>> 0;
          var highBits = (bits - lowBits) / 4294967296;
          this._block.writeUInt32BE(highBits, this._blockSize - 8);
          this._block.writeUInt32BE(lowBits, this._blockSize - 4);
        }
        this._update(this._block);
        var hash = this._hash();
        return enc ? hash.toString(enc) : hash;
      };
      Hash.prototype._update = function() {
        throw new Error("_update must be implemented by subclass");
      };
      module.exports = Hash;
    },
    2802(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      module.exports = function SHA(algorithm) {
        var alg = algorithm.toLowerCase();
        var Algorithm = module.exports[alg];
        if (!Algorithm) {
          throw new Error(alg + " is not supported (we accept pull requests)");
        }
        return new Algorithm;
      };
      module.exports.sha = __webpack_require__(7816);
      module.exports.sha1 = __webpack_require__(3737);
      module.exports.sha224 = __webpack_require__(6710);
      module.exports.sha256 = __webpack_require__(4107);
      module.exports.sha384 = __webpack_require__(2827);
      module.exports.sha512 = __webpack_require__(2890);
    },
    7816(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var K = [ 1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0 ];
      var W = new Array(80);
      function Sha() {
        this.init();
        this._w = W;
        Hash.call(this, 64, 56);
      }
      inherits(Sha, Hash);
      Sha.prototype.init = function() {
        this._a = 1732584193;
        this._b = 4023233417;
        this._c = 2562383102;
        this._d = 271733878;
        this._e = 3285377520;
        return this;
      };
      function rotl5(num) {
        return num << 5 | num >>> 27;
      }
      function rotl30(num) {
        return num << 30 | num >>> 2;
      }
      function ft(s, b, c, d) {
        if (s === 0) {
          return b & c | ~b & d;
        }
        if (s === 2) {
          return b & c | b & d | c & d;
        }
        return b ^ c ^ d;
      }
      Sha.prototype._update = function(M) {
        var w = this._w;
        var a = this._a | 0;
        var b = this._b | 0;
        var c = this._c | 0;
        var d = this._d | 0;
        var e = this._e | 0;
        for (var i = 0; i < 16; ++i) {
          w[i] = M.readInt32BE(i * 4);
        }
        for (;i < 80; ++i) {
          w[i] = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16];
        }
        for (var j = 0; j < 80; ++j) {
          var s = ~~(j / 20);
          var t = rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s] | 0;
          e = d;
          d = c;
          c = rotl30(b);
          b = a;
          a = t;
        }
        this._a = a + this._a | 0;
        this._b = b + this._b | 0;
        this._c = c + this._c | 0;
        this._d = d + this._d | 0;
        this._e = e + this._e | 0;
      };
      Sha.prototype._hash = function() {
        var H = Buffer.allocUnsafe(20);
        H.writeInt32BE(this._a | 0, 0);
        H.writeInt32BE(this._b | 0, 4);
        H.writeInt32BE(this._c | 0, 8);
        H.writeInt32BE(this._d | 0, 12);
        H.writeInt32BE(this._e | 0, 16);
        return H;
      };
      module.exports = Sha;
    },
    3737(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var K = [ 1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0 ];
      var W = new Array(80);
      function Sha1() {
        this.init();
        this._w = W;
        Hash.call(this, 64, 56);
      }
      inherits(Sha1, Hash);
      Sha1.prototype.init = function() {
        this._a = 1732584193;
        this._b = 4023233417;
        this._c = 2562383102;
        this._d = 271733878;
        this._e = 3285377520;
        return this;
      };
      function rotl1(num) {
        return num << 1 | num >>> 31;
      }
      function rotl5(num) {
        return num << 5 | num >>> 27;
      }
      function rotl30(num) {
        return num << 30 | num >>> 2;
      }
      function ft(s, b, c, d) {
        if (s === 0) {
          return b & c | ~b & d;
        }
        if (s === 2) {
          return b & c | b & d | c & d;
        }
        return b ^ c ^ d;
      }
      Sha1.prototype._update = function(M) {
        var w = this._w;
        var a = this._a | 0;
        var b = this._b | 0;
        var c = this._c | 0;
        var d = this._d | 0;
        var e = this._e | 0;
        for (var i = 0; i < 16; ++i) {
          w[i] = M.readInt32BE(i * 4);
        }
        for (;i < 80; ++i) {
          w[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);
        }
        for (var j = 0; j < 80; ++j) {
          var s = ~~(j / 20);
          var t = rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s] | 0;
          e = d;
          d = c;
          c = rotl30(b);
          b = a;
          a = t;
        }
        this._a = a + this._a | 0;
        this._b = b + this._b | 0;
        this._c = c + this._c | 0;
        this._d = d + this._d | 0;
        this._e = e + this._e | 0;
      };
      Sha1.prototype._hash = function() {
        var H = Buffer.allocUnsafe(20);
        H.writeInt32BE(this._a | 0, 0);
        H.writeInt32BE(this._b | 0, 4);
        H.writeInt32BE(this._c | 0, 8);
        H.writeInt32BE(this._d | 0, 12);
        H.writeInt32BE(this._e | 0, 16);
        return H;
      };
      module.exports = Sha1;
    },
    6710(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Sha256 = __webpack_require__(4107);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var W = new Array(64);
      function Sha224() {
        this.init();
        this._w = W;
        Hash.call(this, 64, 56);
      }
      inherits(Sha224, Sha256);
      Sha224.prototype.init = function() {
        this._a = 3238371032;
        this._b = 914150663;
        this._c = 812702999;
        this._d = 4144912697;
        this._e = 4290775857;
        this._f = 1750603025;
        this._g = 1694076839;
        this._h = 3204075428;
        return this;
      };
      Sha224.prototype._hash = function() {
        var H = Buffer.allocUnsafe(28);
        H.writeInt32BE(this._a, 0);
        H.writeInt32BE(this._b, 4);
        H.writeInt32BE(this._c, 8);
        H.writeInt32BE(this._d, 12);
        H.writeInt32BE(this._e, 16);
        H.writeInt32BE(this._f, 20);
        H.writeInt32BE(this._g, 24);
        return H;
      };
      module.exports = Sha224;
    },
    4107(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var K = [ 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 ];
      var W = new Array(64);
      function Sha256() {
        this.init();
        this._w = W;
        Hash.call(this, 64, 56);
      }
      inherits(Sha256, Hash);
      Sha256.prototype.init = function() {
        this._a = 1779033703;
        this._b = 3144134277;
        this._c = 1013904242;
        this._d = 2773480762;
        this._e = 1359893119;
        this._f = 2600822924;
        this._g = 528734635;
        this._h = 1541459225;
        return this;
      };
      function ch(x, y, z) {
        return z ^ x & (y ^ z);
      }
      function maj(x, y, z) {
        return x & y | z & (x | y);
      }
      function sigma0(x) {
        return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10);
      }
      function sigma1(x) {
        return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7);
      }
      function gamma0(x) {
        return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3;
      }
      function gamma1(x) {
        return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10;
      }
      Sha256.prototype._update = function(M) {
        var w = this._w;
        var a = this._a | 0;
        var b = this._b | 0;
        var c = this._c | 0;
        var d = this._d | 0;
        var e = this._e | 0;
        var f = this._f | 0;
        var g = this._g | 0;
        var h = this._h | 0;
        for (var i = 0; i < 16; ++i) {
          w[i] = M.readInt32BE(i * 4);
        }
        for (;i < 64; ++i) {
          w[i] = gamma1(w[i - 2]) + w[i - 7] + gamma0(w[i - 15]) + w[i - 16] | 0;
        }
        for (var j = 0; j < 64; ++j) {
          var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + w[j] | 0;
          var T2 = sigma0(a) + maj(a, b, c) | 0;
          h = g;
          g = f;
          f = e;
          e = d + T1 | 0;
          d = c;
          c = b;
          b = a;
          a = T1 + T2 | 0;
        }
        this._a = a + this._a | 0;
        this._b = b + this._b | 0;
        this._c = c + this._c | 0;
        this._d = d + this._d | 0;
        this._e = e + this._e | 0;
        this._f = f + this._f | 0;
        this._g = g + this._g | 0;
        this._h = h + this._h | 0;
      };
      Sha256.prototype._hash = function() {
        var H = Buffer.allocUnsafe(32);
        H.writeInt32BE(this._a, 0);
        H.writeInt32BE(this._b, 4);
        H.writeInt32BE(this._c, 8);
        H.writeInt32BE(this._d, 12);
        H.writeInt32BE(this._e, 16);
        H.writeInt32BE(this._f, 20);
        H.writeInt32BE(this._g, 24);
        H.writeInt32BE(this._h, 28);
        return H;
      };
      module.exports = Sha256;
    },
    2827(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var SHA512 = __webpack_require__(2890);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var W = new Array(160);
      function Sha384() {
        this.init();
        this._w = W;
        Hash.call(this, 128, 112);
      }
      inherits(Sha384, SHA512);
      Sha384.prototype.init = function() {
        this._ah = 3418070365;
        this._bh = 1654270250;
        this._ch = 2438529370;
        this._dh = 355462360;
        this._eh = 1731405415;
        this._fh = 2394180231;
        this._gh = 3675008525;
        this._hh = 1203062813;
        this._al = 3238371032;
        this._bl = 914150663;
        this._cl = 812702999;
        this._dl = 4144912697;
        this._el = 4290775857;
        this._fl = 1750603025;
        this._gl = 1694076839;
        this._hl = 3204075428;
        return this;
      };
      Sha384.prototype._hash = function() {
        var H = Buffer.allocUnsafe(48);
        function writeInt64BE(h, l, offset) {
          H.writeInt32BE(h, offset);
          H.writeInt32BE(l, offset + 4);
        }
        writeInt64BE(this._ah, this._al, 0);
        writeInt64BE(this._bh, this._bl, 8);
        writeInt64BE(this._ch, this._cl, 16);
        writeInt64BE(this._dh, this._dl, 24);
        writeInt64BE(this._eh, this._el, 32);
        writeInt64BE(this._fh, this._fl, 40);
        return H;
      };
      module.exports = Sha384;
    },
    2890(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var inherits = __webpack_require__(6698);
      var Hash = __webpack_require__(392);
      var Buffer = __webpack_require__(2861).Buffer;
      var K = [ 1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591 ];
      var W = new Array(160);
      function Sha512() {
        this.init();
        this._w = W;
        Hash.call(this, 128, 112);
      }
      inherits(Sha512, Hash);
      Sha512.prototype.init = function() {
        this._ah = 1779033703;
        this._bh = 3144134277;
        this._ch = 1013904242;
        this._dh = 2773480762;
        this._eh = 1359893119;
        this._fh = 2600822924;
        this._gh = 528734635;
        this._hh = 1541459225;
        this._al = 4089235720;
        this._bl = 2227873595;
        this._cl = 4271175723;
        this._dl = 1595750129;
        this._el = 2917565137;
        this._fl = 725511199;
        this._gl = 4215389547;
        this._hl = 327033209;
        return this;
      };
      function Ch(x, y, z) {
        return z ^ x & (y ^ z);
      }
      function maj(x, y, z) {
        return x & y | z & (x | y);
      }
      function sigma0(x, xl) {
        return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);
      }
      function sigma1(x, xl) {
        return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);
      }
      function Gamma0(x, xl) {
        return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;
      }
      function Gamma0l(x, xl) {
        return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);
      }
      function Gamma1(x, xl) {
        return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;
      }
      function Gamma1l(x, xl) {
        return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);
      }
      function getCarry(a, b) {
        return a >>> 0 < b >>> 0 ? 1 : 0;
      }
      Sha512.prototype._update = function(M) {
        var w = this._w;
        var ah = this._ah | 0;
        var bh = this._bh | 0;
        var ch = this._ch | 0;
        var dh = this._dh | 0;
        var eh = this._eh | 0;
        var fh = this._fh | 0;
        var gh = this._gh | 0;
        var hh = this._hh | 0;
        var al = this._al | 0;
        var bl = this._bl | 0;
        var cl = this._cl | 0;
        var dl = this._dl | 0;
        var el = this._el | 0;
        var fl = this._fl | 0;
        var gl = this._gl | 0;
        var hl = this._hl | 0;
        for (var i = 0; i < 32; i += 2) {
          w[i] = M.readInt32BE(i * 4);
          w[i + 1] = M.readInt32BE(i * 4 + 4);
        }
        for (;i < 160; i += 2) {
          var xh = w[i - 15 * 2];
          var xl = w[i - 15 * 2 + 1];
          var gamma0 = Gamma0(xh, xl);
          var gamma0l = Gamma0l(xl, xh);
          xh = w[i - 2 * 2];
          xl = w[i - 2 * 2 + 1];
          var gamma1 = Gamma1(xh, xl);
          var gamma1l = Gamma1l(xl, xh);
          var Wi7h = w[i - 7 * 2];
          var Wi7l = w[i - 7 * 2 + 1];
          var Wi16h = w[i - 16 * 2];
          var Wi16l = w[i - 16 * 2 + 1];
          var Wil = gamma0l + Wi7l | 0;
          var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0;
          Wil = Wil + gamma1l | 0;
          Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0;
          Wil = Wil + Wi16l | 0;
          Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0;
          w[i] = Wih;
          w[i + 1] = Wil;
        }
        for (var j = 0; j < 160; j += 2) {
          Wih = w[j];
          Wil = w[j + 1];
          var majh = maj(ah, bh, ch);
          var majl = maj(al, bl, cl);
          var sigma0h = sigma0(ah, al);
          var sigma0l = sigma0(al, ah);
          var sigma1h = sigma1(eh, el);
          var sigma1l = sigma1(el, eh);
          var Kih = K[j];
          var Kil = K[j + 1];
          var chh = Ch(eh, fh, gh);
          var chl = Ch(el, fl, gl);
          var t1l = hl + sigma1l | 0;
          var t1h = hh + sigma1h + getCarry(t1l, hl) | 0;
          t1l = t1l + chl | 0;
          t1h = t1h + chh + getCarry(t1l, chl) | 0;
          t1l = t1l + Kil | 0;
          t1h = t1h + Kih + getCarry(t1l, Kil) | 0;
          t1l = t1l + Wil | 0;
          t1h = t1h + Wih + getCarry(t1l, Wil) | 0;
          var t2l = sigma0l + majl | 0;
          var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;
          hh = gh;
          hl = gl;
          gh = fh;
          gl = fl;
          fh = eh;
          fl = el;
          el = dl + t1l | 0;
          eh = dh + t1h + getCarry(el, dl) | 0;
          dh = ch;
          dl = cl;
          ch = bh;
          cl = bl;
          bh = ah;
          bl = al;
          al = t1l + t2l | 0;
          ah = t1h + t2h + getCarry(al, t1l) | 0;
        }
        this._al = this._al + al | 0;
        this._bl = this._bl + bl | 0;
        this._cl = this._cl + cl | 0;
        this._dl = this._dl + dl | 0;
        this._el = this._el + el | 0;
        this._fl = this._fl + fl | 0;
        this._gl = this._gl + gl | 0;
        this._hl = this._hl + hl | 0;
        this._ah = this._ah + ah + getCarry(this._al, al) | 0;
        this._bh = this._bh + bh + getCarry(this._bl, bl) | 0;
        this._ch = this._ch + ch + getCarry(this._cl, cl) | 0;
        this._dh = this._dh + dh + getCarry(this._dl, dl) | 0;
        this._eh = this._eh + eh + getCarry(this._el, el) | 0;
        this._fh = this._fh + fh + getCarry(this._fl, fl) | 0;
        this._gh = this._gh + gh + getCarry(this._gl, gl) | 0;
        this._hh = this._hh + hh + getCarry(this._hl, hl) | 0;
      };
      Sha512.prototype._hash = function() {
        var H = Buffer.allocUnsafe(64);
        function writeInt64BE(h, l, offset) {
          H.writeInt32BE(h, offset);
          H.writeInt32BE(l, offset + 4);
        }
        writeInt64BE(this._ah, this._al, 0);
        writeInt64BE(this._bh, this._bl, 8);
        writeInt64BE(this._ch, this._cl, 16);
        writeInt64BE(this._dh, this._dl, 24);
        writeInt64BE(this._eh, this._el, 32);
        writeInt64BE(this._fh, this._fl, 40);
        writeInt64BE(this._gh, this._gl, 48);
        writeInt64BE(this._hh, this._hl, 56);
        return H;
      };
      module.exports = Sha512;
    },
    8310(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = Stream;
      var EE = __webpack_require__(7007).EventEmitter;
      var inherits = __webpack_require__(6698);
      inherits(Stream, EE);
      Stream.Readable = __webpack_require__(5412);
      Stream.Writable = __webpack_require__(6708);
      Stream.Duplex = __webpack_require__(5382);
      Stream.Transform = __webpack_require__(4610);
      Stream.PassThrough = __webpack_require__(3600);
      Stream.finished = __webpack_require__(6238);
      Stream.pipeline = __webpack_require__(7758);
      Stream.Stream = Stream;
      function Stream() {
        EE.call(this);
      }
      Stream.prototype.pipe = function(dest, options) {
        var source = this;
        function ondata(chunk) {
          if (dest.writable) {
            if (false === dest.write(chunk) && source.pause) {
              source.pause();
            }
          }
        }
        source.on("data", ondata);
        function ondrain() {
          if (source.readable && source.resume) {
            source.resume();
          }
        }
        dest.on("drain", ondrain);
        if (!dest._isStdio && (!options || options.end !== false)) {
          source.on("end", onend);
          source.on("close", onclose);
        }
        var didOnEnd = false;
        function onend() {
          if (didOnEnd) return;
          didOnEnd = true;
          dest.end();
        }
        function onclose() {
          if (didOnEnd) return;
          didOnEnd = true;
          if (typeof dest.destroy === "function") dest.destroy();
        }
        function onerror(er) {
          cleanup();
          if (EE.listenerCount(this, "error") === 0) {
            throw er;
          }
        }
        source.on("error", onerror);
        dest.on("error", onerror);
        function cleanup() {
          source.removeListener("data", ondata);
          dest.removeListener("drain", ondrain);
          source.removeListener("end", onend);
          source.removeListener("close", onclose);
          source.removeListener("error", onerror);
          dest.removeListener("error", onerror);
          source.removeListener("end", cleanup);
          source.removeListener("close", cleanup);
          dest.removeListener("close", cleanup);
        }
        source.on("end", cleanup);
        source.on("close", cleanup);
        dest.on("close", cleanup);
        dest.emit("pipe", source);
        return dest;
      };
    },
    3141(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var isEncoding = Buffer.isEncoding || function(encoding) {
        encoding = "" + encoding;
        switch (encoding && encoding.toLowerCase()) {
         case "hex":
         case "utf8":
         case "utf-8":
         case "ascii":
         case "binary":
         case "base64":
         case "ucs2":
         case "ucs-2":
         case "utf16le":
         case "utf-16le":
         case "raw":
          return true;

         default:
          return false;
        }
      };
      function _normalizeEncoding(enc) {
        if (!enc) return "utf8";
        var retried;
        while (true) {
          switch (enc) {
           case "utf8":
           case "utf-8":
            return "utf8";

           case "ucs2":
           case "ucs-2":
           case "utf16le":
           case "utf-16le":
            return "utf16le";

           case "latin1":
           case "binary":
            return "latin1";

           case "base64":
           case "ascii":
           case "hex":
            return enc;

           default:
            if (retried) return;
            enc = ("" + enc).toLowerCase();
            retried = true;
          }
        }
      }
      function normalizeEncoding(enc) {
        var nenc = _normalizeEncoding(enc);
        if (typeof nenc !== "string" && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc);
        return nenc || enc;
      }
      exports.I = StringDecoder;
      function StringDecoder(encoding) {
        this.encoding = normalizeEncoding(encoding);
        var nb;
        switch (this.encoding) {
         case "utf16le":
          this.text = utf16Text;
          this.end = utf16End;
          nb = 4;
          break;

         case "utf8":
          this.fillLast = utf8FillLast;
          nb = 4;
          break;

         case "base64":
          this.text = base64Text;
          this.end = base64End;
          nb = 3;
          break;

         default:
          this.write = simpleWrite;
          this.end = simpleEnd;
          return;
        }
        this.lastNeed = 0;
        this.lastTotal = 0;
        this.lastChar = Buffer.allocUnsafe(nb);
      }
      StringDecoder.prototype.write = function(buf) {
        if (buf.length === 0) return "";
        var r;
        var i;
        if (this.lastNeed) {
          r = this.fillLast(buf);
          if (r === undefined) return "";
          i = this.lastNeed;
          this.lastNeed = 0;
        } else {
          i = 0;
        }
        if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
        return r || "";
      };
      StringDecoder.prototype.end = utf8End;
      StringDecoder.prototype.text = utf8Text;
      StringDecoder.prototype.fillLast = function(buf) {
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
        this.lastNeed -= buf.length;
      };
      function utf8CheckByte(byte) {
        if (byte <= 127) return 0; else if (byte >> 5 === 6) return 2; else if (byte >> 4 === 14) return 3; else if (byte >> 3 === 30) return 4;
        return byte >> 6 === 2 ? -1 : -2;
      }
      function utf8CheckIncomplete(self, buf, i) {
        var j = buf.length - 1;
        if (j < i) return 0;
        var nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 1;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) self.lastNeed = nb - 2;
          return nb;
        }
        if (--j < i || nb === -2) return 0;
        nb = utf8CheckByte(buf[j]);
        if (nb >= 0) {
          if (nb > 0) {
            if (nb === 2) nb = 0; else self.lastNeed = nb - 3;
          }
          return nb;
        }
        return 0;
      }
      function utf8CheckExtraBytes(self, buf, p) {
        if ((buf[0] & 192) !== 128) {
          self.lastNeed = 0;
          return "�";
        }
        if (self.lastNeed > 1 && buf.length > 1) {
          if ((buf[1] & 192) !== 128) {
            self.lastNeed = 1;
            return "�";
          }
          if (self.lastNeed > 2 && buf.length > 2) {
            if ((buf[2] & 192) !== 128) {
              self.lastNeed = 2;
              return "�";
            }
          }
        }
      }
      function utf8FillLast(buf) {
        var p = this.lastTotal - this.lastNeed;
        var r = utf8CheckExtraBytes(this, buf, p);
        if (r !== undefined) return r;
        if (this.lastNeed <= buf.length) {
          buf.copy(this.lastChar, p, 0, this.lastNeed);
          return this.lastChar.toString(this.encoding, 0, this.lastTotal);
        }
        buf.copy(this.lastChar, p, 0, buf.length);
        this.lastNeed -= buf.length;
      }
      function utf8Text(buf, i) {
        var total = utf8CheckIncomplete(this, buf, i);
        if (!this.lastNeed) return buf.toString("utf8", i);
        this.lastTotal = total;
        var end = buf.length - (total - this.lastNeed);
        buf.copy(this.lastChar, 0, end);
        return buf.toString("utf8", i, end);
      }
      function utf8End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + "�";
        return r;
      }
      function utf16Text(buf, i) {
        if ((buf.length - i) % 2 === 0) {
          var r = buf.toString("utf16le", i);
          if (r) {
            var c = r.charCodeAt(r.length - 1);
            if (c >= 55296 && c <= 56319) {
              this.lastNeed = 2;
              this.lastTotal = 4;
              this.lastChar[0] = buf[buf.length - 2];
              this.lastChar[1] = buf[buf.length - 1];
              return r.slice(0, -1);
            }
          }
          return r;
        }
        this.lastNeed = 1;
        this.lastTotal = 2;
        this.lastChar[0] = buf[buf.length - 1];
        return buf.toString("utf16le", i, buf.length - 1);
      }
      function utf16End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) {
          var end = this.lastTotal - this.lastNeed;
          return r + this.lastChar.toString("utf16le", 0, end);
        }
        return r;
      }
      function base64Text(buf, i) {
        var n = (buf.length - i) % 3;
        if (n === 0) return buf.toString("base64", i);
        this.lastNeed = 3 - n;
        this.lastTotal = 3;
        if (n === 1) {
          this.lastChar[0] = buf[buf.length - 1];
        } else {
          this.lastChar[0] = buf[buf.length - 2];
          this.lastChar[1] = buf[buf.length - 1];
        }
        return buf.toString("base64", i, buf.length - n);
      }
      function base64End(buf) {
        var r = buf && buf.length ? this.write(buf) : "";
        if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
        return r;
      }
      function simpleWrite(buf) {
        return buf.toString(this.encoding);
      }
      function simpleEnd(buf) {
        return buf && buf.length ? this.write(buf) : "";
      }
    },
    1292(__unused_webpack_module, exports, __webpack_require__) {
      var __webpack_unused_export__;
      var process = __webpack_require__(5606);
      __webpack_require__(6511);
      var React = __webpack_require__(6540);
      function _interopDefaultLegacy(e) {
        return e && typeof e === "object" && "default" in e ? e : {
          default: e
        };
      }
      var React__default = _interopDefaultLegacy(React);
      function _defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
          var descriptor = props[i];
          descriptor.enumerable = descriptor.enumerable || false;
          descriptor.configurable = true;
          if ("value" in descriptor) descriptor.writable = true;
          Object.defineProperty(target, descriptor.key, descriptor);
        }
      }
      function _createClass(Constructor, protoProps, staticProps) {
        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
        if (staticProps) _defineProperties(Constructor, staticProps);
        return Constructor;
      }
      var isProd = typeof process !== "undefined" && "MISSING_ENV_VAR" && "production" === "production";
      var isString = function(o) {
        return Object.prototype.toString.call(o) === "[object String]";
      };
      var StyleSheet = function() {
        function StyleSheet(param) {
          var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? "stylesheet" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;
          invariant$1(isString(name), "`name` must be a string");
          this._name = name;
          this._deletedRulePlaceholder = "#" + name + "-deleted-rule____{}";
          invariant$1(typeof optimizeForSpeed === "boolean", "`optimizeForSpeed` must be a boolean");
          this._optimizeForSpeed = optimizeForSpeed;
          this._serverSheet = undefined;
          this._tags = [];
          this._injected = false;
          this._rulesCount = 0;
          var node = typeof window !== "undefined" && document.querySelector('meta[property="csp-nonce"]');
          this._nonce = node ? node.getAttribute("content") : null;
        }
        var _proto = StyleSheet.prototype;
        _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {
          invariant$1(typeof bool === "boolean", "`setOptimizeForSpeed` accepts a boolean");
          invariant$1(this._rulesCount === 0, "optimizeForSpeed cannot be when rules have already been inserted");
          this.flush();
          this._optimizeForSpeed = bool;
          this.inject();
        };
        _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {
          return this._optimizeForSpeed;
        };
        _proto.inject = function inject() {
          var _this = this;
          invariant$1(!this._injected, "sheet already injected");
          this._injected = true;
          if (typeof window !== "undefined" && this._optimizeForSpeed) {
            this._tags[0] = this.makeStyleTag(this._name);
            this._optimizeForSpeed = "insertRule" in this.getSheet();
            if (!this._optimizeForSpeed) {
              if (!isProd) {
                console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.");
              }
              this.flush();
              this._injected = true;
            }
            return;
          }
          this._serverSheet = {
            cssRules: [],
            insertRule: function(rule, index) {
              if (typeof index === "number") {
                _this._serverSheet.cssRules[index] = {
                  cssText: rule
                };
              } else {
                _this._serverSheet.cssRules.push({
                  cssText: rule
                });
              }
              return index;
            },
            deleteRule: function(index) {
              _this._serverSheet.cssRules[index] = null;
            }
          };
        };
        _proto.getSheetForTag = function getSheetForTag(tag) {
          if (tag.sheet) {
            return tag.sheet;
          }
          for (var i = 0; i < document.styleSheets.length; i++) {
            if (document.styleSheets[i].ownerNode === tag) {
              return document.styleSheets[i];
            }
          }
        };
        _proto.getSheet = function getSheet() {
          return this.getSheetForTag(this._tags[this._tags.length - 1]);
        };
        _proto.insertRule = function insertRule(rule, index) {
          invariant$1(isString(rule), "`insertRule` accepts only strings");
          if (typeof window === "undefined") {
            if (typeof index !== "number") {
              index = this._serverSheet.cssRules.length;
            }
            this._serverSheet.insertRule(rule, index);
            return this._rulesCount++;
          }
          if (this._optimizeForSpeed) {
            var sheet = this.getSheet();
            if (typeof index !== "number") {
              index = sheet.cssRules.length;
            }
            try {
              sheet.insertRule(rule, index);
            } catch (error) {
              if (!isProd) {
                console.warn("StyleSheet: illegal rule: \n\n" + rule + "\n\nSee https://stackoverflow.com/q/20007992 for more info");
              }
              return -1;
            }
          } else {
            var insertionPoint = this._tags[index];
            this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));
          }
          return this._rulesCount++;
        };
        _proto.replaceRule = function replaceRule(index, rule) {
          if (this._optimizeForSpeed || typeof window === "undefined") {
            var sheet = typeof window !== "undefined" ? this.getSheet() : this._serverSheet;
            if (!rule.trim()) {
              rule = this._deletedRulePlaceholder;
            }
            if (!sheet.cssRules[index]) {
              return index;
            }
            sheet.deleteRule(index);
            try {
              sheet.insertRule(rule, index);
            } catch (error) {
              if (!isProd) {
                console.warn("StyleSheet: illegal rule: \n\n" + rule + "\n\nSee https://stackoverflow.com/q/20007992 for more info");
              }
              sheet.insertRule(this._deletedRulePlaceholder, index);
            }
          } else {
            var tag = this._tags[index];
            invariant$1(tag, "old rule at index `" + index + "` not found");
            tag.textContent = rule;
          }
          return index;
        };
        _proto.deleteRule = function deleteRule(index) {
          if (typeof window === "undefined") {
            this._serverSheet.deleteRule(index);
            return;
          }
          if (this._optimizeForSpeed) {
            this.replaceRule(index, "");
          } else {
            var tag = this._tags[index];
            invariant$1(tag, "rule at index `" + index + "` not found");
            tag.parentNode.removeChild(tag);
            this._tags[index] = null;
          }
        };
        _proto.flush = function flush() {
          this._injected = false;
          this._rulesCount = 0;
          if (typeof window !== "undefined") {
            this._tags.forEach((function(tag) {
              return tag && tag.parentNode.removeChild(tag);
            }));
            this._tags = [];
          } else {
            this._serverSheet.cssRules = [];
          }
        };
        _proto.cssRules = function cssRules() {
          var _this = this;
          if (typeof window === "undefined") {
            return this._serverSheet.cssRules;
          }
          return this._tags.reduce((function(rules, tag) {
            if (tag) {
              rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, (function(rule) {
                return rule.cssText === _this._deletedRulePlaceholder ? null : rule;
              })));
            } else {
              rules.push(null);
            }
            return rules;
          }), []);
        };
        _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {
          if (cssString) {
            invariant$1(isString(cssString), "makeStyleTag accepts only strings as second parameter");
          }
          var tag = document.createElement("style");
          if (this._nonce) tag.setAttribute("nonce", this._nonce);
          tag.type = "text/css";
          tag.setAttribute("data-" + name, "");
          if (cssString) {
            tag.appendChild(document.createTextNode(cssString));
          }
          var head = document.head || document.getElementsByTagName("head")[0];
          if (relativeToTag) {
            head.insertBefore(tag, relativeToTag);
          } else {
            head.appendChild(tag);
          }
          return tag;
        };
        _createClass(StyleSheet, [ {
          key: "length",
          get: function get() {
            return this._rulesCount;
          }
        } ]);
        return StyleSheet;
      }();
      function invariant$1(condition, message) {
        if (!condition) {
          throw new Error("StyleSheet: " + message + ".");
        }
      }
      function hash(str) {
        var _$hash = 5381, i = str.length;
        while (i) {
          _$hash = _$hash * 33 ^ str.charCodeAt(--i);
        }
        return _$hash >>> 0;
      }
      var stringHash = hash;
      var sanitize = function(rule) {
        return rule.replace(/\/style/gi, "\\/style");
      };
      var cache = {};
      function computeId(baseId, props) {
        if (!props) {
          return "jsx-" + baseId;
        }
        var propsToString = String(props);
        var key = baseId + propsToString;
        if (!cache[key]) {
          cache[key] = "jsx-" + stringHash(baseId + "-" + propsToString);
        }
        return cache[key];
      }
      function computeSelector(id, css) {
        var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;
        if (typeof window === "undefined") {
          css = sanitize(css);
        }
        var idcss = id + css;
        if (!cache[idcss]) {
          cache[idcss] = css.replace(selectoPlaceholderRegexp, id);
        }
        return cache[idcss];
      }
      function mapRulesToStyle(cssRules, options) {
        if (options === void 0) options = {};
        return cssRules.map((function(args) {
          var id = args[0];
          var css = args[1];
          return React__default["default"].createElement("style", {
            id: "__" + id,
            key: "__" + id,
            nonce: options.nonce ? options.nonce : undefined,
            dangerouslySetInnerHTML: {
              __html: css
            }
          });
        }));
      }
      var StyleSheetRegistry = function() {
        function StyleSheetRegistry(param) {
          var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;
          this._sheet = styleSheet || new StyleSheet({
            name: "styled-jsx",
            optimizeForSpeed
          });
          this._sheet.inject();
          if (styleSheet && typeof optimizeForSpeed === "boolean") {
            this._sheet.setOptimizeForSpeed(optimizeForSpeed);
            this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();
          }
          this._fromServer = undefined;
          this._indices = {};
          this._instancesCounts = {};
        }
        var _proto = StyleSheetRegistry.prototype;
        _proto.add = function add(props) {
          var _this = this;
          if (undefined === this._optimizeForSpeed) {
            this._optimizeForSpeed = Array.isArray(props.children);
            this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);
            this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();
          }
          if (typeof window !== "undefined" && !this._fromServer) {
            this._fromServer = this.selectFromServer();
            this._instancesCounts = Object.keys(this._fromServer).reduce((function(acc, tagName) {
              acc[tagName] = 0;
              return acc;
            }), {});
          }
          var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;
          if (styleId in this._instancesCounts) {
            this._instancesCounts[styleId] += 1;
            return;
          }
          var indices = rules.map((function(rule) {
            return _this._sheet.insertRule(rule);
          })).filter((function(index) {
            return index !== -1;
          }));
          this._indices[styleId] = indices;
          this._instancesCounts[styleId] = 1;
        };
        _proto.remove = function remove(props) {
          var _this = this;
          var styleId = this.getIdAndRules(props).styleId;
          invariant(styleId in this._instancesCounts, "styleId: `" + styleId + "` not found");
          this._instancesCounts[styleId] -= 1;
          if (this._instancesCounts[styleId] < 1) {
            var tagFromServer = this._fromServer && this._fromServer[styleId];
            if (tagFromServer) {
              tagFromServer.parentNode.removeChild(tagFromServer);
              delete this._fromServer[styleId];
            } else {
              this._indices[styleId].forEach((function(index) {
                return _this._sheet.deleteRule(index);
              }));
              delete this._indices[styleId];
            }
            delete this._instancesCounts[styleId];
          }
        };
        _proto.update = function update(props, nextProps) {
          this.add(nextProps);
          this.remove(props);
        };
        _proto.flush = function flush() {
          this._sheet.flush();
          this._sheet.inject();
          this._fromServer = undefined;
          this._indices = {};
          this._instancesCounts = {};
        };
        _proto.cssRules = function cssRules() {
          var _this = this;
          var fromServer = this._fromServer ? Object.keys(this._fromServer).map((function(styleId) {
            return [ styleId, _this._fromServer[styleId] ];
          })) : [];
          var cssRules = this._sheet.cssRules();
          return fromServer.concat(Object.keys(this._indices).map((function(styleId) {
            return [ styleId, _this._indices[styleId].map((function(index) {
              return cssRules[index].cssText;
            })).join(_this._optimizeForSpeed ? "" : "\n") ];
          })).filter((function(rule) {
            return Boolean(rule[1]);
          })));
        };
        _proto.styles = function styles(options) {
          return mapRulesToStyle(this.cssRules(), options);
        };
        _proto.getIdAndRules = function getIdAndRules(props) {
          var css = props.children, dynamic = props.dynamic, id = props.id;
          if (dynamic) {
            var styleId = computeId(id, dynamic);
            return {
              styleId,
              rules: Array.isArray(css) ? css.map((function(rule) {
                return computeSelector(styleId, rule);
              })) : [ computeSelector(styleId, css) ]
            };
          }
          return {
            styleId: computeId(id),
            rules: Array.isArray(css) ? css : [ css ]
          };
        };
        _proto.selectFromServer = function selectFromServer() {
          var elements = Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]'));
          return elements.reduce((function(acc, element) {
            var id = element.id.slice(2);
            acc[id] = element;
            return acc;
          }), {});
        };
        return StyleSheetRegistry;
      }();
      function invariant(condition, message) {
        if (!condition) {
          throw new Error("StyleSheetRegistry: " + message + ".");
        }
      }
      var StyleSheetContext = React.createContext(null);
      StyleSheetContext.displayName = "StyleSheetContext";
      function createStyleRegistry() {
        return new StyleSheetRegistry;
      }
      function StyleRegistry(param) {
        var configuredRegistry = param.registry, children = param.children;
        var rootRegistry = React.useContext(StyleSheetContext);
        var ref = React.useState((function() {
          return rootRegistry || configuredRegistry || createStyleRegistry();
        })), registry = ref[0];
        return React__default["default"].createElement(StyleSheetContext.Provider, {
          value: registry
        }, children);
      }
      function useStyleRegistry() {
        return React.useContext(StyleSheetContext);
      }
      var useInsertionEffect = React__default["default"].useInsertionEffect || React.useLayoutEffect;
      var defaultRegistry = typeof window !== "undefined" ? createStyleRegistry() : undefined;
      function JSXStyle(props) {
        var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();
        var insertionEffectCalled = React.useRef(false);
        if (!registry) {
          return null;
        }
        if (typeof window === "undefined") {
          registry.add(props);
          return null;
        }
        useInsertionEffect((function() {
          if (!document.head) {
            return;
          }
          registry.add(props);
          insertionEffectCalled.current = true;
          return function() {
            insertionEffectCalled.current = false;
            registry.remove(props);
          };
        }), [ props.id, String(props.dynamic) ]);
        React.useLayoutEffect((function() {
          if (!document.head || insertionEffectCalled.current) {
            return;
          }
          registry.add(props);
          return function() {
            registry.remove(props);
          };
        }), [ props.id, String(props.dynamic) ]);
        return null;
      }
      JSXStyle.dynamic = function(info) {
        return info.map((function(tagInfo) {
          var baseId = tagInfo[0];
          var props = tagInfo[1];
          return computeId(baseId, props);
        })).join(" ");
      };
      __webpack_unused_export__ = StyleRegistry;
      __webpack_unused_export__ = createStyleRegistry;
      exports.style = JSXStyle;
      __webpack_unused_export__ = useStyleRegistry;
    },
    8111(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = __webpack_require__(1292).style;
    },
    5377(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var Buffer = __webpack_require__(2861).Buffer;
      var isArray = __webpack_require__(4634);
      var typedArrayBuffer = __webpack_require__(4372);
      var isView = ArrayBuffer.isView || function isView(obj) {
        try {
          typedArrayBuffer(obj);
          return true;
        } catch (e) {
          return false;
        }
      };
      var useUint8Array = typeof Uint8Array !== "undefined";
      var useArrayBuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
      var useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);
      module.exports = function toBuffer(data, encoding) {
        if (Buffer.isBuffer(data)) {
          if (data.constructor && !("isBuffer" in data)) {
            return Buffer.from(data);
          }
          return data;
        }
        if (typeof data === "string") {
          return Buffer.from(data, encoding);
        }
        if (useArrayBuffer && isView(data)) {
          if (data.byteLength === 0) {
            return Buffer.alloc(0);
          }
          if (useFromArrayBuffer) {
            var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
            if (res.byteLength === data.byteLength) {
              return res;
            }
          }
          var uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
          var result = Buffer.from(uint8);
          if (result.length === data.byteLength) {
            return result;
          }
        }
        if (useUint8Array && data instanceof Uint8Array) {
          return Buffer.from(data);
        }
        var isArr = isArray(data);
        if (isArr) {
          for (var i = 0; i < data.length; i += 1) {
            var x = data[i];
            if (typeof x !== "number" || x < 0 || x > 255 || ~~x !== x) {
              throw new RangeError("Array items must be numbers in the range 0-255.");
            }
          }
        }
        if (isArr || Buffer.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === "function" && data.constructor.isBuffer(data)) {
          return Buffer.from(data);
        }
        throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');
      };
    },
    4372(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var $TypeError = __webpack_require__(9675);
      var callBound = __webpack_require__(6556);
      var $typedArrayBuffer = callBound("TypedArray.prototype.buffer", true);
      var isTypedArray = __webpack_require__(5680);
      module.exports = $typedArrayBuffer || function typedArrayBuffer(x) {
        if (!isTypedArray(x)) {
          throw new $TypeError("Not a Typed Array");
        }
        return x.buffer;
      };
    },
    4643(module, __unused_webpack_exports, __webpack_require__) {
      module.exports = deprecate;
      function deprecate(fn, msg) {
        if (config("noDeprecation")) {
          return fn;
        }
        var warned = false;
        function deprecated() {
          if (!warned) {
            if (config("throwDeprecation")) {
              throw new Error(msg);
            } else if (config("traceDeprecation")) {
              console.trace(msg);
            } else {
              console.warn(msg);
            }
            warned = true;
          }
          return fn.apply(this, arguments);
        }
        return deprecated;
      }
      function config(name) {
        try {
          if (!__webpack_require__.g.localStorage) return false;
        } catch (_) {
          return false;
        }
        var val = __webpack_require__.g.localStorage[name];
        if (null == val) return false;
        return String(val).toLowerCase() === "true";
      }
    },
    7296(module) {
      module.exports = {
        area: true,
        base: true,
        br: true,
        col: true,
        embed: true,
        hr: true,
        img: true,
        input: true,
        link: true,
        meta: true,
        param: true,
        source: true,
        track: true,
        wbr: true
      };
    },
    3988(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = void 0;
      var _default = exports["default"] = function _default(aliases) {
        return function() {
          return function(next) {
            return function(action) {
              var alias = aliases[action.type];
              if (alias) {
                return next(alias(action));
              }
              return next(action);
            };
          };
        };
      };
    },
    9529(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.STATE_TYPE = exports.PATCH_STATE_TYPE = exports.FETCH_STATE_TYPE = exports.DISPATCH_TYPE = exports.DEFAULT_CHANNEL_NAME = void 0;
      var DISPATCH_TYPE = exports.DISPATCH_TYPE = "webext.dispatch";
      var FETCH_STATE_TYPE = exports.FETCH_STATE_TYPE = "webext.fetch_state";
      var STATE_TYPE = exports.STATE_TYPE = "webext.state";
      var PATCH_STATE_TYPE = exports.PATCH_STATE_TYPE = "webext.patch_state";
      var DEFAULT_CHANNEL_NAME = exports.DEFAULT_CHANNEL_NAME = "webext.channel";
    },
    3207(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      var __webpack_unused_export__;
      __webpack_unused_export__ = {
        value: true
      };
      Object.defineProperty(exports, "il", {
        enumerable: true,
        get: function get() {
          return _Store["default"];
        }
      });
      Object.defineProperty(exports, "nK", {
        enumerable: true,
        get: function get() {
          return _alias["default"];
        }
      });
      __webpack_unused_export__ = {
        enumerable: true,
        get: function get() {
          return _applyMiddleware["default"];
        }
      };
      Object.defineProperty(exports, "Iq", {
        enumerable: true,
        get: function get() {
          return _wrapStore["default"];
        }
      });
      var _Store = _interopRequireDefault(__webpack_require__(1732));
      var _applyMiddleware = _interopRequireDefault(__webpack_require__(9449));
      var _wrapStore = _interopRequireDefault(__webpack_require__(6745));
      var _alias = _interopRequireDefault(__webpack_require__(3988));
      function _interopRequireDefault(e) {
        return e && e.__esModule ? e : {
          default: e
        };
      }
    },
    8571(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.createDeferredListener = void 0;
      var createDeferredListener = exports.createDeferredListener = function createDeferredListener(filter) {
        var resolve = function resolve() {};
        var fnPromise = new Promise((function(resolve_) {
          return resolve = resolve_;
        }));
        var listener = function listener(message, sender, sendResponse) {
          if (!filter(message, sender, sendResponse)) {
            return;
          }
          fnPromise.then((function(fn) {
            fn(message, sender, sendResponse);
          }));
          return true;
        };
        return {
          setListener: resolve,
          listener
        };
      };
    },
    7575(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.withSerializer = exports.withDeserializer = exports.noop = void 0;
      function _typeof(o) {
        "@babel/helpers - typeof";
        return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
          return typeof o;
        } : function(o) {
          return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
        }, _typeof(o);
      }
      function ownKeys(e, r) {
        var t = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
          var o = Object.getOwnPropertySymbols(e);
          r && (o = o.filter((function(r) {
            return Object.getOwnPropertyDescriptor(e, r).enumerable;
          }))), t.push.apply(t, o);
        }
        return t;
      }
      function _objectSpread(e) {
        for (var r = 1; r < arguments.length; r++) {
          var t = null != arguments[r] ? arguments[r] : {};
          r % 2 ? ownKeys(Object(t), !0).forEach((function(r) {
            _defineProperty(e, r, t[r]);
          })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach((function(r) {
            Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
          }));
        }
        return e;
      }
      function _defineProperty(e, r, t) {
        return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
          value: t,
          enumerable: !0,
          configurable: !0,
          writable: !0
        }) : e[r] = t, e;
      }
      function _toPropertyKey(t) {
        var i = _toPrimitive(t, "string");
        return "symbol" == _typeof(i) ? i : i + "";
      }
      function _toPrimitive(t, r) {
        if ("object" != _typeof(t) || !t) return t;
        var e = t[Symbol.toPrimitive];
        if (void 0 !== e) {
          var i = e.call(t, r || "default");
          if ("object" != _typeof(i)) return i;
          throw new TypeError("@@toPrimitive must return a primitive value.");
        }
        return ("string" === r ? String : Number)(t);
      }
      var noop = exports.noop = function noop(payload) {
        return payload;
      };
      var transformPayload = function transformPayload(message) {
        var transformer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
        return _objectSpread(_objectSpread({}, message), message.payload ? {
          payload: transformer(message.payload)
        } : {});
      };
      var deserializeListener = function deserializeListener(listener) {
        var deserializer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
        var shouldDeserialize = arguments.length > 2 ? arguments[2] : undefined;
        if (shouldDeserialize) {
          return function(message) {
            for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
              args[_key - 1] = arguments[_key];
            }
            if (shouldDeserialize.apply(void 0, [ message ].concat(args))) {
              return listener.apply(void 0, [ transformPayload(message, deserializer) ].concat(args));
            }
            return listener.apply(void 0, [ message ].concat(args));
          };
        }
        return function(message) {
          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
            args[_key2 - 1] = arguments[_key2];
          }
          return listener.apply(void 0, [ transformPayload(message, deserializer) ].concat(args));
        };
      };
      var withDeserializer = exports.withDeserializer = function withDeserializer() {
        var deserializer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;
        return function(addListenerFn) {
          return function(listener, shouldDeserialize) {
            return addListenerFn(deserializeListener(listener, deserializer, shouldDeserialize));
          };
        };
      };
      var withSerializer = exports.withSerializer = function withSerializer() {
        var serializer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;
        return function(sendMessageFn) {
          var messageArgIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
          return function() {
            for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
              args[_key3] = arguments[_key3];
            }
            if (args.length <= messageArgIndex) {
              throw new Error("Message in request could not be serialized. " + "Expected message in position ".concat(messageArgIndex, " but only received ").concat(args.length, " args."));
            }
            args[messageArgIndex] = transformPayload(args[messageArgIndex], serializer);
            return sendMessageFn.apply(void 0, args);
          };
        };
      };
    },
    1732(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = void 0;
      var _lodash = _interopRequireDefault(__webpack_require__(368));
      var _constants = __webpack_require__(9529);
      var _serialization = __webpack_require__(7575);
      var _patch = _interopRequireDefault(__webpack_require__(3807));
      var _util = __webpack_require__(6183);
      function _interopRequireDefault(e) {
        return e && e.__esModule ? e : {
          default: e
        };
      }
      function _typeof(o) {
        "@babel/helpers - typeof";
        return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
          return typeof o;
        } : function(o) {
          return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
        }, _typeof(o);
      }
      function _classCallCheck(a, n) {
        if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
      }
      function _defineProperties(e, r) {
        for (var t = 0; t < r.length; t++) {
          var o = r[t];
          o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), 
          Object.defineProperty(e, _toPropertyKey(o.key), o);
        }
      }
      function _createClass(e, r, t) {
        return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
          writable: !1
        }), e;
      }
      function _toPropertyKey(t) {
        var i = _toPrimitive(t, "string");
        return "symbol" == _typeof(i) ? i : i + "";
      }
      function _toPrimitive(t, r) {
        if ("object" != _typeof(t) || !t) return t;
        var e = t[Symbol.toPrimitive];
        if (void 0 !== e) {
          var i = e.call(t, r || "default");
          if ("object" != _typeof(i)) return i;
          throw new TypeError("@@toPrimitive must return a primitive value.");
        }
        return ("string" === r ? String : Number)(t);
      }
      var backgroundErrPrefix = "\nLooks like there is an error in the background page. " + "You might want to inspect your background page for more details.\n";
      var defaultOpts = {
        channelName: _constants.DEFAULT_CHANNEL_NAME,
        state: {},
        serializer: _serialization.noop,
        deserializer: _serialization.noop,
        patchStrategy: _patch["default"]
      };
      var Store = function() {
        function Store() {
          var _this = this;
          var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOpts, _ref$channelName = _ref.channelName, channelName = _ref$channelName === void 0 ? defaultOpts.channelName : _ref$channelName, _ref$state = _ref.state, state = _ref$state === void 0 ? defaultOpts.state : _ref$state, _ref$serializer = _ref.serializer, serializer = _ref$serializer === void 0 ? defaultOpts.serializer : _ref$serializer, _ref$deserializer = _ref.deserializer, deserializer = _ref$deserializer === void 0 ? defaultOpts.deserializer : _ref$deserializer, _ref$patchStrategy = _ref.patchStrategy, patchStrategy = _ref$patchStrategy === void 0 ? defaultOpts.patchStrategy : _ref$patchStrategy;
          _classCallCheck(this, Store);
          if (!channelName) {
            throw new Error("channelName is required in options");
          }
          if (typeof serializer !== "function") {
            throw new Error("serializer must be a function");
          }
          if (typeof deserializer !== "function") {
            throw new Error("deserializer must be a function");
          }
          if (typeof patchStrategy !== "function") {
            throw new Error("patchStrategy must be one of the included patching strategies or a custom patching function");
          }
          this.channelName = channelName;
          this.readyResolved = false;
          this.readyPromise = new Promise((function(resolve) {
            return _this.readyResolve = resolve;
          }));
          this.browserAPI = (0, _util.getBrowserAPI)();
          this.initializeStore = this.initializeStore.bind(this);
          this.browserAPI.runtime.sendMessage({
            type: _constants.FETCH_STATE_TYPE,
            channelName
          }, undefined, this.initializeStore);
          this.deserializer = deserializer;
          this.serializedPortListener = (0, _serialization.withDeserializer)(deserializer)((function() {
            var _this$browserAPI$runt;
            return (_this$browserAPI$runt = _this.browserAPI.runtime.onMessage).addListener.apply(_this$browserAPI$runt, arguments);
          }));
          this.serializedMessageSender = (0, _serialization.withSerializer)(serializer)((function() {
            var _this$browserAPI$runt2;
            return (_this$browserAPI$runt2 = _this.browserAPI.runtime).sendMessage.apply(_this$browserAPI$runt2, arguments);
          }));
          this.listeners = [];
          this.state = state;
          this.patchStrategy = patchStrategy;
          var shouldDeserialize = function shouldDeserialize(message) {
            return Boolean(message) && typeof message.type === "string" && message.channelName === _this.channelName;
          };
          this.serializedPortListener((function(message) {
            if (!message || message.channelName !== _this.channelName) {
              return;
            }
            switch (message.type) {
             case _constants.STATE_TYPE:
              _this.replaceState(message.payload);
              if (!_this.readyResolved) {
                _this.readyResolved = true;
                _this.readyResolve();
              }
              break;

             case _constants.PATCH_STATE_TYPE:
              _this.patchState(message.payload);
              break;

             default:
            }
          }), shouldDeserialize);
          this.dispatch = this.dispatch.bind(this);
          this.getState = this.getState.bind(this);
          this.subscribe = this.subscribe.bind(this);
        }
        return _createClass(Store, [ {
          key: "ready",
          value: function ready() {
            var cb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
            if (cb !== null) {
              return this.readyPromise.then(cb);
            }
            return this.readyPromise;
          }
        }, {
          key: "subscribe",
          value: function subscribe(listener) {
            var _this2 = this;
            this.listeners.push(listener);
            return function() {
              _this2.listeners = _this2.listeners.filter((function(l) {
                return l !== listener;
              }));
            };
          }
        }, {
          key: "patchState",
          value: function patchState(difference) {
            if (!this.readyResolved) {
              return;
            }
            this.state = this.patchStrategy(this.state, difference);
            this.listeners.forEach((function(l) {
              return l();
            }));
          }
        }, {
          key: "replaceState",
          value: function replaceState(state) {
            this.state = state;
            this.listeners.forEach((function(l) {
              return l();
            }));
          }
        }, {
          key: "getState",
          value: function getState() {
            return this.state;
          }
        }, {
          key: "replaceReducer",
          value: function replaceReducer() {
            return;
          }
        }, {
          key: "dispatch",
          value: function dispatch(data) {
            var _this3 = this;
            return new Promise((function(resolve, reject) {
              _this3.serializedMessageSender({
                type: _constants.DISPATCH_TYPE,
                channelName: _this3.channelName,
                payload: data
              }, null, (function(resp) {
                if (!resp) {
                  var _error = _this3.browserAPI.runtime.lastError;
                  var bgErr = new Error("".concat(backgroundErrPrefix).concat(_error));
                  reject((0, _lodash["default"])(bgErr, _error));
                  return;
                }
                var error = resp.error;
                var value = resp.value;
                if (typeof _this3.deserializer !== "undefined") {
                  try {
                    value = _this3.deserializer(value);
                  } catch (error) {}
                }
                if (error) {
                  var _bgErr = new Error("".concat(backgroundErrPrefix).concat(error));
                  reject((0, _lodash["default"])(_bgErr, error));
                } else {
                  resolve(value && value.payload);
                }
              }));
            }));
          }
        }, {
          key: "initializeStore",
          value: function initializeStore(message) {
            if (message && message.type === _constants.FETCH_STATE_TYPE) {
              this.replaceState(this.deserializer(message.payload));
              if (!this.readyResolved) {
                this.readyResolved = true;
                this.readyResolve();
              }
            }
          }
        } ]);
      }();
      var _default = exports["default"] = Store;
    },
    9449(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = applyMiddleware;
      function _toConsumableArray(r) {
        return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
      }
      function _nonIterableSpread() {
        throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
      }
      function _unsupportedIterableToArray(r, a) {
        if (r) {
          if ("string" == typeof r) return _arrayLikeToArray(r, a);
          var t = {}.toString.call(r).slice(8, -1);
          return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
        }
      }
      function _iterableToArray(r) {
        if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
      }
      function _arrayWithoutHoles(r) {
        if (Array.isArray(r)) return _arrayLikeToArray(r);
      }
      function _arrayLikeToArray(r, a) {
        (null == a || a > r.length) && (a = r.length);
        for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
        return n;
      }
      function compose() {
        for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
          funcs[_key] = arguments[_key];
        }
        if (funcs.length === 0) {
          return function(arg) {
            return arg;
          };
        }
        if (funcs.length === 1) {
          return funcs[0];
        }
        return funcs.reduce((function(a, b) {
          return function() {
            return a(b.apply(void 0, arguments));
          };
        }));
      }
      function applyMiddleware(store) {
        for (var _len2 = arguments.length, middlewares = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
          middlewares[_key2 - 1] = arguments[_key2];
        }
        var _dispatch = function dispatch() {
          throw new Error("Dispatching while constructing your middleware is not allowed. " + "Other middleware would not be applied to this dispatch.");
        };
        var middlewareAPI = {
          getState: store.getState.bind(store),
          dispatch: function dispatch() {
            return _dispatch.apply(void 0, arguments);
          }
        };
        middlewares = (middlewares || []).map((function(middleware) {
          return middleware(middlewareAPI);
        }));
        _dispatch = compose.apply(void 0, _toConsumableArray(middlewares))(store.dispatch);
        store.dispatch = _dispatch;
        return store;
      }
    },
    140(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.DIFF_STATUS_UPDATED = exports.DIFF_STATUS_REMOVED = exports.DIFF_STATUS_KEYS_UPDATED = exports.DIFF_STATUS_ARRAY_UPDATED = void 0;
      var DIFF_STATUS_UPDATED = exports.DIFF_STATUS_UPDATED = "updated";
      var DIFF_STATUS_REMOVED = exports.DIFF_STATUS_REMOVED = "removed";
      var DIFF_STATUS_KEYS_UPDATED = exports.DIFF_STATUS_KEYS_UPDATED = "updated_keys";
      var DIFF_STATUS_ARRAY_UPDATED = exports.DIFF_STATUS_ARRAY_UPDATED = "updated_array";
    },
    8642(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = shallowDiff;
      var _constants = __webpack_require__(140);
      function shallowDiff(oldObj, newObj) {
        var difference = [];
        Object.keys(newObj).forEach((function(key) {
          if (oldObj[key] !== newObj[key]) {
            difference.push({
              key,
              value: newObj[key],
              change: _constants.DIFF_STATUS_UPDATED
            });
          }
        }));
        Object.keys(oldObj).forEach((function(key) {
          if (!newObj.hasOwnProperty(key)) {
            difference.push({
              key,
              change: _constants.DIFF_STATUS_REMOVED
            });
          }
        }));
        return difference;
      }
    },
    3807(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = _default;
      var _constants = __webpack_require__(140);
      function _default(obj, difference) {
        var newObj = Object.assign({}, obj);
        difference.forEach((function(_ref) {
          var change = _ref.change, key = _ref.key, value = _ref.value;
          switch (change) {
           case _constants.DIFF_STATUS_UPDATED:
            newObj[key] = value;
            break;

           case _constants.DIFF_STATUS_REMOVED:
            Reflect.deleteProperty(newObj, key);
            break;

           default:
          }
        }));
        return newObj;
      }
    },
    6183(__unused_webpack_module, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports.getBrowserAPI = getBrowserAPI;
      function getBrowserAPI() {
        var api;
        try {
          api = self.chrome || self.browser || browser;
        } catch (error) {
          api = browser;
        }
        if (!api) {
          throw new Error("Browser API is not present");
        }
        return api;
      }
    },
    6745(__unused_webpack_module, exports, __webpack_require__) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
      exports["default"] = void 0;
      var _constants = __webpack_require__(9529);
      var _serialization = __webpack_require__(7575);
      var _util = __webpack_require__(6183);
      var _diff = _interopRequireDefault(__webpack_require__(8642));
      var _listener = __webpack_require__(8571);
      function _interopRequireDefault(e) {
        return e && e.__esModule ? e : {
          default: e
        };
      }
      function _createForOfIteratorHelper(r, e) {
        var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
        if (!t) {
          if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
            t && (r = t);
            var _n = 0, F = function F() {};
            return {
              s: F,
              n: function n() {
                return _n >= r.length ? {
                  done: !0
                } : {
                  done: !1,
                  value: r[_n++]
                };
              },
              e: function e(r) {
                throw r;
              },
              f: F
            };
          }
          throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
        }
        var o, a = !0, u = !1;
        return {
          s: function s() {
            t = t.call(r);
          },
          n: function n() {
            var r = t.next();
            return a = r.done, r;
          },
          e: function e(r) {
            u = !0, o = r;
          },
          f: function f() {
            try {
              a || null == t["return"] || t["return"]();
            } finally {
              if (u) throw o;
            }
          }
        };
      }
      function _unsupportedIterableToArray(r, a) {
        if (r) {
          if ("string" == typeof r) return _arrayLikeToArray(r, a);
          var t = {}.toString.call(r).slice(8, -1);
          return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
        }
      }
      function _arrayLikeToArray(r, a) {
        (null == a || a > r.length) && (a = r.length);
        for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
        return n;
      }
      var promiseResponder = function promiseResponder(dispatchResult, send) {
        Promise.resolve(dispatchResult).then((function(res) {
          send({
            error: null,
            value: res
          });
        }))["catch"]((function(err) {
          console.error("error dispatching result:", err);
          send({
            error: err.message,
            value: null
          });
        }));
      };
      var defaultOpts = {
        channelName: _constants.DEFAULT_CHANNEL_NAME,
        dispatchResponder: promiseResponder,
        serializer: _serialization.noop,
        deserializer: _serialization.noop,
        diffStrategy: _diff["default"]
      };
      var _default = exports["default"] = function _default() {
        var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOpts, _ref$channelName = _ref.channelName, channelName = _ref$channelName === void 0 ? defaultOpts.channelName : _ref$channelName;
        var browserAPI = (0, _util.getBrowserAPI)();
        var filterStateMessages = function filterStateMessages(message) {
          return message.type === _constants.FETCH_STATE_TYPE && message.channelName === channelName;
        };
        var filterActionMessages = function filterActionMessages(message) {
          return message.type === _constants.DISPATCH_TYPE && message.channelName === channelName;
        };
        var stateProviderListener = (0, _listener.createDeferredListener)(filterStateMessages);
        var actionListener = (0, _listener.createDeferredListener)(filterActionMessages);
        browserAPI.runtime.onMessage.addListener(stateProviderListener.listener);
        browserAPI.runtime.onMessage.addListener(actionListener.listener);
        return function(store) {
          var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOpts, _ref2$dispatchRespond = _ref2.dispatchResponder, dispatchResponder = _ref2$dispatchRespond === void 0 ? defaultOpts.dispatchResponder : _ref2$dispatchRespond, _ref2$serializer = _ref2.serializer, serializer = _ref2$serializer === void 0 ? defaultOpts.serializer : _ref2$serializer, _ref2$deserializer = _ref2.deserializer, deserializer = _ref2$deserializer === void 0 ? defaultOpts.deserializer : _ref2$deserializer, _ref2$diffStrategy = _ref2.diffStrategy, diffStrategy = _ref2$diffStrategy === void 0 ? defaultOpts.diffStrategy : _ref2$diffStrategy;
          if (typeof serializer !== "function") {
            throw new Error("serializer must be a function");
          }
          if (typeof deserializer !== "function") {
            throw new Error("deserializer must be a function");
          }
          if (typeof diffStrategy !== "function") {
            throw new Error("diffStrategy must be one of the included diffing strategies or a custom diff function");
          }
          var dispatchResponse = function dispatchResponse(request, sender, sendResponse) {
            var action = Object.assign({}, request.payload, {
              _sender: sender
            });
            var dispatchResult = null;
            try {
              dispatchResult = store.dispatch(action);
            } catch (e) {
              dispatchResult = Promise.reject(e.message);
              console.error(e);
            }
            dispatchResponder(dispatchResult, sendResponse);
          };
          var serializedMessagePoster = (0, _serialization.withSerializer)(serializer)((function() {
            var _browserAPI$runtime;
            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
              args[_key] = arguments[_key];
            }
            var onErrorCallback = function onErrorCallback() {
              if (browserAPI.runtime.lastError) {}
            };
            (_browserAPI$runtime = browserAPI.runtime).sendMessage.apply(_browserAPI$runtime, args.concat([ onErrorCallback ]));
            return browserAPI.tabs.query({}, (function(tabs) {
              var _iterator = _createForOfIteratorHelper(tabs), _step;
              try {
                for (_iterator.s(); !(_step = _iterator.n()).done; ) {
                  var _browserAPI$tabs;
                  var tab = _step.value;
                  (_browserAPI$tabs = browserAPI.tabs).sendMessage.apply(_browserAPI$tabs, [ tab.id ].concat(args, [ onErrorCallback ]));
                }
              } catch (err) {
                _iterator.e(err);
              } finally {
                _iterator.f();
              }
            }));
          }));
          var currentState = store.getState();
          var forceUpdate = function forceUpdate(newState, diff) {
            currentState = newState;
            serializedMessagePoster({
              type: _constants.PATCH_STATE_TYPE,
              payload: diff,
              channelName
            });
          };
          var patchState = function patchState() {
            var newState = store.getState();
            var diff = diffStrategy(currentState, newState, forceUpdate);
            if (diff.length) {
              currentState = newState;
              serializedMessagePoster({
                type: _constants.PATCH_STATE_TYPE,
                payload: diff,
                channelName
              });
            }
          };
          store.subscribe(patchState);
          serializedMessagePoster({
            type: _constants.STATE_TYPE,
            payload: currentState,
            channelName
          });
          stateProviderListener.setListener((function(request, sender, sendResponse) {
            var state = store.getState();
            sendResponse({
              type: _constants.FETCH_STATE_TYPE,
              payload: serializer(state)
            });
          }));
          var withPayloadDeserializer = (0, _serialization.withDeserializer)(deserializer);
          withPayloadDeserializer(actionListener.setListener)(dispatchResponse, filterActionMessages);
        };
      };
    },
    6815(module, exports) {
      var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
      (function(global, factory) {
        if (true) {
          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ module ], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, 
          __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, 
          __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
        } else {
          var mod;
        }
      })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, (function(module) {
        "use strict";
        if (!(globalThis.chrome && globalThis.chrome.runtime && globalThis.chrome.runtime.id)) {
          throw new Error("This script should only be loaded in a browser extension.");
        }
        if (!(globalThis.browser && globalThis.browser.runtime && globalThis.browser.runtime.id)) {
          const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = "The message port closed before a response was received.";
          const wrapAPIs = extensionAPIs => {
            const apiMetadata = {
              alarms: {
                clear: {
                  minArgs: 0,
                  maxArgs: 1
                },
                clearAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                get: {
                  minArgs: 0,
                  maxArgs: 1
                },
                getAll: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              bookmarks: {
                create: {
                  minArgs: 1,
                  maxArgs: 1
                },
                get: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getChildren: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getRecent: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getSubTree: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getTree: {
                  minArgs: 0,
                  maxArgs: 0
                },
                move: {
                  minArgs: 2,
                  maxArgs: 2
                },
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeTree: {
                  minArgs: 1,
                  maxArgs: 1
                },
                search: {
                  minArgs: 1,
                  maxArgs: 1
                },
                update: {
                  minArgs: 2,
                  maxArgs: 2
                }
              },
              browserAction: {
                disable: {
                  minArgs: 0,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                enable: {
                  minArgs: 0,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                getBadgeBackgroundColor: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getBadgeText: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getPopup: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getTitle: {
                  minArgs: 1,
                  maxArgs: 1
                },
                openPopup: {
                  minArgs: 0,
                  maxArgs: 0
                },
                setBadgeBackgroundColor: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                setBadgeText: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                setIcon: {
                  minArgs: 1,
                  maxArgs: 1
                },
                setPopup: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                setTitle: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                }
              },
              browsingData: {
                remove: {
                  minArgs: 2,
                  maxArgs: 2
                },
                removeCache: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeCookies: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeDownloads: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeFormData: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeHistory: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeLocalStorage: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removePasswords: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removePluginData: {
                  minArgs: 1,
                  maxArgs: 1
                },
                settings: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              commands: {
                getAll: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              contextMenus: {
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                update: {
                  minArgs: 2,
                  maxArgs: 2
                }
              },
              cookies: {
                get: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getAll: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getAllCookieStores: {
                  minArgs: 0,
                  maxArgs: 0
                },
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                set: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              devtools: {
                inspectedWindow: {
                  eval: {
                    minArgs: 1,
                    maxArgs: 2,
                    singleCallbackArg: false
                  }
                },
                panels: {
                  create: {
                    minArgs: 3,
                    maxArgs: 3,
                    singleCallbackArg: true
                  },
                  elements: {
                    createSidebarPane: {
                      minArgs: 1,
                      maxArgs: 1
                    }
                  }
                }
              },
              downloads: {
                cancel: {
                  minArgs: 1,
                  maxArgs: 1
                },
                download: {
                  minArgs: 1,
                  maxArgs: 1
                },
                erase: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getFileIcon: {
                  minArgs: 1,
                  maxArgs: 2
                },
                open: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                pause: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeFile: {
                  minArgs: 1,
                  maxArgs: 1
                },
                resume: {
                  minArgs: 1,
                  maxArgs: 1
                },
                search: {
                  minArgs: 1,
                  maxArgs: 1
                },
                show: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                }
              },
              extension: {
                isAllowedFileSchemeAccess: {
                  minArgs: 0,
                  maxArgs: 0
                },
                isAllowedIncognitoAccess: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              history: {
                addUrl: {
                  minArgs: 1,
                  maxArgs: 1
                },
                deleteAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                deleteRange: {
                  minArgs: 1,
                  maxArgs: 1
                },
                deleteUrl: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getVisits: {
                  minArgs: 1,
                  maxArgs: 1
                },
                search: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              i18n: {
                detectLanguage: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getAcceptLanguages: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              identity: {
                launchWebAuthFlow: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              idle: {
                queryState: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              management: {
                get: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                getSelf: {
                  minArgs: 0,
                  maxArgs: 0
                },
                setEnabled: {
                  minArgs: 2,
                  maxArgs: 2
                },
                uninstallSelf: {
                  minArgs: 0,
                  maxArgs: 1
                }
              },
              notifications: {
                clear: {
                  minArgs: 1,
                  maxArgs: 1
                },
                create: {
                  minArgs: 1,
                  maxArgs: 2
                },
                getAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                getPermissionLevel: {
                  minArgs: 0,
                  maxArgs: 0
                },
                update: {
                  minArgs: 2,
                  maxArgs: 2
                }
              },
              pageAction: {
                getPopup: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getTitle: {
                  minArgs: 1,
                  maxArgs: 1
                },
                hide: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                setIcon: {
                  minArgs: 1,
                  maxArgs: 1
                },
                setPopup: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                setTitle: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                },
                show: {
                  minArgs: 1,
                  maxArgs: 1,
                  fallbackToNoCallback: true
                }
              },
              permissions: {
                contains: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getAll: {
                  minArgs: 0,
                  maxArgs: 0
                },
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                request: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              runtime: {
                getBackgroundPage: {
                  minArgs: 0,
                  maxArgs: 0
                },
                getPlatformInfo: {
                  minArgs: 0,
                  maxArgs: 0
                },
                openOptionsPage: {
                  minArgs: 0,
                  maxArgs: 0
                },
                requestUpdateCheck: {
                  minArgs: 0,
                  maxArgs: 0
                },
                sendMessage: {
                  minArgs: 1,
                  maxArgs: 3
                },
                sendNativeMessage: {
                  minArgs: 2,
                  maxArgs: 2
                },
                setUninstallURL: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              sessions: {
                getDevices: {
                  minArgs: 0,
                  maxArgs: 1
                },
                getRecentlyClosed: {
                  minArgs: 0,
                  maxArgs: 1
                },
                restore: {
                  minArgs: 0,
                  maxArgs: 1
                }
              },
              storage: {
                local: {
                  clear: {
                    minArgs: 0,
                    maxArgs: 0
                  },
                  get: {
                    minArgs: 0,
                    maxArgs: 1
                  },
                  getBytesInUse: {
                    minArgs: 0,
                    maxArgs: 1
                  },
                  remove: {
                    minArgs: 1,
                    maxArgs: 1
                  },
                  set: {
                    minArgs: 1,
                    maxArgs: 1
                  }
                },
                managed: {
                  get: {
                    minArgs: 0,
                    maxArgs: 1
                  },
                  getBytesInUse: {
                    minArgs: 0,
                    maxArgs: 1
                  }
                },
                sync: {
                  clear: {
                    minArgs: 0,
                    maxArgs: 0
                  },
                  get: {
                    minArgs: 0,
                    maxArgs: 1
                  },
                  getBytesInUse: {
                    minArgs: 0,
                    maxArgs: 1
                  },
                  remove: {
                    minArgs: 1,
                    maxArgs: 1
                  },
                  set: {
                    minArgs: 1,
                    maxArgs: 1
                  }
                }
              },
              tabs: {
                captureVisibleTab: {
                  minArgs: 0,
                  maxArgs: 2
                },
                create: {
                  minArgs: 1,
                  maxArgs: 1
                },
                detectLanguage: {
                  minArgs: 0,
                  maxArgs: 1
                },
                discard: {
                  minArgs: 0,
                  maxArgs: 1
                },
                duplicate: {
                  minArgs: 1,
                  maxArgs: 1
                },
                executeScript: {
                  minArgs: 1,
                  maxArgs: 2
                },
                get: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getCurrent: {
                  minArgs: 0,
                  maxArgs: 0
                },
                getZoom: {
                  minArgs: 0,
                  maxArgs: 1
                },
                getZoomSettings: {
                  minArgs: 0,
                  maxArgs: 1
                },
                goBack: {
                  minArgs: 0,
                  maxArgs: 1
                },
                goForward: {
                  minArgs: 0,
                  maxArgs: 1
                },
                highlight: {
                  minArgs: 1,
                  maxArgs: 1
                },
                insertCSS: {
                  minArgs: 1,
                  maxArgs: 2
                },
                move: {
                  minArgs: 2,
                  maxArgs: 2
                },
                query: {
                  minArgs: 1,
                  maxArgs: 1
                },
                reload: {
                  minArgs: 0,
                  maxArgs: 2
                },
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                removeCSS: {
                  minArgs: 1,
                  maxArgs: 2
                },
                sendMessage: {
                  minArgs: 2,
                  maxArgs: 3
                },
                setZoom: {
                  minArgs: 1,
                  maxArgs: 2
                },
                setZoomSettings: {
                  minArgs: 1,
                  maxArgs: 2
                },
                update: {
                  minArgs: 1,
                  maxArgs: 2
                }
              },
              topSites: {
                get: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              webNavigation: {
                getAllFrames: {
                  minArgs: 1,
                  maxArgs: 1
                },
                getFrame: {
                  minArgs: 1,
                  maxArgs: 1
                }
              },
              webRequest: {
                handlerBehaviorChanged: {
                  minArgs: 0,
                  maxArgs: 0
                }
              },
              windows: {
                create: {
                  minArgs: 0,
                  maxArgs: 1
                },
                get: {
                  minArgs: 1,
                  maxArgs: 2
                },
                getAll: {
                  minArgs: 0,
                  maxArgs: 1
                },
                getCurrent: {
                  minArgs: 0,
                  maxArgs: 1
                },
                getLastFocused: {
                  minArgs: 0,
                  maxArgs: 1
                },
                remove: {
                  minArgs: 1,
                  maxArgs: 1
                },
                update: {
                  minArgs: 2,
                  maxArgs: 2
                }
              }
            };
            if (Object.keys(apiMetadata).length === 0) {
              throw new Error("api-metadata.json has not been included in browser-polyfill");
            }
            class DefaultWeakMap extends WeakMap {
              constructor(createItem, items = undefined) {
                super(items);
                this.createItem = createItem;
              }
              get(key) {
                if (!this.has(key)) {
                  this.set(key, this.createItem(key));
                }
                return super.get(key);
              }
            }
            const isThenable = value => value && typeof value === "object" && typeof value.then === "function";
            const makeCallback = (promise, metadata) => (...callbackArgs) => {
              if (extensionAPIs.runtime.lastError) {
                promise.reject(new Error(extensionAPIs.runtime.lastError.message));
              } else if (metadata.singleCallbackArg || callbackArgs.length <= 1 && metadata.singleCallbackArg !== false) {
                promise.resolve(callbackArgs[0]);
              } else {
                promise.resolve(callbackArgs);
              }
            };
            const pluralizeArguments = numArgs => numArgs == 1 ? "argument" : "arguments";
            const wrapAsyncFunction = (name, metadata) => function asyncFunctionWrapper(target, ...args) {
              if (args.length < metadata.minArgs) {
                throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);
              }
              if (args.length > metadata.maxArgs) {
                throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);
              }
              return new Promise(((resolve, reject) => {
                if (metadata.fallbackToNoCallback) {
                  try {
                    target[name](...args, makeCallback({
                      resolve,
                      reject
                    }, metadata));
                  } catch (cbError) {
                    console.warn(`${name} API method doesn't seem to support the callback parameter, ` + "falling back to call it without a callback: ", cbError);
                    target[name](...args);
                    metadata.fallbackToNoCallback = false;
                    metadata.noCallback = true;
                    resolve();
                  }
                } else if (metadata.noCallback) {
                  target[name](...args);
                  resolve();
                } else {
                  target[name](...args, makeCallback({
                    resolve,
                    reject
                  }, metadata));
                }
              }));
            };
            const wrapMethod = (target, method, wrapper) => new Proxy(method, {
              apply(targetMethod, thisObj, args) {
                return wrapper.call(thisObj, target, ...args);
              }
            });
            let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty);
            const wrapObject = (target, wrappers = {}, metadata = {}) => {
              let cache = Object.create(null);
              let handlers = {
                has(proxyTarget, prop) {
                  return prop in target || prop in cache;
                },
                get(proxyTarget, prop, receiver) {
                  if (prop in cache) {
                    return cache[prop];
                  }
                  if (!(prop in target)) {
                    return undefined;
                  }
                  let value = target[prop];
                  if (typeof value === "function") {
                    if (typeof wrappers[prop] === "function") {
                      value = wrapMethod(target, target[prop], wrappers[prop]);
                    } else if (hasOwnProperty(metadata, prop)) {
                      let wrapper = wrapAsyncFunction(prop, metadata[prop]);
                      value = wrapMethod(target, target[prop], wrapper);
                    } else {
                      value = value.bind(target);
                    }
                  } else if (typeof value === "object" && value !== null && (hasOwnProperty(wrappers, prop) || hasOwnProperty(metadata, prop))) {
                    value = wrapObject(value, wrappers[prop], metadata[prop]);
                  } else if (hasOwnProperty(metadata, "*")) {
                    value = wrapObject(value, wrappers[prop], metadata["*"]);
                  } else {
                    Object.defineProperty(cache, prop, {
                      configurable: true,
                      enumerable: true,
                      get() {
                        return target[prop];
                      },
                      set(value) {
                        target[prop] = value;
                      }
                    });
                    return value;
                  }
                  cache[prop] = value;
                  return value;
                },
                set(proxyTarget, prop, value, receiver) {
                  if (prop in cache) {
                    cache[prop] = value;
                  } else {
                    target[prop] = value;
                  }
                  return true;
                },
                defineProperty(proxyTarget, prop, desc) {
                  return Reflect.defineProperty(cache, prop, desc);
                },
                deleteProperty(proxyTarget, prop) {
                  return Reflect.deleteProperty(cache, prop);
                }
              };
              let proxyTarget = Object.create(target);
              return new Proxy(proxyTarget, handlers);
            };
            const wrapEvent = wrapperMap => ({
              addListener(target, listener, ...args) {
                target.addListener(wrapperMap.get(listener), ...args);
              },
              hasListener(target, listener) {
                return target.hasListener(wrapperMap.get(listener));
              },
              removeListener(target, listener) {
                target.removeListener(wrapperMap.get(listener));
              }
            });
            const onRequestFinishedWrappers = new DefaultWeakMap((listener => {
              if (typeof listener !== "function") {
                return listener;
              }
              return function onRequestFinished(req) {
                const wrappedReq = wrapObject(req, {}, {
                  getContent: {
                    minArgs: 0,
                    maxArgs: 0
                  }
                });
                listener(wrappedReq);
              };
            }));
            const onMessageWrappers = new DefaultWeakMap((listener => {
              if (typeof listener !== "function") {
                return listener;
              }
              return function onMessage(message, sender, sendResponse) {
                let didCallSendResponse = false;
                let wrappedSendResponse;
                let sendResponsePromise = new Promise((resolve => {
                  wrappedSendResponse = function(response) {
                    didCallSendResponse = true;
                    resolve(response);
                  };
                }));
                let result;
                try {
                  result = listener(message, sender, wrappedSendResponse);
                } catch (err) {
                  result = Promise.reject(err);
                }
                const isResultThenable = result !== true && isThenable(result);
                if (result !== true && !isResultThenable && !didCallSendResponse) {
                  return false;
                }
                const sendPromisedResult = promise => {
                  promise.then((msg => {
                    sendResponse(msg);
                  }), (error => {
                    let message;
                    if (error && (error instanceof Error || typeof error.message === "string")) {
                      message = error.message;
                    } else {
                      message = "An unexpected error occurred";
                    }
                    sendResponse({
                      __mozWebExtensionPolyfillReject__: true,
                      message
                    });
                  })).catch((err => {
                    console.error("Failed to send onMessage rejected reply", err);
                  }));
                };
                if (isResultThenable) {
                  sendPromisedResult(result);
                } else {
                  sendPromisedResult(sendResponsePromise);
                }
                return true;
              };
            }));
            const wrappedSendMessageCallback = ({reject, resolve}, reply) => {
              if (extensionAPIs.runtime.lastError) {
                if (extensionAPIs.runtime.lastError.message === CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE) {
                  resolve();
                } else {
                  reject(new Error(extensionAPIs.runtime.lastError.message));
                }
              } else if (reply && reply.__mozWebExtensionPolyfillReject__) {
                reject(new Error(reply.message));
              } else {
                resolve(reply);
              }
            };
            const wrappedSendMessage = (name, metadata, apiNamespaceObj, ...args) => {
              if (args.length < metadata.minArgs) {
                throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);
              }
              if (args.length > metadata.maxArgs) {
                throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);
              }
              return new Promise(((resolve, reject) => {
                const wrappedCb = wrappedSendMessageCallback.bind(null, {
                  resolve,
                  reject
                });
                args.push(wrappedCb);
                apiNamespaceObj.sendMessage(...args);
              }));
            };
            const staticWrappers = {
              devtools: {
                network: {
                  onRequestFinished: wrapEvent(onRequestFinishedWrappers)
                }
              },
              runtime: {
                onMessage: wrapEvent(onMessageWrappers),
                onMessageExternal: wrapEvent(onMessageWrappers),
                sendMessage: wrappedSendMessage.bind(null, "sendMessage", {
                  minArgs: 1,
                  maxArgs: 3
                })
              },
              tabs: {
                sendMessage: wrappedSendMessage.bind(null, "sendMessage", {
                  minArgs: 2,
                  maxArgs: 3
                })
              }
            };
            const settingMetadata = {
              clear: {
                minArgs: 1,
                maxArgs: 1
              },
              get: {
                minArgs: 1,
                maxArgs: 1
              },
              set: {
                minArgs: 1,
                maxArgs: 1
              }
            };
            apiMetadata.privacy = {
              network: {
                "*": settingMetadata
              },
              services: {
                "*": settingMetadata
              },
              websites: {
                "*": settingMetadata
              }
            };
            return wrapObject(extensionAPIs, staticWrappers, apiMetadata);
          };
          module.exports = wrapAPIs(chrome);
        } else {
          module.exports = globalThis.browser;
        }
      }));
    },
    5767(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var forEach = __webpack_require__(2682);
      var availableTypedArrays = __webpack_require__(9209);
      var callBind = __webpack_require__(487);
      var callBound = __webpack_require__(6556);
      var gOPD = __webpack_require__(5795);
      var getProto = __webpack_require__(3628);
      var $toString = callBound("Object.prototype.toString");
      var hasToStringTag = __webpack_require__(9092)();
      var g = typeof globalThis === "undefined" ? __webpack_require__.g : globalThis;
      var typedArrays = availableTypedArrays();
      var $slice = callBound("String.prototype.slice");
      var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) {
        for (var i = 0; i < array.length; i += 1) {
          if (array[i] === value) {
            return i;
          }
        }
        return -1;
      };
      var cache = {
        __proto__: null
      };
      if (hasToStringTag && gOPD && getProto) {
        forEach(typedArrays, (function(typedArray) {
          var arr = new g[typedArray];
          if (Symbol.toStringTag in arr && getProto) {
            var proto = getProto(arr);
            var descriptor = gOPD(proto, Symbol.toStringTag);
            if (!descriptor && proto) {
              var superProto = getProto(proto);
              descriptor = gOPD(superProto, Symbol.toStringTag);
            }
            cache["$" + typedArray] = callBind(descriptor.get);
          }
        }));
      } else {
        forEach(typedArrays, (function(typedArray) {
          var arr = new g[typedArray];
          var fn = arr.slice || arr.set;
          if (fn) {
            cache["$" + typedArray] = callBind(fn);
          }
        }));
      }
      var tryTypedArrays = function tryAllTypedArrays(value) {
        var found = false;
        forEach(cache, (function(getter, typedArray) {
          if (!found) {
            try {
              if ("$" + getter(value) === typedArray) {
                found = $slice(typedArray, 1);
              }
            } catch (e) {}
          }
        }));
        return found;
      };
      var trySlices = function tryAllSlices(value) {
        var found = false;
        forEach(cache, (function(getter, name) {
          if (!found) {
            try {
              getter(value);
              found = $slice(name, 1);
            } catch (e) {}
          }
        }));
        return found;
      };
      module.exports = function whichTypedArray(value) {
        if (!value || typeof value !== "object") {
          return false;
        }
        if (!hasToStringTag) {
          var tag = $slice($toString(value), 8, -1);
          if ($indexOf(typedArrays, tag) > -1) {
            return tag;
          }
          if (tag !== "Object") {
            return false;
          }
          return trySlices(value);
        }
        if (!gOPD) {
          return null;
        }
        return tryTypedArrays(value);
      };
    },
    2442(module) {
      var adjacency_graphs;
      adjacency_graphs = {
        qwerty: {
          "!": [ "`~", null, null, "2@", "qQ", null ],
          '"': [ ";:", "[{", "]}", null, null, "/?" ],
          "#": [ "2@", null, null, "4$", "eE", "wW" ],
          $: [ "3#", null, null, "5%", "rR", "eE" ],
          "%": [ "4$", null, null, "6^", "tT", "rR" ],
          "&": [ "6^", null, null, "8*", "uU", "yY" ],
          "'": [ ";:", "[{", "]}", null, null, "/?" ],
          "(": [ "8*", null, null, "0)", "oO", "iI" ],
          ")": [ "9(", null, null, "-_", "pP", "oO" ],
          "*": [ "7&", null, null, "9(", "iI", "uU" ],
          "+": [ "-_", null, null, null, "]}", "[{" ],
          ",": [ "mM", "kK", "lL", ".>", null, null ],
          "-": [ "0)", null, null, "=+", "[{", "pP" ],
          ".": [ ",<", "lL", ";:", "/?", null, null ],
          "/": [ ".>", ";:", "'\"", null, null, null ],
          0: [ "9(", null, null, "-_", "pP", "oO" ],
          1: [ "`~", null, null, "2@", "qQ", null ],
          2: [ "1!", null, null, "3#", "wW", "qQ" ],
          3: [ "2@", null, null, "4$", "eE", "wW" ],
          4: [ "3#", null, null, "5%", "rR", "eE" ],
          5: [ "4$", null, null, "6^", "tT", "rR" ],
          6: [ "5%", null, null, "7&", "yY", "tT" ],
          7: [ "6^", null, null, "8*", "uU", "yY" ],
          8: [ "7&", null, null, "9(", "iI", "uU" ],
          9: [ "8*", null, null, "0)", "oO", "iI" ],
          ":": [ "lL", "pP", "[{", "'\"", "/?", ".>" ],
          ";": [ "lL", "pP", "[{", "'\"", "/?", ".>" ],
          "<": [ "mM", "kK", "lL", ".>", null, null ],
          "=": [ "-_", null, null, null, "]}", "[{" ],
          ">": [ ",<", "lL", ";:", "/?", null, null ],
          "?": [ ".>", ";:", "'\"", null, null, null ],
          "@": [ "1!", null, null, "3#", "wW", "qQ" ],
          A: [ null, "qQ", "wW", "sS", "zZ", null ],
          B: [ "vV", "gG", "hH", "nN", null, null ],
          C: [ "xX", "dD", "fF", "vV", null, null ],
          D: [ "sS", "eE", "rR", "fF", "cC", "xX" ],
          E: [ "wW", "3#", "4$", "rR", "dD", "sS" ],
          F: [ "dD", "rR", "tT", "gG", "vV", "cC" ],
          G: [ "fF", "tT", "yY", "hH", "bB", "vV" ],
          H: [ "gG", "yY", "uU", "jJ", "nN", "bB" ],
          I: [ "uU", "8*", "9(", "oO", "kK", "jJ" ],
          J: [ "hH", "uU", "iI", "kK", "mM", "nN" ],
          K: [ "jJ", "iI", "oO", "lL", ",<", "mM" ],
          L: [ "kK", "oO", "pP", ";:", ".>", ",<" ],
          M: [ "nN", "jJ", "kK", ",<", null, null ],
          N: [ "bB", "hH", "jJ", "mM", null, null ],
          O: [ "iI", "9(", "0)", "pP", "lL", "kK" ],
          P: [ "oO", "0)", "-_", "[{", ";:", "lL" ],
          Q: [ null, "1!", "2@", "wW", "aA", null ],
          R: [ "eE", "4$", "5%", "tT", "fF", "dD" ],
          S: [ "aA", "wW", "eE", "dD", "xX", "zZ" ],
          T: [ "rR", "5%", "6^", "yY", "gG", "fF" ],
          U: [ "yY", "7&", "8*", "iI", "jJ", "hH" ],
          V: [ "cC", "fF", "gG", "bB", null, null ],
          W: [ "qQ", "2@", "3#", "eE", "sS", "aA" ],
          X: [ "zZ", "sS", "dD", "cC", null, null ],
          Y: [ "tT", "6^", "7&", "uU", "hH", "gG" ],
          Z: [ null, "aA", "sS", "xX", null, null ],
          "[": [ "pP", "-_", "=+", "]}", "'\"", ";:" ],
          "\\": [ "]}", null, null, null, null, null ],
          "]": [ "[{", "=+", null, "\\|", null, "'\"" ],
          "^": [ "5%", null, null, "7&", "yY", "tT" ],
          _: [ "0)", null, null, "=+", "[{", "pP" ],
          "`": [ null, null, null, "1!", null, null ],
          a: [ null, "qQ", "wW", "sS", "zZ", null ],
          b: [ "vV", "gG", "hH", "nN", null, null ],
          c: [ "xX", "dD", "fF", "vV", null, null ],
          d: [ "sS", "eE", "rR", "fF", "cC", "xX" ],
          e: [ "wW", "3#", "4$", "rR", "dD", "sS" ],
          f: [ "dD", "rR", "tT", "gG", "vV", "cC" ],
          g: [ "fF", "tT", "yY", "hH", "bB", "vV" ],
          h: [ "gG", "yY", "uU", "jJ", "nN", "bB" ],
          i: [ "uU", "8*", "9(", "oO", "kK", "jJ" ],
          j: [ "hH", "uU", "iI", "kK", "mM", "nN" ],
          k: [ "jJ", "iI", "oO", "lL", ",<", "mM" ],
          l: [ "kK", "oO", "pP", ";:", ".>", ",<" ],
          m: [ "nN", "jJ", "kK", ",<", null, null ],
          n: [ "bB", "hH", "jJ", "mM", null, null ],
          o: [ "iI", "9(", "0)", "pP", "lL", "kK" ],
          p: [ "oO", "0)", "-_", "[{", ";:", "lL" ],
          q: [ null, "1!", "2@", "wW", "aA", null ],
          r: [ "eE", "4$", "5%", "tT", "fF", "dD" ],
          s: [ "aA", "wW", "eE", "dD", "xX", "zZ" ],
          t: [ "rR", "5%", "6^", "yY", "gG", "fF" ],
          u: [ "yY", "7&", "8*", "iI", "jJ", "hH" ],
          v: [ "cC", "fF", "gG", "bB", null, null ],
          w: [ "qQ", "2@", "3#", "eE", "sS", "aA" ],
          x: [ "zZ", "sS", "dD", "cC", null, null ],
          y: [ "tT", "6^", "7&", "uU", "hH", "gG" ],
          z: [ null, "aA", "sS", "xX", null, null ],
          "{": [ "pP", "-_", "=+", "]}", "'\"", ";:" ],
          "|": [ "]}", null, null, null, null, null ],
          "}": [ "[{", "=+", null, "\\|", null, "'\"" ],
          "~": [ null, null, null, "1!", null, null ]
        },
        dvorak: {
          "!": [ "`~", null, null, "2@", "'\"", null ],
          '"': [ null, "1!", "2@", ",<", "aA", null ],
          "#": [ "2@", null, null, "4$", ".>", ",<" ],
          $: [ "3#", null, null, "5%", "pP", ".>" ],
          "%": [ "4$", null, null, "6^", "yY", "pP" ],
          "&": [ "6^", null, null, "8*", "gG", "fF" ],
          "'": [ null, "1!", "2@", ",<", "aA", null ],
          "(": [ "8*", null, null, "0)", "rR", "cC" ],
          ")": [ "9(", null, null, "[{", "lL", "rR" ],
          "*": [ "7&", null, null, "9(", "cC", "gG" ],
          "+": [ "/?", "]}", null, "\\|", null, "-_" ],
          ",": [ "'\"", "2@", "3#", ".>", "oO", "aA" ],
          "-": [ "sS", "/?", "=+", null, null, "zZ" ],
          ".": [ ",<", "3#", "4$", "pP", "eE", "oO" ],
          "/": [ "lL", "[{", "]}", "=+", "-_", "sS" ],
          0: [ "9(", null, null, "[{", "lL", "rR" ],
          1: [ "`~", null, null, "2@", "'\"", null ],
          2: [ "1!", null, null, "3#", ",<", "'\"" ],
          3: [ "2@", null, null, "4$", ".>", ",<" ],
          4: [ "3#", null, null, "5%", "pP", ".>" ],
          5: [ "4$", null, null, "6^", "yY", "pP" ],
          6: [ "5%", null, null, "7&", "fF", "yY" ],
          7: [ "6^", null, null, "8*", "gG", "fF" ],
          8: [ "7&", null, null, "9(", "cC", "gG" ],
          9: [ "8*", null, null, "0)", "rR", "cC" ],
          ":": [ null, "aA", "oO", "qQ", null, null ],
          ";": [ null, "aA", "oO", "qQ", null, null ],
          "<": [ "'\"", "2@", "3#", ".>", "oO", "aA" ],
          "=": [ "/?", "]}", null, "\\|", null, "-_" ],
          ">": [ ",<", "3#", "4$", "pP", "eE", "oO" ],
          "?": [ "lL", "[{", "]}", "=+", "-_", "sS" ],
          "@": [ "1!", null, null, "3#", ",<", "'\"" ],
          A: [ null, "'\"", ",<", "oO", ";:", null ],
          B: [ "xX", "dD", "hH", "mM", null, null ],
          C: [ "gG", "8*", "9(", "rR", "tT", "hH" ],
          D: [ "iI", "fF", "gG", "hH", "bB", "xX" ],
          E: [ "oO", ".>", "pP", "uU", "jJ", "qQ" ],
          F: [ "yY", "6^", "7&", "gG", "dD", "iI" ],
          G: [ "fF", "7&", "8*", "cC", "hH", "dD" ],
          H: [ "dD", "gG", "cC", "tT", "mM", "bB" ],
          I: [ "uU", "yY", "fF", "dD", "xX", "kK" ],
          J: [ "qQ", "eE", "uU", "kK", null, null ],
          K: [ "jJ", "uU", "iI", "xX", null, null ],
          L: [ "rR", "0)", "[{", "/?", "sS", "nN" ],
          M: [ "bB", "hH", "tT", "wW", null, null ],
          N: [ "tT", "rR", "lL", "sS", "vV", "wW" ],
          O: [ "aA", ",<", ".>", "eE", "qQ", ";:" ],
          P: [ ".>", "4$", "5%", "yY", "uU", "eE" ],
          Q: [ ";:", "oO", "eE", "jJ", null, null ],
          R: [ "cC", "9(", "0)", "lL", "nN", "tT" ],
          S: [ "nN", "lL", "/?", "-_", "zZ", "vV" ],
          T: [ "hH", "cC", "rR", "nN", "wW", "mM" ],
          U: [ "eE", "pP", "yY", "iI", "kK", "jJ" ],
          V: [ "wW", "nN", "sS", "zZ", null, null ],
          W: [ "mM", "tT", "nN", "vV", null, null ],
          X: [ "kK", "iI", "dD", "bB", null, null ],
          Y: [ "pP", "5%", "6^", "fF", "iI", "uU" ],
          Z: [ "vV", "sS", "-_", null, null, null ],
          "[": [ "0)", null, null, "]}", "/?", "lL" ],
          "\\": [ "=+", null, null, null, null, null ],
          "]": [ "[{", null, null, null, "=+", "/?" ],
          "^": [ "5%", null, null, "7&", "fF", "yY" ],
          _: [ "sS", "/?", "=+", null, null, "zZ" ],
          "`": [ null, null, null, "1!", null, null ],
          a: [ null, "'\"", ",<", "oO", ";:", null ],
          b: [ "xX", "dD", "hH", "mM", null, null ],
          c: [ "gG", "8*", "9(", "rR", "tT", "hH" ],
          d: [ "iI", "fF", "gG", "hH", "bB", "xX" ],
          e: [ "oO", ".>", "pP", "uU", "jJ", "qQ" ],
          f: [ "yY", "6^", "7&", "gG", "dD", "iI" ],
          g: [ "fF", "7&", "8*", "cC", "hH", "dD" ],
          h: [ "dD", "gG", "cC", "tT", "mM", "bB" ],
          i: [ "uU", "yY", "fF", "dD", "xX", "kK" ],
          j: [ "qQ", "eE", "uU", "kK", null, null ],
          k: [ "jJ", "uU", "iI", "xX", null, null ],
          l: [ "rR", "0)", "[{", "/?", "sS", "nN" ],
          m: [ "bB", "hH", "tT", "wW", null, null ],
          n: [ "tT", "rR", "lL", "sS", "vV", "wW" ],
          o: [ "aA", ",<", ".>", "eE", "qQ", ";:" ],
          p: [ ".>", "4$", "5%", "yY", "uU", "eE" ],
          q: [ ";:", "oO", "eE", "jJ", null, null ],
          r: [ "cC", "9(", "0)", "lL", "nN", "tT" ],
          s: [ "nN", "lL", "/?", "-_", "zZ", "vV" ],
          t: [ "hH", "cC", "rR", "nN", "wW", "mM" ],
          u: [ "eE", "pP", "yY", "iI", "kK", "jJ" ],
          v: [ "wW", "nN", "sS", "zZ", null, null ],
          w: [ "mM", "tT", "nN", "vV", null, null ],
          x: [ "kK", "iI", "dD", "bB", null, null ],
          y: [ "pP", "5%", "6^", "fF", "iI", "uU" ],
          z: [ "vV", "sS", "-_", null, null, null ],
          "{": [ "0)", null, null, "]}", "/?", "lL" ],
          "|": [ "=+", null, null, null, null, null ],
          "}": [ "[{", null, null, null, "=+", "/?" ],
          "~": [ null, null, null, "1!", null, null ]
        },
        keypad: {
          "*": [ "/", null, null, null, "-", "+", "9", "8" ],
          "+": [ "9", "*", "-", null, null, null, null, "6" ],
          "-": [ "*", null, null, null, null, null, "+", "9" ],
          ".": [ "0", "2", "3", null, null, null, null, null ],
          "/": [ null, null, null, null, "*", "9", "8", "7" ],
          0: [ null, "1", "2", "3", ".", null, null, null ],
          1: [ null, null, "4", "5", "2", "0", null, null ],
          2: [ "1", "4", "5", "6", "3", ".", "0", null ],
          3: [ "2", "5", "6", null, null, null, ".", "0" ],
          4: [ null, null, "7", "8", "5", "2", "1", null ],
          5: [ "4", "7", "8", "9", "6", "3", "2", "1" ],
          6: [ "5", "8", "9", "+", null, null, "3", "2" ],
          7: [ null, null, null, "/", "8", "5", "4", null ],
          8: [ "7", null, "/", "*", "9", "6", "5", "4" ],
          9: [ "8", "/", "*", "-", "+", null, "6", "5" ]
        },
        mac_keypad: {
          "*": [ "/", null, null, null, null, null, "-", "9" ],
          "+": [ "6", "9", "-", null, null, null, null, "3" ],
          "-": [ "9", "/", "*", null, null, null, "+", "6" ],
          ".": [ "0", "2", "3", null, null, null, null, null ],
          "/": [ "=", null, null, null, "*", "-", "9", "8" ],
          0: [ null, "1", "2", "3", ".", null, null, null ],
          1: [ null, null, "4", "5", "2", "0", null, null ],
          2: [ "1", "4", "5", "6", "3", ".", "0", null ],
          3: [ "2", "5", "6", "+", null, null, ".", "0" ],
          4: [ null, null, "7", "8", "5", "2", "1", null ],
          5: [ "4", "7", "8", "9", "6", "3", "2", "1" ],
          6: [ "5", "8", "9", "-", "+", null, "3", "2" ],
          7: [ null, null, null, "=", "8", "5", "4", null ],
          8: [ "7", null, "=", "/", "9", "6", "5", "4" ],
          9: [ "8", "=", "/", "*", "-", "+", "6", "5" ],
          "=": [ null, null, null, null, "/", "9", "8", "7" ]
        }
      };
      module.exports = adjacency_graphs;
    },
    6443(module, __unused_webpack_exports, __webpack_require__) {
      var feedback, scoring;
      scoring = __webpack_require__(843);
      feedback = {
        default_feedback: {
          warning: "",
          suggestions: [ "Use a few words, avoid common phrases", "No need for symbols, digits, or uppercase letters" ]
        },
        get_feedback: function(score, sequence) {
          var extra_feedback, i, len, longest_match, match, ref;
          if (sequence.length === 0) {
            return this.default_feedback;
          }
          if (score > 2) {
            return {
              warning: "",
              suggestions: []
            };
          }
          longest_match = sequence[0];
          ref = sequence.slice(1);
          for (i = 0, len = ref.length; i < len; i++) {
            match = ref[i];
            if (match.token.length > longest_match.token.length) {
              longest_match = match;
            }
          }
          feedback = this.get_match_feedback(longest_match, sequence.length === 1);
          extra_feedback = "Add another word or two. Uncommon words are better.";
          if (feedback != null) {
            feedback.suggestions.unshift(extra_feedback);
            if (feedback.warning == null) {
              feedback.warning = "";
            }
          } else {
            feedback = {
              warning: "",
              suggestions: [ extra_feedback ]
            };
          }
          return feedback;
        },
        get_match_feedback: function(match, is_sole_match) {
          var layout, warning;
          switch (match.pattern) {
           case "dictionary":
            return this.get_dictionary_match_feedback(match, is_sole_match);

           case "spatial":
            layout = match.graph.toUpperCase();
            warning = match.turns === 1 ? "Straight rows of keys are easy to guess" : "Short keyboard patterns are easy to guess";
            return {
              warning,
              suggestions: [ "Use a longer keyboard pattern with more turns" ]
            };

           case "repeat":
            warning = match.base_token.length === 1 ? 'Repeats like "aaa" are easy to guess' : 'Repeats like "abcabcabc" are only slightly harder to guess than "abc"';
            return {
              warning,
              suggestions: [ "Avoid repeated words and characters" ]
            };

           case "sequence":
            return {
              warning: "Sequences like abc or 6543 are easy to guess",
              suggestions: [ "Avoid sequences" ]
            };

           case "regex":
            if (match.regex_name === "recent_year") {
              return {
                warning: "Recent years are easy to guess",
                suggestions: [ "Avoid recent years", "Avoid years that are associated with you" ]
              };
            }
            break;

           case "date":
            return {
              warning: "Dates are often easy to guess",
              suggestions: [ "Avoid dates and years that are associated with you" ]
            };
          }
        },
        get_dictionary_match_feedback: function(match, is_sole_match) {
          var ref, result, suggestions, warning, word;
          warning = match.dictionary_name === "passwords" ? is_sole_match && !match.l33t && !match.reversed ? match.rank <= 10 ? "This is a top-10 common password" : match.rank <= 100 ? "This is a top-100 common password" : "This is a very common password" : match.guesses_log10 <= 4 ? "This is similar to a commonly used password" : void 0 : match.dictionary_name === "english_wikipedia" ? is_sole_match ? "A word by itself is easy to guess" : void 0 : (ref = match.dictionary_name) === "surnames" || ref === "male_names" || ref === "female_names" ? is_sole_match ? "Names and surnames by themselves are easy to guess" : "Common names and surnames are easy to guess" : "";
          suggestions = [];
          word = match.token;
          if (word.match(scoring.START_UPPER)) {
            suggestions.push("Capitalization doesn't help very much");
          } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {
            suggestions.push("All-uppercase is almost as easy to guess as all-lowercase");
          }
          if (match.reversed && match.token.length >= 4) {
            suggestions.push("Reversed words aren't much harder to guess");
          }
          if (match.l33t) {
            suggestions.push("Predictable substitutions like '@' instead of 'a' don't help very much");
          }
          result = {
            warning,
            suggestions
          };
          return result;
        }
      };
      module.exports = feedback;
    },
    2218(module) {
      var frequency_lists;
      frequency_lists = {
        passwords: "123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),
        english_wikipedia: "the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
        female_names: "mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),
        surnames: "smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
        us_tv_and_film: "you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
        male_names: "james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")
      };
      module.exports = frequency_lists;
    },
    7065(module, __unused_webpack_exports, __webpack_require__) {
      var feedback, matching, scoring, time, time_estimates, zxcvbn;
      matching = __webpack_require__(2815);
      scoring = __webpack_require__(843);
      time_estimates = __webpack_require__(5849);
      feedback = __webpack_require__(6443);
      time = function() {
        return (new Date).getTime();
      };
      zxcvbn = function(password, user_inputs) {
        var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;
        if (user_inputs == null) {
          user_inputs = [];
        }
        start = time();
        sanitized_inputs = [];
        for (i = 0, len = user_inputs.length; i < len; i++) {
          arg = user_inputs[i];
          if ((ref = typeof arg) === "string" || ref === "number" || ref === "boolean") {
            sanitized_inputs.push(arg.toString().toLowerCase());
          }
        }
        matching.set_user_input_dictionary(sanitized_inputs);
        matches = matching.omnimatch(password);
        result = scoring.most_guessable_match_sequence(password, matches);
        result.calc_time = time() - start;
        attack_times = time_estimates.estimate_attack_times(result.guesses);
        for (prop in attack_times) {
          val = attack_times[prop];
          result[prop] = val;
        }
        result.feedback = feedback.get_feedback(result.score, result.sequence);
        return result;
      };
      module.exports = zxcvbn;
    },
    2815(module, __unused_webpack_exports, __webpack_require__) {
      var DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;
      frequency_lists = __webpack_require__(2218);
      adjacency_graphs = __webpack_require__(2442);
      scoring = __webpack_require__(843);
      build_ranked_dict = function(ordered_list) {
        var i, len1, o, result, word;
        result = {};
        i = 1;
        for (o = 0, len1 = ordered_list.length; o < len1; o++) {
          word = ordered_list[o];
          result[word] = i;
          i += 1;
        }
        return result;
      };
      RANKED_DICTIONARIES = {};
      for (name in frequency_lists) {
        lst = frequency_lists[name];
        RANKED_DICTIONARIES[name] = build_ranked_dict(lst);
      }
      GRAPHS = {
        qwerty: adjacency_graphs.qwerty,
        dvorak: adjacency_graphs.dvorak,
        keypad: adjacency_graphs.keypad,
        mac_keypad: adjacency_graphs.mac_keypad
      };
      L33T_TABLE = {
        a: [ "4", "@" ],
        b: [ "8" ],
        c: [ "(", "{", "[", "<" ],
        e: [ "3" ],
        g: [ "6", "9" ],
        i: [ "1", "!", "|" ],
        l: [ "1", "|", "7" ],
        o: [ "0" ],
        s: [ "$", "5" ],
        t: [ "+", "7" ],
        x: [ "%" ],
        z: [ "2" ]
      };
      REGEXEN = {
        recent_year: /19\d\d|200\d|201\d/g
      };
      DATE_MAX_YEAR = 2050;
      DATE_MIN_YEAR = 1e3;
      DATE_SPLITS = {
        4: [ [ 1, 2 ], [ 2, 3 ] ],
        5: [ [ 1, 3 ], [ 2, 3 ] ],
        6: [ [ 1, 2 ], [ 2, 4 ], [ 4, 5 ] ],
        7: [ [ 1, 3 ], [ 2, 3 ], [ 4, 5 ], [ 4, 6 ] ],
        8: [ [ 2, 4 ], [ 4, 6 ] ]
      };
      matching = {
        empty: function(obj) {
          var k;
          return function() {
            var results;
            results = [];
            for (k in obj) {
              results.push(k);
            }
            return results;
          }().length === 0;
        },
        extend: function(lst, lst2) {
          return lst.push.apply(lst, lst2);
        },
        translate: function(string, chr_map) {
          var chr;
          return function() {
            var len1, o, ref, results;
            ref = string.split("");
            results = [];
            for (o = 0, len1 = ref.length; o < len1; o++) {
              chr = ref[o];
              results.push(chr_map[chr] || chr);
            }
            return results;
          }().join("");
        },
        mod: function(n, m) {
          return (n % m + m) % m;
        },
        sorted: function(matches) {
          return matches.sort((function(m1, m2) {
            return m1.i - m2.i || m1.j - m2.j;
          }));
        },
        omnimatch: function(password) {
          var len1, matcher, matchers, matches, o;
          matches = [];
          matchers = [ this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match ];
          for (o = 0, len1 = matchers.length; o < len1; o++) {
            matcher = matchers[o];
            this.extend(matches, matcher.call(this, password));
          }
          return this.sorted(matches);
        },
        dictionary_match: function(password, _ranked_dictionaries) {
          var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;
          if (_ranked_dictionaries == null) {
            _ranked_dictionaries = RANKED_DICTIONARIES;
          }
          matches = [];
          len = password.length;
          password_lower = password.toLowerCase();
          for (dictionary_name in _ranked_dictionaries) {
            ranked_dict = _ranked_dictionaries[dictionary_name];
            for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {
              for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {
                if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {
                  word = password_lower.slice(i, +j + 1 || 9e9);
                  rank = ranked_dict[word];
                  matches.push({
                    pattern: "dictionary",
                    i,
                    j,
                    token: password.slice(i, +j + 1 || 9e9),
                    matched_word: word,
                    rank,
                    dictionary_name,
                    reversed: false,
                    l33t: false
                  });
                }
              }
            }
          }
          return this.sorted(matches);
        },
        reverse_dictionary_match: function(password, _ranked_dictionaries) {
          var len1, match, matches, o, ref, reversed_password;
          if (_ranked_dictionaries == null) {
            _ranked_dictionaries = RANKED_DICTIONARIES;
          }
          reversed_password = password.split("").reverse().join("");
          matches = this.dictionary_match(reversed_password, _ranked_dictionaries);
          for (o = 0, len1 = matches.length; o < len1; o++) {
            match = matches[o];
            match.token = match.token.split("").reverse().join("");
            match.reversed = true;
            ref = [ password.length - 1 - match.j, password.length - 1 - match.i ], match.i = ref[0], 
            match.j = ref[1];
          }
          return this.sorted(matches);
        },
        set_user_input_dictionary: function(ordered_list) {
          return RANKED_DICTIONARIES["user_inputs"] = build_ranked_dict(ordered_list.slice());
        },
        relevant_l33t_subtable: function(password, table) {
          var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;
          password_chars = {};
          ref = password.split("");
          for (o = 0, len1 = ref.length; o < len1; o++) {
            chr = ref[o];
            password_chars[chr] = true;
          }
          subtable = {};
          for (letter in table) {
            subs = table[letter];
            relevant_subs = function() {
              var len2, p, results;
              results = [];
              for (p = 0, len2 = subs.length; p < len2; p++) {
                sub = subs[p];
                if (sub in password_chars) {
                  results.push(sub);
                }
              }
              return results;
            }();
            if (relevant_subs.length > 0) {
              subtable[letter] = relevant_subs;
            }
          }
          return subtable;
        },
        enumerate_l33t_subs: function(table) {
          var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;
          keys = function() {
            var results;
            results = [];
            for (k in table) {
              results.push(k);
            }
            return results;
          }();
          subs = [ [] ];
          dedup = function(subs) {
            var assoc, deduped, label, len1, members, o, sub, v;
            deduped = [];
            members = {};
            for (o = 0, len1 = subs.length; o < len1; o++) {
              sub = subs[o];
              assoc = function() {
                var len2, p, results;
                results = [];
                for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {
                  k = sub[v];
                  results.push([ k, v ]);
                }
                return results;
              }();
              assoc.sort();
              label = function() {
                var len2, p, results;
                results = [];
                for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {
                  k = assoc[v];
                  results.push(k + "," + v);
                }
                return results;
              }().join("-");
              if (!(label in members)) {
                members[label] = true;
                deduped.push(sub);
              }
            }
            return deduped;
          };
          helper = function(keys) {
            var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;
            if (!keys.length) {
              return;
            }
            first_key = keys[0];
            rest_keys = keys.slice(1);
            next_subs = [];
            ref = table[first_key];
            for (o = 0, len1 = ref.length; o < len1; o++) {
              l33t_chr = ref[o];
              for (p = 0, len2 = subs.length; p < len2; p++) {
                sub = subs[p];
                dup_l33t_index = -1;
                for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {
                  if (sub[i][0] === l33t_chr) {
                    dup_l33t_index = i;
                    break;
                  }
                }
                if (dup_l33t_index === -1) {
                  sub_extension = sub.concat([ [ l33t_chr, first_key ] ]);
                  next_subs.push(sub_extension);
                } else {
                  sub_alternative = sub.slice(0);
                  sub_alternative.splice(dup_l33t_index, 1);
                  sub_alternative.push([ l33t_chr, first_key ]);
                  next_subs.push(sub);
                  next_subs.push(sub_alternative);
                }
              }
            }
            subs = dedup(next_subs);
            return helper(rest_keys);
          };
          helper(keys);
          sub_dicts = [];
          for (o = 0, len1 = subs.length; o < len1; o++) {
            sub = subs[o];
            sub_dict = {};
            for (p = 0, len2 = sub.length; p < len2; p++) {
              ref = sub[p], l33t_chr = ref[0], chr = ref[1];
              sub_dict[l33t_chr] = chr;
            }
            sub_dicts.push(sub_dict);
          }
          return sub_dicts;
        },
        l33t_match: function(password, _ranked_dictionaries, _l33t_table) {
          var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;
          if (_ranked_dictionaries == null) {
            _ranked_dictionaries = RANKED_DICTIONARIES;
          }
          if (_l33t_table == null) {
            _l33t_table = L33T_TABLE;
          }
          matches = [];
          ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));
          for (o = 0, len1 = ref.length; o < len1; o++) {
            sub = ref[o];
            if (this.empty(sub)) {
              break;
            }
            subbed_password = this.translate(password, sub);
            ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);
            for (p = 0, len2 = ref1.length; p < len2; p++) {
              match = ref1[p];
              token = password.slice(match.i, +match.j + 1 || 9e9);
              if (token.toLowerCase() === match.matched_word) {
                continue;
              }
              match_sub = {};
              for (subbed_chr in sub) {
                chr = sub[subbed_chr];
                if (token.indexOf(subbed_chr) !== -1) {
                  match_sub[subbed_chr] = chr;
                }
              }
              match.l33t = true;
              match.token = token;
              match.sub = match_sub;
              match.sub_display = function() {
                var results;
                results = [];
                for (k in match_sub) {
                  v = match_sub[k];
                  results.push(k + " -> " + v);
                }
                return results;
              }().join(", ");
              matches.push(match);
            }
          }
          return this.sorted(matches.filter((function(match) {
            return match.token.length > 1;
          })));
        },
        spatial_match: function(password, _graphs) {
          var graph, graph_name, matches;
          if (_graphs == null) {
            _graphs = GRAPHS;
          }
          matches = [];
          for (graph_name in _graphs) {
            graph = _graphs[graph_name];
            this.extend(matches, this.spatial_match_helper(password, graph, graph_name));
          }
          return this.sorted(matches);
        },
        SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,
        spatial_match_helper: function(password, graph, graph_name) {
          var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;
          matches = [];
          i = 0;
          while (i < password.length - 1) {
            j = i + 1;
            last_direction = null;
            turns = 0;
            if ((graph_name === "qwerty" || graph_name === "dvorak") && this.SHIFTED_RX.exec(password.charAt(i))) {
              shifted_count = 1;
            } else {
              shifted_count = 0;
            }
            while (true) {
              prev_char = password.charAt(j - 1);
              found = false;
              found_direction = -1;
              cur_direction = -1;
              adjacents = graph[prev_char] || [];
              if (j < password.length) {
                cur_char = password.charAt(j);
                for (o = 0, len1 = adjacents.length; o < len1; o++) {
                  adj = adjacents[o];
                  cur_direction += 1;
                  if (adj && adj.indexOf(cur_char) !== -1) {
                    found = true;
                    found_direction = cur_direction;
                    if (adj.indexOf(cur_char) === 1) {
                      shifted_count += 1;
                    }
                    if (last_direction !== found_direction) {
                      turns += 1;
                      last_direction = found_direction;
                    }
                    break;
                  }
                }
              }
              if (found) {
                j += 1;
              } else {
                if (j - i > 2) {
                  matches.push({
                    pattern: "spatial",
                    i,
                    j: j - 1,
                    token: password.slice(i, j),
                    graph: graph_name,
                    turns,
                    shifted_count
                  });
                }
                i = j;
                break;
              }
            }
          }
          return matches;
        },
        repeat_match: function(password) {
          var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;
          matches = [];
          greedy = /(.+)\1+/g;
          lazy = /(.+?)\1+/g;
          lazy_anchored = /^(.+?)\1+$/;
          lastIndex = 0;
          while (lastIndex < password.length) {
            greedy.lastIndex = lazy.lastIndex = lastIndex;
            greedy_match = greedy.exec(password);
            lazy_match = lazy.exec(password);
            if (greedy_match == null) {
              break;
            }
            if (greedy_match[0].length > lazy_match[0].length) {
              match = greedy_match;
              base_token = lazy_anchored.exec(match[0])[1];
            } else {
              match = lazy_match;
              base_token = match[1];
            }
            ref = [ match.index, match.index + match[0].length - 1 ], i = ref[0], j = ref[1];
            base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));
            base_matches = base_analysis.sequence;
            base_guesses = base_analysis.guesses;
            matches.push({
              pattern: "repeat",
              i,
              j,
              token: match[0],
              base_token,
              base_guesses,
              base_matches,
              repeat_count: match[0].length / base_token.length
            });
            lastIndex = j + 1;
          }
          return matches;
        },
        MAX_DELTA: 5,
        sequence_match: function(password) {
          var delta, i, j, k, last_delta, o, ref, result, update;
          if (password.length === 1) {
            return [];
          }
          update = function(_this) {
            return function(i, j, delta) {
              var ref, sequence_name, sequence_space, token;
              if (j - i > 1 || Math.abs(delta) === 1) {
                if (0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA) {
                  token = password.slice(i, +j + 1 || 9e9);
                  if (/^[a-z]+$/.test(token)) {
                    sequence_name = "lower";
                    sequence_space = 26;
                  } else if (/^[A-Z]+$/.test(token)) {
                    sequence_name = "upper";
                    sequence_space = 26;
                  } else if (/^\d+$/.test(token)) {
                    sequence_name = "digits";
                    sequence_space = 10;
                  } else {
                    sequence_name = "unicode";
                    sequence_space = 26;
                  }
                  return result.push({
                    pattern: "sequence",
                    i,
                    j,
                    token: password.slice(i, +j + 1 || 9e9),
                    sequence_name,
                    sequence_space,
                    ascending: delta > 0
                  });
                }
              }
            };
          }(this);
          result = [];
          i = 0;
          last_delta = null;
          for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {
            delta = password.charCodeAt(k) - password.charCodeAt(k - 1);
            if (last_delta == null) {
              last_delta = delta;
            }
            if (delta === last_delta) {
              continue;
            }
            j = k - 1;
            update(i, j, last_delta);
            i = j;
            last_delta = delta;
          }
          update(i, password.length - 1, last_delta);
          return result;
        },
        regex_match: function(password, _regexen) {
          var matches, regex, rx_match, token;
          if (_regexen == null) {
            _regexen = REGEXEN;
          }
          matches = [];
          for (name in _regexen) {
            regex = _regexen[name];
            regex.lastIndex = 0;
            while (rx_match = regex.exec(password)) {
              token = rx_match[0];
              matches.push({
                pattern: "regex",
                token,
                i: rx_match.index,
                j: rx_match.index + rx_match[0].length - 1,
                regex_name: name,
                regex_match: rx_match
              });
            }
          }
          return this.sorted(matches);
        },
        date_match: function(password) {
          var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;
          matches = [];
          maybe_date_no_separator = /^\d{4,8}$/;
          maybe_date_with_separator = /^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/;
          for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {
            for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {
              if (j >= password.length) {
                break;
              }
              token = password.slice(i, +j + 1 || 9e9);
              if (!maybe_date_no_separator.exec(token)) {
                continue;
              }
              candidates = [];
              ref3 = DATE_SPLITS[token.length];
              for (q = 0, len1 = ref3.length; q < len1; q++) {
                ref4 = ref3[q], k = ref4[0], l = ref4[1];
                dmy = this.map_ints_to_dmy([ parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l)) ]);
                if (dmy != null) {
                  candidates.push(dmy);
                }
              }
              if (!(candidates.length > 0)) {
                continue;
              }
              best_candidate = candidates[0];
              metric = function(candidate) {
                return Math.abs(candidate.year - scoring.REFERENCE_YEAR);
              };
              min_distance = metric(candidates[0]);
              ref5 = candidates.slice(1);
              for (r = 0, len2 = ref5.length; r < len2; r++) {
                candidate = ref5[r];
                distance = metric(candidate);
                if (distance < min_distance) {
                  ref6 = [ candidate, distance ], best_candidate = ref6[0], min_distance = ref6[1];
                }
              }
              matches.push({
                pattern: "date",
                token,
                i,
                j,
                separator: "",
                year: best_candidate.year,
                month: best_candidate.month,
                day: best_candidate.day
              });
            }
          }
          for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {
            for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {
              if (j >= password.length) {
                break;
              }
              token = password.slice(i, +j + 1 || 9e9);
              rx_match = maybe_date_with_separator.exec(token);
              if (rx_match == null) {
                continue;
              }
              dmy = this.map_ints_to_dmy([ parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4]) ]);
              if (dmy == null) {
                continue;
              }
              matches.push({
                pattern: "date",
                token,
                i,
                j,
                separator: rx_match[2],
                year: dmy.year,
                month: dmy.month,
                day: dmy.day
              });
            }
          }
          return this.sorted(matches.filter((function(match) {
            var is_submatch, len3, other_match, u;
            is_submatch = false;
            for (u = 0, len3 = matches.length; u < len3; u++) {
              other_match = matches[u];
              if (match === other_match) {
                continue;
              }
              if (other_match.i <= match.i && other_match.j >= match.j) {
                is_submatch = true;
                break;
              }
            }
            return !is_submatch;
          })));
        },
        map_ints_to_dmy: function(ints) {
          var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;
          if (ints[1] > 31 || ints[1] <= 0) {
            return;
          }
          over_12 = 0;
          over_31 = 0;
          under_1 = 0;
          for (o = 0, len1 = ints.length; o < len1; o++) {
            int = ints[o];
            if (99 < int && int < DATE_MIN_YEAR || int > DATE_MAX_YEAR) {
              return;
            }
            if (int > 31) {
              over_31 += 1;
            }
            if (int > 12) {
              over_12 += 1;
            }
            if (int <= 0) {
              under_1 += 1;
            }
          }
          if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {
            return;
          }
          possible_year_splits = [ [ ints[2], ints.slice(0, 2) ], [ ints[0], ints.slice(1, 3) ] ];
          for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {
            ref = possible_year_splits[p], y = ref[0], rest = ref[1];
            if (DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR) {
              dm = this.map_ints_to_dm(rest);
              if (dm != null) {
                return {
                  year: y,
                  month: dm.month,
                  day: dm.day
                };
              } else {
                return;
              }
            }
          }
          for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {
            ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];
            dm = this.map_ints_to_dm(rest);
            if (dm != null) {
              y = this.two_to_four_digit_year(y);
              return {
                year: y,
                month: dm.month,
                day: dm.day
              };
            }
          }
        },
        map_ints_to_dm: function(ints) {
          var d, len1, m, o, ref, ref1;
          ref = [ ints, ints.slice().reverse() ];
          for (o = 0, len1 = ref.length; o < len1; o++) {
            ref1 = ref[o], d = ref1[0], m = ref1[1];
            if (1 <= d && d <= 31 && (1 <= m && m <= 12)) {
              return {
                day: d,
                month: m
              };
            }
          }
        },
        two_to_four_digit_year: function(year) {
          if (year > 99) {
            return year;
          } else if (year > 50) {
            return year + 1900;
          } else {
            return year + 2e3;
          }
        }
      };
      module.exports = matching;
    },
    843(module, __unused_webpack_exports, __webpack_require__) {
      var BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;
      adjacency_graphs = __webpack_require__(2442);
      calc_average_degree = function(graph) {
        var average, k, key, n, neighbors, v;
        average = 0;
        for (key in graph) {
          neighbors = graph[key];
          average += function() {
            var len, o, results;
            results = [];
            for (o = 0, len = neighbors.length; o < len; o++) {
              n = neighbors[o];
              if (n) {
                results.push(n);
              }
            }
            return results;
          }().length;
        }
        average /= function() {
          var results;
          results = [];
          for (k in graph) {
            v = graph[k];
            results.push(k);
          }
          return results;
        }().length;
        return average;
      };
      BRUTEFORCE_CARDINALITY = 10;
      MIN_GUESSES_BEFORE_GROWING_SEQUENCE = 1e4;
      MIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;
      MIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;
      scoring = {
        nCk: function(n, k) {
          var d, o, r, ref;
          if (k > n) {
            return 0;
          }
          if (k === 0) {
            return 1;
          }
          r = 1;
          for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {
            r *= n;
            r /= d;
            n -= 1;
          }
          return r;
        },
        log10: function(n) {
          return Math.log(n) / Math.log(10);
        },
        log2: function(n) {
          return Math.log(n) / Math.log(2);
        },
        factorial: function(n) {
          var f, i, o, ref;
          if (n < 2) {
            return 1;
          }
          f = 1;
          for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {
            f *= i;
          }
          return f;
        },
        most_guessable_match_sequence: function(password, matches, _exclude_additive) {
          var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;
          if (_exclude_additive == null) {
            _exclude_additive = false;
          }
          n = password.length;
          matches_by_j = function() {
            var o, ref, results;
            results = [];
            for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {
              results.push([]);
            }
            return results;
          }();
          for (o = 0, len = matches.length; o < len; o++) {
            m = matches[o];
            matches_by_j[m.j].push(m);
          }
          for (q = 0, len1 = matches_by_j.length; q < len1; q++) {
            lst = matches_by_j[q];
            lst.sort((function(m1, m2) {
              return m1.i - m2.i;
            }));
          }
          optimal = {
            m: function() {
              var ref, results, u;
              results = [];
              for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {
                results.push({});
              }
              return results;
            }(),
            pi: function() {
              var ref, results, u;
              results = [];
              for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {
                results.push({});
              }
              return results;
            }(),
            g: function() {
              var ref, results, u;
              results = [];
              for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {
                results.push({});
              }
              return results;
            }()
          };
          update = function(_this) {
            return function(m, l) {
              var competing_g, competing_l, g, k, pi, ref;
              k = m.j;
              pi = _this.estimate_guesses(m, password);
              if (l > 1) {
                pi *= optimal.pi[m.i - 1][l - 1];
              }
              g = _this.factorial(l) * pi;
              if (!_exclude_additive) {
                g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);
              }
              ref = optimal.g[k];
              for (competing_l in ref) {
                competing_g = ref[competing_l];
                if (competing_l > l) {
                  continue;
                }
                if (competing_g <= g) {
                  return;
                }
              }
              optimal.g[k][l] = g;
              optimal.m[k][l] = m;
              return optimal.pi[k][l] = pi;
            };
          }(this);
          bruteforce_update = function(_this) {
            return function(k) {
              var i, l, last_m, ref, results, u;
              m = make_bruteforce_match(0, k);
              update(m, 1);
              results = [];
              for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {
                m = make_bruteforce_match(i, k);
                results.push(function() {
                  var ref1, results1;
                  ref1 = optimal.m[i - 1];
                  results1 = [];
                  for (l in ref1) {
                    last_m = ref1[l];
                    l = parseInt(l);
                    if (last_m.pattern === "bruteforce") {
                      continue;
                    }
                    results1.push(update(m, l + 1));
                  }
                  return results1;
                }());
              }
              return results;
            };
          }(this);
          make_bruteforce_match = function(_this) {
            return function(i, j) {
              return {
                pattern: "bruteforce",
                token: password.slice(i, +j + 1 || 9e9),
                i,
                j
              };
            };
          }(this);
          unwind = function(_this) {
            return function(n) {
              var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;
              optimal_match_sequence = [];
              k = n - 1;
              l = void 0;
              g = Infinity;
              ref = optimal.g[k];
              for (candidate_l in ref) {
                candidate_g = ref[candidate_l];
                if (candidate_g < g) {
                  l = candidate_l;
                  g = candidate_g;
                }
              }
              while (k >= 0) {
                m = optimal.m[k][l];
                optimal_match_sequence.unshift(m);
                k = m.i - 1;
                l--;
              }
              return optimal_match_sequence;
            };
          }(this);
          for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {
            ref1 = matches_by_j[k];
            for (w = 0, len2 = ref1.length; w < len2; w++) {
              m = ref1[w];
              if (m.i > 0) {
                for (l in optimal.m[m.i - 1]) {
                  l = parseInt(l);
                  update(m, l + 1);
                }
              } else {
                update(m, 1);
              }
            }
            bruteforce_update(k);
          }
          optimal_match_sequence = unwind(n);
          optimal_l = optimal_match_sequence.length;
          if (password.length === 0) {
            guesses = 1;
          } else {
            guesses = optimal.g[n - 1][optimal_l];
          }
          return {
            password,
            guesses,
            guesses_log10: this.log10(guesses),
            sequence: optimal_match_sequence
          };
        },
        estimate_guesses: function(match, password) {
          var estimation_functions, guesses, min_guesses;
          if (match.guesses != null) {
            return match.guesses;
          }
          min_guesses = 1;
          if (match.token.length < password.length) {
            min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;
          }
          estimation_functions = {
            bruteforce: this.bruteforce_guesses,
            dictionary: this.dictionary_guesses,
            spatial: this.spatial_guesses,
            repeat: this.repeat_guesses,
            sequence: this.sequence_guesses,
            regex: this.regex_guesses,
            date: this.date_guesses
          };
          guesses = estimation_functions[match.pattern].call(this, match);
          match.guesses = Math.max(guesses, min_guesses);
          match.guesses_log10 = this.log10(match.guesses);
          return match.guesses;
        },
        bruteforce_guesses: function(match) {
          var guesses, min_guesses;
          guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);
          if (guesses === Number.POSITIVE_INFINITY) {
            guesses = Number.MAX_VALUE;
          }
          min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;
          return Math.max(guesses, min_guesses);
        },
        repeat_guesses: function(match) {
          return match.base_guesses * match.repeat_count;
        },
        sequence_guesses: function(match) {
          var base_guesses, first_chr;
          first_chr = match.token.charAt(0);
          if (first_chr === "a" || first_chr === "A" || first_chr === "z" || first_chr === "Z" || first_chr === "0" || first_chr === "1" || first_chr === "9") {
            base_guesses = 4;
          } else {
            if (first_chr.match(/\d/)) {
              base_guesses = 10;
            } else {
              base_guesses = 26;
            }
          }
          if (!match.ascending) {
            base_guesses *= 2;
          }
          return base_guesses * match.token.length;
        },
        MIN_YEAR_SPACE: 20,
        REFERENCE_YEAR: (new Date).getFullYear(),
        regex_guesses: function(match) {
          var char_class_bases, year_space;
          char_class_bases = {
            alpha_lower: 26,
            alpha_upper: 26,
            alpha: 52,
            alphanumeric: 62,
            digits: 10,
            symbols: 33
          };
          if (match.regex_name in char_class_bases) {
            return Math.pow(char_class_bases[match.regex_name], match.token.length);
          } else {
            switch (match.regex_name) {
             case "recent_year":
              year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);
              year_space = Math.max(year_space, this.MIN_YEAR_SPACE);
              return year_space;
            }
          }
        },
        date_guesses: function(match) {
          var guesses, year_space;
          year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);
          guesses = year_space * 365;
          if (match.separator) {
            guesses *= 4;
          }
          return guesses;
        },
        KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),
        KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),
        KEYBOARD_STARTING_POSITIONS: function() {
          var ref, results;
          ref = adjacency_graphs.qwerty;
          results = [];
          for (k in ref) {
            v = ref[k];
            results.push(k);
          }
          return results;
        }().length,
        KEYPAD_STARTING_POSITIONS: function() {
          var ref, results;
          ref = adjacency_graphs.keypad;
          results = [];
          for (k in ref) {
            v = ref[k];
            results.push(k);
          }
          return results;
        }().length,
        spatial_guesses: function(match) {
          var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;
          if ((ref = match.graph) === "qwerty" || ref === "dvorak") {
            s = this.KEYBOARD_STARTING_POSITIONS;
            d = this.KEYBOARD_AVERAGE_DEGREE;
          } else {
            s = this.KEYPAD_STARTING_POSITIONS;
            d = this.KEYPAD_AVERAGE_DEGREE;
          }
          guesses = 0;
          L = match.token.length;
          t = match.turns;
          for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {
            possible_turns = Math.min(t, i - 1);
            for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {
              guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);
            }
          }
          if (match.shifted_count) {
            S = match.shifted_count;
            U = match.token.length - match.shifted_count;
            if (S === 0 || U === 0) {
              guesses *= 2;
            } else {
              shifted_variations = 0;
              for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {
                shifted_variations += this.nCk(S + U, i);
              }
              guesses *= shifted_variations;
            }
          }
          return guesses;
        },
        dictionary_guesses: function(match) {
          var reversed_variations;
          match.base_guesses = match.rank;
          match.uppercase_variations = this.uppercase_variations(match);
          match.l33t_variations = this.l33t_variations(match);
          reversed_variations = match.reversed && 2 || 1;
          return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;
        },
        START_UPPER: /^[A-Z][^A-Z]+$/,
        END_UPPER: /^[^A-Z]+[A-Z]$/,
        ALL_UPPER: /^[^a-z]+$/,
        ALL_LOWER: /^[^A-Z]+$/,
        uppercase_variations: function(match) {
          var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;
          word = match.token;
          if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {
            return 1;
          }
          ref = [ this.START_UPPER, this.END_UPPER, this.ALL_UPPER ];
          for (o = 0, len = ref.length; o < len; o++) {
            regex = ref[o];
            if (word.match(regex)) {
              return 2;
            }
          }
          U = function() {
            var len1, q, ref1, results;
            ref1 = word.split("");
            results = [];
            for (q = 0, len1 = ref1.length; q < len1; q++) {
              chr = ref1[q];
              if (chr.match(/[A-Z]/)) {
                results.push(chr);
              }
            }
            return results;
          }().length;
          L = function() {
            var len1, q, ref1, results;
            ref1 = word.split("");
            results = [];
            for (q = 0, len1 = ref1.length; q < len1; q++) {
              chr = ref1[q];
              if (chr.match(/[a-z]/)) {
                results.push(chr);
              }
            }
            return results;
          }().length;
          variations = 0;
          for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {
            variations += this.nCk(U + L, i);
          }
          return variations;
        },
        l33t_variations: function(match) {
          var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;
          if (!match.l33t) {
            return 1;
          }
          variations = 1;
          ref = match.sub;
          for (subbed in ref) {
            unsubbed = ref[subbed];
            chrs = match.token.toLowerCase().split("");
            S = function() {
              var len, o, results;
              results = [];
              for (o = 0, len = chrs.length; o < len; o++) {
                chr = chrs[o];
                if (chr === subbed) {
                  results.push(chr);
                }
              }
              return results;
            }().length;
            U = function() {
              var len, o, results;
              results = [];
              for (o = 0, len = chrs.length; o < len; o++) {
                chr = chrs[o];
                if (chr === unsubbed) {
                  results.push(chr);
                }
              }
              return results;
            }().length;
            if (S === 0 || U === 0) {
              variations *= 2;
            } else {
              p = Math.min(U, S);
              possibilities = 0;
              for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {
                possibilities += this.nCk(U + S, i);
              }
              variations *= possibilities;
            }
          }
          return variations;
        }
      };
      module.exports = scoring;
    },
    5849(module) {
      var time_estimates;
      time_estimates = {
        estimate_attack_times: function(guesses) {
          var crack_times_display, crack_times_seconds, scenario, seconds;
          crack_times_seconds = {
            online_throttling_100_per_hour: guesses / (100 / 3600),
            online_no_throttling_10_per_second: guesses / 10,
            offline_slow_hashing_1e4_per_second: guesses / 1e4,
            offline_fast_hashing_1e10_per_second: guesses / 1e10
          };
          crack_times_display = {};
          for (scenario in crack_times_seconds) {
            seconds = crack_times_seconds[scenario];
            crack_times_display[scenario] = this.display_time(seconds);
          }
          return {
            crack_times_seconds,
            crack_times_display,
            score: this.guesses_to_score(guesses)
          };
        },
        guesses_to_score: function(guesses) {
          var DELTA;
          DELTA = 5;
          if (guesses < 1e3 + DELTA) {
            return 0;
          } else if (guesses < 1e6 + DELTA) {
            return 1;
          } else if (guesses < 1e8 + DELTA) {
            return 2;
          } else if (guesses < 1e10 + DELTA) {
            return 3;
          } else {
            return 4;
          }
        },
        display_time: function(seconds) {
          var base, century, day, display_num, display_str, hour, minute, month, ref, year;
          minute = 60;
          hour = minute * 60;
          day = hour * 24;
          month = day * 31;
          year = month * 12;
          century = year * 100;
          ref = seconds < 1 ? [ null, "less than a second" ] : seconds < minute ? (base = Math.round(seconds), 
          [ base, base + " second" ]) : seconds < hour ? (base = Math.round(seconds / minute), 
          [ base, base + " minute" ]) : seconds < day ? (base = Math.round(seconds / hour), 
          [ base, base + " hour" ]) : seconds < month ? (base = Math.round(seconds / day), 
          [ base, base + " day" ]) : seconds < year ? (base = Math.round(seconds / month), 
          [ base, base + " month" ]) : seconds < century ? (base = Math.round(seconds / year), 
          [ base, base + " year" ]) : [ null, "centuries" ], display_num = ref[0], display_str = ref[1];
          if (display_num != null && display_num !== 1) {
            display_str += "s";
          }
          return display_str;
        }
      };
      module.exports = time_estimates;
    },
    866(__unused_webpack_module, exports) {
      "use strict";
      var __webpack_unused_export__;
      var b = 60103, c = 60106, d = 60107, e = 60108, f = 60114, g = 60109, h = 60110, k = 60112, l = 60113, m = 60120, n = 60115, p = 60116, q = 60121, r = 60122, u = 60117, v = 60129, w = 60131;
      if ("function" === typeof Symbol && Symbol.for) {
        var x = Symbol.for;
        b = x("react.element");
        c = x("react.portal");
        d = x("react.fragment");
        e = x("react.strict_mode");
        f = x("react.profiler");
        g = x("react.provider");
        h = x("react.context");
        k = x("react.forward_ref");
        l = x("react.suspense");
        m = x("react.suspense_list");
        n = x("react.memo");
        p = x("react.lazy");
        q = x("react.block");
        r = x("react.server.block");
        u = x("react.fundamental");
        v = x("react.debug_trace_mode");
        w = x("react.legacy_hidden");
      }
      function y(a) {
        if ("object" === typeof a && null !== a) {
          var t = a.$$typeof;
          switch (t) {
           case b:
            switch (a = a.type, a) {
             case d:
             case f:
             case e:
             case l:
             case m:
              return a;

             default:
              switch (a = a && a.$$typeof, a) {
               case h:
               case k:
               case p:
               case n:
               case g:
                return a;

               default:
                return t;
              }
            }

           case c:
            return t;
          }
        }
      }
      var z = g, A = b, B = k, C = d, D = p, E = n, F = c, G = f, H = e, I = l;
      __webpack_unused_export__ = h;
      __webpack_unused_export__ = z;
      __webpack_unused_export__ = A;
      __webpack_unused_export__ = B;
      __webpack_unused_export__ = C;
      __webpack_unused_export__ = D;
      __webpack_unused_export__ = E;
      __webpack_unused_export__ = F;
      __webpack_unused_export__ = G;
      __webpack_unused_export__ = H;
      __webpack_unused_export__ = I;
      __webpack_unused_export__ = function() {
        return !1;
      };
      __webpack_unused_export__ = function() {
        return !1;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === h;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === g;
      };
      __webpack_unused_export__ = function(a) {
        return "object" === typeof a && null !== a && a.$$typeof === b;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === k;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === d;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === p;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === n;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === c;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === f;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === e;
      };
      __webpack_unused_export__ = function(a) {
        return y(a) === l;
      };
      __webpack_unused_export__ = function(a) {
        return "string" === typeof a || "function" === typeof a || a === d || a === f || a === v || a === e || a === l || a === m || a === w || "object" === typeof a && null !== a && (a.$$typeof === p || a.$$typeof === n || a.$$typeof === g || a.$$typeof === h || a.$$typeof === k || a.$$typeof === u || a.$$typeof === q || a[0] === r) ? !0 : !1;
      };
      __webpack_unused_export__ = y;
    },
    7646(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      if (true) {
        __webpack_require__(866);
      } else {}
    },
    2789() {},
    4049() {},
    8982() {},
    7790() {},
    1395() {},
    1638() {},
    2668() {},
    7965() {},
    6089() {},
    9368() {},
    4688() {},
    1069() {},
    5340() {},
    9838() {},
    5394() {},
    5248() {},
    9209(module, __unused_webpack_exports, __webpack_require__) {
      "use strict";
      var possibleNames = __webpack_require__(6578);
      var g = typeof globalThis === "undefined" ? __webpack_require__.g : globalThis;
      module.exports = function availableTypedArrays() {
        var out = [];
        for (var i = 0; i < possibleNames.length; i++) {
          if (typeof g[possibleNames[i]] === "function") {
            out[out.length] = possibleNames[i];
          }
        }
        return out;
      };
    },
    6942(module, exports) {
      var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
      (function() {
        "use strict";
        var hasOwn = {}.hasOwnProperty;
        function classNames() {
          var classes = "";
          for (var i = 0; i < arguments.length; i++) {
            var arg = arguments[i];
            if (arg) {
              classes = appendClass(classes, parseValue(arg));
            }
          }
          return classes;
        }
        function parseValue(arg) {
          if (typeof arg === "string" || typeof arg === "number") {
            return arg;
          }
          if (typeof arg !== "object") {
            return "";
          }
          if (Array.isArray(arg)) {
            return classNames.apply(null, arg);
          }
          if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
            return arg.toString();
          }
          var classes = "";
          for (var key in arg) {
            if (hasOwn.call(arg, key) && arg[key]) {
              classes = appendClass(classes, key);
            }
          }
          return classes;
        }
        function appendClass(value, newClass) {
          if (!newClass) {
            return value;
          }
          if (value) {
            return value + " " + newClass;
          }
          return value + newClass;
        }
        if (true && module.exports) {
          classNames.default = classNames;
          module.exports = classNames;
        } else if (true) {
          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
            return classNames;
          }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
        } else {}
      })();
    },
    3219(module) {
      "use strict";
      module.exports = JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}');
    },
    2951(module) {
      "use strict";
      module.exports = JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}');
    },
    4589(module) {
      "use strict";
      module.exports = JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}');
    },
    3241(module) {
      "use strict";
      module.exports = JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}');
    },
    1636(module) {
      "use strict";
      module.exports = {
        rE: "6.6.1"
      };
    },
    5579(module) {
      "use strict";
      module.exports = JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}');
    }
  };
  var __webpack_module_cache__ = {};
  function __webpack_require__(moduleId) {
    var cachedModule = __webpack_module_cache__[moduleId];
    if (cachedModule !== undefined) {
      return cachedModule.exports;
    }
    var module = __webpack_module_cache__[moduleId] = {
      id: moduleId,
      loaded: false,
      exports: {}
    };
    __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    module.loaded = true;
    return module.exports;
  }
  (() => {
    __webpack_require__.amdO = {};
  })();
  (() => {
    __webpack_require__.n = module => {
      var getter = module && module.__esModule ? () => module["default"] : () => module;
      __webpack_require__.d(getter, {
        a: getter
      });
      return getter;
    };
  })();
  (() => {
    __webpack_require__.d = (exports, definition) => {
      for (var key in definition) {
        if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
          Object.defineProperty(exports, key, {
            enumerable: true,
            get: definition[key]
          });
        }
      }
    };
  })();
  (() => {
    __webpack_require__.g = function() {
      if (typeof globalThis === "object") return globalThis;
      try {
        return this || new Function("return this")();
      } catch (e) {
        if (typeof window === "object") return window;
      }
    }();
  })();
  (() => {
    __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
  })();
  (() => {
    __webpack_require__.r = exports => {
      if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
        Object.defineProperty(exports, Symbol.toStringTag, {
          value: "Module"
        });
      }
      Object.defineProperty(exports, "__esModule", {
        value: true
      });
    };
  })();
  (() => {
    __webpack_require__.nmd = module => {
      module.paths = [];
      if (!module.children) module.children = [];
      return module;
    };
  })();
  var __webpack_exports__ = {};
  (() => {
    "use strict";
    var react = __webpack_require__(6540);
    var client = __webpack_require__(5338);
    var browser_polyfill = __webpack_require__(6815);
    var browser_polyfill_default = __webpack_require__.n(browser_polyfill);
    var lib = __webpack_require__(3207);
    function n(n) {
      for (var r = arguments.length, t = Array(r > 1 ? r - 1 : 0), e = 1; e < r; e++) t[e - 1] = arguments[e];
      if (false) {
        var i, o;
      }
      throw Error("[Immer] minified error nr: " + n + (t.length ? " " + t.map((function(n) {
        return "'" + n + "'";
      })).join(",") : "") + ". Find the full error at: https://bit.ly/3cXEKWf");
    }
    function r(n) {
      return !!n && !!n[Q];
    }
    function t(n) {
      var r;
      return !!n && (function(n) {
        if (!n || "object" != typeof n) return !1;
        var r = Object.getPrototypeOf(n);
        if (null === r) return !0;
        var t = Object.hasOwnProperty.call(r, "constructor") && r.constructor;
        return t === Object || "function" == typeof t && Function.toString.call(t) === Z;
      }(n) || Array.isArray(n) || !!n[L] || !!(null === (r = n.constructor) || void 0 === r ? void 0 : r[L]) || s(n) || v(n));
    }
    function e(t) {
      return r(t) || n(23, t), t[Q].t;
    }
    function i(n, r, t) {
      void 0 === t && (t = !1), 0 === o(n) ? (t ? Object.keys : nn)(n).forEach((function(e) {
        t && "symbol" == typeof e || r(e, n[e], n);
      })) : n.forEach((function(t, e) {
        return r(e, t, n);
      }));
    }
    function o(n) {
      var r = n[Q];
      return r ? r.i > 3 ? r.i - 4 : r.i : Array.isArray(n) ? 1 : s(n) ? 2 : v(n) ? 3 : 0;
    }
    function u(n, r) {
      return 2 === o(n) ? n.has(r) : Object.prototype.hasOwnProperty.call(n, r);
    }
    function a(n, r) {
      return 2 === o(n) ? n.get(r) : n[r];
    }
    function f(n, r, t) {
      var e = o(n);
      2 === e ? n.set(r, t) : 3 === e ? n.add(t) : n[r] = t;
    }
    function c(n, r) {
      return n === r ? 0 !== n || 1 / n == 1 / r : n != n && r != r;
    }
    function s(n) {
      return X && n instanceof Map;
    }
    function v(n) {
      return q && n instanceof Set;
    }
    function p(n) {
      return n.o || n.t;
    }
    function l(n) {
      if (Array.isArray(n)) return Array.prototype.slice.call(n);
      var r = rn(n);
      delete r[Q];
      for (var t = nn(r), e = 0; e < t.length; e++) {
        var i = t[e], o = r[i];
        !1 === o.writable && (o.writable = !0, o.configurable = !0), (o.get || o.set) && (r[i] = {
          configurable: !0,
          writable: !0,
          enumerable: o.enumerable,
          value: n[i]
        });
      }
      return Object.create(Object.getPrototypeOf(n), r);
    }
    function d(n, e) {
      return void 0 === e && (e = !1), y(n) || r(n) || !t(n) || (o(n) > 1 && (n.set = n.add = n.clear = n.delete = h), 
      Object.freeze(n), e && i(n, (function(n, r) {
        return d(r, !0);
      }), !0)), n;
    }
    function h() {
      n(2);
    }
    function y(n) {
      return null == n || "object" != typeof n || Object.isFrozen(n);
    }
    function b(r) {
      var t = tn[r];
      return t || n(18, r), t;
    }
    function m(n, r) {
      tn[n] || (tn[n] = r);
    }
    function _() {
      return true || 0, U;
    }
    function j(n, r) {
      r && (b("Patches"), n.u = [], n.s = [], n.v = r);
    }
    function g(n) {
      O(n), n.p.forEach(S), n.p = null;
    }
    function O(n) {
      n === U && (U = n.l);
    }
    function w(n) {
      return U = {
        p: [],
        l: U,
        h: n,
        m: !0,
        _: 0
      };
    }
    function S(n) {
      var r = n[Q];
      0 === r.i || 1 === r.i ? r.j() : r.g = !0;
    }
    function P(r, e) {
      e._ = e.p.length;
      var i = e.p[0], o = void 0 !== r && r !== i;
      return e.h.O || b("ES5").S(e, r, o), o ? (i[Q].P && (g(e), n(4)), t(r) && (r = M(e, r), 
      e.l || x(e, r)), e.u && b("Patches").M(i[Q].t, r, e.u, e.s)) : r = M(e, i, []), 
      g(e), e.u && e.v(e.u, e.s), r !== H ? r : void 0;
    }
    function M(n, r, t) {
      if (y(r)) return r;
      var e = r[Q];
      if (!e) return i(r, (function(i, o) {
        return A(n, e, r, i, o, t);
      }), !0), r;
      if (e.A !== n) return r;
      if (!e.P) return x(n, e.t, !0), e.t;
      if (!e.I) {
        e.I = !0, e.A._--;
        var o = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o, u = o, a = !1;
        3 === e.i && (u = new Set(o), o.clear(), a = !0), i(u, (function(r, i) {
          return A(n, e, o, r, i, t, a);
        })), x(n, o, !1), t && n.u && b("Patches").N(e, t, n.u, n.s);
      }
      return e.o;
    }
    function A(e, i, o, a, c, s, v) {
      if (false && 0, r(c)) {
        var p = M(e, c, s && i && 3 !== i.i && !u(i.R, a) ? s.concat(a) : void 0);
        if (f(o, a, p), !r(p)) return;
        e.m = !1;
      } else v && o.add(c);
      if (t(c) && !y(c)) {
        if (!e.h.D && e._ < 1) return;
        M(e, c), i && i.A.l || x(e, c);
      }
    }
    function x(n, r, t) {
      void 0 === t && (t = !1), !n.l && n.h.D && n.m && d(r, t);
    }
    function z(n, r) {
      var t = n[Q];
      return (t ? p(t) : n)[r];
    }
    function I(n, r) {
      if (r in n) for (var t = Object.getPrototypeOf(n); t; ) {
        var e = Object.getOwnPropertyDescriptor(t, r);
        if (e) return e;
        t = Object.getPrototypeOf(t);
      }
    }
    function k(n) {
      n.P || (n.P = !0, n.l && k(n.l));
    }
    function E(n) {
      n.o || (n.o = l(n.t));
    }
    function N(n, r, t) {
      var e = s(r) ? b("MapSet").F(r, t) : v(r) ? b("MapSet").T(r, t) : n.O ? function(n, r) {
        var t = Array.isArray(n), e = {
          i: t ? 1 : 0,
          A: r ? r.A : _(),
          P: !1,
          I: !1,
          R: {},
          l: r,
          t: n,
          k: null,
          o: null,
          j: null,
          C: !1
        }, i = e, o = en;
        t && (i = [ e ], o = on);
        var u = Proxy.revocable(i, o), a = u.revoke, f = u.proxy;
        return e.k = f, e.j = a, f;
      }(r, t) : b("ES5").J(r, t);
      return (t ? t.A : _()).p.push(e), e;
    }
    function R(e) {
      return r(e) || n(22, e), function n(r) {
        if (!t(r)) return r;
        var e, u = r[Q], c = o(r);
        if (u) {
          if (!u.P && (u.i < 4 || !b("ES5").K(u))) return u.t;
          u.I = !0, e = D(r, c), u.I = !1;
        } else e = D(r, c);
        return i(e, (function(r, t) {
          u && a(u.t, r) === t || f(e, r, n(t));
        })), 3 === c ? new Set(e) : e;
      }(e);
    }
    function D(n, r) {
      switch (r) {
       case 2:
        return new Map(n);

       case 3:
        return Array.from(n);
      }
      return l(n);
    }
    function F() {
      function t(n, r) {
        var t = s[n];
        return t ? t.enumerable = r : s[n] = t = {
          configurable: !0,
          enumerable: r,
          get: function() {
            var r = this[Q];
            return false && 0, en.get(r, n);
          },
          set: function(r) {
            var t = this[Q];
            false && 0, en.set(t, n, r);
          }
        }, t;
      }
      function e(n) {
        for (var r = n.length - 1; r >= 0; r--) {
          var t = n[r][Q];
          if (!t.P) switch (t.i) {
           case 5:
            a(t) && k(t);
            break;

           case 4:
            o(t) && k(t);
          }
        }
      }
      function o(n) {
        for (var r = n.t, t = n.k, e = nn(t), i = e.length - 1; i >= 0; i--) {
          var o = e[i];
          if (o !== Q) {
            var a = r[o];
            if (void 0 === a && !u(r, o)) return !0;
            var f = t[o], s = f && f[Q];
            if (s ? s.t !== a : !c(f, a)) return !0;
          }
        }
        var v = !!r[Q];
        return e.length !== nn(r).length + (v ? 0 : 1);
      }
      function a(n) {
        var r = n.k;
        if (r.length !== n.t.length) return !0;
        var t = Object.getOwnPropertyDescriptor(r, r.length - 1);
        if (t && !t.get) return !0;
        for (var e = 0; e < r.length; e++) if (!r.hasOwnProperty(e)) return !0;
        return !1;
      }
      function f(r) {
        r.g && n(3, JSON.stringify(p(r)));
      }
      var s = {};
      m("ES5", {
        J: function(n, r) {
          var e = Array.isArray(n), i = function(n, r) {
            if (n) {
              for (var e = Array(r.length), i = 0; i < r.length; i++) Object.defineProperty(e, "" + i, t(i, !0));
              return e;
            }
            var o = rn(r);
            delete o[Q];
            for (var u = nn(o), a = 0; a < u.length; a++) {
              var f = u[a];
              o[f] = t(f, n || !!o[f].enumerable);
            }
            return Object.create(Object.getPrototypeOf(r), o);
          }(e, n), o = {
            i: e ? 5 : 4,
            A: r ? r.A : _(),
            P: !1,
            I: !1,
            R: {},
            l: r,
            t: n,
            k: i,
            o: null,
            g: !1,
            C: !1
          };
          return Object.defineProperty(i, Q, {
            value: o,
            writable: !0
          }), i;
        },
        S: function(n, t, o) {
          o ? r(t) && t[Q].A === n && e(n.p) : (n.u && function n(r) {
            if (r && "object" == typeof r) {
              var t = r[Q];
              if (t) {
                var e = t.t, o = t.k, f = t.R, c = t.i;
                if (4 === c) i(o, (function(r) {
                  r !== Q && (void 0 !== e[r] || u(e, r) ? f[r] || n(o[r]) : (f[r] = !0, k(t)));
                })), i(e, (function(n) {
                  void 0 !== o[n] || u(o, n) || (f[n] = !1, k(t));
                })); else if (5 === c) {
                  if (a(t) && (k(t), f.length = !0), o.length < e.length) for (var s = o.length; s < e.length; s++) f[s] = !1; else for (var v = e.length; v < o.length; v++) f[v] = !0;
                  for (var p = Math.min(o.length, e.length), l = 0; l < p; l++) o.hasOwnProperty(l) || (f[l] = !0), 
                  void 0 === f[l] && n(o[l]);
                }
              }
            }
          }(n.p[0]), e(n.p));
        },
        K: function(n) {
          return 4 === n.i ? o(n) : a(n);
        }
      });
    }
    function T() {
      function e(n) {
        if (!t(n)) return n;
        if (Array.isArray(n)) return n.map(e);
        if (s(n)) return new Map(Array.from(n.entries()).map((function(n) {
          return [ n[0], e(n[1]) ];
        })));
        if (v(n)) return new Set(Array.from(n).map(e));
        var r = Object.create(Object.getPrototypeOf(n));
        for (var i in n) r[i] = e(n[i]);
        return u(n, L) && (r[L] = n[L]), r;
      }
      function f(n) {
        return r(n) ? e(n) : n;
      }
      var c = "add";
      m("Patches", {
        $: function(r, t) {
          return t.forEach((function(t) {
            for (var i = t.path, u = t.op, f = r, s = 0; s < i.length - 1; s++) {
              var v = o(f), p = i[s];
              "string" != typeof p && "number" != typeof p && (p = "" + p), 0 !== v && 1 !== v || "__proto__" !== p && "constructor" !== p || n(24), 
              "function" == typeof f && "prototype" === p && n(24), "object" != typeof (f = a(f, p)) && n(15, i.join("/"));
            }
            var l = o(f), d = e(t.value), h = i[i.length - 1];
            switch (u) {
             case "replace":
              switch (l) {
               case 2:
                return f.set(h, d);

               case 3:
                n(16);

               default:
                return f[h] = d;
              }

             case c:
              switch (l) {
               case 1:
                return "-" === h ? f.push(d) : f.splice(h, 0, d);

               case 2:
                return f.set(h, d);

               case 3:
                return f.add(d);

               default:
                return f[h] = d;
              }

             case "remove":
              switch (l) {
               case 1:
                return f.splice(h, 1);

               case 2:
                return f.delete(h);

               case 3:
                return f.delete(t.value);

               default:
                return delete f[h];
              }

             default:
              n(17, u);
            }
          })), r;
        },
        N: function(n, r, t, e) {
          switch (n.i) {
           case 0:
           case 4:
           case 2:
            return function(n, r, t, e) {
              var o = n.t, s = n.o;
              i(n.R, (function(n, i) {
                var v = a(o, n), p = a(s, n), l = i ? u(o, n) ? "replace" : c : "remove";
                if (v !== p || "replace" !== l) {
                  var d = r.concat(n);
                  t.push("remove" === l ? {
                    op: l,
                    path: d
                  } : {
                    op: l,
                    path: d,
                    value: p
                  }), e.push(l === c ? {
                    op: "remove",
                    path: d
                  } : "remove" === l ? {
                    op: c,
                    path: d,
                    value: f(v)
                  } : {
                    op: "replace",
                    path: d,
                    value: f(v)
                  });
                }
              }));
            }(n, r, t, e);

           case 5:
           case 1:
            return function(n, r, t, e) {
              var i = n.t, o = n.R, u = n.o;
              if (u.length < i.length) {
                var a = [ u, i ];
                i = a[0], u = a[1];
                var s = [ e, t ];
                t = s[0], e = s[1];
              }
              for (var v = 0; v < i.length; v++) if (o[v] && u[v] !== i[v]) {
                var p = r.concat([ v ]);
                t.push({
                  op: "replace",
                  path: p,
                  value: f(u[v])
                }), e.push({
                  op: "replace",
                  path: p,
                  value: f(i[v])
                });
              }
              for (var l = i.length; l < u.length; l++) {
                var d = r.concat([ l ]);
                t.push({
                  op: c,
                  path: d,
                  value: f(u[l])
                });
              }
              i.length < u.length && e.push({
                op: "replace",
                path: r.concat([ "length" ]),
                value: i.length
              });
            }(n, r, t, e);

           case 3:
            return function(n, r, t, e) {
              var i = n.t, o = n.o, u = 0;
              i.forEach((function(n) {
                if (!o.has(n)) {
                  var i = r.concat([ u ]);
                  t.push({
                    op: "remove",
                    path: i,
                    value: n
                  }), e.unshift({
                    op: c,
                    path: i,
                    value: n
                  });
                }
                u++;
              })), u = 0, o.forEach((function(n) {
                if (!i.has(n)) {
                  var o = r.concat([ u ]);
                  t.push({
                    op: c,
                    path: o,
                    value: n
                  }), e.unshift({
                    op: "remove",
                    path: o,
                    value: n
                  });
                }
                u++;
              }));
            }(n, r, t, e);
          }
        },
        M: function(n, r, t, e) {
          t.push({
            op: "replace",
            path: [],
            value: r === H ? void 0 : r
          }), e.push({
            op: "replace",
            path: [],
            value: n
          });
        }
      });
    }
    function C() {
      function r(n, r) {
        function t() {
          this.constructor = n;
        }
        a(n, r), n.prototype = (t.prototype = r.prototype, new t);
      }
      function e(n) {
        n.o || (n.R = new Map, n.o = new Map(n.t));
      }
      function o(n) {
        n.o || (n.o = new Set, n.t.forEach((function(r) {
          if (t(r)) {
            var e = N(n.A.h, r, n);
            n.p.set(r, e), n.o.add(e);
          } else n.o.add(r);
        })));
      }
      function u(r) {
        r.g && n(3, JSON.stringify(p(r)));
      }
      var a = function(n, r) {
        return (a = Object.setPrototypeOf || {
          __proto__: []
        } instanceof Array && function(n, r) {
          n.__proto__ = r;
        } || function(n, r) {
          for (var t in r) r.hasOwnProperty(t) && (n[t] = r[t]);
        })(n, r);
      }, f = function() {
        function n(n, r) {
          return this[Q] = {
            i: 2,
            l: r,
            A: r ? r.A : _(),
            P: !1,
            I: !1,
            o: void 0,
            R: void 0,
            t: n,
            k: this,
            C: !1,
            g: !1
          }, this;
        }
        r(n, Map);
        var o = n.prototype;
        return Object.defineProperty(o, "size", {
          get: function() {
            return p(this[Q]).size;
          }
        }), o.has = function(n) {
          return p(this[Q]).has(n);
        }, o.set = function(n, r) {
          var t = this[Q];
          return u(t), p(t).has(n) && p(t).get(n) === r || (e(t), k(t), t.R.set(n, !0), t.o.set(n, r), 
          t.R.set(n, !0)), this;
        }, o.delete = function(n) {
          if (!this.has(n)) return !1;
          var r = this[Q];
          return u(r), e(r), k(r), r.t.has(n) ? r.R.set(n, !1) : r.R.delete(n), r.o.delete(n), 
          !0;
        }, o.clear = function() {
          var n = this[Q];
          u(n), p(n).size && (e(n), k(n), n.R = new Map, i(n.t, (function(r) {
            n.R.set(r, !1);
          })), n.o.clear());
        }, o.forEach = function(n, r) {
          var t = this;
          p(this[Q]).forEach((function(e, i) {
            n.call(r, t.get(i), i, t);
          }));
        }, o.get = function(n) {
          var r = this[Q];
          u(r);
          var i = p(r).get(n);
          if (r.I || !t(i)) return i;
          if (i !== r.t.get(n)) return i;
          var o = N(r.A.h, i, r);
          return e(r), r.o.set(n, o), o;
        }, o.keys = function() {
          return p(this[Q]).keys();
        }, o.values = function() {
          var n, r = this, t = this.keys();
          return (n = {})[V] = function() {
            return r.values();
          }, n.next = function() {
            var n = t.next();
            return n.done ? n : {
              done: !1,
              value: r.get(n.value)
            };
          }, n;
        }, o.entries = function() {
          var n, r = this, t = this.keys();
          return (n = {})[V] = function() {
            return r.entries();
          }, n.next = function() {
            var n = t.next();
            if (n.done) return n;
            var e = r.get(n.value);
            return {
              done: !1,
              value: [ n.value, e ]
            };
          }, n;
        }, o[V] = function() {
          return this.entries();
        }, n;
      }(), c = function() {
        function n(n, r) {
          return this[Q] = {
            i: 3,
            l: r,
            A: r ? r.A : _(),
            P: !1,
            I: !1,
            o: void 0,
            t: n,
            k: this,
            p: new Map,
            g: !1,
            C: !1
          }, this;
        }
        r(n, Set);
        var t = n.prototype;
        return Object.defineProperty(t, "size", {
          get: function() {
            return p(this[Q]).size;
          }
        }), t.has = function(n) {
          var r = this[Q];
          return u(r), r.o ? !!r.o.has(n) || !(!r.p.has(n) || !r.o.has(r.p.get(n))) : r.t.has(n);
        }, t.add = function(n) {
          var r = this[Q];
          return u(r), this.has(n) || (o(r), k(r), r.o.add(n)), this;
        }, t.delete = function(n) {
          if (!this.has(n)) return !1;
          var r = this[Q];
          return u(r), o(r), k(r), r.o.delete(n) || !!r.p.has(n) && r.o.delete(r.p.get(n));
        }, t.clear = function() {
          var n = this[Q];
          u(n), p(n).size && (o(n), k(n), n.o.clear());
        }, t.values = function() {
          var n = this[Q];
          return u(n), o(n), n.o.values();
        }, t.entries = function() {
          var n = this[Q];
          return u(n), o(n), n.o.entries();
        }, t.keys = function() {
          return this.values();
        }, t[V] = function() {
          return this.values();
        }, t.forEach = function(n, r) {
          for (var t = this.values(), e = t.next(); !e.done; ) n.call(r, e.value, e.value, this), 
          e = t.next();
        }, n;
      }();
      m("MapSet", {
        F: function(n, r) {
          return new f(n, r);
        },
        T: function(n, r) {
          return new c(n, r);
        }
      });
    }
    function J() {
      F(), C(), T();
    }
    function K(n) {
      return n;
    }
    function $(n) {
      return n;
    }
    var G, U, W = "undefined" != typeof Symbol && "symbol" == typeof Symbol("x"), X = "undefined" != typeof Map, q = "undefined" != typeof Set, B = "undefined" != typeof Proxy && void 0 !== Proxy.revocable && "undefined" != typeof Reflect, H = W ? Symbol.for("immer-nothing") : ((G = {})["immer-nothing"] = !0, 
    G), L = W ? Symbol.for("immer-draftable") : "__$immer_draftable", Q = W ? Symbol.for("immer-state") : "__$immer_state", V = "undefined" != typeof Symbol && Symbol.iterator || "@@iterator", Y = {
      0: "Illegal state",
      1: "Immer drafts cannot have computed properties",
      2: "This object has been frozen and should not be mutated",
      3: function(n) {
        return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + n;
      },
      4: "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",
      5: "Immer forbids circular references",
      6: "The first or second argument to `produce` must be a function",
      7: "The third argument to `produce` must be a function or undefined",
      8: "First argument to `createDraft` must be a plain object, an array, or an immerable object",
      9: "First argument to `finishDraft` must be a draft returned by `createDraft`",
      10: "The given draft is already finalized",
      11: "Object.defineProperty() cannot be used on an Immer draft",
      12: "Object.setPrototypeOf() cannot be used on an Immer draft",
      13: "Immer only supports deleting array indices",
      14: "Immer only supports setting array indices and the 'length' property",
      15: function(n) {
        return "Cannot apply patch, path doesn't resolve: " + n;
      },
      16: 'Sets cannot have "replace" patches.',
      17: function(n) {
        return "Unsupported patch operation: " + n;
      },
      18: function(n) {
        return "The plugin for '" + n + "' has not been loaded into Immer. To enable the plugin, import and call `enable" + n + "()` when initializing your application.";
      },
      20: "Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",
      21: function(n) {
        return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '" + n + "'";
      },
      22: function(n) {
        return "'current' expects a draft, got: " + n;
      },
      23: function(n) {
        return "'original' expects a draft, got: " + n;
      },
      24: "Patching reserved attributes like __proto__, prototype and constructor is not allowed"
    }, Z = "" + Object.prototype.constructor, nn = "undefined" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function(n) {
      return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n));
    } : Object.getOwnPropertyNames, rn = Object.getOwnPropertyDescriptors || function(n) {
      var r = {};
      return nn(n).forEach((function(t) {
        r[t] = Object.getOwnPropertyDescriptor(n, t);
      })), r;
    }, tn = {}, en = {
      get: function(n, r) {
        if (r === Q) return n;
        var e = p(n);
        if (!u(e, r)) return function(n, r, t) {
          var e, i = I(r, t);
          return i ? "value" in i ? i.value : null === (e = i.get) || void 0 === e ? void 0 : e.call(n.k) : void 0;
        }(n, e, r);
        var i = e[r];
        return n.I || !t(i) ? i : i === z(n.t, r) ? (E(n), n.o[r] = N(n.A.h, i, n)) : i;
      },
      has: function(n, r) {
        return r in p(n);
      },
      ownKeys: function(n) {
        return Reflect.ownKeys(p(n));
      },
      set: function(n, r, t) {
        var e = I(p(n), r);
        if (null == e ? void 0 : e.set) return e.set.call(n.k, t), !0;
        if (!n.P) {
          var i = z(p(n), r), o = null == i ? void 0 : i[Q];
          if (o && o.t === t) return n.o[r] = t, n.R[r] = !1, !0;
          if (c(t, i) && (void 0 !== t || u(n.t, r))) return !0;
          E(n), k(n);
        }
        return n.o[r] === t && (void 0 !== t || r in n.o) || Number.isNaN(t) && Number.isNaN(n.o[r]) || (n.o[r] = t, 
        n.R[r] = !0), !0;
      },
      deleteProperty: function(n, r) {
        return void 0 !== z(n.t, r) || r in n.t ? (n.R[r] = !1, E(n), k(n)) : delete n.R[r], 
        n.o && delete n.o[r], !0;
      },
      getOwnPropertyDescriptor: function(n, r) {
        var t = p(n), e = Reflect.getOwnPropertyDescriptor(t, r);
        return e ? {
          writable: !0,
          configurable: 1 !== n.i || "length" !== r,
          enumerable: e.enumerable,
          value: t[r]
        } : e;
      },
      defineProperty: function() {
        n(11);
      },
      getPrototypeOf: function(n) {
        return Object.getPrototypeOf(n.t);
      },
      setPrototypeOf: function() {
        n(12);
      }
    }, on = {};
    i(en, (function(n, r) {
      on[n] = function() {
        return arguments[0] = arguments[0][0], r.apply(this, arguments);
      };
    })), on.deleteProperty = function(r, t) {
      return false && 0, on.set.call(this, r, t, void 0);
    }, on.set = function(r, t, e) {
      return false && 0, en.set.call(this, r[0], t, e, r[0]);
    };
    var un = function() {
      function e(r) {
        var e = this;
        this.O = B, this.D = !0, this.produce = function(r, i, o) {
          if ("function" == typeof r && "function" != typeof i) {
            var u = i;
            i = r;
            var a = e;
            return function(n) {
              var r = this;
              void 0 === n && (n = u);
              for (var t = arguments.length, e = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) e[o - 1] = arguments[o];
              return a.produce(n, (function(n) {
                var t;
                return (t = i).call.apply(t, [ r, n ].concat(e));
              }));
            };
          }
          var f;
          if ("function" != typeof i && n(6), void 0 !== o && "function" != typeof o && n(7), 
          t(r)) {
            var c = w(e), s = N(e, r, void 0), v = !0;
            try {
              f = i(s), v = !1;
            } finally {
              v ? g(c) : O(c);
            }
            return "undefined" != typeof Promise && f instanceof Promise ? f.then((function(n) {
              return j(c, o), P(n, c);
            }), (function(n) {
              throw g(c), n;
            })) : (j(c, o), P(f, c));
          }
          if (!r || "object" != typeof r) {
            if (void 0 === (f = i(r)) && (f = r), f === H && (f = void 0), e.D && d(f, !0), 
            o) {
              var p = [], l = [];
              b("Patches").M(r, f, p, l), o(p, l);
            }
            return f;
          }
          n(21, r);
        }, this.produceWithPatches = function(n, r) {
          if ("function" == typeof n) return function(r) {
            for (var t = arguments.length, i = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) i[o - 1] = arguments[o];
            return e.produceWithPatches(r, (function(r) {
              return n.apply(void 0, [ r ].concat(i));
            }));
          };
          var t, i, o = e.produce(n, r, (function(n, r) {
            t = n, i = r;
          }));
          return "undefined" != typeof Promise && o instanceof Promise ? o.then((function(n) {
            return [ n, t, i ];
          })) : [ o, t, i ];
        }, "boolean" == typeof (null == r ? void 0 : r.useProxies) && this.setUseProxies(r.useProxies), 
        "boolean" == typeof (null == r ? void 0 : r.autoFreeze) && this.setAutoFreeze(r.autoFreeze);
      }
      var i = e.prototype;
      return i.createDraft = function(e) {
        t(e) || n(8), r(e) && (e = R(e));
        var i = w(this), o = N(this, e, void 0);
        return o[Q].C = !0, O(i), o;
      }, i.finishDraft = function(r, t) {
        var e = r && r[Q];
        false && 0;
        var i = e.A;
        return j(i, t), P(void 0, i);
      }, i.setAutoFreeze = function(n) {
        this.D = n;
      }, i.setUseProxies = function(r) {
        r && !B && n(20), this.O = r;
      }, i.applyPatches = function(n, t) {
        var e;
        for (e = t.length - 1; e >= 0; e--) {
          var i = t[e];
          if (0 === i.path.length && "replace" === i.op) {
            n = i.value;
            break;
          }
        }
        e > -1 && (t = t.slice(e + 1));
        var o = b("Patches").$;
        return r(n) ? o(n, t) : this.produce(n, (function(n) {
          return o(n, t);
        }));
      }, e;
    }(), an = new un, fn = an.produce, cn = an.produceWithPatches.bind(an), sn = an.setAutoFreeze.bind(an), vn = an.setUseProxies.bind(an), pn = an.applyPatches.bind(an), ln = an.createDraft.bind(an), dn = an.finishDraft.bind(an);
    const immer_esm = fn;
    var jsondiffpatch_umd = __webpack_require__(1562);
    const differ = (0, jsondiffpatch_umd.create)();
    const bigintDiffFilter = context => {
      if (typeof context.left === "bigint" && typeof context.right === "bigint") {
        if (context.left !== context.right) {
          context.setResult([ context.left, context.right ]);
        }
      }
    };
    bigintDiffFilter.filterName = "bigint";
    differ.processor.pipes.diff.before("objects", bigintDiffFilter);
    const differ_diff = differ.diff.bind(differ);
    const patch = differ.patch.bind(differ);
    var qethers_lib = __webpack_require__(7785);
    var address_lib = __webpack_require__(171);
    const QEVM = {
      chainID: "256",
      name: "QEVM",
      symbol: "QEVM",
      decimals: 18,
      metadata: {
        tokenLists: []
      }
    };
    const POSEIDON_QEVM = {
      ...QEVM,
      chainID: "257",
      name: "Poseidon QEVM",
      symbol: "pQEVM"
    };
    const BASE_ASSETS_BY_CUSTOM_NAME = {
      QEVM,
      POSEIDON_QEVM
    };
    const BASE_ASSETS = Object.values(BASE_ASSETS_BY_CUSTOM_NAME);
    const coinTypesByAssetSymbol = {
      QEVM: 10101
    };
    const USD = {
      name: "United States Dollar",
      symbol: "USD",
      decimals: 10
    };
    const FIAT_CURRENCIES = [ USD ];
    const FIAT_CURRENCIES_SYMBOL = FIAT_CURRENCIES.map((currency => currency.symbol));
    const QEVM_DATA = {
      coinType: coinTypesByAssetSymbol.QEVM,
      metadata: {
        tokenLists: [],
        websiteURL: "https://quantumevm.com"
      }
    };
    const currencies_QEVM = {
      ...BASE_ASSETS_BY_CUSTOM_NAME.QEVM,
      ...QEVM_DATA
    };
    const currencies_POSEIDON_QEVM = {
      ...BASE_ASSETS_BY_CUSTOM_NAME.POSEIDON_QEVM,
      ...QEVM_DATA
    };
    const BUILT_IN_NETWORK_BASE_ASSETS = [ currencies_QEVM, currencies_POSEIDON_QEVM ];
    const ZEUS = {
      name: "Zeus",
      baseAsset: currencies_QEVM,
      chainID: "256",
      family: "QEVM"
    };
    const POSEIDON = {
      name: "Poseidon",
      baseAsset: currencies_POSEIDON_QEVM,
      chainID: "257",
      family: "QEVM"
    };
    const DEFAULT_NETWORKS = [ ZEUS, POSEIDON ];
    function isBuiltInNetwork(network) {
      return DEFAULT_NETWORKS.some((builtInNetwork => builtInNetwork.chainID === network.chainID));
    }
    const DEFAULT_NETWORKS_BY_CHAIN_ID = new Set(DEFAULT_NETWORKS.map((network => network.chainID)));
    const EIP_1559_COMPLIANT_CHAIN_IDS = new Set([ ZEUS, POSEIDON ].map((network => network.chainID)));
    const CHAINS_WITH_MEMPOOL = new Set([ ZEUS, POSEIDON ].map((network => network.chainID)));
    const NETWORK_BY_CHAIN_ID = {
      [ZEUS.chainID]: ZEUS,
      [POSEIDON.chainID]: POSEIDON
    };
    const TEST_NETWORK_BY_CHAIN_ID = new Set([ POSEIDON ].map((network => network.chainID)));
    const CHAIN_ID_TO_RPC_URLS = {
      [ZEUS.chainID]: [ "https://zeus.rpc.quantumevm.com/" ],
      [POSEIDON.chainID]: [ "https://poseidon.rpc.quantumevm.com/" ]
    };
    const NETWORKS_WITH_FEE_SETTINGS = new Set([]);
    const STATE_KEY = "qwallet";
    const POPUP_MONITOR_PORT_NAME = "popup-monitor";
    const NETWORK_TYPES = {
      qevm: "qevm"
    };
    const TRANSPORT_TYPES = {
      ws: "ws",
      http: "http"
    };
    const ALARMS = {
      block: "block",
      minute: "minute",
      times: {
        block: .13,
        minute: .1
      }
    };
    const SECOND = 1e3;
    const MINUTE = 60 * SECOND;
    const HOUR = 60 * MINUTE;
    const DAY = 24 * HOUR;
    const DEFAULT_COMMUNITY_MULTISIG_ADDRESS = "0x99b36fDbC582D113aF36A21EBa06BFEAb7b9bE12";
    const COMMUNITY_MULTISIG_ADDRESS_BY_CHAINID = {};
    var isAddress;
    var utils;
    var utils_ZEUS;
    var utils_POSEIDON;
    function isValidChecksumAddress(address) {
      return isAddress(address);
    }
    function isMixedCaseAddress(address) {
      let addressValue = address;
      if (address.slice(0, 2) === "0X") {
        addressValue = `0x${address.slice(2)}`;
      }
      return !(addressValue.match(/^(0x)?[0-9A-F]{64}$/) || addressValue.match(/^(0x)?[0-9a-f]{64}$/));
    }
    function normalizeQEVMAddress(address) {
      return (0, address_lib.getAddress)(address);
    }
    function normalizeAddressOnNetwork({address, network}) {
      return {
        address: normalizeQEVMAddress(address),
        network
      };
    }
    function truncateDecimalAmount(value, decimalLength, maxDecimalLength = decimalLength) {
      const valueString = value.toString();
      if (!valueString.includes(".")) {
        return valueString;
      }
      const [integer, decimals] = valueString.split(".");
      const firstSignificantDecimalDigit = [ ...decimals ].findIndex((digit => digit !== "0")) + 1;
      const decimalTruncationLength = integer.length > 1 || integer[0] !== "0" ? decimalLength : Math.min(Math.max(decimalLength, firstSignificantDecimalDigit), maxDecimalLength);
      if (decimalTruncationLength < firstSignificantDecimalDigit) {
        return integer;
      }
      const decimalsTruncated = decimals.substring(0, decimalTruncationLength);
      return `${integer}.${decimalsTruncated}`;
    }
    function sameQEVMAddress(address1, address2) {
      if (typeof address1 === "undefined" || typeof address2 === "undefined" || address1 === null || address2 === null) {
        return false;
      }
      return (0, address_lib.getAddress)(address1) === (0, address_lib.getAddress)(address2);
    }
    function gweiToWei(value) {
      return BigInt(qethers_lib.utils.parseUnits(value.toString(), "gwei").toString());
    }
    function convertToEth(value) {
      if (value && value >= 1) {
        return qethers_lib.utils.formatUnits(BigInt(value));
      }
      return "";
    }
    function weiToGwei(value) {
      if (value && value >= 1) {
        return truncateDecimalAmount(qethers_lib.utils.formatUnits(BigInt(value), "gwei"), 2);
      }
      return "";
    }
    function encodeJSON(input) {
      return JSON.stringify(input, ((_, value) => {
        if (typeof value === "bigint") {
          return {
            B_I_G_I_N_T: value.toString()
          };
        }
        return value;
      }));
    }
    function decodeJSON(input) {
      return JSON.parse(input, ((_, value) => value !== null && typeof value === "object" && "B_I_G_I_N_T" in value ? BigInt(value.B_I_G_I_N_T) : value));
    }
    function getQEVMNetwork() {
      const quantumevmNetwork = "MISSING_ENV_VAR".QEVM_NETWORK?.toUpperCase();
      if (quantumevmNetwork === "ZEUS") {
        return utils_ZEUS;
      }
      if (quantumevmNetwork === "POSEIDON") {
        return utils_POSEIDON;
      }
      return utils_ZEUS;
    }
    function isProbablyQEVMAddress(str) {
      if ((0, address_lib.isAddress)(str) && str.length === 66) {
        return true;
      }
      return false;
    }
    function truncateAddress(address) {
      return `${address.slice(0, 6)}…${address.slice(-5)}`;
    }
    const getNumericStringValueFromBigNumber = (value, tokenDecimals) => Number(value.toBigInt() / 10n ** BigInt(tokenDecimals)).toString();
    const numberTo32BytesHex = (value, decimals) => {
      const withDecimals = BigInt(value) * 10n ** BigInt(decimals);
      const hex = utils.hexlify(withDecimals);
      return hex;
    };
    const isMaxUint256 = amount => qethers_lib.qethers.BigNumber.from(amount).eq(qethers_lib.qethers.constants.MaxUint256);
    const hexToAscii = hex_ => {
      const hex = hex_.toString();
      let str = "";
      for (let i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
      return str.replace("\0", "");
    };
    const wait = ms => new Promise((r => {
      setTimeout(r, ms);
    }));
    const getUNIXTimestamp = (time = Date.now()) => Math.floor(time / 1e3);
    var emittery = __webpack_require__(6827);
    var emittery_default = __webpack_require__.n(emittery);
    class BaseService {
      emitter=new (emittery_default());
      boundAlarmHandler=this.handleAlarm.bind(this);
      constructor(alarmSchedules = {}) {
        this.alarmSchedules = alarmSchedules;
      }
      async internalStartService() {
        const scheduleEntries = Object.entries(this.alarmSchedules);
        scheduleEntries.forEach((([name, {schedule, runAtStart, handler}]) => {
          browser_polyfill_default().alarms.create(name, schedule);
          if (runAtStart) {
            handler();
          }
        }));
        if (scheduleEntries.length > 0) {
          browser_polyfill_default().alarms.onAlarm.addListener(this.boundAlarmHandler);
        }
      }
      async internalStopService() {
        const scheduleNames = Object.keys(this.alarmSchedules);
        scheduleNames.forEach((alarmName => browser_polyfill_default().alarms.clear(alarmName)));
        if (scheduleNames.length > 0) {
          browser_polyfill_default().alarms.onAlarm.removeListener(this.boundAlarmHandler);
        }
      }
      handleAlarm(alarm) {
        this.alarmSchedules[alarm.name]?.handler(alarm);
      }
      serviceState="unstarted";
      async started() {
        switch (this.serviceState) {
         case "started":
          return this;

         case "stopped":
          throw new Error("Service is already stopped and cannot be restarted.");

         case "unstarted":
         case "starting":
          return this.emitter.once("serviceStarted").then((() => this));

         default:
          {
            const exhaustiveCheck = this.serviceState;
            throw new Error(`Unreachable code: ${exhaustiveCheck}`);
          }
        }
      }
      startService=async () => {
        switch (this.serviceState) {
         case "started":
         case "starting":
          return;

         case "stopped":
          throw new Error("Service is already stopped and cannot be restarted.");

         case "unstarted":
          this.serviceState = "starting";
          await this.internalStartService();
          this.serviceState = "started";
          this.emitter.emit("serviceStarted", undefined);
          break;

         default:
          {
            const exhaustiveCheck = this.serviceState;
            throw new Error(`Unreachable code: ${exhaustiveCheck}`);
          }
        }
      };
      stopService=async () => {
        switch (this.serviceState) {
         case "unstarted":
          throw new Error("Attempted to stop a service that was never started.");

         case "stopped":
          return;

         case "starting":
          await this.started();
          await this.stopService();
          break;

         case "started":
          await this.internalStopService();
          this.serviceState = "stopped";
          this.emitter.emit("serviceStopped", undefined);
          break;

         default:
          {
            const exhaustiveCheck = this.serviceState;
            throw new Error(`Unreachable code: ${exhaustiveCheck}`);
          }
        }
      };
    }
    var lib_utils = __webpack_require__(6884);
    const logger_HOUR = 1e3 * 60 * 60;
    const store = {
      async get(key) {
        const realKey = `logs-${key}`;
        return String((await browser_polyfill_default().storage.local.get(realKey))[realKey]) ?? "";
      },
      async getAll(...keys) {
        const keyResults = await browser_polyfill_default().storage.local.get(keys.map((key => `logs-${key}`)));
        return Object.fromEntries(keys.map((key => [ key, String(keyResults[`logs-${key}`]) ?? "" ])));
      },
      async set(key, value) {
        browser_polyfill_default().storage.local.set({
          [`logs-${key}`]: value
        });
      }
    };
    let LogLevel = function(LogLevel) {
      LogLevel["debug"] = "debug";
      LogLevel["info"] = "info";
      LogLevel["warn"] = "warn";
      LogLevel["error"] = "error";
      LogLevel["off"] = "off";
      return LogLevel;
    }({});
    const logLevels = {
      [LogLevel.debug]: 0,
      [LogLevel.info]: 1,
      [LogLevel.warn]: 2,
      [LogLevel.error]: 3,
      [LogLevel.off]: 4
    };
    const styles = {
      debug: {
        icon: "🐛",
        css: [],
        dateCss: [ "float: right" ]
      },
      log: {
        icon: "🪵",
        css: []
      },
      info: {
        icon: "💡",
        css: [ "color: blue" ]
      },
      warn: {
        icon: "⚠️",
        css: [ "color: #63450b", "background-color: #fffbe5", "border: 1px solid #fff5c2", "padding: 0.5em" ]
      },
      error: {
        icon: "❌",
        css: [ "color: #ff1a1a", "background-color: #fff0f0", "border: 1px solid #ffd6d6", "padding: 0.5em" ]
      }
    };
    function purgeSensitiveFailSafe(log) {
      return log.replaceAll(/0x[0-9a-fA-F]+|(\b[a-zA-Z0-9]{64}\b)|(?:[a-z]+(?:\s|$)){12}/g, "[REDACTED]");
    }
    const BLINK_PREFIX = "    at ";
    const WEBKIT_GECKO_DELIMITER = "@";
    const WEBKIT_MARKER = "@";
    const GECKO_MARKER = "/";
    function logLabelFromStackEntry(stackEntry) {
      if (stackEntry?.startsWith(BLINK_PREFIX)) {
        return stackEntry.substring(BLINK_PREFIX.length).split(" ")[0];
      }
      if (stackEntry?.includes(GECKO_MARKER) && stackEntry.includes(WEBKIT_GECKO_DELIMITER)) {
        return stackEntry.split(WEBKIT_GECKO_DELIMITER)[0].split(GECKO_MARKER).filter((item => item.replace(/(?:promise)?</, "").trim() !== "")).slice(-2).join(".");
      }
      if (stackEntry?.includes(WEBKIT_MARKER)) {
        return stackEntry.split(WEBKIT_MARKER)[0];
      }
      return undefined;
    }
    const iso8601Length = 24;
    const iso8601DateRegExpString = "\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)";
    const logDateRegExp = new RegExp(`(?=^\\[${iso8601DateRegExpString}\\] \\[)`, "m");
    class Logger {
      #level=logLevels[LogLevel.debug];
      set logLevel(value) {
        this.#level = logLevels[value];
      }
      store=store;
      constructor(contextId = "BG") {
        this.contextId = contextId;
      }
      debug(...input) {
        this.logEvent(LogLevel.debug, input);
      }
      info(...input) {
        this.logEvent(LogLevel.info, input);
      }
      warn(...input) {
        this.logEvent(LogLevel.warn, input);
      }
      error(...input) {
        this.logEvent(LogLevel.error, input);
      }
      errorLogRejectedPromises(logPrefix, settledPromises, perResultData = []) {
        const rejectedLogData = settledPromises.reduce(((logData, settledPromise, i) => settledPromise.status === "rejected" ? [ ...logData, settledPromise, ...perResultData.slice(i, i + 1) ] : logData), []);
        if (rejectedLogData.length > 0) {
          this.error(logPrefix, rejectedLogData);
        }
      }
      buildError(...input) {
        this.error(...input);
        return new Error(input.join(" "));
      }
      logEvent(level, input) {
        if (logLevels[level] < this.#level) return;
        const stackTrace = (new Error).stack?.split("\n")?.filter((line => {
          if (line.trim() === "" || line.trim() === "Error") {
            return false;
          }
          return true;
        }))?.slice(2);
        const logLabel = logLabelFromStackEntry(stackTrace?.[0]) ?? "(unknown function)";
        const isoDateString = (new Date).toISOString();
        const [logDate, logTime] = isoDateString.replace(/Z$/, "").split(/T/);
        console.group(`%c ${styles[level].icon} [${logTime}] ${logLabel} %c [${logDate}]`, styles[level].css.join(";"), styles[level].dateCss ?? styles.debug.dateCss.join(";"));
        console[level](...input);
        if (typeof stackTrace !== "undefined" && level !== "error") {
          console[level](stackTrace.join("\n"));
        }
        console.groupEnd();
        this.saveLog(level, isoDateString, logLabel, input, stackTrace);
      }
      async saveLog(level, isoDateString, logLabel, input, stackTrace) {
        const formattedInput = input.map((loggedValue => {
          if (typeof loggedValue === "object") {
            try {
              return JSON.stringify(loggedValue);
            } catch (_) {
              return String(loggedValue);
            }
          } else {
            return String(loggedValue);
          }
        })).join(" ");
        const formattedStackTrace = stackTrace === undefined ? "" : `\n${stackTrace.join("\n")}`;
        const logData = `    ${formattedInput}${formattedStackTrace}`.split("\n").join("\n    ");
        const existingLogs = await this.store.get(level);
        const fullPrefix = `[${isoDateString}] [${level.toUpperCase()}:${this.contextId}]`;
        const purgedData = purgeSensitiveFailSafe(logData);
        const updatedLogs = `${existingLogs}${fullPrefix} ${logLabel}\n${purgedData}\n\n`.slice(-5e4);
        await this.store.set(level, updatedLogs);
      }
      async serializeLogs() {
        const logs = await this.store.getAll("debug", "info", "warn", "error");
        if (Object.values(logs).every((entry => entry === ""))) {
          return "[NO LOGS FOUND]";
        }
        const logEntries = Object.values(logs).flatMap((levelLogs => {
          const splitLogs = levelLogs?.split(logDateRegExp) ?? [];
          if (splitLogs.length > 0 && splitLogs[0] !== "" && !splitLogs[0].match(logDateRegExp)) {
            splitLogs[0] = `[${new Date(0).toISOString()}] ${splitLogs[0]}`;
          }
          return splitLogs;
        }));
        if (logEntries.length < 1) {
          return "";
        }
        const dateFromLogEntry = dateStr => new Date(dateStr.substring(1, iso8601Length));
        const entriesByDateAsc = logEntries.sort(((a, b) => a.substr(1, iso8601Length).localeCompare(b.substr(1, iso8601Length))));
        const lastEntry = entriesByDateAsc[entriesByDateAsc.length - 1];
        const lastEntryDate = dateFromLogEntry(lastEntry);
        return entriesByDateAsc.filter((logLine => dateFromLogEntry(logLine).getTime() >= lastEntryDate.getTime() - logger_HOUR)).join("\n");
      }
    }
    const logger = new Logger;
    function logRejectedAndReturnFulfilledResults(logPrefix, settledPromises, perResultData = []) {
      logger.errorLogRejectedPromises(logPrefix, settledPromises, perResultData);
      return settledPromises.reduce(((fulfilledResults, settledPromise) => settledPromise.status === "fulfilled" ? [ ...fulfilledResults, settledPromise.value ] : fulfilledResults), []);
    }
    const serializeLogs = logger.serializeLogs.bind(logger);
    const lib_logger = logger;
    async function getBlockPrices(network, provider) {
      const [currentBlock, feeData] = await Promise.all([ provider.getBlock("latest"), provider.getFeeData() ]);
      const baseFeePerGas = currentBlock?.baseFeePerGas?.toBigInt();
      if (feeData.gasPrice === null) {
        lib_logger.warn("Not receiving accurate gas prices from provider", feeData);
      }
      const gasPrice = feeData?.gasPrice?.toBigInt() || 0n;
      if (baseFeePerGas) {
        return {
          network,
          blockNumber: currentBlock.number,
          baseFeePerGas,
          estimatedPrices: [ {
            confidence: 99,
            maxPriorityFeePerGas: 2500000000n,
            maxFeePerGas: baseFeePerGas * 2n + 2500000000n,
            price: gasPrice
          }, {
            confidence: 95,
            maxPriorityFeePerGas: 1500000000n,
            maxFeePerGas: baseFeePerGas * 15n / 10n + 1500000000n,
            price: gasPrice * 9n / 10n
          }, {
            confidence: 70,
            maxPriorityFeePerGas: 1100000000n,
            maxFeePerGas: baseFeePerGas * 13n / 10n + 1100000000n,
            price: gasPrice * 8n / 10n
          } ],
          dataSource: "local"
        };
      }
      if (EIP_1559_COMPLIANT_CHAIN_IDS.has(network.chainID) && (feeData.maxPriorityFeePerGas === null || feeData.maxFeePerGas === null)) {
        lib_logger.warn("Not receiving accurate EIP-1559 gas prices from provider", feeData, network.name);
      }
      const maxFeePerGas = feeData?.maxFeePerGas?.toBigInt() || 0n;
      const maxPriorityFeePerGas = feeData?.maxPriorityFeePerGas?.toBigInt() || 0n;
      return {
        network,
        blockNumber: currentBlock.number,
        baseFeePerGas: (maxFeePerGas - maxPriorityFeePerGas) / 2n,
        estimatedPrices: [ {
          confidence: 99,
          maxPriorityFeePerGas,
          maxFeePerGas,
          price: gasPrice
        } ],
        dataSource: "local"
      };
    }
    const KNOWN_TX_TYPES = [ 0, 1, 2 ];
    function isKnownTxType(arg) {
      return arg !== undefined && arg !== null && KNOWN_TX_TYPES.includes(Number(arg));
    }
    function sameNetwork(network1, network2) {
      return network1.family === network2.family && network1.chainID === network2.chainID;
    }
    function toHexChainID(chainID) {
      if (typeof chainID === "string" && chainID.startsWith("0x")) {
        return chainID.toLowerCase();
      }
      return `0x${BigInt(chainID).toString(16)}`;
    }
    const sameChainID = (chainID, other) => toHexChainID(chainID) === toHexChainID(other);
    const isEIP1559TransactionRequest = transactionRequest => "maxFeePerGas" in transactionRequest && transactionRequest.maxFeePerGas !== null && "maxPriorityFeePerGas" in transactionRequest && transactionRequest.maxPriorityFeePerGas !== null;
    const isEIP1559SignedTransaction = signedTransaction => "maxFeePerGas" in signedTransaction && "maxPriorityFeePerGas" in signedTransaction && signedTransaction.maxFeePerGas !== null && signedTransaction.maxPriorityFeePerGas !== null;
    const isEIP1559EnrichedTransactionSignatureRequest = transactionSignatureRequest => "maxFeePerGas" in transactionSignatureRequest && "maxPriorityFeePerGas" in transactionSignatureRequest;
    const isEIP1559EnrichedTransactionRequest = enrichedTransactionRequest => "maxFeePerGas" in enrichedTransactionRequest && "maxPriorityFeePerGas" in enrichedTransactionRequest;
    const isEnrichedQEVMTransactionRequest = transactionRequest => "annotation" in transactionRequest;
    const dexie_min_e = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : __webpack_require__.g, dexie_min_t = Object.keys, dexie_min_n = Array.isArray;
    function dexie_min_r(e, n) {
      return "object" != typeof n || dexie_min_t(n).forEach((function(t) {
        e[t] = n[t];
      })), e;
    }
    "undefined" == typeof Promise || dexie_min_e.Promise || (dexie_min_e.Promise = Promise);
    const dexie_min_s = Object.getPrototypeOf, dexie_min_i = {}.hasOwnProperty;
    function dexie_min_o(e, t) {
      return dexie_min_i.call(e, t);
    }
    function dexie_min_a(e, n) {
      "function" == typeof n && (n = n(dexie_min_s(e))), ("undefined" == typeof Reflect ? dexie_min_t : Reflect.ownKeys)(n).forEach((t => {
        dexie_min_l(e, t, n[t]);
      }));
    }
    const dexie_min_u = Object.defineProperty;
    function dexie_min_l(e, t, n, s) {
      dexie_min_u(e, t, dexie_min_r(n && dexie_min_o(n, "get") && "function" == typeof n.get ? {
        get: n.get,
        set: n.set,
        configurable: !0
      } : {
        value: n,
        configurable: !0,
        writable: !0
      }, s));
    }
    function dexie_min_c(e) {
      return {
        from: function(t) {
          return e.prototype = Object.create(t.prototype), dexie_min_l(e.prototype, "constructor", e), 
          {
            extend: dexie_min_a.bind(null, e.prototype)
          };
        }
      };
    }
    const dexie_min_h = Object.getOwnPropertyDescriptor;
    function dexie_min_d(e, t) {
      let n;
      return dexie_min_h(e, t) || (n = dexie_min_s(e)) && dexie_min_d(n, t);
    }
    const dexie_min_f = [].slice;
    function dexie_min_p(e, t, n) {
      return dexie_min_f.call(e, t, n);
    }
    function dexie_min_y(e, t) {
      return t(e);
    }
    function dexie_min_m(e) {
      if (!e) throw new Error("Assertion Failed");
    }
    function dexie_min_v(t) {
      dexie_min_e.setImmediate ? setImmediate(t) : setTimeout(t, 0);
    }
    function dexie_min_g(e, t) {
      return e.reduce(((e, n, r) => {
        var s = t(n, r);
        return s && (e[s[0]] = s[1]), e;
      }), {});
    }
    function dexie_min_b(e, t) {
      if ("string" == typeof t && dexie_min_o(e, t)) return e[t];
      if (!t) return e;
      if ("string" != typeof t) {
        for (var n = [], r = 0, s = t.length; r < s; ++r) {
          var i = dexie_min_b(e, t[r]);
          n.push(i);
        }
        return n;
      }
      var a = t.indexOf(".");
      if (-1 !== a) {
        var u = e[t.substr(0, a)];
        return null == u ? void 0 : dexie_min_b(u, t.substr(a + 1));
      }
    }
    function dexie_min_(e, t, r) {
      if (e && void 0 !== t && (!("isFrozen" in Object) || !Object.isFrozen(e))) if ("string" != typeof t && "length" in t) {
        dexie_min_m("string" != typeof r && "length" in r);
        for (var s = 0, i = t.length; s < i; ++s) dexie_min_(e, t[s], r[s]);
      } else {
        var a = t.indexOf(".");
        if (-1 !== a) {
          var u = t.substr(0, a), l = t.substr(a + 1);
          if ("" === l) void 0 === r ? dexie_min_n(e) && !isNaN(parseInt(u)) ? e.splice(u, 1) : delete e[u] : e[u] = r; else {
            var c = e[u];
            c && dexie_min_o(e, u) || (c = e[u] = {}), dexie_min_(c, l, r);
          }
        } else void 0 === r ? dexie_min_n(e) && !isNaN(parseInt(t)) ? e.splice(t, 1) : delete e[t] : e[t] = r;
      }
    }
    function dexie_min_w(e) {
      var t = {};
      for (var n in e) dexie_min_o(e, n) && (t[n] = e[n]);
      return t;
    }
    const dexie_min_x = [].concat;
    function dexie_min_k(e) {
      return dexie_min_x.apply([], e);
    }
    const dexie_min_E = "BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(dexie_min_k([ 8, 16, 32, 64 ].map((e => [ "Int", "Uint", "Float" ].map((t => t + e + "Array")))))).filter((t => dexie_min_e[t])), dexie_min_P = dexie_min_E.map((t => dexie_min_e[t]));
    dexie_min_g(dexie_min_E, (e => [ e, !0 ]));
    let dexie_min_K = null;
    function dexie_min_O(e) {
      dexie_min_K = "undefined" != typeof WeakMap && new WeakMap;
      const t = dexie_min_S(e);
      return dexie_min_K = null, t;
    }
    function dexie_min_S(e) {
      if (!e || "object" != typeof e) return e;
      let t = dexie_min_K && dexie_min_K.get(e);
      if (t) return t;
      if (dexie_min_n(e)) {
        t = [], dexie_min_K && dexie_min_K.set(e, t);
        for (var r = 0, i = e.length; r < i; ++r) t.push(dexie_min_S(e[r]));
      } else if (dexie_min_P.indexOf(e.constructor) >= 0) t = e; else {
        const n = dexie_min_s(e);
        for (var a in t = n === Object.prototype ? {} : Object.create(n), dexie_min_K && dexie_min_K.set(e, t), 
        e) dexie_min_o(e, a) && (t[a] = dexie_min_S(e[a]));
      }
      return t;
    }
    const {toString: dexie_min_A} = {};
    function dexie_min_C(e) {
      return dexie_min_A.call(e).slice(8, -1);
    }
    const dexie_min_j = "undefined" != typeof Symbol ? Symbol.iterator : "@@iterator", dexie_min_D = "symbol" == typeof dexie_min_j ? function(e) {
      var t;
      return null != e && (t = e[dexie_min_j]) && t.apply(e);
    } : function() {
      return null;
    }, dexie_min_I = {};
    function dexie_min_B(e) {
      var t, r, s, i;
      if (1 === arguments.length) {
        if (dexie_min_n(e)) return e.slice();
        if (this === dexie_min_I && "string" == typeof e) return [ e ];
        if (i = dexie_min_D(e)) {
          for (r = []; !(s = i.next()).done; ) r.push(s.value);
          return r;
        }
        if (null == e) return [ e ];
        if ("number" == typeof (t = e.length)) {
          for (r = new Array(t); t--; ) r[t] = e[t];
          return r;
        }
        return [ e ];
      }
      for (t = arguments.length, r = new Array(t); t--; ) r[t] = arguments[t];
      return r;
    }
    const dexie_min_T = "undefined" != typeof Symbol ? e => "AsyncFunction" === e[Symbol.toStringTag] : () => !1;
    var dexie_min_R = "undefined" != typeof location && /^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);
    function dexie_min_F(e, t) {
      dexie_min_R = e, dexie_min_M = t;
    }
    var dexie_min_M = () => !0;
    const dexie_min_N = !new Error("").stack;
    function dexie_min_q() {
      if (dexie_min_N) try {
        throw dexie_min_q.arguments, new Error;
      } catch (e) {
        return e;
      }
      return new Error;
    }
    function dexie_min_$(e, t) {
      var n = e.stack;
      return n ? (t = t || 0, 0 === n.indexOf(e.name) && (t += (e.name + e.message).split("\n").length), 
      n.split("\n").slice(t).filter(dexie_min_M).map((e => "\n" + e)).join("")) : "";
    }
    var dexie_min_U = [ "Unknown", "Constraint", "Data", "TransactionInactive", "ReadOnly", "Version", "NotFound", "InvalidState", "InvalidAccess", "Abort", "Timeout", "QuotaExceeded", "Syntax", "DataClone" ], dexie_min_L = [ "Modify", "Bulk", "OpenFailed", "VersionChange", "Schema", "Upgrade", "InvalidTable", "MissingAPI", "NoSuchDatabase", "InvalidArgument", "SubTransaction", "Unsupported", "Internal", "DatabaseClosed", "PrematureCommit", "ForeignAwait" ].concat(dexie_min_U), dexie_min_V = {
      VersionChanged: "Database version changed by other database connection",
      DatabaseClosed: "Database has been closed",
      Abort: "Transaction aborted",
      TransactionInactive: "Transaction has already completed or failed",
      MissingAPI: "IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"
    };
    function dexie_min_W(e, t) {
      this._e = dexie_min_q(), this.name = e, this.message = t;
    }
    function dexie_min_Y(e, t) {
      return e + ". Errors: " + Object.keys(t).map((e => t[e].toString())).filter(((e, t, n) => n.indexOf(e) === t)).join("\n");
    }
    function dexie_min_z(e, t, n, r) {
      this._e = dexie_min_q(), this.failures = t, this.failedKeys = r, this.successCount = n, 
      this.message = dexie_min_Y(e, t);
    }
    function dexie_min_G(e, t) {
      this._e = dexie_min_q(), this.name = "BulkError", this.failures = Object.keys(t).map((e => t[e])), 
      this.failuresByPos = t, this.message = dexie_min_Y(e, t);
    }
    dexie_min_c(dexie_min_W).from(Error).extend({
      stack: {
        get: function() {
          return this._stack || (this._stack = this.name + ": " + this.message + dexie_min_$(this._e, 2));
        }
      },
      toString: function() {
        return this.name + ": " + this.message;
      }
    }), dexie_min_c(dexie_min_z).from(dexie_min_W), dexie_min_c(dexie_min_G).from(dexie_min_W);
    var dexie_min_H = dexie_min_L.reduce(((e, t) => (e[t] = t + "Error", e)), {});
    const dexie_min_Q = dexie_min_W;
    var dexie_min_X = dexie_min_L.reduce(((e, t) => {
      var n = t + "Error";
      function r(e, r) {
        this._e = dexie_min_q(), this.name = n, e ? "string" == typeof e ? (this.message = `${e}${r ? "\n " + r : ""}`, 
        this.inner = r || null) : "object" == typeof e && (this.message = `${e.name} ${e.message}`, 
        this.inner = e) : (this.message = dexie_min_V[t] || n, this.inner = null);
      }
      return dexie_min_c(r).from(dexie_min_Q), e[t] = r, e;
    }), {});
    dexie_min_X.Syntax = SyntaxError, dexie_min_X.Type = TypeError, dexie_min_X.Range = RangeError;
    var dexie_min_J = dexie_min_U.reduce(((e, t) => (e[t + "Error"] = dexie_min_X[t], 
    e)), {});
    var dexie_min_Z = dexie_min_L.reduce(((e, t) => (-1 === [ "Syntax", "Type", "Range" ].indexOf(t) && (e[t + "Error"] = dexie_min_X[t]), 
    e)), {});
    function ee() {}
    function te(e) {
      return e;
    }
    function ne(e, t) {
      return null == e || e === te ? t : function(n) {
        return t(e(n));
      };
    }
    function re(e, t) {
      return function() {
        e.apply(this, arguments), t.apply(this, arguments);
      };
    }
    function se(e, t) {
      return e === ee ? t : function() {
        var n = e.apply(this, arguments);
        void 0 !== n && (arguments[0] = n);
        var r = this.onsuccess, s = this.onerror;
        this.onsuccess = null, this.onerror = null;
        var i = t.apply(this, arguments);
        return r && (this.onsuccess = this.onsuccess ? re(r, this.onsuccess) : r), s && (this.onerror = this.onerror ? re(s, this.onerror) : s), 
        void 0 !== i ? i : n;
      };
    }
    function ie(e, t) {
      return e === ee ? t : function() {
        e.apply(this, arguments);
        var n = this.onsuccess, r = this.onerror;
        this.onsuccess = this.onerror = null, t.apply(this, arguments), n && (this.onsuccess = this.onsuccess ? re(n, this.onsuccess) : n), 
        r && (this.onerror = this.onerror ? re(r, this.onerror) : r);
      };
    }
    function oe(e, t) {
      return e === ee ? t : function(n) {
        var s = e.apply(this, arguments);
        dexie_min_r(n, s);
        var i = this.onsuccess, o = this.onerror;
        this.onsuccess = null, this.onerror = null;
        var a = t.apply(this, arguments);
        return i && (this.onsuccess = this.onsuccess ? re(i, this.onsuccess) : i), o && (this.onerror = this.onerror ? re(o, this.onerror) : o), 
        void 0 === s ? void 0 === a ? void 0 : a : dexie_min_r(s, a);
      };
    }
    function ae(e, t) {
      return e === ee ? t : function() {
        return !1 !== t.apply(this, arguments) && e.apply(this, arguments);
      };
    }
    function ue(e, t) {
      return e === ee ? t : function() {
        var n = e.apply(this, arguments);
        if (n && "function" == typeof n.then) {
          for (var r = this, s = arguments.length, i = new Array(s); s--; ) i[s] = arguments[s];
          return n.then((function() {
            return t.apply(r, i);
          }));
        }
        return t.apply(this, arguments);
      };
    }
    dexie_min_Z.ModifyError = dexie_min_z, dexie_min_Z.DexieError = dexie_min_W, dexie_min_Z.BulkError = dexie_min_G;
    var le = {};
    const ce = 100, [he, de, fe] = "undefined" == typeof Promise ? [] : (() => {
      let e = Promise.resolve();
      if ("undefined" == typeof crypto || !crypto.subtle) return [ e, dexie_min_s(e), e ];
      const t = crypto.subtle.digest("SHA-512", new Uint8Array([ 0 ]));
      return [ t, dexie_min_s(t), e ];
    })(), pe = de && de.then, ye = he && he.constructor, me = !!fe;
    var ve = !1, ge = fe ? () => {
      fe.then($e);
    } : dexie_min_e.setImmediate ? setImmediate.bind(null, $e) : dexie_min_e.MutationObserver ? () => {
      var e = document.createElement("div");
      new MutationObserver((() => {
        $e(), e = null;
      })).observe(e, {
        attributes: !0
      }), e.setAttribute("i", "1");
    } : () => {
      setTimeout($e, 0);
    }, be = function(e, t) {
      Se.push([ e, t ]), we && (ge(), we = !1);
    }, _e = !0, we = !0, xe = [], ke = [], Ee = null, Pe = te, Ke = {
      id: "global",
      global: !0,
      ref: 0,
      unhandleds: [],
      onunhandled: dt,
      pgp: !1,
      env: {},
      finalize: function() {
        this.unhandleds.forEach((e => {
          try {
            dt(e[0], e[1]);
          } catch (e) {}
        }));
      }
    }, Oe = Ke, Se = [], Ae = 0, Ce = [];
    function je(e) {
      if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
      this._listeners = [], this.onuncatched = ee, this._lib = !1;
      var t = this._PSD = Oe;
      if (dexie_min_R && (this._stackHolder = dexie_min_q(), this._prev = null, this._numPrev = 0), 
      "function" != typeof e) {
        if (e !== le) throw new TypeError("Not a function");
        return this._state = arguments[1], this._value = arguments[2], void (!1 === this._state && Te(this, this._value));
      }
      this._state = null, this._value = null, ++t.ref, Be(this, e);
    }
    const De = {
      get: function() {
        var e = Oe, t = Xe;
        function n(n, r) {
          var s = !e.global && (e !== Oe || t !== Xe);
          const i = s && !tt();
          var o = new je(((t, o) => {
            Fe(this, new Ie(lt(n, e, s, i), lt(r, e, s, i), t, o, e));
          }));
          return dexie_min_R && qe(o, this), o;
        }
        return n.prototype = le, n;
      },
      set: function(e) {
        dexie_min_l(this, "then", e && e.prototype === le ? De : {
          get: function() {
            return e;
          },
          set: De.set
        });
      }
    };
    function Ie(e, t, n, r, s) {
      this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, 
      this.resolve = n, this.reject = r, this.psd = s;
    }
    function Be(e, t) {
      try {
        t((t => {
          if (null === e._state) {
            if (t === e) throw new TypeError("A promise cannot be resolved with itself.");
            var n = e._lib && Ue();
            t && "function" == typeof t.then ? Be(e, ((e, n) => {
              t instanceof je ? t._then(e, n) : t.then(e, n);
            })) : (e._state = !0, e._value = t, Re(e)), n && Le();
          }
        }), Te.bind(null, e));
      } catch (t) {
        Te(e, t);
      }
    }
    function Te(e, t) {
      if (ke.push(t), null === e._state) {
        var n = e._lib && Ue();
        t = Pe(t), e._state = !1, e._value = t, dexie_min_R && null !== t && "object" == typeof t && !t._promise && function(e, t, n) {
          try {
            e.apply(null, n);
          } catch (e) {
            t && t(e);
          }
        }((() => {
          var n = dexie_min_d(t, "stack");
          t._promise = e, dexie_min_l(t, "stack", {
            get: () => ve ? n && (n.get ? n.get.apply(t) : n.value) : e.stack
          });
        })), function(e) {
          xe.some((t => t._value === e._value)) || xe.push(e);
        }(e), Re(e), n && Le();
      }
    }
    function Re(e) {
      var t = e._listeners;
      e._listeners = [];
      for (var n = 0, r = t.length; n < r; ++n) Fe(e, t[n]);
      var s = e._PSD;
      --s.ref || s.finalize(), 0 === Ae && (++Ae, be((() => {
        0 == --Ae && Ve();
      }), []));
    }
    function Fe(e, t) {
      if (null !== e._state) {
        var n = e._state ? t.onFulfilled : t.onRejected;
        if (null === n) return (e._state ? t.resolve : t.reject)(e._value);
        ++t.psd.ref, ++Ae, be(Me, [ n, e, t ]);
      } else e._listeners.push(t);
    }
    function Me(e, t, n) {
      try {
        Ee = t;
        var r, s = t._value;
        t._state ? r = e(s) : (ke.length && (ke = []), r = e(s), -1 === ke.indexOf(s) && function(e) {
          var t = xe.length;
          for (;t; ) if (xe[--t]._value === e._value) return void xe.splice(t, 1);
        }(t)), n.resolve(r);
      } catch (e) {
        n.reject(e);
      } finally {
        Ee = null, 0 == --Ae && Ve(), --n.psd.ref || n.psd.finalize();
      }
    }
    function Ne(e, t, n) {
      if (t.length === n) return t;
      var r = "";
      if (!1 === e._state) {
        var s, i, o = e._value;
        null != o ? (s = o.name || "Error", i = o.message || o, r = dexie_min_$(o, 0)) : (s = o, 
        i = ""), t.push(s + (i ? ": " + i : "") + r);
      }
      return dexie_min_R && ((r = dexie_min_$(e._stackHolder, 2)) && -1 === t.indexOf(r) && t.push(r), 
      e._prev && Ne(e._prev, t, n)), t;
    }
    function qe(e, t) {
      var n = t ? t._numPrev + 1 : 0;
      n < 100 && (e._prev = t, e._numPrev = n);
    }
    function $e() {
      Ue() && Le();
    }
    function Ue() {
      var e = _e;
      return _e = !1, we = !1, e;
    }
    function Le() {
      var e, t, n;
      do {
        for (;Se.length > 0; ) for (e = Se, Se = [], n = e.length, t = 0; t < n; ++t) {
          var r = e[t];
          r[0].apply(null, r[1]);
        }
      } while (Se.length > 0);
      _e = !0, we = !0;
    }
    function Ve() {
      var e = xe;
      xe = [], e.forEach((e => {
        e._PSD.onunhandled.call(null, e._value, e);
      }));
      for (var t = Ce.slice(0), n = t.length; n; ) t[--n]();
    }
    function We(e) {
      return new je(le, !1, e);
    }
    function Ye(e, t) {
      var n = Oe;
      return function() {
        var r = Ue(), s = Oe;
        try {
          return it(n, !0), e.apply(this, arguments);
        } catch (e) {
          t && t(e);
        } finally {
          it(s, !1), r && Le();
        }
      };
    }
    dexie_min_a(je.prototype, {
      then: De,
      _then: function(e, t) {
        Fe(this, new Ie(null, null, e, t, Oe));
      },
      catch: function(e) {
        if (1 === arguments.length) return this.then(null, e);
        var t = arguments[0], n = arguments[1];
        return "function" == typeof t ? this.then(null, (e => e instanceof t ? n(e) : We(e))) : this.then(null, (e => e && e.name === t ? n(e) : We(e)));
      },
      finally: function(e) {
        return this.then((t => (e(), t)), (t => (e(), We(t))));
      },
      stack: {
        get: function() {
          if (this._stack) return this._stack;
          try {
            ve = !0;
            var e = Ne(this, [], 20).join("\nFrom previous: ");
            return null !== this._state && (this._stack = e), e;
          } finally {
            ve = !1;
          }
        }
      },
      timeout: function(e, t) {
        return e < 1 / 0 ? new je(((n, r) => {
          var s = setTimeout((() => r(new dexie_min_X.Timeout(t))), e);
          this.then(n, r).finally(clearTimeout.bind(null, s));
        })) : this;
      }
    }), "undefined" != typeof Symbol && Symbol.toStringTag && dexie_min_l(je.prototype, Symbol.toStringTag, "Dexie.Promise"), 
    Ke.env = ot(), dexie_min_a(je, {
      all: function() {
        var e = dexie_min_B.apply(null, arguments).map(nt);
        return new je((function(t, n) {
          0 === e.length && t([]);
          var r = e.length;
          e.forEach(((s, i) => je.resolve(s).then((n => {
            e[i] = n, --r || t(e);
          }), n)));
        }));
      },
      resolve: e => {
        if (e instanceof je) return e;
        if (e && "function" == typeof e.then) return new je(((t, n) => {
          e.then(t, n);
        }));
        var t = new je(le, !0, e);
        return qe(t, Ee), t;
      },
      reject: We,
      race: function() {
        var e = dexie_min_B.apply(null, arguments).map(nt);
        return new je(((t, n) => {
          e.map((e => je.resolve(e).then(t, n)));
        }));
      },
      PSD: {
        get: () => Oe,
        set: e => Oe = e
      },
      totalEchoes: {
        get: () => Xe
      },
      newPSD: Ze,
      usePSD: at,
      scheduler: {
        get: () => be,
        set: e => {
          be = e;
        }
      },
      rejectionMapper: {
        get: () => Pe,
        set: e => {
          Pe = e;
        }
      },
      follow: (e, t) => new je(((n, r) => Ze(((t, n) => {
        var r = Oe;
        r.unhandleds = [], r.onunhandled = n, r.finalize = re((function() {
          !function(e) {
            function t() {
              e(), Ce.splice(Ce.indexOf(t), 1);
            }
            Ce.push(t), ++Ae, be((() => {
              0 == --Ae && Ve();
            }), []);
          }((() => {
            0 === this.unhandleds.length ? t() : n(this.unhandleds[0]);
          }));
        }), r.finalize), e();
      }), t, n, r)))
    }), ye && (ye.allSettled && dexie_min_l(je, "allSettled", (function() {
      const e = dexie_min_B.apply(null, arguments).map(nt);
      return new je((t => {
        0 === e.length && t([]);
        let n = e.length;
        const r = new Array(n);
        e.forEach(((e, s) => je.resolve(e).then((e => r[s] = {
          status: "fulfilled",
          value: e
        }), (e => r[s] = {
          status: "rejected",
          reason: e
        })).then((() => --n || t(r)))));
      }));
    })), ye.any && "undefined" != typeof AggregateError && dexie_min_l(je, "any", (function() {
      const e = dexie_min_B.apply(null, arguments).map(nt);
      return new je(((t, n) => {
        0 === e.length && n(new AggregateError([]));
        let r = e.length;
        const s = new Array(r);
        e.forEach(((e, i) => je.resolve(e).then((e => t(e)), (e => {
          s[i] = e, --r || n(new AggregateError(s));
        }))));
      }));
    })));
    const ze = {
      awaits: 0,
      echoes: 0,
      id: 0
    };
    var Ge = 0, He = [], Qe = 0, Xe = 0, Je = 0;
    function Ze(e, t, n, s) {
      var i = Oe, o = Object.create(i);
      o.parent = i, o.ref = 0, o.global = !1, o.id = ++Je;
      var a = Ke.env;
      o.env = me ? {
        Promise: je,
        PromiseProp: {
          value: je,
          configurable: !0,
          writable: !0
        },
        all: je.all,
        race: je.race,
        allSettled: je.allSettled,
        any: je.any,
        resolve: je.resolve,
        reject: je.reject,
        nthen: ct(a.nthen, o),
        gthen: ct(a.gthen, o)
      } : {}, t && dexie_min_r(o, t), ++i.ref, o.finalize = function() {
        --this.parent.ref || this.parent.finalize();
      };
      var u = at(o, e, n, s);
      return 0 === o.ref && o.finalize(), u;
    }
    function et() {
      return ze.id || (ze.id = ++Ge), ++ze.awaits, ze.echoes += ce, ze.id;
    }
    function tt() {
      return !!ze.awaits && (0 == --ze.awaits && (ze.id = 0), ze.echoes = ze.awaits * ce, 
      !0);
    }
    function nt(e) {
      return ze.echoes && e && e.constructor === ye ? (et(), e.then((e => (tt(), e)), (e => (tt(), 
      ft(e))))) : e;
    }
    function rt(e) {
      ++Xe, ze.echoes && 0 != --ze.echoes || (ze.echoes = ze.id = 0), He.push(Oe), it(e, !0);
    }
    function st() {
      var e = He[He.length - 1];
      He.pop(), it(e, !1);
    }
    function it(t, n) {
      var r = Oe;
      if ((n ? !ze.echoes || Qe++ && t === Oe : !Qe || --Qe && t === Oe) || ut(n ? rt.bind(null, t) : st), 
      t !== Oe && (Oe = t, r === Ke && (Ke.env = ot()), me)) {
        var s = Ke.env.Promise, i = t.env;
        de.then = i.nthen, s.prototype.then = i.gthen, (r.global || t.global) && (Object.defineProperty(dexie_min_e, "Promise", i.PromiseProp), 
        s.all = i.all, s.race = i.race, s.resolve = i.resolve, s.reject = i.reject, i.allSettled && (s.allSettled = i.allSettled), 
        i.any && (s.any = i.any));
      }
    }
    function ot() {
      var t = dexie_min_e.Promise;
      return me ? {
        Promise: t,
        PromiseProp: Object.getOwnPropertyDescriptor(dexie_min_e, "Promise"),
        all: t.all,
        race: t.race,
        allSettled: t.allSettled,
        any: t.any,
        resolve: t.resolve,
        reject: t.reject,
        nthen: de.then,
        gthen: t.prototype.then
      } : {};
    }
    function at(e, t, n, r, s) {
      var i = Oe;
      try {
        return it(e, !0), t(n, r, s);
      } finally {
        it(i, !1);
      }
    }
    function ut(e) {
      pe.call(he, e);
    }
    function lt(e, t, n, r) {
      return "function" != typeof e ? e : function() {
        var s = Oe;
        n && et(), it(t, !0);
        try {
          return e.apply(this, arguments);
        } finally {
          it(s, !1), r && ut(tt);
        }
      };
    }
    function ct(e, t) {
      return function(n, r) {
        return e.call(this, lt(n, t), lt(r, t));
      };
    }
    -1 === ("" + pe).indexOf("[native code]") && (et = tt = ee);
    const ht = "unhandledrejection";
    function dt(t, n) {
      var s;
      try {
        s = n.onuncatched(t);
      } catch (e) {}
      if (!1 !== s) try {
        var i, o = {
          promise: n,
          reason: t
        };
        if (dexie_min_e.document && document.createEvent ? ((i = document.createEvent("Event")).initEvent(ht, !0, !0), 
        dexie_min_r(i, o)) : dexie_min_e.CustomEvent && dexie_min_r(i = new CustomEvent(ht, {
          detail: o
        }), o), i && dexie_min_e.dispatchEvent && (dispatchEvent(i), !dexie_min_e.PromiseRejectionEvent && dexie_min_e.onunhandledrejection)) try {
          dexie_min_e.onunhandledrejection(i);
        } catch (e) {}
        dexie_min_R && i && !i.defaultPrevented && console.warn(`Unhandled rejection: ${t.stack || t}`);
      } catch (e) {}
    }
    var ft = je.reject;
    function pt(e, t, n, r) {
      if (e.idbdb && (e._state.openComplete || Oe.letThrough || e._vip)) {
        var s = e._createTransaction(t, n, e._dbSchema);
        try {
          s.create(), e._state.PR1398_maxLoop = 3;
        } catch (s) {
          return s.name === dexie_min_H.InvalidState && e.isOpen() && --e._state.PR1398_maxLoop > 0 ? (console.warn("Dexie: Need to reopen db"), 
          e._close(), e.open().then((() => pt(e, t, n, r)))) : ft(s);
        }
        return s._promise(t, ((e, t) => Ze((() => (Oe.trans = s, r(e, t, s)))))).then((e => s._completion.then((() => e))));
      }
      if (e._state.openComplete) return ft(new dexie_min_X.DatabaseClosed(e._state.dbOpenError));
      if (!e._state.isBeingOpened) {
        if (!e._options.autoOpen) return ft(new dexie_min_X.DatabaseClosed);
        e.open().catch(ee);
      }
      return e._state.dbReadyPromise.then((() => pt(e, t, n, r)));
    }
    const yt = "3.2.7", mt = String.fromCharCode(65535), vt = -1 / 0, gt = "Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.", bt = "String expected.", _t = [], wt = "undefined" != typeof navigator && /(MSIE|Trident|Edge)/.test(navigator.userAgent), xt = wt, kt = wt, Et = e => !/(dexie\.js|dexie\.min\.js)/.test(e), Pt = "__dbnames", Kt = "readonly", Ot = "readwrite";
    function St(e, t) {
      return e ? t ? function() {
        return e.apply(this, arguments) && t.apply(this, arguments);
      } : e : t;
    }
    const At = {
      type: 3,
      lower: -1 / 0,
      lowerOpen: !1,
      upper: [ [] ],
      upperOpen: !1
    };
    function Ct(e) {
      return "string" != typeof e || /\./.test(e) ? e => e : t => (void 0 === t[e] && e in t && delete (t = dexie_min_O(t))[e], 
      t);
    }
    class jt {
      _trans(e, t, n) {
        const r = this._tx || Oe.trans, s = this.name;
        function i(e, n, r) {
          if (!r.schema[s]) throw new dexie_min_X.NotFound("Table " + s + " not part of transaction");
          return t(r.idbtrans, r);
        }
        const o = Ue();
        try {
          return r && r.db === this.db ? r === Oe.trans ? r._promise(e, i, n) : Ze((() => r._promise(e, i, n)), {
            trans: r,
            transless: Oe.transless || Oe
          }) : pt(this.db, e, [ this.name ], i);
        } finally {
          o && Le();
        }
      }
      get(e, t) {
        return e && e.constructor === Object ? this.where(e).first(t) : this._trans("readonly", (t => this.core.get({
          trans: t,
          key: e
        }).then((e => this.hook.reading.fire(e))))).then(t);
      }
      where(e) {
        if ("string" == typeof e) return new this.db.WhereClause(this, e);
        if (dexie_min_n(e)) return new this.db.WhereClause(this, `[${e.join("+")}]`);
        const r = dexie_min_t(e);
        if (1 === r.length) return this.where(r[0]).equals(e[r[0]]);
        const s = this.schema.indexes.concat(this.schema.primKey).filter((e => {
          if (e.compound && r.every((t => e.keyPath.indexOf(t) >= 0))) {
            for (let t = 0; t < r.length; ++t) if (-1 === r.indexOf(e.keyPath[t])) return !1;
            return !0;
          }
          return !1;
        })).sort(((e, t) => e.keyPath.length - t.keyPath.length))[0];
        if (s && this.db._maxKey !== mt) {
          const t = s.keyPath.slice(0, r.length);
          return this.where(t).equals(t.map((t => e[t])));
        }
        !s && dexie_min_R && console.warn(`The query ${JSON.stringify(e)} on ${this.name} would benefit of a compound index [${r.join("+")}]`);
        const {idxByName: i} = this.schema, o = this.db._deps.indexedDB;
        function a(e, t) {
          try {
            return 0 === o.cmp(e, t);
          } catch (e) {
            return !1;
          }
        }
        const [u, l] = r.reduce((([t, r], s) => {
          const o = i[s], u = e[s];
          return [ t || o, t || !o ? St(r, o && o.multi ? e => {
            const t = dexie_min_b(e, s);
            return dexie_min_n(t) && t.some((e => a(u, e)));
          } : e => a(u, dexie_min_b(e, s))) : r ];
        }), [ null, null ]);
        return u ? this.where(u.name).equals(e[u.keyPath]).filter(l) : s ? this.filter(l) : this.where(r).equals("");
      }
      filter(e) {
        return this.toCollection().and(e);
      }
      count(e) {
        return this.toCollection().count(e);
      }
      offset(e) {
        return this.toCollection().offset(e);
      }
      limit(e) {
        return this.toCollection().limit(e);
      }
      each(e) {
        return this.toCollection().each(e);
      }
      toArray(e) {
        return this.toCollection().toArray(e);
      }
      toCollection() {
        return new this.db.Collection(new this.db.WhereClause(this));
      }
      orderBy(e) {
        return new this.db.Collection(new this.db.WhereClause(this, dexie_min_n(e) ? `[${e.join("+")}]` : e));
      }
      reverse() {
        return this.toCollection().reverse();
      }
      mapToClass(e) {
        this.schema.mappedClass = e;
        const t = t => {
          if (!t) return t;
          const n = Object.create(e.prototype);
          for (var r in t) if (dexie_min_o(t, r)) try {
            n[r] = t[r];
          } catch (e) {}
          return n;
        };
        return this.schema.readHook && this.hook.reading.unsubscribe(this.schema.readHook), 
        this.schema.readHook = t, this.hook("reading", t), e;
      }
      defineClass() {
        return this.mapToClass((function(e) {
          dexie_min_r(this, e);
        }));
      }
      add(e, t) {
        const {auto: n, keyPath: r} = this.schema.primKey;
        let s = e;
        return r && n && (s = Ct(r)(e)), this._trans("readwrite", (e => this.core.mutate({
          trans: e,
          type: "add",
          keys: null != t ? [ t ] : null,
          values: [ s ]
        }))).then((e => e.numFailures ? je.reject(e.failures[0]) : e.lastResult)).then((t => {
          if (r) try {
            dexie_min_(e, r, t);
          } catch (e) {}
          return t;
        }));
      }
      update(e, r) {
        if ("object" != typeof e || dexie_min_n(e)) return this.where(":id").equals(e).modify(r);
        {
          const n = dexie_min_b(e, this.schema.primKey.keyPath);
          if (void 0 === n) return ft(new dexie_min_X.InvalidArgument("Given object does not contain its primary key"));
          try {
            "function" != typeof r ? dexie_min_t(r).forEach((t => {
              dexie_min_(e, t, r[t]);
            })) : r(e, {
              value: e,
              primKey: n
            });
          } catch (e) {}
          return this.where(":id").equals(n).modify(r);
        }
      }
      put(e, t) {
        const {auto: n, keyPath: r} = this.schema.primKey;
        let s = e;
        return r && n && (s = Ct(r)(e)), this._trans("readwrite", (e => this.core.mutate({
          trans: e,
          type: "put",
          values: [ s ],
          keys: null != t ? [ t ] : null
        }))).then((e => e.numFailures ? je.reject(e.failures[0]) : e.lastResult)).then((t => {
          if (r) try {
            dexie_min_(e, r, t);
          } catch (e) {}
          return t;
        }));
      }
      delete(e) {
        return this._trans("readwrite", (t => this.core.mutate({
          trans: t,
          type: "delete",
          keys: [ e ]
        }))).then((e => e.numFailures ? je.reject(e.failures[0]) : void 0));
      }
      clear() {
        return this._trans("readwrite", (e => this.core.mutate({
          trans: e,
          type: "deleteRange",
          range: At
        }))).then((e => e.numFailures ? je.reject(e.failures[0]) : void 0));
      }
      bulkGet(e) {
        return this._trans("readonly", (t => this.core.getMany({
          keys: e,
          trans: t
        }).then((e => e.map((e => this.hook.reading.fire(e)))))));
      }
      bulkAdd(e, t, n) {
        const r = Array.isArray(t) ? t : void 0, s = (n = n || (r ? void 0 : t)) ? n.allKeys : void 0;
        return this._trans("readwrite", (t => {
          const {auto: n, keyPath: i} = this.schema.primKey;
          if (i && r) throw new dexie_min_X.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");
          if (r && r.length !== e.length) throw new dexie_min_X.InvalidArgument("Arguments objects and keys must have the same length");
          const o = e.length;
          let a = i && n ? e.map(Ct(i)) : e;
          return this.core.mutate({
            trans: t,
            type: "add",
            keys: r,
            values: a,
            wantResults: s
          }).then((({numFailures: e, results: t, lastResult: n, failures: r}) => {
            if (0 === e) return s ? t : n;
            throw new dexie_min_G(`${this.name}.bulkAdd(): ${e} of ${o} operations failed`, r);
          }));
        }));
      }
      bulkPut(e, t, n) {
        const r = Array.isArray(t) ? t : void 0, s = (n = n || (r ? void 0 : t)) ? n.allKeys : void 0;
        return this._trans("readwrite", (t => {
          const {auto: n, keyPath: i} = this.schema.primKey;
          if (i && r) throw new dexie_min_X.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");
          if (r && r.length !== e.length) throw new dexie_min_X.InvalidArgument("Arguments objects and keys must have the same length");
          const o = e.length;
          let a = i && n ? e.map(Ct(i)) : e;
          return this.core.mutate({
            trans: t,
            type: "put",
            keys: r,
            values: a,
            wantResults: s
          }).then((({numFailures: e, results: t, lastResult: n, failures: r}) => {
            if (0 === e) return s ? t : n;
            throw new dexie_min_G(`${this.name}.bulkPut(): ${e} of ${o} operations failed`, r);
          }));
        }));
      }
      bulkDelete(e) {
        const t = e.length;
        return this._trans("readwrite", (t => this.core.mutate({
          trans: t,
          type: "delete",
          keys: e
        }))).then((({numFailures: e, lastResult: n, failures: r}) => {
          if (0 === e) return n;
          throw new dexie_min_G(`${this.name}.bulkDelete(): ${e} of ${t} operations failed`, r);
        }));
      }
    }
    function Dt(e) {
      var r = {}, s = function(t, n) {
        if (n) {
          for (var s = arguments.length, i = new Array(s - 1); --s; ) i[s - 1] = arguments[s];
          return r[t].subscribe.apply(null, i), e;
        }
        if ("string" == typeof t) return r[t];
      };
      s.addEventType = a;
      for (var i = 1, o = arguments.length; i < o; ++i) a(arguments[i]);
      return s;
      function a(e, i, o) {
        if ("object" != typeof e) {
          var u;
          i || (i = ae), o || (o = ee);
          var l = {
            subscribers: [],
            fire: o,
            subscribe: function(e) {
              -1 === l.subscribers.indexOf(e) && (l.subscribers.push(e), l.fire = i(l.fire, e));
            },
            unsubscribe: function(e) {
              l.subscribers = l.subscribers.filter((function(t) {
                return t !== e;
              })), l.fire = l.subscribers.reduce(i, o);
            }
          };
          return r[e] = s[e] = l, l;
        }
        dexie_min_t(u = e).forEach((function(e) {
          var t = u[e];
          if (dexie_min_n(t)) a(e, u[e][0], u[e][1]); else {
            if ("asap" !== t) throw new dexie_min_X.InvalidArgument("Invalid event config");
            var r = a(e, te, (function() {
              for (var e = arguments.length, t = new Array(e); e--; ) t[e] = arguments[e];
              r.subscribers.forEach((function(e) {
                dexie_min_v((function() {
                  e.apply(null, t);
                }));
              }));
            }));
          }
        }));
      }
    }
    function It(e, t) {
      return dexie_min_c(t).from({
        prototype: e
      }), t;
    }
    function Bt(e, t) {
      return !(e.filter || e.algorithm || e.or) && (t ? e.justLimit : !e.replayFilter);
    }
    function Tt(e, t) {
      e.filter = St(e.filter, t);
    }
    function Rt(e, t, n) {
      var r = e.replayFilter;
      e.replayFilter = r ? () => St(r(), t()) : t, e.justLimit = n && !r;
    }
    function Ft(e, t) {
      if (e.isPrimKey) return t.primaryKey;
      const n = t.getIndexByKeyPath(e.index);
      if (!n) throw new dexie_min_X.Schema("KeyPath " + e.index + " on object store " + t.name + " is not indexed");
      return n;
    }
    function Mt(e, t, n) {
      const r = Ft(e, t.schema);
      return t.openCursor({
        trans: n,
        values: !e.keysOnly,
        reverse: "prev" === e.dir,
        unique: !!e.unique,
        query: {
          index: r,
          range: e.range
        }
      });
    }
    function Nt(e, t, n, r) {
      const s = e.replayFilter ? St(e.filter, e.replayFilter()) : e.filter;
      if (e.or) {
        const i = {}, a = (e, n, r) => {
          if (!s || s(n, r, (e => n.stop(e)), (e => n.fail(e)))) {
            var a = n.primaryKey, u = "" + a;
            "[object ArrayBuffer]" === u && (u = "" + new Uint8Array(a)), dexie_min_o(i, u) || (i[u] = !0, 
            t(e, n, r));
          }
        };
        return Promise.all([ e.or._iterate(a, n), qt(Mt(e, r, n), e.algorithm, a, !e.keysOnly && e.valueMapper) ]);
      }
      return qt(Mt(e, r, n), St(e.algorithm, s), t, !e.keysOnly && e.valueMapper);
    }
    function qt(e, t, n, r) {
      var s = Ye(r ? (e, t, s) => n(r(e), t, s) : n);
      return e.then((e => {
        if (e) return e.start((() => {
          var n = () => e.continue();
          t && !t(e, (e => n = e), (t => {
            e.stop(t), n = ee;
          }), (t => {
            e.fail(t), n = ee;
          })) || s(e.value, e, (e => n = e)), n();
        }));
      }));
    }
    function $t(e, t) {
      try {
        const n = Ut(e), r = Ut(t);
        if (n !== r) return "Array" === n ? 1 : "Array" === r ? -1 : "binary" === n ? 1 : "binary" === r ? -1 : "string" === n ? 1 : "string" === r ? -1 : "Date" === n ? 1 : "Date" !== r ? NaN : -1;
        switch (n) {
         case "number":
         case "Date":
         case "string":
          return e > t ? 1 : e < t ? -1 : 0;

         case "binary":
          return function(e, t) {
            const n = e.length, r = t.length, s = n < r ? n : r;
            for (let n = 0; n < s; ++n) if (e[n] !== t[n]) return e[n] < t[n] ? -1 : 1;
            return n === r ? 0 : n < r ? -1 : 1;
          }(Lt(e), Lt(t));

         case "Array":
          return function(e, t) {
            const n = e.length, r = t.length, s = n < r ? n : r;
            for (let n = 0; n < s; ++n) {
              const r = $t(e[n], t[n]);
              if (0 !== r) return r;
            }
            return n === r ? 0 : n < r ? -1 : 1;
          }(e, t);
        }
      } catch (e) {}
      return NaN;
    }
    function Ut(e) {
      const t = typeof e;
      if ("object" !== t) return t;
      if (ArrayBuffer.isView(e)) return "binary";
      const n = dexie_min_C(e);
      return "ArrayBuffer" === n ? "binary" : n;
    }
    function Lt(e) {
      return e instanceof Uint8Array ? e : ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : new Uint8Array(e);
    }
    class Vt {
      _read(e, t) {
        var n = this._ctx;
        return n.error ? n.table._trans(null, ft.bind(null, n.error)) : n.table._trans("readonly", e).then(t);
      }
      _write(e) {
        var t = this._ctx;
        return t.error ? t.table._trans(null, ft.bind(null, t.error)) : t.table._trans("readwrite", e, "locked");
      }
      _addAlgorithm(e) {
        var t = this._ctx;
        t.algorithm = St(t.algorithm, e);
      }
      _iterate(e, t) {
        return Nt(this._ctx, e, t, this._ctx.table.core);
      }
      clone(e) {
        var t = Object.create(this.constructor.prototype), n = Object.create(this._ctx);
        return e && dexie_min_r(n, e), t._ctx = n, t;
      }
      raw() {
        return this._ctx.valueMapper = null, this;
      }
      each(e) {
        var t = this._ctx;
        return this._read((n => Nt(t, e, n, t.table.core)));
      }
      count(e) {
        return this._read((e => {
          const t = this._ctx, n = t.table.core;
          if (Bt(t, !0)) return n.count({
            trans: e,
            query: {
              index: Ft(t, n.schema),
              range: t.range
            }
          }).then((e => Math.min(e, t.limit)));
          var r = 0;
          return Nt(t, (() => (++r, !1)), e, n).then((() => r));
        })).then(e);
      }
      sortBy(e, t) {
        const n = e.split(".").reverse(), r = n[0], s = n.length - 1;
        function i(e, t) {
          return t ? i(e[n[t]], t - 1) : e[r];
        }
        var o = "next" === this._ctx.dir ? 1 : -1;
        function a(e, t) {
          var n = i(e, s), r = i(t, s);
          return n < r ? -o : n > r ? o : 0;
        }
        return this.toArray((function(e) {
          return e.sort(a);
        })).then(t);
      }
      toArray(e) {
        return this._read((e => {
          var t = this._ctx;
          if ("next" === t.dir && Bt(t, !0) && t.limit > 0) {
            const {valueMapper: n} = t, r = Ft(t, t.table.core.schema);
            return t.table.core.query({
              trans: e,
              limit: t.limit,
              values: !0,
              query: {
                index: r,
                range: t.range
              }
            }).then((({result: e}) => n ? e.map(n) : e));
          }
          {
            const n = [];
            return Nt(t, (e => n.push(e)), e, t.table.core).then((() => n));
          }
        }), e);
      }
      offset(e) {
        var t = this._ctx;
        return e <= 0 || (t.offset += e, Bt(t) ? Rt(t, (() => {
          var t = e;
          return (e, n) => 0 === t || (1 === t ? (--t, !1) : (n((() => {
            e.advance(t), t = 0;
          })), !1));
        })) : Rt(t, (() => {
          var t = e;
          return () => --t < 0;
        }))), this;
      }
      limit(e) {
        return this._ctx.limit = Math.min(this._ctx.limit, e), Rt(this._ctx, (() => {
          var t = e;
          return function(e, n, r) {
            return --t <= 0 && n(r), t >= 0;
          };
        }), !0), this;
      }
      until(e, t) {
        return Tt(this._ctx, (function(n, r, s) {
          return !e(n.value) || (r(s), t);
        })), this;
      }
      first(e) {
        return this.limit(1).toArray((function(e) {
          return e[0];
        })).then(e);
      }
      last(e) {
        return this.reverse().first(e);
      }
      filter(e) {
        var t, n;
        return Tt(this._ctx, (function(t) {
          return e(t.value);
        })), t = this._ctx, n = e, t.isMatch = St(t.isMatch, n), this;
      }
      and(e) {
        return this.filter(e);
      }
      or(e) {
        return new this.db.WhereClause(this._ctx.table, e, this);
      }
      reverse() {
        return this._ctx.dir = "prev" === this._ctx.dir ? "next" : "prev", this._ondirectionchange && this._ondirectionchange(this._ctx.dir), 
        this;
      }
      desc() {
        return this.reverse();
      }
      eachKey(e) {
        var t = this._ctx;
        return t.keysOnly = !t.isMatch, this.each((function(t, n) {
          e(n.key, n);
        }));
      }
      eachUniqueKey(e) {
        return this._ctx.unique = "unique", this.eachKey(e);
      }
      eachPrimaryKey(e) {
        var t = this._ctx;
        return t.keysOnly = !t.isMatch, this.each((function(t, n) {
          e(n.primaryKey, n);
        }));
      }
      keys(e) {
        var t = this._ctx;
        t.keysOnly = !t.isMatch;
        var n = [];
        return this.each((function(e, t) {
          n.push(t.key);
        })).then((function() {
          return n;
        })).then(e);
      }
      primaryKeys(e) {
        var t = this._ctx;
        if ("next" === t.dir && Bt(t, !0) && t.limit > 0) return this._read((e => {
          var n = Ft(t, t.table.core.schema);
          return t.table.core.query({
            trans: e,
            values: !1,
            limit: t.limit,
            query: {
              index: n,
              range: t.range
            }
          });
        })).then((({result: e}) => e)).then(e);
        t.keysOnly = !t.isMatch;
        var n = [];
        return this.each((function(e, t) {
          n.push(t.primaryKey);
        })).then((function() {
          return n;
        })).then(e);
      }
      uniqueKeys(e) {
        return this._ctx.unique = "unique", this.keys(e);
      }
      firstKey(e) {
        return this.limit(1).keys((function(e) {
          return e[0];
        })).then(e);
      }
      lastKey(e) {
        return this.reverse().firstKey(e);
      }
      distinct() {
        var e = this._ctx, t = e.index && e.table.schema.idxByName[e.index];
        if (!t || !t.multi) return this;
        var n = {};
        return Tt(this._ctx, (function(e) {
          var t = e.primaryKey.toString(), r = dexie_min_o(n, t);
          return n[t] = !0, !r;
        })), this;
      }
      modify(e) {
        var n = this._ctx;
        return this._write((r => {
          var s;
          if ("function" == typeof e) s = e; else {
            var i = dexie_min_t(e), o = i.length;
            s = function(t) {
              for (var n = !1, r = 0; r < o; ++r) {
                var s = i[r], a = e[s];
                dexie_min_b(t, s) !== a && (dexie_min_(t, s, a), n = !0);
              }
              return n;
            };
          }
          const a = n.table.core, {outbound: u, extractKey: l} = a.schema.primaryKey, c = this.db._options.modifyChunkSize || 200, h = [];
          let d = 0;
          const f = [], p = (e, n) => {
            const {failures: r, numFailures: s} = n;
            d += e - s;
            for (let e of dexie_min_t(r)) h.push(r[e]);
          };
          return this.clone().primaryKeys().then((t => {
            const i = o => {
              const h = Math.min(c, t.length - o);
              return a.getMany({
                trans: r,
                keys: t.slice(o, o + h),
                cache: "immutable"
              }).then((d => {
                const f = [], y = [], m = u ? [] : null, v = [];
                for (let e = 0; e < h; ++e) {
                  const n = d[e], r = {
                    value: dexie_min_O(n),
                    primKey: t[o + e]
                  };
                  !1 !== s.call(r, r.value, r) && (null == r.value ? v.push(t[o + e]) : u || 0 === $t(l(n), l(r.value)) ? (y.push(r.value), 
                  u && m.push(t[o + e])) : (v.push(t[o + e]), f.push(r.value)));
                }
                const g = Bt(n) && n.limit === 1 / 0 && ("function" != typeof e || e === Wt) && {
                  index: n.index,
                  range: n.range
                };
                return Promise.resolve(f.length > 0 && a.mutate({
                  trans: r,
                  type: "add",
                  values: f
                }).then((e => {
                  for (let t in e.failures) v.splice(parseInt(t), 1);
                  p(f.length, e);
                }))).then((() => (y.length > 0 || g && "object" == typeof e) && a.mutate({
                  trans: r,
                  type: "put",
                  keys: m,
                  values: y,
                  criteria: g,
                  changeSpec: "function" != typeof e && e
                }).then((e => p(y.length, e))))).then((() => (v.length > 0 || g && e === Wt) && a.mutate({
                  trans: r,
                  type: "delete",
                  keys: v,
                  criteria: g
                }).then((e => p(v.length, e))))).then((() => t.length > o + h && i(o + c)));
              }));
            };
            return i(0).then((() => {
              if (h.length > 0) throw new dexie_min_z("Error modifying one or more objects", h, d, f);
              return t.length;
            }));
          }));
        }));
      }
      delete() {
        var e = this._ctx, t = e.range;
        return Bt(e) && (e.isPrimKey && !kt || 3 === t.type) ? this._write((n => {
          const {primaryKey: r} = e.table.core.schema, s = t;
          return e.table.core.count({
            trans: n,
            query: {
              index: r,
              range: s
            }
          }).then((t => e.table.core.mutate({
            trans: n,
            type: "deleteRange",
            range: s
          }).then((({failures: e, lastResult: n, results: r, numFailures: s}) => {
            if (s) throw new dexie_min_z("Could not delete some values", Object.keys(e).map((t => e[t])), t - s);
            return t - s;
          }))));
        })) : this.modify(Wt);
      }
    }
    const Wt = (e, t) => t.value = null;
    function Yt(e, t) {
      return e < t ? -1 : e === t ? 0 : 1;
    }
    function zt(e, t) {
      return e > t ? -1 : e === t ? 0 : 1;
    }
    function Gt(e, t, n) {
      var r = e instanceof dexie_min_en ? new e.Collection(e) : e;
      return r._ctx.error = n ? new n(t) : new TypeError(t), r;
    }
    function Ht(e) {
      return new e.Collection(e, (() => Zt(""))).limit(0);
    }
    function Qt(e, t, n, r, s, i) {
      for (var o = Math.min(e.length, r.length), a = -1, u = 0; u < o; ++u) {
        var l = t[u];
        if (l !== r[u]) return s(e[u], n[u]) < 0 ? e.substr(0, u) + n[u] + n.substr(u + 1) : s(e[u], r[u]) < 0 ? e.substr(0, u) + r[u] + n.substr(u + 1) : a >= 0 ? e.substr(0, a) + t[a] + n.substr(a + 1) : null;
        s(e[u], l) < 0 && (a = u);
      }
      return o < r.length && "next" === i ? e + n.substr(e.length) : o < e.length && "prev" === i ? e.substr(0, n.length) : a < 0 ? null : e.substr(0, a) + r[a] + n.substr(a + 1);
    }
    function Xt(e, t, n, r) {
      var s, i, o, a, u, l, c, h = n.length;
      if (!n.every((e => "string" == typeof e))) return Gt(e, bt);
      function d(e) {
        s = function(e) {
          return "next" === e ? e => e.toUpperCase() : e => e.toLowerCase();
        }(e), i = function(e) {
          return "next" === e ? e => e.toLowerCase() : e => e.toUpperCase();
        }(e), o = "next" === e ? Yt : zt;
        var t = n.map((function(e) {
          return {
            lower: i(e),
            upper: s(e)
          };
        })).sort((function(e, t) {
          return o(e.lower, t.lower);
        }));
        a = t.map((function(e) {
          return e.upper;
        })), u = t.map((function(e) {
          return e.lower;
        })), l = e, c = "next" === e ? "" : r;
      }
      d("next");
      var f = new e.Collection(e, (() => Jt(a[0], u[h - 1] + r)));
      f._ondirectionchange = function(e) {
        d(e);
      };
      var p = 0;
      return f._addAlgorithm((function(e, n, r) {
        var s = e.key;
        if ("string" != typeof s) return !1;
        var d = i(s);
        if (t(d, u, p)) return !0;
        for (var f = null, y = p; y < h; ++y) {
          var m = Qt(s, d, a[y], u[y], o, l);
          null === m && null === f ? p = y + 1 : (null === f || o(f, m) > 0) && (f = m);
        }
        return n(null !== f ? function() {
          e.continue(f + c);
        } : r), !1;
      })), f;
    }
    function Jt(e, t, n, r) {
      return {
        type: 2,
        lower: e,
        upper: t,
        lowerOpen: n,
        upperOpen: r
      };
    }
    function Zt(e) {
      return {
        type: 1,
        lower: e,
        upper: e
      };
    }
    class dexie_min_en {
      get Collection() {
        return this._ctx.table.db.Collection;
      }
      between(e, t, n, r) {
        n = !1 !== n, r = !0 === r;
        try {
          return this._cmp(e, t) > 0 || 0 === this._cmp(e, t) && (n || r) && (!n || !r) ? Ht(this) : new this.Collection(this, (() => Jt(e, t, !n, !r)));
        } catch (e) {
          return Gt(this, gt);
        }
      }
      equals(e) {
        return null == e ? Gt(this, gt) : new this.Collection(this, (() => Zt(e)));
      }
      above(e) {
        return null == e ? Gt(this, gt) : new this.Collection(this, (() => Jt(e, void 0, !0)));
      }
      aboveOrEqual(e) {
        return null == e ? Gt(this, gt) : new this.Collection(this, (() => Jt(e, void 0, !1)));
      }
      below(e) {
        return null == e ? Gt(this, gt) : new this.Collection(this, (() => Jt(void 0, e, !1, !0)));
      }
      belowOrEqual(e) {
        return null == e ? Gt(this, gt) : new this.Collection(this, (() => Jt(void 0, e)));
      }
      startsWith(e) {
        return "string" != typeof e ? Gt(this, bt) : this.between(e, e + mt, !0, !0);
      }
      startsWithIgnoreCase(e) {
        return "" === e ? this.startsWith(e) : Xt(this, ((e, t) => 0 === e.indexOf(t[0])), [ e ], mt);
      }
      equalsIgnoreCase(e) {
        return Xt(this, ((e, t) => e === t[0]), [ e ], "");
      }
      anyOfIgnoreCase() {
        var e = dexie_min_B.apply(dexie_min_I, arguments);
        return 0 === e.length ? Ht(this) : Xt(this, ((e, t) => -1 !== t.indexOf(e)), e, "");
      }
      startsWithAnyOfIgnoreCase() {
        var e = dexie_min_B.apply(dexie_min_I, arguments);
        return 0 === e.length ? Ht(this) : Xt(this, ((e, t) => t.some((t => 0 === e.indexOf(t)))), e, mt);
      }
      anyOf() {
        const e = dexie_min_B.apply(dexie_min_I, arguments);
        let t = this._cmp;
        try {
          e.sort(t);
        } catch (e) {
          return Gt(this, gt);
        }
        if (0 === e.length) return Ht(this);
        const n = new this.Collection(this, (() => Jt(e[0], e[e.length - 1])));
        n._ondirectionchange = n => {
          t = "next" === n ? this._ascending : this._descending, e.sort(t);
        };
        let r = 0;
        return n._addAlgorithm(((n, s, i) => {
          const o = n.key;
          for (;t(o, e[r]) > 0; ) if (++r, r === e.length) return s(i), !1;
          return 0 === t(o, e[r]) || (s((() => {
            n.continue(e[r]);
          })), !1);
        })), n;
      }
      notEqual(e) {
        return this.inAnyRange([ [ vt, e ], [ e, this.db._maxKey ] ], {
          includeLowers: !1,
          includeUppers: !1
        });
      }
      noneOf() {
        const e = dexie_min_B.apply(dexie_min_I, arguments);
        if (0 === e.length) return new this.Collection(this);
        try {
          e.sort(this._ascending);
        } catch (e) {
          return Gt(this, gt);
        }
        const t = e.reduce(((e, t) => e ? e.concat([ [ e[e.length - 1][1], t ] ]) : [ [ vt, t ] ]), null);
        return t.push([ e[e.length - 1], this.db._maxKey ]), this.inAnyRange(t, {
          includeLowers: !1,
          includeUppers: !1
        });
      }
      inAnyRange(e, t) {
        const n = this._cmp, r = this._ascending, s = this._descending, i = this._min, o = this._max;
        if (0 === e.length) return Ht(this);
        if (!e.every((e => void 0 !== e[0] && void 0 !== e[1] && r(e[0], e[1]) <= 0))) return Gt(this, "First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower", dexie_min_X.InvalidArgument);
        const a = !t || !1 !== t.includeLowers, u = t && !0 === t.includeUppers;
        let l, c = r;
        function h(e, t) {
          return c(e[0], t[0]);
        }
        try {
          l = e.reduce((function(e, t) {
            let r = 0, s = e.length;
            for (;r < s; ++r) {
              const s = e[r];
              if (n(t[0], s[1]) < 0 && n(t[1], s[0]) > 0) {
                s[0] = i(s[0], t[0]), s[1] = o(s[1], t[1]);
                break;
              }
            }
            return r === s && e.push(t), e;
          }), []), l.sort(h);
        } catch (e) {
          return Gt(this, gt);
        }
        let d = 0;
        const f = u ? e => r(e, l[d][1]) > 0 : e => r(e, l[d][1]) >= 0, p = a ? e => s(e, l[d][0]) > 0 : e => s(e, l[d][0]) >= 0;
        let y = f;
        const m = new this.Collection(this, (() => Jt(l[0][0], l[l.length - 1][1], !a, !u)));
        return m._ondirectionchange = e => {
          "next" === e ? (y = f, c = r) : (y = p, c = s), l.sort(h);
        }, m._addAlgorithm(((e, t, n) => {
          for (var s = e.key; y(s); ) if (++d, d === l.length) return t(n), !1;
          return !!function(e) {
            return !f(e) && !p(e);
          }(s) || (0 === this._cmp(s, l[d][1]) || 0 === this._cmp(s, l[d][0]) || t((() => {
            c === r ? e.continue(l[d][0]) : e.continue(l[d][1]);
          })), !1);
        })), m;
      }
      startsWithAnyOf() {
        const e = dexie_min_B.apply(dexie_min_I, arguments);
        return e.every((e => "string" == typeof e)) ? 0 === e.length ? Ht(this) : this.inAnyRange(e.map((e => [ e, e + mt ]))) : Gt(this, "startsWithAnyOf() only works with strings");
      }
    }
    function dexie_min_tn(e) {
      return Ye((function(t) {
        return dexie_min_nn(t), e(t.target.error), !1;
      }));
    }
    function dexie_min_nn(e) {
      e.stopPropagation && e.stopPropagation(), e.preventDefault && e.preventDefault();
    }
    const dexie_min_rn = "storagemutated", dexie_min_sn = "x-storagemutated-1", dexie_min_on = Dt(null, dexie_min_rn);
    class dexie_min_an {
      _lock() {
        return dexie_min_m(!Oe.global), ++this._reculock, 1 !== this._reculock || Oe.global || (Oe.lockOwnerFor = this), 
        this;
      }
      _unlock() {
        if (dexie_min_m(!Oe.global), 0 == --this._reculock) for (Oe.global || (Oe.lockOwnerFor = null); this._blockedFuncs.length > 0 && !this._locked(); ) {
          var e = this._blockedFuncs.shift();
          try {
            at(e[1], e[0]);
          } catch (e) {}
        }
        return this;
      }
      _locked() {
        return this._reculock && Oe.lockOwnerFor !== this;
      }
      create(e) {
        if (!this.mode) return this;
        const t = this.db.idbdb, n = this.db._state.dbOpenError;
        if (dexie_min_m(!this.idbtrans), !e && !t) switch (n && n.name) {
         case "DatabaseClosedError":
          throw new dexie_min_X.DatabaseClosed(n);

         case "MissingAPIError":
          throw new dexie_min_X.MissingAPI(n.message, n);

         default:
          throw new dexie_min_X.OpenFailed(n);
        }
        if (!this.active) throw new dexie_min_X.TransactionInactive;
        return dexie_min_m(null === this._completion._state), (e = this.idbtrans = e || (this.db.core ? this.db.core.transaction(this.storeNames, this.mode, {
          durability: this.chromeTransactionDurability
        }) : t.transaction(this.storeNames, this.mode, {
          durability: this.chromeTransactionDurability
        }))).onerror = Ye((t => {
          dexie_min_nn(t), this._reject(e.error);
        })), e.onabort = Ye((t => {
          dexie_min_nn(t), this.active && this._reject(new dexie_min_X.Abort(e.error)), this.active = !1, 
          this.on("abort").fire(t);
        })), e.oncomplete = Ye((() => {
          this.active = !1, this._resolve(), "mutatedParts" in e && dexie_min_on.storagemutated.fire(e.mutatedParts);
        })), this;
      }
      _promise(e, t, n) {
        if ("readwrite" === e && "readwrite" !== this.mode) return ft(new dexie_min_X.ReadOnly("Transaction is readonly"));
        if (!this.active) return ft(new dexie_min_X.TransactionInactive);
        if (this._locked()) return new je(((r, s) => {
          this._blockedFuncs.push([ () => {
            this._promise(e, t, n).then(r, s);
          }, Oe ]);
        }));
        if (n) return Ze((() => {
          var e = new je(((e, n) => {
            this._lock();
            const r = t(e, n, this);
            r && r.then && r.then(e, n);
          }));
          return e.finally((() => this._unlock())), e._lib = !0, e;
        }));
        var r = new je(((e, n) => {
          var r = t(e, n, this);
          r && r.then && r.then(e, n);
        }));
        return r._lib = !0, r;
      }
      _root() {
        return this.parent ? this.parent._root() : this;
      }
      waitFor(e) {
        var t = this._root();
        const n = je.resolve(e);
        if (t._waitingFor) t._waitingFor = t._waitingFor.then((() => n)); else {
          t._waitingFor = n, t._waitingQueue = [];
          var r = t.idbtrans.objectStore(t.storeNames[0]);
          !function e() {
            for (++t._spinCount; t._waitingQueue.length; ) t._waitingQueue.shift()();
            t._waitingFor && (r.get(-1 / 0).onsuccess = e);
          }();
        }
        var s = t._waitingFor;
        return new je(((e, r) => {
          n.then((n => t._waitingQueue.push(Ye(e.bind(null, n)))), (e => t._waitingQueue.push(Ye(r.bind(null, e))))).finally((() => {
            t._waitingFor === s && (t._waitingFor = null);
          }));
        }));
      }
      abort() {
        this.active && (this.active = !1, this.idbtrans && this.idbtrans.abort(), this._reject(new dexie_min_X.Abort));
      }
      table(e) {
        const t = this._memoizedTables || (this._memoizedTables = {});
        if (dexie_min_o(t, e)) return t[e];
        const n = this.schema[e];
        if (!n) throw new dexie_min_X.NotFound("Table " + e + " not part of transaction");
        const r = new this.db.Table(e, n, this);
        return r.core = this.db.core.table(e), t[e] = r, r;
      }
    }
    function dexie_min_un(e, t, n, r, s, i, o) {
      return {
        name: e,
        keyPath: t,
        unique: n,
        multi: r,
        auto: s,
        compound: i,
        src: (n && !o ? "&" : "") + (r ? "*" : "") + (s ? "++" : "") + dexie_min_ln(t)
      };
    }
    function dexie_min_ln(e) {
      return "string" == typeof e ? e : e ? "[" + [].join.call(e, "+") + "]" : "";
    }
    function dexie_min_cn(e, t, n) {
      return {
        name: e,
        primKey: t,
        indexes: n,
        mappedClass: null,
        idxByName: dexie_min_g(n, (e => [ e.name, e ]))
      };
    }
    let hn = e => {
      try {
        return e.only([ [] ]), hn = () => [ [] ], [ [] ];
      } catch (e) {
        return hn = () => mt, mt;
      }
    };
    function dexie_min_dn(e) {
      return null == e ? () => {} : "string" == typeof e ? function(e) {
        const t = e.split(".");
        return 1 === t.length ? t => t[e] : t => dexie_min_b(t, e);
      }(e) : t => dexie_min_b(t, e);
    }
    function dexie_min_fn(e) {
      return [].slice.call(e);
    }
    let dexie_min_pn = 0;
    function yn(e) {
      return null == e ? ":id" : "string" == typeof e ? e : `[${e.join("+")}]`;
    }
    function mn(e, t, r) {
      function s(e) {
        if (3 === e.type) return null;
        if (4 === e.type) throw new Error("Cannot convert never type to IDBKeyRange");
        const {lower: n, upper: r, lowerOpen: s, upperOpen: i} = e;
        return void 0 === n ? void 0 === r ? null : t.upperBound(r, !!i) : void 0 === r ? t.lowerBound(n, !!s) : t.bound(n, r, !!s, !!i);
      }
      const {schema: i, hasGetAll: o} = function(e, t) {
        const r = dexie_min_fn(e.objectStoreNames);
        return {
          schema: {
            name: e.name,
            tables: r.map((e => t.objectStore(e))).map((e => {
              const {keyPath: t, autoIncrement: r} = e, s = dexie_min_n(t), i = null == t, o = {}, a = {
                name: e.name,
                primaryKey: {
                  name: null,
                  isPrimaryKey: !0,
                  outbound: i,
                  compound: s,
                  keyPath: t,
                  autoIncrement: r,
                  unique: !0,
                  extractKey: dexie_min_dn(t)
                },
                indexes: dexie_min_fn(e.indexNames).map((t => e.index(t))).map((e => {
                  const {name: t, unique: r, multiEntry: s, keyPath: i} = e, a = {
                    name: t,
                    compound: dexie_min_n(i),
                    keyPath: i,
                    unique: r,
                    multiEntry: s,
                    extractKey: dexie_min_dn(i)
                  };
                  return o[yn(i)] = a, a;
                })),
                getIndexByKeyPath: e => o[yn(e)]
              };
              return o[":id"] = a.primaryKey, null != t && (o[yn(t)] = a.primaryKey), a;
            }))
          },
          hasGetAll: r.length > 0 && "getAll" in t.objectStore(r[0]) && !("undefined" != typeof navigator && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604)
        };
      }(e, r), a = i.tables.map((e => function(e) {
        const t = e.name;
        return {
          name: t,
          schema: e,
          mutate: function({trans: e, type: n, keys: r, values: i, range: o}) {
            return new Promise(((a, u) => {
              a = Ye(a);
              const l = e.objectStore(t), c = null == l.keyPath, h = "put" === n || "add" === n;
              if (!h && "delete" !== n && "deleteRange" !== n) throw new Error("Invalid operation type: " + n);
              const {length: d} = r || i || {
                length: 1
              };
              if (r && i && r.length !== i.length) throw new Error("Given keys array must have same length as given values array.");
              if (0 === d) return a({
                numFailures: 0,
                failures: {},
                results: [],
                lastResult: void 0
              });
              let f;
              const p = [], y = [];
              let m = 0;
              const v = e => {
                ++m, dexie_min_nn(e);
              };
              if ("deleteRange" === n) {
                if (4 === o.type) return a({
                  numFailures: m,
                  failures: y,
                  results: [],
                  lastResult: void 0
                });
                3 === o.type ? p.push(f = l.clear()) : p.push(f = l.delete(s(o)));
              } else {
                const [e, t] = h ? c ? [ i, r ] : [ i, null ] : [ r, null ];
                if (h) for (let r = 0; r < d; ++r) p.push(f = t && void 0 !== t[r] ? l[n](e[r], t[r]) : l[n](e[r])), 
                f.onerror = v; else for (let t = 0; t < d; ++t) p.push(f = l[n](e[t])), f.onerror = v;
              }
              const g = e => {
                const t = e.target.result;
                p.forEach(((e, t) => null != e.error && (y[t] = e.error))), a({
                  numFailures: m,
                  failures: y,
                  results: "delete" === n ? r : p.map((e => e.result)),
                  lastResult: t
                });
              };
              f.onerror = e => {
                v(e), g(e);
              }, f.onsuccess = g;
            }));
          },
          getMany: ({trans: e, keys: n}) => new Promise(((r, s) => {
            r = Ye(r);
            const i = e.objectStore(t), o = n.length, a = new Array(o);
            let u, l = 0, c = 0;
            const h = e => {
              const t = e.target;
              a[t._pos] = t.result, ++c === l && r(a);
            }, d = dexie_min_tn(s);
            for (let e = 0; e < o; ++e) null != n[e] && (u = i.get(n[e]), u._pos = e, u.onsuccess = h, 
            u.onerror = d, ++l);
            0 === l && r(a);
          })),
          get: ({trans: e, key: n}) => new Promise(((r, s) => {
            r = Ye(r);
            const i = e.objectStore(t).get(n);
            i.onsuccess = e => r(e.target.result), i.onerror = dexie_min_tn(s);
          })),
          query: function(e) {
            return n => new Promise(((r, i) => {
              r = Ye(r);
              const {trans: o, values: a, limit: u, query: l} = n, c = u === 1 / 0 ? void 0 : u, {index: h, range: d} = l, f = o.objectStore(t), p = h.isPrimaryKey ? f : f.index(h.name), y = s(d);
              if (0 === u) return r({
                result: []
              });
              if (e) {
                const e = a ? p.getAll(y, c) : p.getAllKeys(y, c);
                e.onsuccess = e => r({
                  result: e.target.result
                }), e.onerror = dexie_min_tn(i);
              } else {
                let e = 0;
                const t = a || !("openKeyCursor" in p) ? p.openCursor(y) : p.openKeyCursor(y), n = [];
                t.onsuccess = s => {
                  const i = t.result;
                  return i ? (n.push(a ? i.value : i.primaryKey), ++e === u ? r({
                    result: n
                  }) : void i.continue()) : r({
                    result: n
                  });
                }, t.onerror = dexie_min_tn(i);
              }
            }));
          }(o),
          openCursor: function({trans: e, values: n, query: r, reverse: i, unique: o}) {
            return new Promise(((a, u) => {
              a = Ye(a);
              const {index: l, range: c} = r, h = e.objectStore(t), d = l.isPrimaryKey ? h : h.index(l.name), f = i ? o ? "prevunique" : "prev" : o ? "nextunique" : "next", p = n || !("openKeyCursor" in d) ? d.openCursor(s(c), f) : d.openKeyCursor(s(c), f);
              p.onerror = dexie_min_tn(u), p.onsuccess = Ye((t => {
                const n = p.result;
                if (!n) return void a(null);
                n.___id = ++dexie_min_pn, n.done = !1;
                const r = n.continue.bind(n);
                let s = n.continuePrimaryKey;
                s && (s = s.bind(n));
                const i = n.advance.bind(n), o = () => {
                  throw new Error("Cursor not stopped");
                };
                n.trans = e, n.stop = n.continue = n.continuePrimaryKey = n.advance = () => {
                  throw new Error("Cursor not started");
                }, n.fail = Ye(u), n.next = function() {
                  let e = 1;
                  return this.start((() => e-- ? this.continue() : this.stop())).then((() => this));
                }, n.start = e => {
                  const t = new Promise(((e, t) => {
                    e = Ye(e), p.onerror = dexie_min_tn(t), n.fail = t, n.stop = t => {
                      n.stop = n.continue = n.continuePrimaryKey = n.advance = o, e(t);
                    };
                  })), a = () => {
                    if (p.result) try {
                      e();
                    } catch (e) {
                      n.fail(e);
                    } else n.done = !0, n.start = () => {
                      throw new Error("Cursor behind last entry");
                    }, n.stop();
                  };
                  return p.onsuccess = Ye((e => {
                    p.onsuccess = a, a();
                  })), n.continue = r, n.continuePrimaryKey = s, n.advance = i, a(), t;
                }, a(n);
              }), u);
            }));
          },
          count({query: e, trans: n}) {
            const {index: r, range: i} = e;
            return new Promise(((e, o) => {
              const a = n.objectStore(t), u = r.isPrimaryKey ? a : a.index(r.name), l = s(i), c = l ? u.count(l) : u.count();
              c.onsuccess = Ye((t => e(t.target.result))), c.onerror = dexie_min_tn(o);
            }));
          }
        };
      }(e))), u = {};
      return a.forEach((e => u[e.name] = e)), {
        stack: "dbcore",
        transaction: e.transaction.bind(e),
        table(e) {
          if (!u[e]) throw new Error(`Table '${e}' not found`);
          return u[e];
        },
        MIN_KEY: -1 / 0,
        MAX_KEY: hn(t),
        schema: i
      };
    }
    function dexie_min_vn({_novip: e}, t) {
      const n = t.db, r = function(e, t, {IDBKeyRange: n, indexedDB: r}, s) {
        const i = function(e, t) {
          return t.reduce(((e, {create: t}) => ({
            ...e,
            ...t(e)
          })), e);
        }(mn(t, n, s), e.dbcore);
        return {
          dbcore: i
        };
      }(e._middlewares, n, e._deps, t);
      e.core = r.dbcore, e.tables.forEach((t => {
        const n = t.name;
        e.core.schema.tables.some((e => e.name === n)) && (t.core = e.core.table(n), e[n] instanceof e.Table && (e[n].core = t.core));
      }));
    }
    function gn({_novip: e}, t, n, r) {
      n.forEach((n => {
        const s = r[n];
        t.forEach((t => {
          const r = dexie_min_d(t, n);
          (!r || "value" in r && void 0 === r.value) && (t === e.Transaction.prototype || t instanceof e.Transaction ? dexie_min_l(t, n, {
            get() {
              return this.table(n);
            },
            set(e) {
              dexie_min_u(this, n, {
                value: e,
                writable: !0,
                configurable: !0,
                enumerable: !0
              });
            }
          }) : t[n] = new e.Table(n, s));
        }));
      }));
    }
    function bn({_novip: e}, t) {
      t.forEach((t => {
        for (let n in t) t[n] instanceof e.Table && delete t[n];
      }));
    }
    function _n(e, t) {
      return e._cfg.version - t._cfg.version;
    }
    function wn(e, n, r, s) {
      const i = e._dbSchema, o = e._createTransaction("readwrite", e._storeNames, i);
      o.create(r), o._completion.catch(s);
      const a = o._reject.bind(o), u = Oe.transless || Oe;
      Ze((() => {
        Oe.trans = o, Oe.transless = u, 0 === n ? (dexie_min_t(i).forEach((e => {
          kn(r, e, i[e].primKey, i[e].indexes);
        })), dexie_min_vn(e, r), je.follow((() => e.on.populate.fire(o))).catch(a)) : function({_novip: e}, n, r, s) {
          const i = [], o = e._versions;
          let a = e._dbSchema = Pn(e, e.idbdb, s), u = !1;
          const l = o.filter((e => e._cfg.version >= n));
          function c() {
            return i.length ? je.resolve(i.shift()(r.idbtrans)).then(c) : je.resolve();
          }
          return l.forEach((o => {
            i.push((() => {
              const i = a, l = o._cfg.dbschema;
              Kn(e, i, s), Kn(e, l, s), a = e._dbSchema = l;
              const c = xn(i, l);
              c.add.forEach((e => {
                kn(s, e[0], e[1].primKey, e[1].indexes);
              })), c.change.forEach((e => {
                if (e.recreate) throw new dexie_min_X.Upgrade("Not yet support for changing primary key");
                {
                  const t = s.objectStore(e.name);
                  e.add.forEach((e => En(t, e))), e.change.forEach((e => {
                    t.deleteIndex(e.name), En(t, e);
                  })), e.del.forEach((e => t.deleteIndex(e)));
                }
              }));
              const h = o._cfg.contentUpgrade;
              if (h && o._cfg.version > n) {
                dexie_min_vn(e, s), r._memoizedTables = {}, u = !0;
                let n = dexie_min_w(l);
                c.del.forEach((e => {
                  n[e] = i[e];
                })), bn(e, [ e.Transaction.prototype ]), gn(e, [ e.Transaction.prototype ], dexie_min_t(n), n), 
                r.schema = n;
                const o = dexie_min_T(h);
                let a;
                o && et();
                const d = je.follow((() => {
                  if (a = h(r), a && o) {
                    var e = tt.bind(null, null);
                    a.then(e, e);
                  }
                }));
                return a && "function" == typeof a.then ? je.resolve(a) : d.then((() => a));
              }
            })), i.push((t => {
              if (!u || !xt) {
                !function(e, t) {
                  [].slice.call(t.db.objectStoreNames).forEach((n => null == e[n] && t.db.deleteObjectStore(n)));
                }(o._cfg.dbschema, t);
              }
              bn(e, [ e.Transaction.prototype ]), gn(e, [ e.Transaction.prototype ], e._storeNames, e._dbSchema), 
              r.schema = e._dbSchema;
            }));
          })), c().then((() => {
            var e, n;
            n = s, dexie_min_t(e = a).forEach((t => {
              n.db.objectStoreNames.contains(t) || kn(n, t, e[t].primKey, e[t].indexes);
            }));
          }));
        }(e, n, o, r).catch(a);
      }));
    }
    function xn(e, t) {
      const n = {
        del: [],
        add: [],
        change: []
      };
      let r;
      for (r in e) t[r] || n.del.push(r);
      for (r in t) {
        const s = e[r], i = t[r];
        if (s) {
          const e = {
            name: r,
            def: i,
            recreate: !1,
            del: [],
            add: [],
            change: []
          };
          if ("" + (s.primKey.keyPath || "") != "" + (i.primKey.keyPath || "") || s.primKey.auto !== i.primKey.auto && !wt) e.recreate = !0, 
          n.change.push(e); else {
            const t = s.idxByName, r = i.idxByName;
            let o;
            for (o in t) r[o] || e.del.push(o);
            for (o in r) {
              const n = t[o], s = r[o];
              n ? n.src !== s.src && e.change.push(s) : e.add.push(s);
            }
            (e.del.length > 0 || e.add.length > 0 || e.change.length > 0) && n.change.push(e);
          }
        } else n.add.push([ r, i ]);
      }
      return n;
    }
    function kn(e, t, n, r) {
      const s = e.db.createObjectStore(t, n.keyPath ? {
        keyPath: n.keyPath,
        autoIncrement: n.auto
      } : {
        autoIncrement: n.auto
      });
      return r.forEach((e => En(s, e))), s;
    }
    function En(e, t) {
      e.createIndex(t.name, t.keyPath, {
        unique: t.unique,
        multiEntry: t.multi
      });
    }
    function Pn(e, t, n) {
      const r = {};
      return dexie_min_p(t.objectStoreNames, 0).forEach((e => {
        const t = n.objectStore(e);
        let s = t.keyPath;
        const i = dexie_min_un(dexie_min_ln(s), s || "", !1, !1, !!t.autoIncrement, s && "string" != typeof s, !0), o = [];
        for (let e = 0; e < t.indexNames.length; ++e) {
          const n = t.index(t.indexNames[e]);
          s = n.keyPath;
          var a = dexie_min_un(n.name, s, !!n.unique, !!n.multiEntry, !1, s && "string" != typeof s, !1);
          o.push(a);
        }
        r[e] = dexie_min_cn(e, i, o);
      })), r;
    }
    function Kn({_novip: t}, n, r) {
      const s = r.db.objectStoreNames;
      for (let e = 0; e < s.length; ++e) {
        const i = s[e], o = r.objectStore(i);
        t._hasGetAll = "getAll" in o;
        for (let e = 0; e < o.indexNames.length; ++e) {
          const t = o.indexNames[e], r = o.index(t).keyPath, s = "string" == typeof r ? r : "[" + dexie_min_p(r).join("+") + "]";
          if (n[i]) {
            const e = n[i].idxByName[s];
            e && (e.name = t, delete n[i].idxByName[s], n[i].idxByName[t] = e);
          }
        }
      }
      "undefined" != typeof navigator && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && dexie_min_e.WorkerGlobalScope && dexie_min_e instanceof dexie_min_e.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604 && (t._hasGetAll = !1);
    }
    class On {
      _parseStoresSpec(e, r) {
        dexie_min_t(e).forEach((t => {
          if (null !== e[t]) {
            var s = e[t].split(",").map(((e, t) => {
              const r = (e = e.trim()).replace(/([&*]|\+\+)/g, ""), s = /^\[/.test(r) ? r.match(/^\[(.*)\]$/)[1].split("+") : r;
              return dexie_min_un(r, s || null, /\&/.test(e), /\*/.test(e), /\+\+/.test(e), dexie_min_n(s), 0 === t);
            })), i = s.shift();
            if (i.multi) throw new dexie_min_X.Schema("Primary key cannot be multi-valued");
            s.forEach((e => {
              if (e.auto) throw new dexie_min_X.Schema("Only primary key can be marked as autoIncrement (++)");
              if (!e.keyPath) throw new dexie_min_X.Schema("Index must have a name and cannot be an empty string");
            })), r[t] = dexie_min_cn(t, i, s);
          }
        }));
      }
      stores(e) {
        const n = this.db;
        this._cfg.storesSource = this._cfg.storesSource ? dexie_min_r(this._cfg.storesSource, e) : e;
        const s = n._versions, i = {};
        let o = {};
        return s.forEach((e => {
          dexie_min_r(i, e._cfg.storesSource), o = e._cfg.dbschema = {}, e._parseStoresSpec(i, o);
        })), n._dbSchema = o, bn(n, [ n._allTables, n, n.Transaction.prototype ]), gn(n, [ n._allTables, n, n.Transaction.prototype, this._cfg.tables ], dexie_min_t(o), o), 
        n._storeNames = dexie_min_t(o), this;
      }
      upgrade(e) {
        return this._cfg.contentUpgrade = ue(this._cfg.contentUpgrade || ee, e), this;
      }
    }
    function Sn(e, t) {
      let n = e._dbNamesDB;
      return n || (n = e._dbNamesDB = new Xn(Pt, {
        addons: [],
        indexedDB: e,
        IDBKeyRange: t
      }), n.version(1).stores({
        dbnames: "name"
      })), n.table("dbnames");
    }
    function An(e) {
      return e && "function" == typeof e.databases;
    }
    function Cn(e) {
      return Ze((function() {
        return Oe.letThrough = !0, e();
      }));
    }
    function jn() {
      var e;
      return !navigator.userAgentData && /Safari\//.test(navigator.userAgent) && !/Chrom(e|ium)\//.test(navigator.userAgent) && indexedDB.databases ? new Promise((function(t) {
        var n = function() {
          return indexedDB.databases().finally(t);
        };
        e = setInterval(n, 100), n();
      })).finally((function() {
        return clearInterval(e);
      })) : Promise.resolve();
    }
    function Dn(e) {
      const n = e._state, {indexedDB: r} = e._deps;
      if (n.isBeingOpened || e.idbdb) return n.dbReadyPromise.then((() => n.dbOpenError ? ft(n.dbOpenError) : e));
      dexie_min_R && (n.openCanceller._stackHolder = dexie_min_q()), n.isBeingOpened = !0, 
      n.dbOpenError = null, n.openComplete = !1;
      const s = n.openCanceller;
      function i() {
        if (n.openCanceller !== s) throw new dexie_min_X.DatabaseClosed("db.open() was cancelled");
      }
      let o = n.dbReadyResolve, a = null, u = !1;
      const l = () => new je(((s, o) => {
        if (i(), !r) throw new dexie_min_X.MissingAPI;
        const l = e.name, c = n.autoSchema ? r.open(l) : r.open(l, Math.round(10 * e.verno));
        if (!c) throw new dexie_min_X.MissingAPI;
        c.onerror = dexie_min_tn(o), c.onblocked = Ye(e._fireOnBlocked), c.onupgradeneeded = Ye((t => {
          if (a = c.transaction, n.autoSchema && !e._options.allowEmptyDB) {
            c.onerror = dexie_min_nn, a.abort(), c.result.close();
            const e = r.deleteDatabase(l);
            e.onsuccess = e.onerror = Ye((() => {
              o(new dexie_min_X.NoSuchDatabase(`Database ${l} doesnt exist`));
            }));
          } else {
            a.onerror = dexie_min_tn(o);
            var s = t.oldVersion > Math.pow(2, 62) ? 0 : t.oldVersion;
            u = s < 1, e._novip.idbdb = c.result, wn(e, s / 10, a, o);
          }
        }), o), c.onsuccess = Ye((() => {
          a = null;
          const r = e._novip.idbdb = c.result, i = dexie_min_p(r.objectStoreNames);
          if (i.length > 0) try {
            const s = r.transaction(1 === (o = i).length ? o[0] : o, "readonly");
            n.autoSchema ? function({_novip: e}, n, r) {
              e.verno = n.version / 10;
              const s = e._dbSchema = Pn(0, n, r);
              e._storeNames = dexie_min_p(n.objectStoreNames, 0), gn(e, [ e._allTables ], dexie_min_t(s), s);
            }(e, r, s) : (Kn(e, e._dbSchema, s), function(e, t) {
              const n = xn(Pn(0, e.idbdb, t), e._dbSchema);
              return !(n.add.length || n.change.some((e => e.add.length || e.change.length)));
            }(e, s) || console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.")), 
            dexie_min_vn(e, s);
          } catch (e) {}
          var o;
          _t.push(e), r.onversionchange = Ye((t => {
            n.vcFired = !0, e.on("versionchange").fire(t);
          })), r.onclose = Ye((t => {
            e.on("close").fire(t);
          })), u && function({indexedDB: e, IDBKeyRange: t}, n) {
            !An(e) && n !== Pt && Sn(e, t).put({
              name: n
            }).catch(ee);
          }(e._deps, l), s();
        }), o);
      })).catch((e => e && "UnknownError" === e.name && n.PR1398_maxLoop > 0 ? (n.PR1398_maxLoop--, 
      console.warn("Dexie: Workaround for Chrome UnknownError on open()"), l()) : je.reject(e)));
      return je.race([ s, ("undefined" == typeof navigator ? je.resolve() : jn()).then(l) ]).then((() => (i(), 
      n.onReadyBeingFired = [], je.resolve(Cn((() => e.on.ready.fire(e.vip)))).then((function t() {
        if (n.onReadyBeingFired.length > 0) {
          let r = n.onReadyBeingFired.reduce(ue, ee);
          return n.onReadyBeingFired = [], je.resolve(Cn((() => r(e.vip)))).then(t);
        }
      }))))).finally((() => {
        n.onReadyBeingFired = null, n.isBeingOpened = !1;
      })).then((() => e)).catch((t => {
        n.dbOpenError = t;
        try {
          a && a.abort();
        } catch (e) {}
        return s === n.openCanceller && e._close(), ft(t);
      })).finally((() => {
        n.openComplete = !0, o();
      }));
    }
    function In(e) {
      var t = t => e.next(t), r = i(t), s = i((t => e.throw(t)));
      function i(e) {
        return t => {
          var i = e(t), o = i.value;
          return i.done ? o : o && "function" == typeof o.then ? o.then(r, s) : dexie_min_n(o) ? Promise.all(o).then(r, s) : r(o);
        };
      }
      return i(t)();
    }
    function Bn(e, t, n) {
      var r = arguments.length;
      if (r < 2) throw new dexie_min_X.InvalidArgument("Too few arguments");
      for (var s = new Array(r - 1); --r; ) s[r - 1] = arguments[r];
      return n = s.pop(), [ e, dexie_min_k(s), n ];
    }
    function Tn(e, t, n, r, s) {
      return je.resolve().then((() => {
        const i = Oe.transless || Oe, o = e._createTransaction(t, n, e._dbSchema, r), a = {
          trans: o,
          transless: i
        };
        if (r) o.idbtrans = r.idbtrans; else try {
          o.create(), e._state.PR1398_maxLoop = 3;
        } catch (r) {
          return r.name === dexie_min_H.InvalidState && e.isOpen() && --e._state.PR1398_maxLoop > 0 ? (console.warn("Dexie: Need to reopen db"), 
          e._close(), e.open().then((() => Tn(e, t, n, null, s)))) : ft(r);
        }
        const u = dexie_min_T(s);
        let l;
        u && et();
        const c = je.follow((() => {
          if (l = s.call(o, o), l) if (u) {
            var e = tt.bind(null, null);
            l.then(e, e);
          } else "function" == typeof l.next && "function" == typeof l.throw && (l = In(l));
        }), a);
        return (l && "function" == typeof l.then ? je.resolve(l).then((e => o.active ? e : ft(new dexie_min_X.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn")))) : c.then((() => l))).then((e => (r && o._resolve(), 
        o._completion.then((() => e))))).catch((e => (o._reject(e), ft(e))));
      }));
    }
    function Rn(e, t, r) {
      const s = dexie_min_n(e) ? e.slice() : [ e ];
      for (let e = 0; e < r; ++e) s.push(t);
      return s;
    }
    const Fn = {
      stack: "dbcore",
      name: "VirtualIndexMiddleware",
      level: 1,
      create: function(e) {
        return {
          ...e,
          table(t) {
            const n = e.table(t), {schema: r} = n, s = {}, i = [];
            function o(e, t, n) {
              const r = yn(e), a = s[r] = s[r] || [], u = null == e ? 0 : "string" == typeof e ? 1 : e.length, l = t > 0, c = {
                ...n,
                isVirtual: l,
                keyTail: t,
                keyLength: u,
                extractKey: dexie_min_dn(e),
                unique: !l && n.unique
              };
              if (a.push(c), c.isPrimaryKey || i.push(c), u > 1) {
                o(2 === u ? e[0] : e.slice(0, u - 1), t + 1, n);
              }
              return a.sort(((e, t) => e.keyTail - t.keyTail)), c;
            }
            const a = o(r.primaryKey.keyPath, 0, r.primaryKey);
            s[":id"] = [ a ];
            for (const e of r.indexes) o(e.keyPath, 0, e);
            function u(t) {
              const n = t.query.index;
              return n.isVirtual ? {
                ...t,
                query: {
                  index: n,
                  range: (r = t.query.range, s = n.keyTail, {
                    type: 1 === r.type ? 2 : r.type,
                    lower: Rn(r.lower, r.lowerOpen ? e.MAX_KEY : e.MIN_KEY, s),
                    lowerOpen: !0,
                    upper: Rn(r.upper, r.upperOpen ? e.MIN_KEY : e.MAX_KEY, s),
                    upperOpen: !0
                  })
                }
              } : t;
              var r, s;
            }
            const l = {
              ...n,
              schema: {
                ...r,
                primaryKey: a,
                indexes: i,
                getIndexByKeyPath: function(e) {
                  const t = s[yn(e)];
                  return t && t[0];
                }
              },
              count: e => n.count(u(e)),
              query: e => n.query(u(e)),
              openCursor(t) {
                const {keyTail: r, isVirtual: s, keyLength: i} = t.query.index;
                if (!s) return n.openCursor(t);
                return n.openCursor(u(t)).then((n => n && function(n) {
                  const s = Object.create(n, {
                    continue: {
                      value: function(s) {
                        null != s ? n.continue(Rn(s, t.reverse ? e.MAX_KEY : e.MIN_KEY, r)) : t.unique ? n.continue(n.key.slice(0, i).concat(t.reverse ? e.MIN_KEY : e.MAX_KEY, r)) : n.continue();
                      }
                    },
                    continuePrimaryKey: {
                      value(t, s) {
                        n.continuePrimaryKey(Rn(t, e.MAX_KEY, r), s);
                      }
                    },
                    primaryKey: {
                      get: () => n.primaryKey
                    },
                    key: {
                      get() {
                        const e = n.key;
                        return 1 === i ? e[0] : e.slice(0, i);
                      }
                    },
                    value: {
                      get: () => n.value
                    }
                  });
                  return s;
                }(n)));
              }
            };
            return l;
          }
        };
      }
    };
    function Mn(e, n, r, s) {
      return r = r || {}, s = s || "", dexie_min_t(e).forEach((t => {
        if (dexie_min_o(n, t)) {
          var i = e[t], a = n[t];
          if ("object" == typeof i && "object" == typeof a && i && a) {
            const e = dexie_min_C(i);
            e !== dexie_min_C(a) ? r[s + t] = n[t] : "Object" === e ? Mn(i, a, r, s + t + ".") : i !== a && (r[s + t] = n[t]);
          } else i !== a && (r[s + t] = n[t]);
        } else r[s + t] = void 0;
      })), dexie_min_t(n).forEach((t => {
        dexie_min_o(e, t) || (r[s + t] = n[t]);
      })), r;
    }
    const Nn = {
      stack: "dbcore",
      name: "HooksMiddleware",
      level: 2,
      create: e => ({
        ...e,
        table(t) {
          const n = e.table(t), {primaryKey: r} = n.schema, s = {
            ...n,
            mutate(e) {
              const s = Oe.trans, {deleting: i, creating: a, updating: u} = s.table(t).hook;
              switch (e.type) {
               case "add":
                if (a.fire === ee) break;
                return s._promise("readwrite", (() => l(e)), !0);

               case "put":
                if (a.fire === ee && u.fire === ee) break;
                return s._promise("readwrite", (() => l(e)), !0);

               case "delete":
                if (i.fire === ee) break;
                return s._promise("readwrite", (() => l(e)), !0);

               case "deleteRange":
                if (i.fire === ee) break;
                return s._promise("readwrite", (() => function(e) {
                  return c(e.trans, e.range, 1e4);
                }(e)), !0);
              }
              return n.mutate(e);
              function l(e) {
                const t = Oe.trans, s = e.keys || function(e, t) {
                  return "delete" === t.type ? t.keys : t.keys || t.values.map(e.extractKey);
                }(r, e);
                if (!s) throw new Error("Keys missing");
                return "delete" !== (e = "add" === e.type || "put" === e.type ? {
                  ...e,
                  keys: s
                } : {
                  ...e
                }).type && (e.values = [ ...e.values ]), e.keys && (e.keys = [ ...e.keys ]), function(e, t, n) {
                  return "add" === t.type ? Promise.resolve([]) : e.getMany({
                    trans: t.trans,
                    keys: n,
                    cache: "immutable"
                  });
                }(n, e, s).then((l => {
                  const c = s.map(((n, s) => {
                    const c = l[s], h = {
                      onerror: null,
                      onsuccess: null
                    };
                    if ("delete" === e.type) i.fire.call(h, n, c, t); else if ("add" === e.type || void 0 === c) {
                      const i = a.fire.call(h, n, e.values[s], t);
                      null == n && null != i && (n = i, e.keys[s] = n, r.outbound || dexie_min_(e.values[s], r.keyPath, n));
                    } else {
                      const r = Mn(c, e.values[s]), i = u.fire.call(h, r, n, c, t);
                      if (i) {
                        const t = e.values[s];
                        Object.keys(i).forEach((e => {
                          dexie_min_o(t, e) ? t[e] = i[e] : dexie_min_(t, e, i[e]);
                        }));
                      }
                    }
                    return h;
                  }));
                  return n.mutate(e).then((({failures: t, results: n, numFailures: r, lastResult: i}) => {
                    for (let r = 0; r < s.length; ++r) {
                      const i = n ? n[r] : s[r], o = c[r];
                      null == i ? o.onerror && o.onerror(t[r]) : o.onsuccess && o.onsuccess("put" === e.type && l[r] ? e.values[r] : i);
                    }
                    return {
                      failures: t,
                      results: n,
                      numFailures: r,
                      lastResult: i
                    };
                  })).catch((e => (c.forEach((t => t.onerror && t.onerror(e))), Promise.reject(e))));
                }));
              }
              function c(e, t, s) {
                return n.query({
                  trans: e,
                  values: !1,
                  query: {
                    index: r,
                    range: t
                  },
                  limit: s
                }).then((({result: n}) => l({
                  type: "delete",
                  keys: n,
                  trans: e
                }).then((r => r.numFailures > 0 ? Promise.reject(r.failures[0]) : n.length < s ? {
                  failures: [],
                  numFailures: 0,
                  lastResult: void 0
                } : c(e, {
                  ...t,
                  lower: n[n.length - 1],
                  lowerOpen: !0
                }, s)))));
              }
            }
          };
          return s;
        }
      })
    };
    function qn(e, t, n) {
      try {
        if (!t) return null;
        if (t.keys.length < e.length) return null;
        const r = [];
        for (let s = 0, i = 0; s < t.keys.length && i < e.length; ++s) 0 === $t(t.keys[s], e[i]) && (r.push(n ? dexie_min_O(t.values[s]) : t.values[s]), 
        ++i);
        return r.length === e.length ? r : null;
      } catch (e) {
        return null;
      }
    }
    const $n = {
      stack: "dbcore",
      level: -1,
      create: e => ({
        table: t => {
          const n = e.table(t);
          return {
            ...n,
            getMany: e => {
              if (!e.cache) return n.getMany(e);
              const t = qn(e.keys, e.trans._cache, "clone" === e.cache);
              return t ? je.resolve(t) : n.getMany(e).then((t => (e.trans._cache = {
                keys: e.keys,
                values: "clone" === e.cache ? dexie_min_O(t) : t
              }, t)));
            },
            mutate: e => ("add" !== e.type && (e.trans._cache = null), n.mutate(e))
          };
        }
      })
    };
    function Un(e) {
      return !("from" in e);
    }
    const Ln = function(e, t) {
      if (!this) {
        const t = new Ln;
        return e && "d" in e && dexie_min_r(t, e), t;
      }
      dexie_min_r(this, arguments.length ? {
        d: 1,
        from: e,
        to: arguments.length > 1 ? t : e
      } : {
        d: 0
      });
    };
    function Vn(e, t, n) {
      const s = $t(t, n);
      if (isNaN(s)) return;
      if (s > 0) throw RangeError();
      if (Un(e)) return dexie_min_r(e, {
        from: t,
        to: n,
        d: 1
      });
      const i = e.l, o = e.r;
      if ($t(n, e.from) < 0) return i ? Vn(i, t, n) : e.l = {
        from: t,
        to: n,
        d: 1,
        l: null,
        r: null
      }, Gn(e);
      if ($t(t, e.to) > 0) return o ? Vn(o, t, n) : e.r = {
        from: t,
        to: n,
        d: 1,
        l: null,
        r: null
      }, Gn(e);
      $t(t, e.from) < 0 && (e.from = t, e.l = null, e.d = o ? o.d + 1 : 1), $t(n, e.to) > 0 && (e.to = n, 
      e.r = null, e.d = e.l ? e.l.d + 1 : 1);
      const a = !e.r;
      i && !e.l && Wn(e, i), o && a && Wn(e, o);
    }
    function Wn(e, t) {
      Un(t) || function e(t, {from: n, to: r, l: s, r: i}) {
        Vn(t, n, r), s && e(t, s), i && e(t, i);
      }(e, t);
    }
    function Yn(e, t) {
      const n = zn(t);
      let r = n.next();
      if (r.done) return !1;
      let s = r.value;
      const i = zn(e);
      let o = i.next(s.from), a = o.value;
      for (;!r.done && !o.done; ) {
        if ($t(a.from, s.to) <= 0 && $t(a.to, s.from) >= 0) return !0;
        $t(s.from, a.from) < 0 ? s = (r = n.next(a.from)).value : a = (o = i.next(s.from)).value;
      }
      return !1;
    }
    function zn(e) {
      let t = Un(e) ? null : {
        s: 0,
        n: e
      };
      return {
        next(e) {
          const n = arguments.length > 0;
          for (;t; ) switch (t.s) {
           case 0:
            if (t.s = 1, n) for (;t.n.l && $t(e, t.n.from) < 0; ) t = {
              up: t,
              n: t.n.l,
              s: 1
            }; else for (;t.n.l; ) t = {
              up: t,
              n: t.n.l,
              s: 1
            };

           case 1:
            if (t.s = 2, !n || $t(e, t.n.to) <= 0) return {
              value: t.n,
              done: !1
            };

           case 2:
            if (t.n.r) {
              t.s = 3, t = {
                up: t,
                n: t.n.r,
                s: 0
              };
              continue;
            }

           case 3:
            t = t.up;
          }
          return {
            done: !0
          };
        }
      };
    }
    function Gn(e) {
      var t, n;
      const r = ((null === (t = e.r) || void 0 === t ? void 0 : t.d) || 0) - ((null === (n = e.l) || void 0 === n ? void 0 : n.d) || 0), s = r > 1 ? "r" : r < -1 ? "l" : "";
      if (s) {
        const t = "r" === s ? "l" : "r", n = {
          ...e
        }, r = e[s];
        e.from = r.from, e.to = r.to, e[s] = r[s], n[s] = r[t], e[t] = n, n.d = Hn(n);
      }
      e.d = Hn(e);
    }
    function Hn({r: e, l: t}) {
      return (e ? t ? Math.max(e.d, t.d) : e.d : t ? t.d : 0) + 1;
    }
    dexie_min_a(Ln.prototype, {
      add(e) {
        return Wn(this, e), this;
      },
      addKey(e) {
        return Vn(this, e, e), this;
      },
      addKeys(e) {
        return e.forEach((e => Vn(this, e, e))), this;
      },
      [dexie_min_j]() {
        return zn(this);
      }
    });
    const Qn = {
      stack: "dbcore",
      level: 0,
      create: e => {
        const r = e.schema.name, s = new Ln(e.MIN_KEY, e.MAX_KEY);
        return {
          ...e,
          table: i => {
            const o = e.table(i), {schema: a} = o, {primaryKey: u} = a, {extractKey: l, outbound: c} = u, h = {
              ...o,
              mutate: e => {
                const t = e.trans, u = t.mutatedParts || (t.mutatedParts = {}), l = e => {
                  const t = `idb://${r}/${i}/${e}`;
                  return u[t] || (u[t] = new Ln);
                }, c = l(""), h = l(":dels"), {type: d} = e;
                let [f, p] = "deleteRange" === e.type ? [ e.range ] : "delete" === e.type ? [ e.keys ] : e.values.length < 50 ? [ [], e.values ] : [];
                const y = e.trans._cache;
                return o.mutate(e).then((e => {
                  if (dexie_min_n(f)) {
                    "delete" !== d && (f = e.results), c.addKeys(f);
                    const t = qn(f, y);
                    t || "add" === d || h.addKeys(f), (t || p) && function(e, t, r, s) {
                      function i(t) {
                        const i = e(t.name || "");
                        function o(e) {
                          return null != e ? t.extractKey(e) : null;
                        }
                        const a = e => t.multiEntry && dexie_min_n(e) ? e.forEach((e => i.addKey(e))) : i.addKey(e);
                        (r || s).forEach(((e, t) => {
                          const n = r && o(r[t]), i = s && o(s[t]);
                          0 !== $t(n, i) && (null != n && a(n), null != i && a(i));
                        }));
                      }
                      t.indexes.forEach(i);
                    }(l, a, t, p);
                  } else if (f) {
                    const e = {
                      from: f.lower,
                      to: f.upper
                    };
                    h.add(e), c.add(e);
                  } else c.add(s), h.add(s), a.indexes.forEach((e => l(e.name).add(s)));
                  return e;
                }));
              }
            }, d = ({query: {index: t, range: n}}) => {
              var r, s;
              return [ t, new Ln(null !== (r = n.lower) && void 0 !== r ? r : e.MIN_KEY, null !== (s = n.upper) && void 0 !== s ? s : e.MAX_KEY) ];
            }, f = {
              get: e => [ u, new Ln(e.key) ],
              getMany: e => [ u, (new Ln).addKeys(e.keys) ],
              count: d,
              query: d,
              openCursor: d
            };
            return dexie_min_t(f).forEach((e => {
              h[e] = function(t) {
                const {subscr: n} = Oe;
                if (n) {
                  const a = e => {
                    const t = `idb://${r}/${i}/${e}`;
                    return n[t] || (n[t] = new Ln);
                  }, u = a(""), h = a(":dels"), [d, p] = f[e](t);
                  if (a(d.name || "").add(p), !d.isPrimaryKey) {
                    if ("count" !== e) {
                      const n = "query" === e && c && t.values && o.query({
                        ...t,
                        values: !1
                      });
                      return o[e].apply(this, arguments).then((r => {
                        if ("query" === e) {
                          if (c && t.values) return n.then((({result: e}) => (u.addKeys(e), r)));
                          const e = t.values ? r.result.map(l) : r.result;
                          t.values ? u.addKeys(e) : h.addKeys(e);
                        } else if ("openCursor" === e) {
                          const e = r, n = t.values;
                          return e && Object.create(e, {
                            key: {
                              get: () => (h.addKey(e.primaryKey), e.key)
                            },
                            primaryKey: {
                              get() {
                                const t = e.primaryKey;
                                return h.addKey(t), t;
                              }
                            },
                            value: {
                              get: () => (n && u.addKey(e.primaryKey), e.value)
                            }
                          });
                        }
                        return r;
                      }));
                    }
                    h.add(s);
                  }
                }
                return o[e].apply(this, arguments);
              };
            })), h;
          }
        };
      }
    };
    class Xn {
      constructor(e, t) {
        this._middlewares = {}, this.verno = 0;
        const n = Xn.dependencies;
        this._options = t = {
          addons: Xn.addons,
          autoOpen: !0,
          indexedDB: n.indexedDB,
          IDBKeyRange: n.IDBKeyRange,
          ...t
        }, this._deps = {
          indexedDB: t.indexedDB,
          IDBKeyRange: t.IDBKeyRange
        };
        const {addons: r} = t;
        this._dbSchema = {}, this._versions = [], this._storeNames = [], this._allTables = {}, 
        this.idbdb = null, this._novip = this;
        const s = {
          dbOpenError: null,
          isBeingOpened: !1,
          onReadyBeingFired: null,
          openComplete: !1,
          dbReadyResolve: ee,
          dbReadyPromise: null,
          cancelOpen: ee,
          openCanceller: null,
          autoSchema: !0,
          PR1398_maxLoop: 3
        };
        var i;
        s.dbReadyPromise = new je((e => {
          s.dbReadyResolve = e;
        })), s.openCanceller = new je(((e, t) => {
          s.cancelOpen = t;
        })), this._state = s, this.name = e, this.on = Dt(this, "populate", "blocked", "versionchange", "close", {
          ready: [ ue, ee ]
        }), this.on.ready.subscribe = dexie_min_y(this.on.ready.subscribe, (e => (t, n) => {
          Xn.vip((() => {
            const r = this._state;
            if (r.openComplete) r.dbOpenError || je.resolve().then(t), n && e(t); else if (r.onReadyBeingFired) r.onReadyBeingFired.push(t), 
            n && e(t); else {
              e(t);
              const r = this;
              n || e((function e() {
                r.on.ready.unsubscribe(t), r.on.ready.unsubscribe(e);
              }));
            }
          }));
        })), this.Collection = (i = this, It(Vt.prototype, (function(e, t) {
          this.db = i;
          let n = At, r = null;
          if (t) try {
            n = t();
          } catch (e) {
            r = e;
          }
          const s = e._ctx, o = s.table, a = o.hook.reading.fire;
          this._ctx = {
            table: o,
            index: s.index,
            isPrimKey: !s.index || o.schema.primKey.keyPath && s.index === o.schema.primKey.name,
            range: n,
            keysOnly: !1,
            dir: "next",
            unique: "",
            algorithm: null,
            filter: null,
            replayFilter: null,
            justLimit: !0,
            isMatch: null,
            offset: 0,
            limit: 1 / 0,
            error: r,
            or: s.or,
            valueMapper: a !== te ? a : null
          };
        }))), this.Table = function(e) {
          return It(jt.prototype, (function(t, n, r) {
            this.db = e, this._tx = r, this.name = t, this.schema = n, this.hook = e._allTables[t] ? e._allTables[t].hook : Dt(null, {
              creating: [ se, ee ],
              reading: [ ne, te ],
              updating: [ oe, ee ],
              deleting: [ ie, ee ]
            });
          }));
        }(this), this.Transaction = function(e) {
          return It(dexie_min_an.prototype, (function(t, n, r, s, i) {
            this.db = e, this.mode = t, this.storeNames = n, this.schema = r, this.chromeTransactionDurability = s, 
            this.idbtrans = null, this.on = Dt(this, "complete", "error", "abort"), this.parent = i || null, 
            this.active = !0, this._reculock = 0, this._blockedFuncs = [], this._resolve = null, 
            this._reject = null, this._waitingFor = null, this._waitingQueue = null, this._spinCount = 0, 
            this._completion = new je(((e, t) => {
              this._resolve = e, this._reject = t;
            })), this._completion.then((() => {
              this.active = !1, this.on.complete.fire();
            }), (e => {
              var t = this.active;
              return this.active = !1, this.on.error.fire(e), this.parent ? this.parent._reject(e) : t && this.idbtrans && this.idbtrans.abort(), 
              ft(e);
            }));
          }));
        }(this), this.Version = function(e) {
          return It(On.prototype, (function(t) {
            this.db = e, this._cfg = {
              version: t,
              storesSource: null,
              dbschema: {},
              tables: {},
              contentUpgrade: null
            };
          }));
        }(this), this.WhereClause = function(e) {
          return It(dexie_min_en.prototype, (function(t, n, r) {
            this.db = e, this._ctx = {
              table: t,
              index: ":id" === n ? null : n,
              or: r
            };
            const s = e._deps.indexedDB;
            if (!s) throw new dexie_min_X.MissingAPI;
            this._cmp = this._ascending = s.cmp.bind(s), this._descending = (e, t) => s.cmp(t, e), 
            this._max = (e, t) => s.cmp(e, t) > 0 ? e : t, this._min = (e, t) => s.cmp(e, t) < 0 ? e : t, 
            this._IDBKeyRange = e._deps.IDBKeyRange;
          }));
        }(this), this.on("versionchange", (e => {
          e.newVersion > 0 ? console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`) : console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`), 
          this.close();
        })), this.on("blocked", (e => {
          !e.newVersion || e.newVersion < e.oldVersion ? console.warn(`Dexie.delete('${this.name}') was blocked`) : console.warn(`Upgrade '${this.name}' blocked by other connection holding version ${e.oldVersion / 10}`);
        })), this._maxKey = hn(t.IDBKeyRange), this._createTransaction = (e, t, n, r) => new this.Transaction(e, t, n, this._options.chromeTransactionDurability, r), 
        this._fireOnBlocked = e => {
          this.on("blocked").fire(e), _t.filter((e => e.name === this.name && e !== this && !e._state.vcFired)).map((t => t.on("versionchange").fire(e)));
        }, this.use(Fn), this.use(Nn), this.use(Qn), this.use($n), this.vip = Object.create(this, {
          _vip: {
            value: !0
          }
        }), r.forEach((e => e(this)));
      }
      version(e) {
        if (isNaN(e) || e < .1) throw new dexie_min_X.Type("Given version is not a positive number");
        if (e = Math.round(10 * e) / 10, this.idbdb || this._state.isBeingOpened) throw new dexie_min_X.Schema("Cannot add version when database is open");
        this.verno = Math.max(this.verno, e);
        const t = this._versions;
        var n = t.filter((t => t._cfg.version === e))[0];
        return n || (n = new this.Version(e), t.push(n), t.sort(_n), n.stores({}), this._state.autoSchema = !1, 
        n);
      }
      _whenReady(e) {
        return this.idbdb && (this._state.openComplete || Oe.letThrough || this._vip) ? e() : new je(((e, t) => {
          if (this._state.openComplete) return t(new dexie_min_X.DatabaseClosed(this._state.dbOpenError));
          if (!this._state.isBeingOpened) {
            if (!this._options.autoOpen) return void t(new dexie_min_X.DatabaseClosed);
            this.open().catch(ee);
          }
          this._state.dbReadyPromise.then(e, t);
        })).then(e);
      }
      use({stack: e, create: t, level: n, name: r}) {
        r && this.unuse({
          stack: e,
          name: r
        });
        const s = this._middlewares[e] || (this._middlewares[e] = []);
        return s.push({
          stack: e,
          create: t,
          level: null == n ? 10 : n,
          name: r
        }), s.sort(((e, t) => e.level - t.level)), this;
      }
      unuse({stack: e, name: t, create: n}) {
        return e && this._middlewares[e] && (this._middlewares[e] = this._middlewares[e].filter((e => n ? e.create !== n : !!t && e.name !== t))), 
        this;
      }
      open() {
        return Dn(this);
      }
      _close() {
        const e = this._state, t = _t.indexOf(this);
        if (t >= 0 && _t.splice(t, 1), this.idbdb) {
          try {
            this.idbdb.close();
          } catch (e) {}
          this._novip.idbdb = null;
        }
        e.dbReadyPromise = new je((t => {
          e.dbReadyResolve = t;
        })), e.openCanceller = new je(((t, n) => {
          e.cancelOpen = n;
        }));
      }
      close() {
        this._close();
        const e = this._state;
        this._options.autoOpen = !1, e.dbOpenError = new dexie_min_X.DatabaseClosed, e.isBeingOpened && e.cancelOpen(e.dbOpenError);
      }
      delete() {
        const e = arguments.length > 0, t = this._state;
        return new je(((n, r) => {
          const s = () => {
            this.close();
            var e = this._deps.indexedDB.deleteDatabase(this.name);
            e.onsuccess = Ye((() => {
              !function({indexedDB: e, IDBKeyRange: t}, n) {
                !An(e) && n !== Pt && Sn(e, t).delete(n).catch(ee);
              }(this._deps, this.name), n();
            })), e.onerror = dexie_min_tn(r), e.onblocked = this._fireOnBlocked;
          };
          if (e) throw new dexie_min_X.InvalidArgument("Arguments not allowed in db.delete()");
          t.isBeingOpened ? t.dbReadyPromise.then(s) : s();
        }));
      }
      backendDB() {
        return this.idbdb;
      }
      isOpen() {
        return null !== this.idbdb;
      }
      hasBeenClosed() {
        const e = this._state.dbOpenError;
        return e && "DatabaseClosed" === e.name;
      }
      hasFailed() {
        return null !== this._state.dbOpenError;
      }
      dynamicallyOpened() {
        return this._state.autoSchema;
      }
      get tables() {
        return dexie_min_t(this._allTables).map((e => this._allTables[e]));
      }
      transaction() {
        const e = Bn.apply(this, arguments);
        return this._transaction.apply(this, e);
      }
      _transaction(e, t, n) {
        let r = Oe.trans;
        r && r.db === this && -1 === e.indexOf("!") || (r = null);
        const s = -1 !== e.indexOf("?");
        let i, o;
        e = e.replace("!", "").replace("?", "");
        try {
          if (o = t.map((e => {
            var t = e instanceof this.Table ? e.name : e;
            if ("string" != typeof t) throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");
            return t;
          })), "r" == e || e === Kt) i = Kt; else {
            if ("rw" != e && e != Ot) throw new dexie_min_X.InvalidArgument("Invalid transaction mode: " + e);
            i = Ot;
          }
          if (r) {
            if (r.mode === Kt && i === Ot) {
              if (!s) throw new dexie_min_X.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");
              r = null;
            }
            r && o.forEach((e => {
              if (r && -1 === r.storeNames.indexOf(e)) {
                if (!s) throw new dexie_min_X.SubTransaction("Table " + e + " not included in parent transaction.");
                r = null;
              }
            })), s && r && !r.active && (r = null);
          }
        } catch (e) {
          return r ? r._promise(null, ((t, n) => {
            n(e);
          })) : ft(e);
        }
        const a = Tn.bind(null, this, i, o, r, n);
        return r ? r._promise(i, a, "lock") : Oe.trans ? at(Oe.transless, (() => this._whenReady(a))) : this._whenReady(a);
      }
      table(e) {
        if (!dexie_min_o(this._allTables, e)) throw new dexie_min_X.InvalidTable(`Table ${e} does not exist`);
        return this._allTables[e];
      }
    }
    const Jn = "undefined" != typeof Symbol && "observable" in Symbol ? Symbol.observable : "@@observable";
    class Zn {
      constructor(e) {
        this._subscribe = e;
      }
      subscribe(e, t, n) {
        return this._subscribe(e && "function" != typeof e ? e : {
          next: e,
          error: t,
          complete: n
        });
      }
      [Jn]() {
        return this;
      }
    }
    function er(e, n) {
      return dexie_min_t(n).forEach((t => {
        Wn(e[t] || (e[t] = new Ln), n[t]);
      })), e;
    }
    function tr(e) {
      let n, r = !1;
      const s = new Zn((s => {
        const i = dexie_min_T(e);
        let o = !1, a = {}, u = {};
        const l = {
          get closed() {
            return o;
          },
          unsubscribe: () => {
            o = !0, dexie_min_on.storagemutated.unsubscribe(f);
          }
        };
        s.start && s.start(l);
        let c = !1, h = !1;
        function d() {
          return dexie_min_t(u).some((e => a[e] && Yn(a[e], u[e])));
        }
        const f = e => {
          er(a, e), d() && p();
        }, p = () => {
          if (c || o) return;
          a = {};
          const t = {}, y = function(t) {
            i && et();
            const n = () => Ze(e, {
              subscr: t,
              trans: null
            }), r = Oe.trans ? at(Oe.transless, n) : n();
            return i && r.then(tt, tt), r;
          }(t);
          h || (dexie_min_on(dexie_min_rn, f), h = !0), c = !0, Promise.resolve(y).then((e => {
            r = !0, n = e, c = !1, o || (d() ? p() : (a = {}, u = t, s.next && s.next(e)));
          }), (e => {
            c = !1, r = !1, s.error && s.error(e), l.unsubscribe();
          }));
        };
        return p(), l;
      }));
      return s.hasValue = () => r, s.getValue = () => n, s;
    }
    let nr;
    try {
      nr = {
        indexedDB: dexie_min_e.indexedDB || dexie_min_e.mozIndexedDB || dexie_min_e.webkitIndexedDB || dexie_min_e.msIndexedDB,
        IDBKeyRange: dexie_min_e.IDBKeyRange || dexie_min_e.webkitIDBKeyRange
      };
    } catch (e) {
      nr = {
        indexedDB: null,
        IDBKeyRange: null
      };
    }
    const rr = Xn;
    function sr(e) {
      let t = ir;
      try {
        ir = !0, dexie_min_on.storagemutated.fire(e);
      } finally {
        ir = t;
      }
    }
    dexie_min_a(rr, {
      ...dexie_min_Z,
      delete: e => new rr(e, {
        addons: []
      }).delete(),
      exists: e => new rr(e, {
        addons: []
      }).open().then((e => (e.close(), !0))).catch("NoSuchDatabaseError", (() => !1)),
      getDatabaseNames(e) {
        try {
          return function({indexedDB: e, IDBKeyRange: t}) {
            return An(e) ? Promise.resolve(e.databases()).then((e => e.map((e => e.name)).filter((e => e !== Pt)))) : Sn(e, t).toCollection().primaryKeys();
          }(rr.dependencies).then(e);
        } catch (e) {
          return ft(new dexie_min_X.MissingAPI);
        }
      },
      defineClass: () => function(e) {
        dexie_min_r(this, e);
      },
      ignoreTransaction: e => Oe.trans ? at(Oe.transless, e) : e(),
      vip: Cn,
      async: function(e) {
        return function() {
          try {
            var t = In(e.apply(this, arguments));
            return t && "function" == typeof t.then ? t : je.resolve(t);
          } catch (e) {
            return ft(e);
          }
        };
      },
      spawn: function(e, t, n) {
        try {
          var r = In(e.apply(n, t || []));
          return r && "function" == typeof r.then ? r : je.resolve(r);
        } catch (e) {
          return ft(e);
        }
      },
      currentTransaction: {
        get: () => Oe.trans || null
      },
      waitFor: function(e, t) {
        const n = je.resolve("function" == typeof e ? rr.ignoreTransaction(e) : e).timeout(t || 6e4);
        return Oe.trans ? Oe.trans.waitFor(n) : n;
      },
      Promise: je,
      debug: {
        get: () => dexie_min_R,
        set: e => {
          dexie_min_F(e, "dexie" === e ? () => !0 : Et);
        }
      },
      derive: dexie_min_c,
      extend: dexie_min_r,
      props: dexie_min_a,
      override: dexie_min_y,
      Events: Dt,
      on: dexie_min_on,
      liveQuery: tr,
      extendObservabilitySet: er,
      getByKeyPath: dexie_min_b,
      setByKeyPath: dexie_min_,
      delByKeyPath: function(e, t) {
        "string" == typeof t ? dexie_min_(e, t, void 0) : "length" in t && [].map.call(t, (function(t) {
          dexie_min_(e, t, void 0);
        }));
      },
      shallowClone: dexie_min_w,
      deepClone: dexie_min_O,
      getObjectDiff: Mn,
      cmp: $t,
      asap: dexie_min_v,
      minKey: vt,
      addons: [],
      connections: _t,
      errnames: dexie_min_H,
      dependencies: nr,
      semVer: yt,
      version: yt.split(".").map((e => parseInt(e))).reduce(((e, t, n) => e + t / Math.pow(10, 2 * n)))
    }), rr.maxKey = hn(rr.dependencies.IDBKeyRange), "undefined" != typeof dispatchEvent && "undefined" != typeof addEventListener && (dexie_min_on(dexie_min_rn, (e => {
      if (!ir) {
        let t;
        wt ? (t = document.createEvent("CustomEvent"), t.initCustomEvent(dexie_min_sn, !0, !0, e)) : t = new CustomEvent(dexie_min_sn, {
          detail: e
        }), ir = !0, dispatchEvent(t), ir = !1;
      }
    })), addEventListener(dexie_min_sn, (({detail: e}) => {
      ir || sr(e);
    })));
    let ir = !1;
    if ("undefined" != typeof BroadcastChannel) {
      const e = new BroadcastChannel(dexie_min_sn);
      "function" == typeof e.unref && e.unref(), dexie_min_on(dexie_min_rn, (t => {
        ir || e.postMessage(t);
      })), e.onmessage = e => {
        e.data && sr(e.data);
      };
    } else if ("undefined" != typeof self && "undefined" != typeof navigator) {
      dexie_min_on(dexie_min_rn, (e => {
        try {
          ir || ("undefined" != typeof localStorage && localStorage.setItem(dexie_min_sn, JSON.stringify({
            trig: Math.random(),
            changedParts: e
          })), "object" == typeof self.clients && [ ...self.clients.matchAll({
            includeUncontrolled: !0
          }) ].forEach((t => t.postMessage({
            type: dexie_min_sn,
            changedParts: e
          }))));
        } catch (e) {}
      })), "undefined" != typeof addEventListener && addEventListener("storage", (e => {
        if (e.key === dexie_min_sn) {
          const t = JSON.parse(e.newValue);
          t && sr(t.changedParts);
        }
      }));
      const e = self.document && navigator.serviceWorker;
      e && e.addEventListener("message", (function({data: e}) {
        e && e.type === dexie_min_sn && sr(e.changedParts);
      }));
    }
    je.rejectionMapper = function(e, t) {
      if (!e || e instanceof dexie_min_W || e instanceof TypeError || e instanceof SyntaxError || !e.name || !dexie_min_J[e.name]) return e;
      var n = new dexie_min_J[e.name](t || e.message, e);
      return "stack" in e && dexie_min_l(n, "stack", {
        get: function() {
          return this.inner.stack;
        }
      }), n;
    }, dexie_min_F(dexie_min_R, Et);
    class ChainDatabase extends Xn {
      static defaultSettings={
        CHAIN_ID_TO_RPC_URLS,
        BASE_ASSETS,
        DEFAULT_NETWORKS
      };
      constructor(options) {
        super("qwal/chain", options);
        this.version(1).stores({
          accountsToTrack: "&[address+network.name+network.chainID],address,network.family,network.chainID,network.name",
          accountAssetTransferLookups: "++id,[addressNetwork.address+addressNetwork.network.name+addressNetwork.network.chainID],[addressNetwork.address+addressNetwork.network.name+addressNetwork.network.chainID+startBlock],[addressNetwork.address+addressNetwork.network.name+addressNetwork.network.chainID+endBlock],addressNetwork.address,addressNetwork.network.chainID,addressNetwork.network.name,startBlock,endBlock",
          balances: "++id,address,assetAmount.amount,assetAmount.asset.symbol,network.name,blockHeight,retrievedAt",
          chainTransactions: "&[hash+network.name],hash,from,[from+network.name],to,[to+network.name],nonce,[nonce+from+network.name],blockHash,blockNumber,network.name,firstSeen,dataSource",
          blocks: "&[hash+network.name],[network.name+timestamp],hash,network.name,timestamp,parentHash,blockHeight,[blockHeight+network.name]",
          networks: "&chainID,name,family",
          baseAssets: "&chainID,symbol,name",
          rpcConfig: "&chainID, rpcUrls",
          customRpcConfig: "&chainID, rpcUrls, supportedMethods"
        });
        this.chainTransactions.hook("updating", ((modifications, _, chainTransaction) => {
          const allowedVariants = [ "blockHeight", "blockHash", "firstSeen" ];
          const filteredModifications = Object.fromEntries(Object.entries(modifications).filter((([k]) => allowedVariants.includes(k))));
          if ("firstSeen" in filteredModifications) {
            return {
              ...filteredModifications,
              firstSeen: Math.min(chainTransaction.firstSeen, filteredModifications.firstSeen)
            };
          }
          return filteredModifications;
        }));
      }
      async initialize() {
        await this.initializeBaseAssets();
        await this.initializeRPCs();
        await this.initializeEVMNetworks();
      }
      async getLatestBlock(network) {
        return (await this.blocks.where("[network.name+timestamp]").aboveOrEqual([ network.name, Date.now() - 60 * 60 * 24 ]).and((block => block.network.name === network.name)).reverse().sortBy("timestamp"))[0] || null;
      }
      async getTransaction(network, txHash) {
        return (await this.chainTransactions.where("[hash+network.name]").equals([ txHash, network.name ]).toArray())[0] || null;
      }
      async addQEVMNetwork({chainName, chainID, decimals, symbol, assetName, rpcUrls, blockExplorerURL}) {
        const network = {
          name: chainName,
          chainID,
          family: "QEVM",
          blockExplorerURL,
          baseAsset: {
            decimals,
            symbol,
            name: assetName,
            chainID
          }
        };
        await this.networks.put(network);
        await this.addBaseAsset(assetName, symbol, chainID, decimals);
        await this.addRpcUrls(chainID, rpcUrls);
        return network;
      }
      async removeQEVMNetwork(chainID) {
        await this.transaction("rw", this.networks, this.baseAssets, this.rpcConfig, this.accountsToTrack, this.customRpcConfig, (async () => {
          await Promise.all([ this.networks.where({
            chainID
          }).delete(), this.baseAssets.where({
            chainID
          }).delete(), this.rpcConfig.where({
            chainID
          }).delete(), this.customRpcConfig.where({
            chainID
          }).delete() ]);
          const accountsToTrack = this.accountsToTrack.toCollection().filter((account => account.network.chainID === chainID));
          return accountsToTrack.delete();
        }));
      }
      async getAllQEVMNetworks() {
        return this.networks.where("family").equals("QEVM").toArray();
      }
      async getQEVMNetworkByChainID(chainID) {
        return (await this.networks.where("family").equals("QEVM").toArray()).find((network => network.chainID === chainID));
      }
      async addBaseAsset(name, symbol, chainID, decimals) {
        await this.baseAssets.put({
          decimals,
          name,
          symbol,
          chainID
        });
      }
      async getBaseAssetForNetwork(chainID) {
        const baseAsset = await this.baseAssets.get(chainID);
        if (!baseAsset) {
          throw new Error(`No Base Asset Found For Network ${chainID}`);
        }
        return baseAsset;
      }
      async getAllBaseAssets() {
        return this.baseAssets.toArray();
      }
      async initializeRPCs() {
        await Promise.all(Object.entries(ChainDatabase.defaultSettings.CHAIN_ID_TO_RPC_URLS).map((async ([chainId, rpcUrls]) => {
          if (rpcUrls) {
            await this.addRpcUrls(chainId, rpcUrls);
          }
        })));
      }
      async initializeBaseAssets() {
        await this.updateBaseAssets(ChainDatabase.defaultSettings.BASE_ASSETS);
      }
      async initializeEVMNetworks() {
        const existingNetworks = await this.getAllQEVMNetworks();
        await Promise.all(ChainDatabase.defaultSettings.DEFAULT_NETWORKS.map((async defaultNetwork => {
          if (!existingNetworks.some((network => sameNetwork(network, defaultNetwork)))) {
            await this.networks.put(defaultNetwork);
          }
        })));
      }
      async getRpcUrlsByChainId(chainId) {
        const rpcUrls = await this.rpcConfig.where({
          chainId
        }).first();
        if (rpcUrls) {
          return rpcUrls.rpcUrls;
        }
        throw new Error(`No RPC Found for ${chainId}`);
      }
      async addRpcUrls(chainID, rpcUrls) {
        const existingRpcUrlsForChain = await this.rpcConfig.get(chainID);
        if (existingRpcUrlsForChain) {
          existingRpcUrlsForChain.rpcUrls.push(...rpcUrls);
          existingRpcUrlsForChain.rpcUrls = [ ...new Set(existingRpcUrlsForChain.rpcUrls) ];
          await this.rpcConfig.put(existingRpcUrlsForChain);
        } else {
          await this.rpcConfig.put({
            chainID,
            rpcUrls
          });
        }
      }
      async addCustomRpcUrl(chainID, rpcUrl, supportedMethods = []) {
        return this.customRpcConfig.put({
          chainID,
          rpcUrls: [ rpcUrl ],
          supportedMethods
        });
      }
      async removeCustomRpcUrl(chainID) {
        return this.customRpcConfig.where({
          chainID
        }).delete();
      }
      async getAllRpcUrls() {
        return this.rpcConfig.toArray();
      }
      async getAllCustomRpcUrls() {
        return this.customRpcConfig.toArray();
      }
      async getAllSavedTransactionHashes() {
        return this.chainTransactions.orderBy("hash").keys();
      }
      async getAllTransactions() {
        return this.chainTransactions.toArray();
      }
      async getTransactionsForNetworkQuery(network) {
        return this.chainTransactions.where("network.name").equals(network.name);
      }
      async getTransactionsForNetwork(network) {
        return (await this.getTransactionsForNetworkQuery(network)).toArray();
      }
      async getNetworkPendingTransactions(network) {
        const transactions = await this.getTransactionsForNetworkQuery(network);
        return transactions.filter((transaction => !("status" in transaction) && (transaction.blockHash === null || transaction.blockHeight === null))).toArray();
      }
      async getBlock(network, blockHash) {
        return (await this.blocks.where("[hash+network.name]").equals([ blockHash, network.name ]).toArray())[0] || null;
      }
      async addOrUpdateTransaction(tx, dataSource) {
        await this.transaction("rw", this.chainTransactions, (() => this.chainTransactions.put({
          ...tx,
          firstSeen: Date.now(),
          dataSource
        })));
      }
      async getLatestAccountBalance(address, network, asset) {
        const balanceCandidates = await this.balances.where("retrievedAt").above(Date.now() - 7 * 24 * 60 * 60 * 1e3).filter((balance => balance.address === address && balance.assetAmount.asset.symbol === asset.symbol && balance.network.name === network.name)).reverse().sortBy("retrievedAt");
        return balanceCandidates.length > 0 ? balanceCandidates[0] : null;
      }
      async addAccountToTrack(addressNetwork) {
        await this.accountsToTrack.put(addressNetwork);
      }
      async removeAccountToTrack(address) {
        await this.accountsToTrack.where("address").equals(address).delete();
      }
      async getOldestAccountAssetTransferLookup(addressNetwork) {
        const lookups = await this.accountAssetTransferLookups.where("[addressNetwork.address+addressNetwork.network.name]").equals([ addressNetwork.address, addressNetwork.network.name ]).toArray();
        return lookups.reduce(((oldestBlock, lookup) => oldestBlock === null || lookup.startBlock < oldestBlock ? lookup.startBlock : oldestBlock), null);
      }
      async getNewestAccountAssetTransferLookup(addressNetwork) {
        const lookups = await this.accountAssetTransferLookups.where("[addressNetwork.address+addressNetwork.network.name]").equals([ addressNetwork.address, addressNetwork.network.name ]).toArray();
        return lookups.reduce(((newestBlock, lookup) => newestBlock === null || lookup.endBlock > newestBlock ? lookup.endBlock : newestBlock), null);
      }
      async recordAccountAssetTransferLookup(addressNetwork, startBlock, endBlock) {
        await this.accountAssetTransferLookups.add({
          addressNetwork,
          startBlock,
          endBlock,
          retrievedAt: Date.now()
        });
      }
      async addBlock(block) {
        await this.blocks.put(block);
      }
      async addBalance(accountBalance) {
        await this.balances.add(accountBalance);
      }
      async updateBaseAssets(baseAssets) {
        await this.baseAssets.bulkPut(baseAssets);
      }
      async getAccountsToTrack() {
        return this.accountsToTrack.toArray();
      }
      async getTrackedAddressesOnNetwork(network) {
        return this.accountsToTrack.where("network.name").equals(network.name).toArray();
      }
      async getTrackedAccountOnNetwork({address, network}) {
        return (await this.accountsToTrack.where("[address+network.name+network.chainID]").equals([ address, network.name, network.chainID ]).toArray())[0] ?? null;
      }
      async getChainIDsToTrack() {
        const chainIDs = await this.accountsToTrack.orderBy("network.chainID").keys();
        return new Set(chainIDs.filter((chainID => typeof chainID === "string")));
      }
    }
    function createDB(options) {
      return new ChainDatabase(options);
    }
    var BigNumber;
    var utils_isEIP1559TransactionRequest;
    function blockFromEthersBlock(network, gethResult) {
      return {
        hash: gethResult.hash,
        blockHeight: gethResult.number,
        parentHash: gethResult.parentHash,
        difficulty: 0n,
        timestamp: gethResult.timestamp,
        baseFeePerGas: gethResult.baseFeePerGas?.toBigInt(),
        network
      };
    }
    function blockFromProviderBlock(network, incomingGethResult) {
      const gethResult = incomingGethResult;
      return {
        hash: gethResult.hash,
        blockHeight: qethers_lib.BigNumber.from(gethResult.number).toNumber(),
        parentHash: gethResult.parentHash,
        difficulty: gethResult.difficulty ? BigInt(gethResult.difficulty) : 0n,
        timestamp: qethers_lib.BigNumber.from(gethResult.timestamp).toNumber(),
        baseFeePerGas: gethResult.baseFeePerGas ? BigInt(gethResult.baseFeePerGas) : undefined,
        network
      };
    }
    function ethersTransactionRequestFromEIP1559TransactionRequest(transaction) {
      return {
        to: transaction.to,
        data: transaction.input ?? undefined,
        from: transaction.from,
        type: transaction.type,
        nonce: transaction.nonce,
        value: transaction.value,
        chainId: parseInt(transaction.chainID, 10),
        gasLimit: transaction.gasLimit,
        maxFeePerGas: transaction.maxFeePerGas,
        maxPriorityFeePerGas: transaction.maxPriorityFeePerGas
      };
    }
    function ethersTransactionRequestFromLegacyTransactionRequest(transaction) {
      const {to, input, type, nonce, gasPrice, value, chainID, gasLimit, from} = transaction;
      return {
        from,
        to,
        data: input ?? undefined,
        type: type ?? undefined,
        nonce,
        gasPrice,
        value,
        chainId: parseInt(chainID, 10),
        gasLimit
      };
    }
    function ethersTransactionFromTransactionRequest(transactionRequest) {
      if (isEIP1559TransactionRequest(transactionRequest)) {
        return ethersTransactionRequestFromEIP1559TransactionRequest(transactionRequest);
      }
      return ethersTransactionRequestFromLegacyTransactionRequest(transactionRequest);
    }
    function eip1559TransactionRequestFromEthersTransactionRequest(transaction) {
      return {
        to: transaction.to,
        input: transaction.data?.toString() ?? null,
        from: transaction.from,
        type: transaction.type,
        nonce: typeof transaction.nonce !== "undefined" ? parseInt(transaction.nonce.toString(), 16) : undefined,
        value: typeof transaction.value !== "undefined" ? BigInt(transaction.value.toString()) : undefined,
        chainID: transaction.chainId?.toString(16),
        gasLimit: typeof transaction.gasLimit !== "undefined" ? BigInt(transaction.gasLimit.toString()) : undefined,
        maxFeePerGas: typeof transaction.maxFeePerGas !== "undefined" ? BigInt(transaction.maxFeePerGas.toString()) : undefined,
        maxPriorityFeePerGas: typeof transaction.maxPriorityFeePerGas !== "undefined" ? BigInt(transaction.maxPriorityFeePerGas.toString()) : undefined
      };
    }
    function legacyEVMTransactionRequestFromEthersTransactionRequest(transaction) {
      return {
        to: transaction.to,
        input: transaction.data?.toString() ?? null,
        from: transaction.from,
        type: transaction.type,
        nonce: typeof transaction.nonce !== "undefined" ? parseInt(transaction.nonce.toString(), 16) : undefined,
        value: transaction.value ? BigInt(transaction.value.toString()) : undefined,
        chainID: transaction.chainId?.toString(16),
        gasLimit: typeof transaction.gasLimit !== "undefined" ? BigInt(transaction.gasLimit.toString()) : undefined,
        gasPrice: typeof transaction.gasPrice !== "undefined" ? BigInt(transaction.gasPrice.toString()) : undefined
      };
    }
    function transactionRequestFromEthersTransactionRequest(ethersTransactionRequest) {
      if (isEIP1559TransactionRequest(ethersTransactionRequest)) {
        return eip1559TransactionRequestFromEthersTransactionRequest(ethersTransactionRequest);
      }
      return legacyEVMTransactionRequestFromEthersTransactionRequest(ethersTransactionRequest);
    }
    function unsignedTransactionFromEVMTransaction(tx) {
      const unsignedTransaction = {
        to: tx.to,
        nonce: tx.nonce,
        gasLimit: BigNumber.from(tx.gasLimit),
        data: tx.input || "",
        value: BigNumber.from(tx.value),
        chainId: parseInt(tx.network.chainID, 10),
        type: tx.type
      };
      if (utils_isEIP1559TransactionRequest(tx)) {
        unsignedTransaction.maxFeePerGas = BigNumber.from(tx.maxFeePerGas);
        unsignedTransaction.maxPriorityFeePerGas = BigNumber.from(tx.maxPriorityFeePerGas);
      } else if ("gasPrice" in tx) {
        unsignedTransaction.gasPrice = BigNumber.from(tx?.gasPrice ?? 0);
      }
      return unsignedTransaction;
    }
    function ethersTransactionFromSignedTransaction(tx) {
      const baseTx = {
        nonce: Number(tx.nonce),
        to: tx.to,
        data: tx.input || "",
        gasPrice: tx.gasPrice ? qethers_lib.BigNumber.from(tx.gasPrice) : undefined,
        type: tx.type,
        chainId: parseInt(tx.network.chainID, 10),
        value: qethers_lib.BigNumber.from(tx.value),
        gasLimit: qethers_lib.BigNumber.from(tx.gasLimit)
      };
      if (isEIP1559SignedTransaction(tx)) {
        return {
          ...baseTx,
          maxFeePerGas: qethers_lib.BigNumber.from(tx.maxFeePerGas),
          maxPriorityFeePerGas: qethers_lib.BigNumber.from(tx.maxPriorityFeePerGas),
          signature: tx.signature || undefined
        };
      }
      return baseTx;
    }
    function enrichTransactionWithReceipt(transaction, receipt) {
      const gasUsed = receipt.gasUsed.toBigInt();
      return {
        ...transaction,
        gasUsed,
        gasPrice: receipt.effectiveGasPrice?.toBigInt() ?? transaction.gasPrice,
        logs: receipt.logs.map((({address, data, topics}) => ({
          contractAddress: address,
          data,
          topics
        }))),
        status: receipt.status ?? (gasUsed === transaction.gasLimit ? 0 : 1),
        blockHash: receipt.blockHash,
        blockHeight: receipt.blockNumber
      };
    }
    function transactionFromEthersTransaction(tx, network) {
      if (!tx || tx.hash === undefined) {
        throw new Error("Malformed transaction");
      }
      if (!isKnownTxType(tx.type)) {
        throw new Error(`Unknown transaction type ${tx.type}`);
      }
      const newTx = {
        hash: tx.hash,
        from: tx.from,
        to: tx.to ?? undefined,
        nonce: parseInt(tx.nonce.toString(), 10),
        gasLimit: tx.gasLimit.toBigInt(),
        gasPrice: tx.gasPrice ? tx.gasPrice.toBigInt() : null,
        maxFeePerGas: tx.maxFeePerGas ? tx.maxFeePerGas.toBigInt() : null,
        maxPriorityFeePerGas: tx.maxPriorityFeePerGas ? tx.maxPriorityFeePerGas.toBigInt() : null,
        value: tx.value.toBigInt(),
        input: tx.data,
        type: tx.type,
        blockHash: tx.blockHash || null,
        blockHeight: tx.blockNumber || null,
        network,
        asset: network.baseAsset
      };
      if (tx.signature) {
        const signedTx = {
          ...newTx,
          signature: tx.signature
        };
        return signedTx;
      }
      return newTx;
    }
    var providers_lib = __webpack_require__(7649);
    const BASE_BACKOFF_MS = 400;
    const MAX_RETRIES_PER_PROVIDER = 3;
    const PRIMARY_PROVIDER_RECONNECT_INTERVAL = 10 * SECOND;
    const WAIT_BEFORE_SUBSCRIBING = 2 * SECOND;
    const WAIT_BEFORE_SEND_AGAIN = 100;
    const BALANCE_TTL = 1 * SECOND;
    const CACHE_CLEANUP_INTERVAL = 10 * SECOND;
    const PROVIDER_REQUEST_TIMEOUT = 5 * SECOND;
    function waitAnd(waitMs, fn) {
      return new Promise((resolve => {
        setTimeout((() => {
          resolve(fn());
        }), waitMs);
      }));
    }
    function backedOffMs() {
      return BASE_BACKOFF_MS + 400 * Math.random();
    }
    function isClosedOrClosingWebSocketProvider(provider) {
      if (provider instanceof providers_lib.WebSocketProvider) {
        const webSocket = provider._websocket;
        return webSocket.readyState === WebSocket.CLOSING || webSocket.readyState === WebSocket.CLOSED;
      }
      return false;
    }
    function isConnectingWebSocketProvider(provider) {
      if (provider instanceof providers_lib.WebSocketProvider) {
        const webSocket = provider._websocket;
        return webSocket.readyState === WebSocket.CONNECTING;
      }
      return false;
    }
    function customOrDefaultProvider(method, supportedMethods = []) {
      if (!supportedMethods.length) {
        return true;
      }
      return supportedMethods.some((m => method.startsWith(m)));
    }
    class SerialFallbackProvider extends providers_lib.JsonRpcProvider {
      customProviderSupportedMethods=[];
      cachedProvidersByIndex={};
      messagesToSend={};
      currentProviderIndex=0;
      forcedBatchMaxSize=0;
      forcedBatchMaxPromise=undefined;
      forcedBatchMaxPreviousSize=0;
      latestBalanceCache={};
      latestHasCodeCache={};
      subscriptions=[];
      eventSubscriptions=[];
      constructor(chainID, providerCreators) {
        const customProviderCreator = providerCreators.find((creator => creator.type === "custom"));
        const [firstProviderCreator, ...remainingProviderCreators] = providerCreators.flatMap((pc => pc.type === "custom" ? [] : pc.creator));
        const firstProvider = firstProviderCreator();
        super(firstProvider.connection, firstProvider.network);
        this.chainID = chainID;
        this.currentProvider = firstProvider;
        this.cachedProvidersByIndex[0] = firstProvider;
        if (customProviderCreator) {
          this.addCustomProvider(customProviderCreator);
        }
        setInterval((() => {
          this.attemptToReconnectToPrimaryProvider();
        }), PRIMARY_PROVIDER_RECONNECT_INTERVAL);
        setInterval((() => {
          this.cleanupStaleCacheEntries();
        }), CACHE_CLEANUP_INTERVAL);
        this.cachedChainId = qethers_lib.utils.hexlify(Number(chainID));
        this.providerCreators = [ firstProviderCreator, ...remainingProviderCreators ];
      }
      async routeRpcCall(messageId) {
        const {method, params} = this.messagesToSend[messageId];
        const cachedResult = this.checkForCachedResult(method, params);
        if (typeof cachedResult !== "undefined") {
          delete this.messagesToSend[messageId];
          return cachedResult;
        }
        if (this.forcedBatchMaxPromise) {
          await this.forcedBatchMaxPromise;
        }
        const pendingBatch = "_pendingBatch" in this.currentProvider ? this.currentProvider._pendingBatch : undefined;
        const pendingBatchSize = pendingBatch?.length;
        const existingProviderIndex = this.currentProviderIndex;
        if (pendingBatch && this.forcedBatchMaxSize && pendingBatch.length >= this.forcedBatchMaxSize) {
          this.forcedBatchMaxPromise = new Promise((resolve => {
            const checkInterval = setInterval((() => {
              const latestPendingBatch = "_pendingBatch" in this.currentProvider ? this.currentProvider._pendingBatch : undefined;
              if ((latestPendingBatch?.length ?? 0) < this.forcedBatchMaxSize) {
                resolve();
                clearInterval(checkInterval);
              }
            }), 5);
          }));
        }
        try {
          if (isClosedOrClosingWebSocketProvider(this.currentProvider)) {
            throw new Error("WebSocket is already in CLOSING");
          }
          if (isConnectingWebSocketProvider(this.currentProvider)) {
            return await waitAnd(WAIT_BEFORE_SEND_AGAIN, (async () => this.routeRpcCall(messageId)));
          }
          if (this.customProvider && customOrDefaultProvider(method, this.customProviderSupportedMethods)) {
            const result = await this.customProvider.send(method, params);
            delete this.messagesToSend[messageId];
            return result;
          }
          const result = await this.currentProvider.send(method, params);
          delete this.messagesToSend[messageId];
          return result;
        } catch (error) {
          const stringifiedError = String(error);
          if (stringifiedError.match(/Batch size too large/) && (pendingBatchSize === undefined || pendingBatchSize === 0)) {
            this.forcedBatchMaxPreviousSize = pendingBatch?.length ?? pendingBatchSize ?? 1;
            this.forcedBatchMaxSize = (pendingBatch?.length ?? pendingBatchSize ?? 2) / 2;
            lib_logger.debug("Setting a max batch size of", this.forcedBatchMaxSize, "on chain", this.chainID, "and retrying: ", method, params);
            return this.routeRpcCall(messageId);
          }
          if (stringifiedError.match(/Batch size too large/)) {
            lib_logger.debug("Using max batch size of", this.forcedBatchMaxSize, "on chain", this.chainID, "and retrying: ", method, params);
            return this.routeRpcCall(messageId);
          }
          if (stringifiedError.match(/WebSocket is already in CLOSING|bad response|missing response|we can't execute this request|failed response|TIMEOUT|NETWORK_ERROR|call rate limit exhausted/)) {
            if (this.currentProviderIndex !== existingProviderIndex) {
              lib_logger.debug("Retrying on newly connected provider on chain", this.chainID, ": ", method, params);
              return await this.routeRpcCall(messageId);
            }
            if (this.currentProviderIndex + 1 < this.providerCreators.length) {
              return await this.attemptToSendMessageOnNewProvider(messageId);
            }
            this.currentProviderIndex = 0;
            this.reconnectProvider();
            delete this.messagesToSend[messageId];
            throw error;
          } else if (stringifiedError.match(/bad result from backend/)) {
            if (this.currentProviderIndex === existingProviderIndex && this.currentProviderIndex + 1 < this.providerCreators.length && this.shouldSendMessageOnNextProvider(messageId)) {
              return await this.attemptToSendMessageOnNewProvider(messageId);
            }
            const backoff = this.backoffFor(messageId);
            lib_logger.debug("Backing off for", backoff, "on chain", this.chainID, "and retrying: ", method, params);
            return await waitAnd(backoff, (async () => {
              if (isClosedOrClosingWebSocketProvider(this.currentProvider)) {
                await this.reconnectProvider();
              }
              lib_logger.debug("Retrying", "on chain", this.chainID, method, params);
              return this.routeRpcCall(messageId);
            }));
          }
          lib_logger.debug("Skipping fallback for unidentified error", error, "for provider", this.currentProvider, "on chain", this.chainID);
          delete this.messagesToSend[messageId];
          throw error;
        }
      }
      addCustomProvider(customProviderCreator) {
        this.customProviderSupportedMethods = customProviderCreator.supportedMethods ?? [];
        this.customProviderCreator = customProviderCreator.creator;
        this.customProvider = this.customProviderCreator();
      }
      removeCustomProvider() {
        this.customProviderSupportedMethods = [];
        this.customProviderCreator = undefined;
        this.customProvider = undefined;
      }
      conditionallyCacheResult(result, {method, params}) {
        if (method === "eth_getBalance" && params[1] === "latest") {
          const address = params[0];
          this.latestBalanceCache[address] = {
            balance: result,
            updatedAt: Date.now()
          };
        }
        if (method === "eth_getCode" && params[1] === "latest") {
          const address = params[0];
          this.latestHasCodeCache[address] = {
            hasCode: result
          };
        }
      }
      checkForCachedResult(method, params) {
        if (method === "eth_getBalance" && params[1] === "latest") {
          const address = params[0];
          const now = Date.now();
          const lastUpdate = this.latestBalanceCache[address]?.updatedAt;
          if (lastUpdate && now < lastUpdate + BALANCE_TTL) {
            return this.latestBalanceCache[address].balance;
          }
        }
        if (method === "eth_getCode" && params[1] === "latest") {
          const address = params[0];
          if (typeof this.latestHasCodeCache[address] !== "undefined") {
            return this.latestHasCodeCache[address].hasCode;
          }
        }
        return undefined;
      }
      cleanupStaleCacheEntries() {
        const balanceCache = Object.entries(this.latestBalanceCache);
        const hasCodeCache = Object.keys(this.latestHasCodeCache);
        if (balanceCache.length > 0) {
          lib_logger.debug(`Cleaning up ${this.network.chainId} balance cache, ${balanceCache.length} entries`);
          const now = Date.now();
          balanceCache.forEach((([address, balance]) => {
            if (balance.updatedAt < now - BALANCE_TTL) {
              delete this.latestBalanceCache[address];
            }
          }));
        }
        if (hasCodeCache.length > 0) {
          lib_logger.debug(`Cleaning up ${this.network.chainId} hasCode cache, ${hasCodeCache.length} entries`);
          this.latestHasCodeCache = {};
        }
      }
      async attemptToSendMessageOnNewProvider(messageId) {
        this.disconnectCurrentProvider();
        this.currentProviderIndex += 1;
        await this.reconnectProvider();
        return this.routeRpcCall(messageId);
      }
      async send(method, params) {
        if (method === "eth_chainId") {
          return this.cachedChainId;
        }
        const id = Symbol(method);
        this.messagesToSend[id] = {
          method,
          params,
          backoffCount: 0,
          providerIndex: this.currentProviderIndex
        };
        const result = await this.routeRpcCall(id);
        this.conditionallyCacheResult(result, {
          method,
          params
        });
        return result;
      }
      async subscribe(tag, param, processFunc) {
        const subscription = {
          tag,
          param,
          processFunc
        };
        if (this.currentProvider instanceof providers_lib.WebSocketProvider) {
          await this.currentProvider._subscribe(tag, param, processFunc);
          this.subscriptions.push(subscription);
        } else {
          lib_logger.warn("Current provider ", this.currentProvider, " for ", this.network, "is not a WebSocket provider; subscription " + "will not work until a WebSocket provider connects.");
        }
      }
      on(eventName, listener) {
        this.eventSubscriptions.push({
          eventName,
          listener,
          once: false
        });
        this.currentProvider.on(eventName, listener);
        return this;
      }
      once(eventName, listener) {
        const adjustedListener = this.listenerWithCleanup(eventName, listener);
        this.eventSubscriptions.push({
          eventName,
          listener: adjustedListener,
          once: true
        });
        this.currentProvider.once(eventName, listener);
        return this;
      }
      off(eventName, listenerToRemove) {
        this.eventSubscriptions = this.eventSubscriptions.filter((({eventName: savedEventName, listener: savedListener}) => {
          if (savedEventName === eventName) {
            if (typeof listenerToRemove === "undefined" || listenerToRemove === null) {
              return true;
            }
            if ("wrappedListener" in savedListener) {
              return savedListener.wrappedListener === listenerToRemove;
            }
            return savedListener === listenerToRemove;
          }
          return false;
        }));
        this.currentProvider.off(eventName, listenerToRemove);
        return this;
      }
      disconnectCurrentProvider() {
        lib_logger.debug("Disconnecting current provider; websocket: ", this.currentProvider instanceof providers_lib.WebSocketProvider, "on chain", this.chainID, ".");
        if (this.currentProvider instanceof providers_lib.WebSocketProvider) {
          this.currentProvider.destroy();
        } else {
          this.eventSubscriptions.forEach((({eventName}) => this.removeAllListeners(eventName)));
        }
      }
      listenerWithCleanup(eventName, listenerToWrap) {
        const wrappedListener = (...params) => {
          try {
            listenerToWrap(...params);
          } finally {
            this.eventSubscriptions = this.eventSubscriptions.filter((({eventName: storedEventName, listener, once}) => eventName !== storedEventName || listener !== wrappedListener || once !== true));
          }
        };
        wrappedListener.wrappedListener = listenerToWrap;
        return wrappedListener;
      }
      async reconnectProvider() {
        this.disconnectCurrentProvider();
        if (this.currentProviderIndex >= this.providerCreators.length) {
          this.currentProviderIndex = 0;
        }
        lib_logger.debug("Reconnecting provider at index", this.currentProviderIndex, "on chain", this.chainID, "...");
        const cachedProvider = this.cachedProvidersByIndex[this.currentProviderIndex] ?? this.providerCreators[this.currentProviderIndex]();
        this.cachedProvidersByIndex[this.currentProviderIndex] = cachedProvider;
        this.currentProvider = cachedProvider;
        await this.resubscribe(this.currentProvider);
      }
      async resubscribe(provider) {
        lib_logger.debug("Resubscribing subscriptions", "on chain", this.chainID, "...");
        if (isClosedOrClosingWebSocketProvider(provider) || isConnectingWebSocketProvider(provider)) {
          return false;
        }
        if (!provider.network) {
          return false;
        }
        if (provider instanceof providers_lib.WebSocketProvider) {
          const websocketProvider = provider;
          await this.subscriptions.reduce(((previousPromise, {tag, param, processFunc}) => previousPromise.then((() => waitAnd(backedOffMs(), (() => websocketProvider._subscribe(tag, param, processFunc)))))), Promise.resolve());
        }
        this.eventSubscriptions.forEach((({eventName, listener, once}) => {
          if (once) {
            provider.once(eventName, listener);
          } else {
            provider.on(eventName, listener);
          }
        }));
        lib_logger.debug("Subscriptions resubscribed", "on chain", this.chainID, "...");
        return true;
      }
      async attemptToReconnectToPrimaryProvider() {
        if (this.currentProviderIndex === 0) {
          return null;
        }
        const primaryProvider = this.providerCreators[0]();
        return waitAnd(WAIT_BEFORE_SUBSCRIBING, (async () => {
          const subscriptionsSuccessful = await this.resubscribe(primaryProvider);
          if (!subscriptionsSuccessful) {
            return;
          }
          await this.disconnectCurrentProvider();
          this.currentProvider = primaryProvider;
          this.currentProviderIndex = 0;
        }));
      }
      backoffFor(messageId) {
        this.messagesToSend[messageId].backoffCount += 1;
        this.conditionallyIncrementCurrentProviderIndex(messageId);
        return backedOffMs();
      }
      conditionallyIncrementCurrentProviderIndex(messageId) {
        const {providerIndex} = this.messagesToSend[messageId];
        if (providerIndex !== this.currentProviderIndex) {
          this.messagesToSend[messageId].backoffCount = 0;
          this.messagesToSend[messageId].providerIndex = this.currentProviderIndex;
        }
      }
      shouldSendMessageOnNextProvider(messageId) {
        const {backoffCount} = this.messagesToSend[messageId];
        if (backoffCount && backoffCount >= MAX_RETRIES_PER_PROVIDER) {
          return true;
        }
        return false;
      }
    }
    function getProviderCreator(rpcUrl) {
      const url = new URL(rpcUrl);
      if (/^wss?/.test(url.protocol)) {
        return new providers_lib.WebSocketProvider(rpcUrl);
      }
      if (/rpc\.ankr\.com|1rpc\.io/.test(url.href)) {
        return new providers_lib.JsonRpcBatchProvider({
          url: rpcUrl,
          throttleLimit: 1,
          timeout: PROVIDER_REQUEST_TIMEOUT
        });
      }
      return new providers_lib.JsonRpcProvider({
        url: rpcUrl,
        throttleLimit: 1,
        timeout: PROVIDER_REQUEST_TIMEOUT
      });
    }
    function makeSerialFallbackProvider(chainID, rpcUrls, customRpc) {
      const customProviderCreator = customRpc ? [ {
        type: "custom",
        supportedMethods: customRpc.supportedMethods ?? [],
        creator: () => getProviderCreator(customRpc.rpcUrls[0])
      } ] : [];
      const genericProviders = rpcUrls.map((rpcUrl => ({
        type: "generic",
        creator: () => getProviderCreator(rpcUrl)
      })));
      return new SerialFallbackProvider(chainID, [ ...genericProviders, ...customProviderCreator ]);
    }
    const MULTICALL_CONTRACT_ADDRESS = "0xEedcF72f3445928c074e7C1C3d72481E2Ee21822F731390b9FFfF8553b19EAa6";
    const CHAIN_SPECIFIC_MULTICALL_CONTRACT_ADDRESSES = {
      256: "0xEedcF72f3445928c074e7C1C3d72481E2Ee21822F731390b9FFfF8553b19EAa6",
      257: "0xEedcF72f3445928c074e7C1C3d72481E2Ee21822F731390b9FFfF8553b19EAa6"
    };
    const MULTICALL_ABI = [ "function aggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes[] returnData)", "function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)", "function aggregate3Value(tuple(address target, bool allowFailure, uint256 value, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)", "function blockAndAggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)", "function getBasefee() view returns (uint256 basefee)", "function getBlockHash(uint256 blockNumber) view returns (bytes32 blockHash)", "function getBlockNumber() view returns (uint256 blockNumber)", "function getChainId() view returns (uint256 chainid)", "function getCurrentBlockCoinbase() view returns (address coinbase)", "function getCurrentBlockDifficulty() view returns (uint256 difficulty)", "function getCurrentBlockGasLimit() view returns (uint256 gaslimit)", "function getCurrentBlockTimestamp() view returns (uint256 timestamp)", "function getEthBalance(address addr) view returns (uint256 balance)", "function getLastBlockHash() view returns (bytes32 blockHash)", "function tryAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)", "function tryBlockAndAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)" ];
    var qethers;
    const QERC20_FUNCTIONS = {
      allowance: lib_utils.FunctionFragment.from("allowance(address owner, address spender) view returns (uint256)"),
      approve: lib_utils.FunctionFragment.from("approve(address spender, uint256 value) returns (bool)"),
      balanceOf: lib_utils.FunctionFragment.from("balanceOf(address owner) view returns (uint256)"),
      decimals: lib_utils.FunctionFragment.from("decimals() view returns (uint8)"),
      name: lib_utils.FunctionFragment.from("name() view returns (string)"),
      symbol: lib_utils.FunctionFragment.from("symbol() view returns (string)"),
      totalSupply: lib_utils.FunctionFragment.from("totalSupply() view returns (uint256)"),
      transfer: lib_utils.FunctionFragment.from("transfer(address to, uint amount) returns (bool)"),
      transferFrom: lib_utils.FunctionFragment.from("transferFrom(address from, address to, uint amount) returns (bool)")
    };
    const QERC20_EVENTS = {
      Transfer: lib_utils.EventFragment.from("Transfer(address indexed from, address indexed to, uint amount)"),
      Approval: lib_utils.EventFragment.from("Approval(address indexed owner, address indexed spender, uint amount)")
    };
    const QERC20_ABI = Object.values(QERC20_FUNCTIONS).concat(Object.values(QERC20_EVENTS));
    const QERC20_INTERFACE = new qethers_lib.qethers.utils.Interface(QERC20_ABI);
    const QERC2612_FUNCTIONS = {
      permit: lib_utils.FunctionFragment.from("permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)"),
      nonces: lib_utils.FunctionFragment.from("nonces(address owner) view returns (uint256)"),
      DOMAIN: lib_utils.FunctionFragment.from("DOMAIN_SEPARATOR() view returns (bytes32)")
    };
    const QERC2612_ABI = QERC20_ABI.concat(Object.values(QERC2612_FUNCTIONS));
    const QERC2612_INTERFACE = new qethers_lib.qethers.utils.Interface(QERC2612_ABI);
    async function getBalance(provider, tokenAddress, account) {
      const token = new qethers.Contract(tokenAddress, QERC20_ABI, provider);
      return BigInt((await token.balanceOf(account)).toString());
    }
    async function getMetadata(provider, tokenSmartContract) {
      const token = new qethers_lib.qethers.Contract(tokenSmartContract.contractAddress, QERC20_ABI, provider);
      try {
        const [symbol, name, decimals] = await Promise.all([ QERC20_FUNCTIONS.symbol, QERC20_FUNCTIONS.name, QERC20_FUNCTIONS.decimals ].map((({name: functionName}) => token.callStatic[functionName]())));
        return {
          ...tokenSmartContract,
          symbol,
          name,
          decimals
        };
      } catch (error) {
        lib_logger.warn("Invalid metadata for token", tokenSmartContract);
        throw new Error("Could not retrieve erc20 token metadata");
      }
    }
    function parseQERC20Tx(input) {
      try {
        return QERC20_INTERFACE.parseTransaction({
          data: input
        });
      } catch (err) {
        return undefined;
      }
    }
    function parseLogsForQERC20Transfers(logs) {
      return logs.map((({contractAddress, data, topics}) => {
        try {
          const decoded = QERC20_INTERFACE.decodeEventLog(QERC20_EVENTS.Transfer, data, topics);
          if (typeof decoded.to === "undefined" || typeof decoded.from === "undefined" || typeof decoded.amount === "undefined") {
            return undefined;
          }
          return {
            contractAddress,
            amount: decoded.amount.toBigInt(),
            senderAddress: decoded.from,
            recipientAddress: decoded.to
          };
        } catch (_) {
          return undefined;
        }
      })).filter((info => typeof info !== "undefined"));
    }
    const getTokenBalances = async ({address, network}, tokenAddresses, provider) => {
      const multicallAddress = CHAIN_SPECIFIC_MULTICALL_CONTRACT_ADDRESSES[network.chainID] || MULTICALL_CONTRACT_ADDRESS;
      const contract = new qethers_lib.qethers.Contract(multicallAddress, MULTICALL_ABI, provider);
      const balanceOfCallData = QERC20_INTERFACE.encodeFunctionData("balanceOf", [ address ]);
      const response = await contract.callStatic.tryBlockAndAggregate(false, tokenAddresses.map((tokenAddress => [ tokenAddress, balanceOfCallData ])));
      return response.returnData.flatMap(((data, i) => {
        if (data.success !== true) {
          return [];
        }
        if (data.returnData === "0x00" || data.returnData === "0x") {
          return [];
        }
        return {
          amount: BigInt(qethers_lib.BigNumber.from(data.returnData).toString()),
          smartContract: {
            contractAddress: tokenAddresses[i],
            homeNetwork: network
          }
        };
      }));
    };
    let warnedAssetTransfers = false;
    class AssetDataHelper {
      constructor(providerTracker) {
        this.providerTracker = providerTracker;
      }
      async getTokenBalance(addressOnNetwork, smartContractAddress) {
        const provider = this.providerTracker.providerForNetwork(addressOnNetwork.network);
        if (!provider) {
          throw lib_logger.buildError("Could not find a provider for network", addressOnNetwork.network);
        }
        const balances = await getTokenBalances(addressOnNetwork, [ smartContractAddress ], provider);
        if (balances.length < 1) {
          throw lib_logger.buildError("Unable to retrieve balances for contract", smartContractAddress);
        }
        return balances[0];
      }
      async getTokenBalances(addressOnNetwork, smartContractAddresses) {
        const provider = this.providerTracker.providerForNetwork(addressOnNetwork.network);
        if (typeof provider === "undefined") {
          return [];
        }
        try {
          return await getTokenBalances(addressOnNetwork, smartContractAddresses || [], provider);
        } catch (error) {
          lib_logger.warn("Problem resolving asset balances; network may not support it", addressOnNetwork.network, error);
          return [];
        }
      }
      async getTokenMetadata(tokenSmartContract) {
        const provider = this.providerTracker.providerForNetwork(tokenSmartContract.homeNetwork);
        if (typeof provider === "undefined") {
          return undefined;
        }
        return getMetadata(provider, tokenSmartContract);
      }
      async getAssetTransfers(addressOnNetwork) {
        const provider = this.providerTracker.providerForNetwork(addressOnNetwork.network);
        if (typeof provider === "undefined") {
          return [];
        }
        if (!warnedAssetTransfers) {
          lib_logger.warn("Asset transfer lookup not yet supported");
          warnedAssetTransfers = true;
        }
        return [];
      }
    }
    const BLOCKS_FOR_TRANSACTION_HISTORY = 128e3;
    const BLOCKS_TO_SKIP_FOR_TRANSACTION_HISTORY = 20;
    const NETWORK_POLLING_TIMEOUT = MINUTE * 2.05;
    const TRANSACTION_CHECK_LIFETIME_MS = 10 * HOUR;
    const GAS_POLLS_PER_PERIOD = 4;
    const GAS_POLLING_PERIOD = 1;
    const TRANSACTIONS_WITH_PRIORITY_MAX_COUNT = 25;
    class ChainService extends BaseService {
      providers={
        evm: {}
      };
      lastUserActivityOnNetwork={};
      lastUserActivityOnAddress={};
      evmChainLastSeenNoncesByNormalizedAddress={};
      static create=async (preferenceService, internalSignerService) => new this(createDB(), await preferenceService, await internalSignerService);
      supportedNetworks=[ ZEUS, POSEIDON ];
      constructor(db, preferenceService, internalSignerService) {
        super({
          queuedTransactions: {
            schedule: {
              delayInMinutes: 1,
              periodInMinutes: 1
            },
            handler: () => {
              this.handleQueuedTransactionAlarm();
            }
          },
          historicAssetTransfers: {
            schedule: {
              periodInMinutes: 60
            },
            handler: () => {
              this.handleHistoricAssetTransferAlarm();
            },
            runAtStart: false
          },
          recentIncomingAssetTransfers: {
            schedule: {
              periodInMinutes: 1.5
            },
            handler: () => {
              this.handleRecentIncomingAssetTransferAlarm(true);
            }
          },
          forceRecentAssetTransfers: {
            schedule: {
              periodInMinutes: 12 * HOUR / MINUTE
            },
            handler: () => {
              this.handleRecentAssetTransferAlarm();
            }
          },
          recentAssetTransfers: {
            schedule: {
              periodInMinutes: 15
            },
            handler: () => {
              this.handleRecentAssetTransferAlarm(true);
            }
          },
          blockPrices: {
            runAtStart: false,
            schedule: {
              periodInMinutes: GAS_POLLING_PERIOD
            },
            handler: () => {
              this.pollBlockPrices();
            }
          }
        });
        this.db = db;
        this.preferenceService = preferenceService;
        this.internalSignerService = internalSignerService;
        this.trackedNetworks = [];
        this.subscribedAccounts = [];
        this.subscribedNetworks = [];
        this.transactionsToRetrieve = [];
        this.assetData = new AssetDataHelper(this);
      }
      async internalStartService() {
        await super.internalStartService();
        await this.db.initialize();
        await this.cleanupUnsupportedNetworks();
        await this.initializeNetworks();
        const allAccounts = await this.getAccountsToTrack();
        const accounts = allAccounts.filter((({address}) => isProbablyQEVMAddress(address)));
        const invalidAddresses = accounts.filter((({address}) => !isProbablyQEVMAddress(address)));
        invalidAddresses.forEach((({address}) => this.removeAccountToTrack(address)));
        const trackedNetworks = await this.getTrackedNetworks();
        const transactions = await this.db.getAllTransactions();
        this.emitter.emit("initializeActivities", {
          transactions,
          accounts
        });
        Promise.allSettled(accounts.flatMap((an => [ this.subscribeToAccountTransactions(an).catch((e => {
          lib_logger.error(e);
        })) ])).concat(trackedNetworks.map((network => this.db.getNetworkPendingTransactions(network).then((pendingTransactions => {
          pendingTransactions.forEach((({hash, firstSeen}) => {
            lib_logger.debug(`Queuing pending transaction ${hash} for status lookup.`);
            this.queueTransactionHashToRetrieve(network, hash, firstSeen);
          }));
        })).catch((e => {
          lib_logger.error(e);
        }))))));
      }
      async cleanupUnsupportedNetworks() {
        try {
          const supportedChainIds = new Set(DEFAULT_NETWORKS.map((n => n.chainID)));
          const allNetworks = await this.db.getAllQEVMNetworks();
          const unsupportedNetworks = allNetworks.filter((network => !supportedChainIds.has(network.chainID)));
          await Promise.all(unsupportedNetworks.map((network => {
            lib_logger.info(`Removing unsupported network from database: ${network.name} (${network.chainID})`);
            return this.db.removeQEVMNetwork(network.chainID);
          })));
          lib_logger.info("Database cleanup completed - only DEFAULT_NETWORKS remain");
        } catch (error) {
          lib_logger.error("Failed to cleanup unsupported networks:", error);
        }
      }
      async initializeNetworks() {
        const rpcUrls = await this.db.getAllRpcUrls();
        const customRpcUrls = await this.db.getAllCustomRpcUrls();
        await this.updateSupportedNetworks();
        this.lastUserActivityOnNetwork = Object.fromEntries(DEFAULT_NETWORKS.map((network => [ network.chainID, 0 ]))) || {};
        this.providers = {
          evm: Object.fromEntries(DEFAULT_NETWORKS.map((network => [ network.chainID, makeSerialFallbackProvider(network.chainID, rpcUrls.find((v => v.chainID === network.chainID))?.rpcUrls || [], customRpcUrls.find((v => v.chainID === network.chainID))) ])))
        };
      }
      providerForNetwork(network) {
        return this.providers.evm[network.chainID];
      }
      async addCustomProvider(chainID, rpcUrl, customProviderCreator) {
        await this.db.addCustomRpcUrl(chainID, rpcUrl, customProviderCreator.supportedMethods);
        this.providers.evm[chainID]?.addCustomProvider(customProviderCreator);
      }
      async removeCustomProvider(chainID) {
        await this.db.removeCustomRpcUrl(chainID);
        this.providers.evm[chainID]?.removeCustomProvider();
      }
      async getTrackedNetworks() {
        if (this.trackedNetworks.length > 0) {
          return this.trackedNetworks;
        }
        await Promise.allSettled(DEFAULT_NETWORKS.map((async network => this.startTrackingNetworkOrThrow(network.chainID))));
        return this.trackedNetworks;
      }
      async subscribeToNetworkEvents(network) {
        const provider = this.providerForNetwork(network);
        if (provider) {
          await Promise.allSettled([ this.fetchLatestBlockForNetwork(network), this.subscribeToNewHeads(network) ]);
        } else {
          lib_logger.error(`Couldn't find provider for network ${network.name}`);
        }
        this.emitter.emit("networkSubscribed", network);
      }
      async startTrackingNetworkOrThrow(chainID) {
        const trackedNetwork = this.trackedNetworks.find((network => sameChainID(network.chainID, chainID)));
        if (trackedNetwork) {
          lib_logger.warn(`${trackedNetwork.name} already being tracked - no need to activate it`);
          return trackedNetwork;
        }
        const networkToTrack = this.supportedNetworks.find((ntwrk => sameChainID(ntwrk.chainID, chainID)));
        if (!networkToTrack) {
          throw new Error(`Network with chainID ${chainID} is not supported`);
        }
        this.trackedNetworks.push(networkToTrack);
        const existingSubscription = this.subscribedNetworks.find((networkSubscription => networkSubscription.network.chainID === networkToTrack.chainID));
        if (!existingSubscription) {
          this.subscribeToNetworkEvents(networkToTrack);
          const addressesToTrack = new Set((await this.getAccountsToTrack()).map((account => account.address)));
          addressesToTrack.forEach((address => {
            this.addAccountToTrack({
              address,
              network: networkToTrack
            });
          }));
        }
        return networkToTrack;
      }
      providerForNetworkOrThrow(network) {
        const provider = this.providerForNetwork(network);
        if (!provider) {
          const isDefaultNetwork = DEFAULT_NETWORKS.some((n => n.chainID === network.chainID));
          if (!isDefaultNetwork) {
            const supportedNames = DEFAULT_NETWORKS.map((n => `${n.name} (${n.chainID})`)).join(", ");
            lib_logger.warn(`Network ${network.name} (${network.chainID}) is not supported. Supported networks: ${supportedNames}`);
            throw new Error(`Network ${network.name} is not supported in QEVM mode`);
          }
          lib_logger.error("Request received for operation on an inactive network", network, "expected", this.trackedNetworks);
          throw new Error(`No provider available for network ${network.name}, id: ${network.chainID}`);
        }
        return provider;
      }
      async populatePartialLegacyEVMTransactionRequest(network, partialRequest) {
        const {from, to, value, gasLimit, input, gasPrice, nonce, annotation, broadcastOnSign} = partialRequest;
        const transactionRequest = {
          from,
          to,
          value: value ?? 0n,
          gasLimit: gasLimit ?? 0n,
          input: input ?? null,
          gasPrice: gasPrice || await this.estimateGasPrice(network),
          type: 0,
          network,
          chainID: network.chainID,
          nonce,
          annotation,
          estimatedRollupGwei: 0n,
          estimatedRollupFee: 0n,
          broadcastOnSign
        };
        let estimatedGasLimit;
        let gasEstimationError;
        try {
          estimatedGasLimit = await this.estimateGasLimit(network, transactionRequest);
        } catch (error) {
          lib_logger.error("Error estimating gas limit: ", error);
          if (error instanceof Error) {
            const anyError = error;
            if ("code" in anyError && anyError.code === lib_utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT) {
              gasEstimationError = anyError.error ?? "Unknown transaction error.";
            }
          }
        }
        if (typeof estimatedGasLimit !== "undefined" && (typeof gasLimit === "undefined" || gasLimit < 21000n)) {
          transactionRequest.gasLimit = estimatedGasLimit;
        }
        return {
          transactionRequest,
          gasEstimationError
        };
      }
      async populatePartialEIP1559TransactionRequest(network, partialRequest) {
        const {from, to, value, gasLimit, input, maxFeePerGas, maxPriorityFeePerGas, nonce, annotation, broadcastOnSign} = partialRequest;
        const transactionRequest = {
          from,
          to,
          value: value ?? 0n,
          gasLimit: gasLimit ?? 0n,
          maxFeePerGas: maxFeePerGas ?? 0n,
          maxPriorityFeePerGas: maxPriorityFeePerGas ?? 0n,
          input: input ?? null,
          type: 2,
          network,
          chainID: network.chainID,
          nonce,
          annotation,
          broadcastOnSign
        };
        let estimatedGasLimit;
        let gasEstimationError;
        try {
          estimatedGasLimit = await this.estimateGasLimit(network, transactionRequest);
        } catch (error) {
          if (error instanceof Error) {
            const anyError = error;
            if ("code" in anyError && anyError.code === lib_utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT) {
              gasEstimationError = anyError.error ?? "Unknown transaction error.";
            }
          }
        }
        if (typeof estimatedGasLimit !== "undefined" && (typeof partialRequest.gasLimit === "undefined" || partialRequest.gasLimit < 21000n)) {
          transactionRequest.gasLimit = estimatedGasLimit;
        }
        return {
          transactionRequest,
          gasEstimationError
        };
      }
      async populatePartialTransactionRequest(network, partialRequest, defaults) {
        if (EIP_1559_COMPLIANT_CHAIN_IDS.has(network.chainID)) {
          const {maxFeePerGas = defaults.maxFeePerGas, maxPriorityFeePerGas = defaults.maxPriorityFeePerGas} = partialRequest;
          const populated = await this.populatePartialEIP1559TransactionRequest(network, {
            ...partialRequest,
            maxFeePerGas,
            maxPriorityFeePerGas
          });
          return populated;
        }
        const populated = await this.populatePartialLegacyEVMTransactionRequest(network, {
          ...partialRequest
        });
        return populated;
      }
      async populateEVMTransactionNonce(transactionRequest) {
        if (typeof transactionRequest.nonce !== "undefined") {
          return transactionRequest;
        }
        const {network, chainID} = transactionRequest;
        const normalizedAddress = normalizeQEVMAddress(transactionRequest.from);
        const provider = this.providerForNetworkOrThrow(network);
        const chainTransactionCount = await provider.getTransactionCount(transactionRequest.from, "latest");
        let knownNextNonce;
        if (CHAINS_WITH_MEMPOOL.has(chainID)) {
          const chainNonce = chainTransactionCount - 1;
          const existingNonce = this.evmChainLastSeenNoncesByNormalizedAddress[chainID]?.[normalizedAddress] ?? chainNonce;
          this.evmChainLastSeenNoncesByNormalizedAddress[chainID] ??= {};
          this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress] = Math.max(existingNonce, chainNonce);
          this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress] += 1;
          knownNextNonce = this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress];
          lib_logger.debug("Got chain nonce", chainNonce, "existing nonce", existingNonce, "using", knownNextNonce);
        }
        return {
          ...transactionRequest,
          nonce: knownNextNonce ?? chainTransactionCount
        };
      }
      releaseEVMTransactionNonce(transactionRequest) {
        const chainID = "chainID" in transactionRequest ? transactionRequest.chainID : transactionRequest.network.chainID;
        if (CHAINS_WITH_MEMPOOL.has(chainID)) {
          const {nonce} = transactionRequest;
          const normalizedAddress = normalizeQEVMAddress(transactionRequest.from);
          if (!this.evmChainLastSeenNoncesByNormalizedAddress[chainID]?.[normalizedAddress]) {
            return;
          }
          const lastSeenNonce = this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress];
          if (nonce === lastSeenNonce) {
            this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress] -= 1;
          } else if (nonce < lastSeenNonce) {
            this.evmChainLastSeenNoncesByNormalizedAddress[chainID][normalizedAddress] = nonce - 1;
          }
        }
      }
      async getAccountsToTrack(onlyActiveAccounts = false) {
        const accounts = await this.db.getAccountsToTrack();
        if (onlyActiveAccounts) {
          return accounts.filter((({address, network}) => this.isCurrentlyActiveAddress(address) && this.isCurrentlyActiveChainID(network.chainID)));
        }
        return accounts;
      }
      async getTrackedAddressesOnNetwork(network) {
        return this.db.getTrackedAddressesOnNetwork(network);
      }
      async getNetworksToTrack() {
        const chainIDs = await this.db.getChainIDsToTrack();
        const networks = await Promise.all([ ...chainIDs ].map((async chainID => {
          const network = NETWORK_BY_CHAIN_ID[chainID];
          if (!network) {
            return this.db.getQEVMNetworkByChainID(chainID);
          }
          return network;
        })));
        return networks.filter((network => !!network));
      }
      async removeAccountToTrack(address) {
        await this.db.removeAccountToTrack(address);
      }
      async getLatestBaseAccountBalance({address, network}) {
        const balance = await this.providerForNetworkOrThrow(network).getBalance(address);
        const trackedAccounts = await this.getAccountsToTrack();
        const allTrackedAddresses = new Set(trackedAccounts.map((account => account.address)));
        const accountBalance = {
          address,
          network,
          assetAmount: {
            asset: await this.db.getBaseAssetForNetwork(network.chainID),
            amount: balance.toBigInt()
          },
          dataSource: "global",
          retrievedAt: Date.now()
        };
        if (allTrackedAddresses.has(address)) {
          this.emitter.emit("accountsWithBalances", {
            balances: [ accountBalance ],
            addressOnNetwork: {
              address,
              network
            }
          });
          await this.db.addBalance(accountBalance);
        }
        return accountBalance;
      }
      async addAccountToTrack(addressNetwork) {
        const isDefaultNetwork = DEFAULT_NETWORKS.some((n => n.chainID === addressNetwork.network.chainID));
        if (!isDefaultNetwork) {
          lib_logger.warn("Refusing to track account on unsupported network", addressNetwork);
          return;
        }
        const isAccountOnNetworkAlreadyTracked = await this.db.getTrackedAccountOnNetwork(addressNetwork);
        if (!isAccountOnNetworkAlreadyTracked) {
          await this.db.addAccountToTrack(addressNetwork);
          this.emitter.emit("newAccountToTrack", addressNetwork);
          await Promise.allSettled([ this.emitSavedTransactions(addressNetwork), this.subscribeToAccountTransactions(addressNetwork).catch((e => {
            lib_logger.error("chainService/addAccountToTrack: Error subscribing to account transactions for", {
              address: addressNetwork.address,
              chainID: addressNetwork.network.chainID
            }, e);
          })) ]);
        }
      }
      async getBlockHeight(network) {
        const cachedBlock = await this.db.getLatestBlock(network);
        if (cachedBlock) {
          return cachedBlock.blockHeight;
        }
        return this.providerForNetworkOrThrow(network).getBlockNumber();
      }
      async getBlockData(network, blockHash) {
        const cachedBlock = await this.db.getBlock(network, blockHash);
        if (cachedBlock) {
          return cachedBlock;
        }
        const resultBlock = await this.providerForNetworkOrThrow(network).getBlock(blockHash);
        const block = blockFromEthersBlock(network, resultBlock);
        await this.db.addBlock(block);
        this.emitter.emit("block", block);
        return block;
      }
      async getTransaction(network, txHash) {
        const cachedTx = await this.db.getTransaction(network, txHash);
        if (cachedTx) {
          return cachedTx;
        }
        const gethResult = await this.providerForNetworkOrThrow(network).getTransaction(txHash);
        const newTransaction = transactionFromEthersTransaction(gethResult, network);
        if (!newTransaction.blockHash && !newTransaction.blockHeight) {
          this.subscribeToTransactionConfirmation(network, newTransaction);
        }
        this.saveTransaction(newTransaction, "global");
        return newTransaction;
      }
      queueTransactionHashToRetrieve(network, txHash, firstSeen, priority = 0) {
        const newElement = {
          transaction: {
            hash: txHash,
            network,
            firstSeen
          },
          priority
        };
        const seen = this.isTransactionHashQueued(network, txHash);
        if (!seen) {
          const existingTransactionIndex = this.transactionsToRetrieve.findIndex((({priority: txPriority}) => newElement.priority > txPriority));
          if (existingTransactionIndex >= 0) {
            this.transactionsToRetrieve.splice(existingTransactionIndex, 0, newElement);
          } else {
            this.transactionsToRetrieve.push(newElement);
          }
        }
      }
      isTransactionHashQueued(txNetwork, txHash) {
        return this.transactionsToRetrieve.some((({transaction}) => transaction.hash === txHash && txNetwork.chainID === transaction.network.chainID));
      }
      removeTransactionHashFromQueue(network, txHash) {
        const seen = this.isTransactionHashQueued(network, txHash);
        if (seen) {
          this.transactionsToRetrieve = this.transactionsToRetrieve.filter((({transaction}) => transaction.hash !== txHash));
        }
      }
      async estimateGasLimit(network, transactionRequest) {
        const estimate = await this.providerForNetworkOrThrow(network).estimateGas(ethersTransactionFromTransactionRequest(transactionRequest));
        const uppedEstimate = estimate.add(estimate.div(10));
        return BigInt(uppedEstimate.toString());
      }
      async estimateGasPrice(network) {
        const estimate = await this.providerForNetworkOrThrow(network).getGasPrice();
        return estimate.toBigInt() * 11n / 10n;
      }
      async broadcastSignedTransaction(transaction) {
        try {
          const serialized = qethers_lib.utils.serializeTransaction(ethersTransactionFromSignedTransaction(transaction), transaction.signature || undefined);
          await Promise.all([ this.providerForNetworkOrThrow(transaction.network).sendTransaction(serialized).then((transactionResponse => {
            this.emitter.emit("transactionSend", transactionResponse.hash);
          })).catch((error => {
            lib_logger.debug("Broadcast error caught, saving failed status and releasing nonce...", transaction, error);
            this.saveTransaction({
              ...transaction,
              status: 0,
              error: error.toString()
            }, "global");
            return Promise.reject(error);
          })), this.subscribeToTransactionConfirmation(transaction.network, transaction), this.saveTransaction(transaction, "local") ]);
        } catch (error) {
          this.releaseEVMTransactionNonce(transaction);
          this.emitter.emit("transactionSendFailure");
          lib_logger.error("Error broadcasting transaction", transaction, error);
          throw error;
        }
      }
      async markAccountActivity({address, network}) {
        const isDefaultNetwork = DEFAULT_NETWORKS.some((n => n.chainID === network.chainID));
        if (!isDefaultNetwork) {
          lib_logger.warn(`Ignoring activity for unsupported network: ${network.name} (${network.chainID})`);
          return;
        }
        if (!(await this.getAccountsToTrack()).some((account => account.address === address && account.network === network))) {
          await this.addAccountToTrack({
            address,
            network
          });
        }
        const addressWasInactive = this.addressIsInactive(address);
        const networkWasInactive = this.networkIsInactive(network.chainID);
        this.markNetworkActivity(network.chainID);
        this.lastUserActivityOnAddress[address] = Date.now();
        if (addressWasInactive || networkWasInactive) {
          this.loadRecentAssetTransfers({
            address,
            network
          }).catch((error => {
            lib_logger.warn("Failed to load recent asset transfers:", error);
          }));
          this.getLatestBaseAccountBalance({
            address,
            network
          }).catch((error => {
            lib_logger.warn("Failed to get latest balance:", error);
          }));
        }
      }
      async markNetworkActivity(chainID) {
        const networkWasInactive = this.networkIsInactive(chainID);
        this.lastUserActivityOnNetwork[chainID] = Date.now();
        if (networkWasInactive) {
          this.pollBlockPricesForNetwork(chainID);
        }
      }
      addressIsInactive(address) {
        return Date.now() - NETWORK_POLLING_TIMEOUT > this.lastUserActivityOnAddress[address];
      }
      networkIsInactive(chainID) {
        return Date.now() - NETWORK_POLLING_TIMEOUT > this.lastUserActivityOnNetwork[chainID];
      }
      async pollBlockPrices() {
        for (let i = 1; i < GAS_POLLS_PER_PERIOD; i += 1) {
          setTimeout((async () => {
            await Promise.allSettled(this.subscribedNetworks.map((async ({network}) => this.pollBlockPricesForNetwork(network.chainID))));
          }), GAS_POLLING_PERIOD / GAS_POLLS_PER_PERIOD * (GAS_POLLING_PERIOD * MINUTE) * i);
        }
        await Promise.allSettled(this.subscribedNetworks.map((async ({network}) => this.pollBlockPricesForNetwork(network.chainID))));
      }
      async pollBlockPricesForNetwork(chainID) {
        if (!this.isCurrentlyActiveChainID(chainID)) {
          return;
        }
        const subscription = this.subscribedNetworks.find((({network}) => toHexChainID(network.chainID) === toHexChainID(chainID)));
        if (!subscription) {
          lib_logger.warn(`Can't fetch block prices for unsubscribed chainID ${chainID}`);
          return;
        }
        const blockPrices = await getBlockPrices(subscription.network, subscription.provider);
        this.emitter.emit("blockPrices", {
          blockPrices,
          network: subscription.network
        });
      }
      async pollLatestBlock(network, provider) {
        const ethersBlock = await provider.getBlock("latest");
        const block = blockFromProviderBlock(network, ethersBlock);
        await this.db.addBlock(block);
        this.emitter.emit("block", block);
      }
      async send(method, params, network) {
        return this.providerForNetworkOrThrow(network).send(method, params);
      }
      async getOrCancelTransaction(network, hash, firstSeen) {
        const provider = this.providerForNetworkOrThrow(network);
        const result = await provider.getTransaction(hash);
        if (!result) {
          const DROPPED_GRACE_PERIOD_MS = 2 * MINUTE;
          const ageMs = firstSeen !== undefined ? Date.now() - firstSeen : Infinity;
          if (ageMs < DROPPED_GRACE_PERIOD_MS) {
            lib_logger.debug(`Tx hash ${hash} not found on chain yet, but within grace period (${Math.round(ageMs / 1e3)}s old). Will retry.`);
            return null;
          }
          lib_logger.warn(`Tx hash ${hash} is found in our local registry but not on chain.`);
          this.removeTransactionHashFromQueue(network, hash);
          this.providerForNetwork(network)?.off(hash);
          const savedTx = await this.db.getTransaction(network, hash);
          if (savedTx && !("status" in savedTx)) {
            this.saveTransaction({
              ...savedTx,
              status: 0,
              error: "Transaction was in our local db but was not found on chain.",
              blockHash: null,
              blockHeight: null
            }, "global");
            await this.releaseEVMTransactionNonce(savedTx);
          }
        }
        return result;
      }
      async loadRecentAssetTransfers(addressNetwork) {
        const blockHeight = await this.getBlockHeight(addressNetwork.network) - BLOCKS_TO_SKIP_FOR_TRANSACTION_HISTORY;
        const fromBlock = blockHeight - BLOCKS_FOR_TRANSACTION_HISTORY;
        try {
          return await this.loadAssetTransfers(addressNetwork, BigInt(fromBlock), BigInt(blockHeight));
        } catch (err) {
          lib_logger.error("Failed loaded recent assets, retrying with shorter block range", addressNetwork, err);
        }
        return Promise.resolve();
      }
      async loadHistoricAssetTransfers(addressNetwork) {
        const oldest = await this.db.getOldestAccountAssetTransferLookup(addressNetwork) ?? BigInt(await this.getBlockHeight(addressNetwork.network));
        if (oldest !== 0n) {
          await this.loadAssetTransfers(addressNetwork, 0n, oldest);
        }
      }
      async loadAssetTransfers(addressOnNetwork, startBlock, endBlock) {
        if (this.supportedNetworks.every((network => network.chainID !== addressOnNetwork.network.chainID))) {
          lib_logger.error(`Asset transfer check not supported on network ${JSON.stringify(addressOnNetwork.network)}`);
        }
        const assetTransfers = await this.assetData.getAssetTransfers(addressOnNetwork);
        await this.db.recordAccountAssetTransferLookup(addressOnNetwork, startBlock, endBlock);
        this.emitter.emit("assetTransfers", {
          addressNetwork: addressOnNetwork,
          assetTransfers
        });
        const firstSeen = Date.now();
        const savedTransactionHashes = new Set(await this.db.getAllSavedTransactionHashes());
        assetTransfers.forEach(((a, idx) => {
          if (!savedTransactionHashes.has(a.txHash)) {
            this.queueTransactionHashToRetrieve(addressOnNetwork.network, a.txHash, firstSeen, idx <= TRANSACTIONS_WITH_PRIORITY_MAX_COUNT ? 0 : 1);
          }
        }));
      }
      async handleRecentIncomingAssetTransferAlarm(onlyActiveAccounts = false) {
        const accountsToTrack = await this.getAccountsToTrack(onlyActiveAccounts);
        await Promise.allSettled(accountsToTrack.map((async addressNetwork => this.loadRecentAssetTransfers(addressNetwork))));
      }
      isCurrentlyActiveChainID(chainID) {
        return Date.now() < this.lastUserActivityOnNetwork[chainID] + NETWORK_POLLING_TIMEOUT;
      }
      isCurrentlyActiveAddress(address) {
        return Date.now() < this.lastUserActivityOnAddress[address] + NETWORK_POLLING_TIMEOUT;
      }
      async handleRecentAssetTransferAlarm(onlyActiveAccounts = false) {
        const accountsToTrack = await this.getAccountsToTrack(onlyActiveAccounts);
        await Promise.allSettled(accountsToTrack.map((addressNetwork => this.loadRecentAssetTransfers(addressNetwork))));
      }
      async handleHistoricAssetTransferAlarm() {
        const accountsToTrack = await this.getAccountsToTrack();
        await Promise.allSettled(accountsToTrack.map((an => this.loadHistoricAssetTransfers(an))));
      }
      async handleQueuedTransactionAlarm() {
        if (!this.transactionToRetrieveGranularTimer && this.transactionsToRetrieve.length) {
          this.transactionToRetrieveGranularTimer = setInterval((() => {
            if (!this.transactionsToRetrieve.length && this.transactionToRetrieveGranularTimer) {
              this.transactionToRetrieveGranularTimer = undefined;
              return;
            }
            if (!this.transactionsToRetrieve.length) {
              return;
            }
            const {transaction} = this.transactionsToRetrieve[0];
            this.removeTransactionHashFromQueue(transaction.network, transaction.hash);
            this.retrieveTransaction(transaction);
          }), 2 * SECOND);
        }
      }
      async retrieveTransaction({network, hash, firstSeen}) {
        try {
          const result = await this.getOrCancelTransaction(network, hash, firstSeen);
          if (!result) {
            return;
          }
          const transaction = transactionFromEthersTransaction(result, network);
          await this.saveTransaction(transaction, "global");
          if (!("status" in transaction) && !transaction.blockHash && !transaction.blockHeight) {
            this.subscribeToTransactionConfirmation(transaction.network, transaction);
          } else if (transaction.blockHash) {
            await this.getBlockData(transaction.network, transaction.blockHash);
            this.retrieveTransactionReceipt(transaction.network, transaction);
          }
        } catch (error) {
          lib_logger.error(`Error retrieving transaction ${hash}`, error);
          if (Date.now() <= firstSeen + TRANSACTION_CHECK_LIFETIME_MS) {
            this.queueTransactionHashToRetrieve(network, hash, firstSeen);
          } else {
            lib_logger.warn(`Transaction ${hash} is too old to keep looking for it; treating ` + "it as expired.");
            this.db.getTransaction(network, hash).then((existingTransaction => {
              if (existingTransaction !== null) {
                lib_logger.debug("Found existing transaction for expired lookup; marking as " + "failed if no other status exists.");
                this.saveTransaction({
                  status: 0,
                  ...existingTransaction
                }, "local");
              }
            }));
          }
        }
      }
      async saveTransaction(transaction, dataSource) {
        const existing = await this.db.getTransaction(transaction.network, transaction.hash);
        const finalTransaction = {
          ...existing,
          ...transaction
        };
        let error = null;
        try {
          await this.db.addOrUpdateTransaction({
            ...existing,
            ...finalTransaction
          }, dataSource);
        } catch (err) {
          error = err;
          lib_logger.error(`Error saving tx ${finalTransaction}`, error);
        }
        try {
          const accounts = await this.getAccountsToTrack();
          const forAccounts = accounts.filter((({address}) => sameQEVMAddress(finalTransaction.from, address) || sameQEVMAddress(finalTransaction.to, address))).map((({address}) => normalizeQEVMAddress(address)));
          this.emitter.emit("transaction", {
            transaction: finalTransaction,
            forAccounts
          });
        } catch (err) {
          error = err;
          lib_logger.error(`Error emitting tx ${finalTransaction}`, error);
        }
        if (error) {
          throw error;
        }
      }
      async emitSavedTransactions(account) {
        const {address, network} = account;
        const transactionsForNetwork = await this.db.getTransactionsForNetwork(network);
        const transactions = transactionsForNetwork.filter((transaction => sameQEVMAddress(transaction.from, address) || sameQEVMAddress(transaction.to, address)));
        this.emitter.emit("initializeActivitiesForAccount", {
          transactions,
          account
        });
      }
      async filterTrackedAddressesOnNetworks(addressesOnNetworks) {
        const accounts = await this.getAccountsToTrack();
        return addressesOnNetworks.filter((({address, network}) => accounts.some((({address: trackedAddress, network: trackedNetwork}) => sameQEVMAddress(trackedAddress, address) && network.name === trackedNetwork.name))));
      }
      async fetchLatestBlockForNetwork(network) {
        const provider = this.providerForNetwork(network);
        if (provider) {
          try {
            const blockNumber = provider.getBlockNumber();
            const result = await provider.getBlock(blockNumber);
            const block = blockFromEthersBlock(network, result);
            await this.db.addBlock(block);
          } catch (e) {
            lib_logger.error("Error getting block number", e);
          }
        }
      }
      async subscribeToNewHeads(network) {
        const provider = this.providerForNetworkOrThrow(network);
        this.subscribedNetworks.push({
          network,
          provider
        });
        this.pollLatestBlock(network, provider);
        this.pollBlockPrices();
      }
      async subscribeToAccountTransactions({address, network}) {
        const provider = this.providerForNetworkOrThrow(network);
        this.subscribedAccounts.push({
          account: address,
          provider
        });
      }
      async handlePendingTransaction(transaction) {
        try {
          const {network} = transaction;
          const normalizedFromAddress = normalizeQEVMAddress(transaction.from);
          if (typeof network.chainID !== "undefined" && typeof this.evmChainLastSeenNoncesByNormalizedAddress[network.chainID]?.[normalizedFromAddress] !== "undefined" && this.evmChainLastSeenNoncesByNormalizedAddress[network.chainID]?.[normalizedFromAddress] <= transaction.nonce) {
            this.evmChainLastSeenNoncesByNormalizedAddress[network.chainID][normalizedFromAddress] = transaction.nonce;
          }
          await this.saveTransaction(transaction, "global");
          this.subscribeToTransactionConfirmation(network, transaction);
        } catch (error) {
          lib_logger.error(`Error saving tx: ${transaction}`, error);
        }
      }
      async subscribeToTransactionConfirmation(network, transaction) {
        const provider = this.providerForNetworkOrThrow(network);
        provider.once(transaction.hash, (confirmedReceipt => {
          this.saveTransaction(enrichTransactionWithReceipt(transaction, confirmedReceipt), "global");
          this.removeTransactionHashFromQueue(network, transaction.hash);
        }));
        this.queueTransactionHashToRetrieve(network, transaction.hash, Date.now());
      }
      async retrieveTransactionReceipt(network, transaction) {
        const provider = this.providerForNetworkOrThrow(network);
        const receipt = await provider.getTransactionReceipt(transaction.hash);
        if (receipt) {
          await this.saveTransaction(enrichTransactionWithReceipt(transaction, receipt), "global");
        }
      }
      async getNetworkBaseAssets() {
        return this.db.getAllBaseAssets();
      }
      async addCustomChain(chainInfo) {
        const network = await this.db.addQEVMNetwork({
          chainName: chainInfo.chainName,
          chainID: chainInfo.chainId,
          decimals: chainInfo.nativeCurrency.decimals,
          symbol: chainInfo.nativeCurrency.symbol,
          assetName: chainInfo.nativeCurrency.name,
          rpcUrls: chainInfo.rpcUrls,
          blockExplorerURL: chainInfo.blockExplorerUrl
        });
        await this.updateSupportedNetworks();
        this.providers.evm[chainInfo.chainId] = makeSerialFallbackProvider(chainInfo.chainId, chainInfo.rpcUrls);
        await this.startTrackingNetworkOrThrow(chainInfo.chainId);
        this.emitter.emit("customChainAdded", chainInfo);
        return network;
      }
      async removeCustomChain(chainID) {
        this.trackedNetworks = this.trackedNetworks.filter((network => network.chainID !== chainID));
        await this.db.removeQEVMNetwork(chainID);
        await this.updateSupportedNetworks();
      }
      async updateSupportedNetworks() {
        const supportedNetworks = await this.db.getAllQEVMNetworks();
        this.supportedNetworks = supportedNetworks;
        this.emitter.emit("supportedNetworks", supportedNetworks);
      }
      async queryAccountTokenDetails(contractAddress, addressOnNetwork, existingAsset) {
        const {network} = addressOnNetwork;
        const balance = await this.assetData.getTokenBalance(addressOnNetwork, contractAddress);
        if (existingAsset) {
          return {
            asset: existingAsset,
            amount: balance.amount
          };
        }
        const asset = await this.assetData.getTokenMetadata({
          contractAddress,
          homeNetwork: network
        }).catch((() => undefined));
        if (!asset) {
          throw lib_logger.buildError("Unable to retrieve metadata for custom asset", contractAddress, "on chain:", network.chainID);
        }
        return {
          asset,
          amount: balance.amount
        };
      }
    }
    var dayjs_min = __webpack_require__(4353);
    var dayjs_min_default = __webpack_require__.n(dayjs_min);
    function isEIP2612TypedData(typedData) {
      if (typeof typedData.message.spender === "string") {
        if (typedData.domain.chainId === Number(ZEUS.chainID) && typedData.primaryType === "Permit" && [ "owner", "spender", "value", "nonce", "deadline" ].every((key => key in typedData.message))) {
          return true;
        }
      }
      return false;
    }
    async function enrichEIP2612SignTypedDataRequest(typedData, nameService, asset) {
      const {message, domain} = typedData;
      const {value, owner, spender, nonce} = message;
      const formattedValue = asset ? `${Number(value) / 10 ** (asset?.decimals ?? 0)} ${asset.symbol}` : `${value}`;
      const token = formattedValue === `${value}` ? domain.name : null;
      const [sourceName, ownerName, spenderName] = (await Promise.all([ await nameService.lookUpName({
        address: spender,
        network: ZEUS
      }), await nameService.lookUpName({
        address: owner,
        network: ZEUS
      }, false), await nameService.lookUpName({
        address: spender,
        network: ZEUS
      }, false) ])).map((nameOnNetwork => nameOnNetwork?.resolved?.nameOnNetwork.name));
      return {
        type: "EIP-2612",
        source: sourceName ?? spender,
        displayFields: {
          owner: ownerName ?? owner,
          spender: spenderName ?? spender,
          tokenContract: domain.verifyingContract || "unknown",
          value: formattedValue,
          ...token ? {
            token
          } : {},
          nonce,
          expiry: dayjs_min_default().unix(Number(message.deadline)).format("DD MMM YYYY")
        }
      };
    }
    function getDistinctRecipentAddressesFromERC20Logs(logs) {
      return [ ...new Set([ ...logs.map((({recipientAddress}) => recipientAddress)) ]) ];
    }
    const getERC20LogsForAddresses = (logs, addresses) => {
      const relevantAddresses = new Set(addresses);
      return logs.filter((log => relevantAddresses.has(normalizeQEVMAddress(log.recipientAddress)) || relevantAddresses.has(normalizeQEVMAddress(log.senderAddress))));
    };
    function getRecipient(transaction) {
      const {annotation} = transaction;
      switch (annotation?.type) {
       case "asset-transfer":
        return {
          address: annotation.recipient?.address,
          name: annotation.recipient?.annotation.nameRecord?.resolved.nameOnNetwork.name
        };

       case "contract-interaction":
        return {
          address: transaction.to,
          name: annotation.contractInfo?.annotation.nameRecord?.resolved.nameOnNetwork.name
        };

       case "asset-approval":
        return {
          address: annotation.spender.address,
          name: annotation.spender.annotation?.nameRecord?.resolved.nameOnNetwork.name
        };

       default:
        return {
          address: transaction.to
        };
      }
    }
    function getSender(transaction) {
      const {annotation} = transaction;
      switch (annotation?.type) {
       case "asset-transfer":
        return {
          address: annotation.sender.address,
          name: annotation.sender?.annotation.nameRecord?.resolved.nameOnNetwork.name
        };

       default:
        return {
          address: transaction.from
        };
      }
    }
    function getRelevantTransactionAddresses(transaction, trackedAccounts) {
      const {address: recipientAddress} = getRecipient(transaction);
      const {address: senderAddress} = getSender(transaction);
      return trackedAccounts.filter((({address}) => sameQEVMAddress(recipientAddress, address) || sameQEVMAddress(senderAddress, address))).map((({address}) => normalizeQEVMAddress(address)));
    }
    function convertFixedPoint(fixedPoint, fixedPointDecimals, targetDecimals) {
      if (fixedPointDecimals >= targetDecimals) {
        return fixedPoint / 10n ** BigInt(fixedPointDecimals - targetDecimals);
      }
      return fixedPoint * 10n ** BigInt(targetDecimals - fixedPointDecimals);
    }
    function convertFixedPointNumber({amount, decimals}, targetDecimals) {
      return {
        amount: convertFixedPoint(amount, decimals, targetDecimals),
        decimals: targetDecimals
      };
    }
    function multiplyFixedPointNumbers({amount: amount1, decimals: decimals1}, {amount: amount2, decimals: decimals2}, desiredResultDecimals) {
      const baseResult = {
        amount: amount1 * amount2,
        decimals: decimals1 + decimals2
      };
      if (typeof desiredResultDecimals === "undefined") {
        return baseResult;
      }
      return convertFixedPointNumber(baseResult, desiredResultDecimals);
    }
    function multiplyByFloat(fixedPointNumber, floatingPoint) {
      const floatingDecimals = (floatingPoint.toString().split(".")[1] ?? "").length;
      return convertFixedPointNumber(multiplyFixedPointNumbers(fixedPointNumber, {
        amount: BigInt(Math.floor(floatingPoint * 10 ** floatingDecimals)),
        decimals: floatingDecimals
      }), fixedPointNumber.decimals).amount;
    }
    function toFixedPoint(floatingPoint, fixedPointDecimals) {
      return multiplyByFloat({
        amount: 10n ** BigInt(fixedPointDecimals),
        decimals: fixedPointDecimals
      }, floatingPoint);
    }
    function toFixedPointNumber(floatingPoint, fixedPointDecimals) {
      return {
        amount: toFixedPoint(floatingPoint, fixedPointDecimals),
        decimals: fixedPointDecimals
      };
    }
    function parseToFixedPointNumber(floatingPointString) {
      if (!floatingPointString.match(/^[^0-9]*([0-9,]+)(?:\.([0-9]*))?$/)) {
        return undefined;
      }
      const [whole, decimals, ...extra] = floatingPointString.split(".");
      if (extra.length > 0) {
        return undefined;
      }
      const noThousandsSeparatorWhole = whole.replace(",", "");
      const setDecimals = decimals ?? "";
      try {
        return {
          amount: BigInt([ noThousandsSeparatorWhole, setDecimals ].join("")),
          decimals: setDecimals.length
        };
      } catch (error) {
        lib_logger.debug(`Error parsing ${floatingPointString} to fixed-point number:`, error);
        return undefined;
      }
    }
    function fixedPointNumberToString({amount, decimals}, trimTrailingZeros = true) {
      const undecimaledAmount = amount.toString();
      const preDecimalLength = undecimaledAmount.length - decimals;
      const preDecimalCharacters = preDecimalLength > 0 ? undecimaledAmount.substring(0, preDecimalLength) : "0";
      const postDecimalCharacters = "0".repeat(Math.max(-preDecimalLength, 0)) + undecimaledAmount.substring(preDecimalLength);
      const trimmedPostDecimalCharacters = trimTrailingZeros ? postDecimalCharacters.replace(/0*$/, "") : postDecimalCharacters;
      const decimalString = trimmedPostDecimalCharacters.length > 0 ? `.${trimmedPostDecimalCharacters}` : "";
      return `${preDecimalCharacters}${decimalString}`;
    }
    function fromFixedPoint(fixedPoint, fixedPointDecimals, desiredDecimals) {
      const fixedPointDesiredDecimalsAmount = fixedPoint / 10n ** BigInt(Math.max(1, fixedPointDecimals - desiredDecimals));
      return Number(fixedPointDesiredDecimalsAmount) / 10 ** Math.min(desiredDecimals, fixedPointDecimals);
    }
    function fromFixedPointNumber({amount, decimals}, desiredDecimals) {
      return fromFixedPoint(amount, decimals, desiredDecimals);
    }
    function isFungibleAsset(asset) {
      return "decimals" in asset;
    }
    function isSmartContractFungibleAsset(asset) {
      return "homeNetwork" in asset && isFungibleAsset(asset);
    }
    function isFungibleAssetAmount(assetAmount) {
      return isFungibleAsset(assetAmount.asset);
    }
    function flipPricePoint(pricePoint) {
      const {pair, amounts, time} = pricePoint;
      return {
        pair: [ pair[1], pair[0] ],
        amounts: [ amounts[1], amounts[0] ],
        time
      };
    }
    function convertAssetAmountViaPricePoint(sourceAssetAmount, assetPricePoint) {
      if (typeof assetPricePoint === "undefined") {
        return undefined;
      }
      const [sourceAsset, targetAsset] = assetPricePoint.pair;
      const [sourceConversionFactor, targetConversionFactor] = assetPricePoint.amounts;
      if (sourceAssetAmount.asset.symbol === sourceAsset.symbol && isFungibleAsset(sourceAsset) && isFungibleAsset(targetAsset)) {
        const targetCurrencyAmount = sourceAssetAmount.amount * targetConversionFactor / sourceConversionFactor;
        return {
          asset: targetAsset,
          amount: targetCurrencyAmount
        };
      }
      if (sourceAssetAmount.asset.symbol === sourceAsset.symbol && isFungibleAsset(targetAsset) && sourceConversionFactor === 1n) {
        return {
          asset: targetAsset,
          amount: sourceAssetAmount.amount * targetConversionFactor
        };
      }
      return undefined;
    }
    function unitPricePointForPricePoint(assetPricePoint) {
      if (typeof assetPricePoint === "undefined") {
        return undefined;
      }
      const sourceAsset = assetPricePoint.pair[0];
      const unitPrice = convertAssetAmountViaPricePoint({
        amount: "decimals" in sourceAsset ? 1n * 10n ** BigInt(sourceAsset.decimals) : 1n,
        asset: sourceAsset
      }, assetPricePoint);
      if (typeof unitPrice !== "undefined") {
        return {
          unitPrice,
          time: assetPricePoint.time
        };
      }
      return undefined;
    }
    function assetAmountToDesiredDecimals(assetAmount, desiredDecimals) {
      const {amount, asset: {decimals}} = assetAmount;
      return fromFixedPoint(amount, decimals, desiredDecimals);
    }
    const hardcodedMainCurrencySymbol = "USD";
    const hardcodedMainCurrencySign = "$";
    var asset_utils_BUILT_IN_NETWORK_BASE_ASSETS;
    function isNetworkBaseAsset(asset) {
      return "chainID" in asset;
    }
    function isBaseAssetForNetwork(asset, network) {
      return isNetworkBaseAsset(asset) && asset.symbol === network.baseAsset.symbol && asset.chainID === network.baseAsset.chainID && asset.name === network.baseAsset.name;
    }
    function getBuiltInNetworkBaseAsset(symbol, chainID) {
      return asset_utils_BUILT_IN_NETWORK_BASE_ASSETS.find((asset => asset.symbol === symbol && asset.chainID === chainID));
    }
    function sameNetworkBaseAsset(asset1, asset2) {
      if ("homeNetwork" in asset1 || "homeNetwork" in asset2 || !isNetworkBaseAsset(asset1) || !isNetworkBaseAsset(asset2)) {
        return false;
      }
      return asset1.symbol === asset2.symbol && asset1.chainID === asset2.chainID && asset1.name === asset2.name;
    }
    function sameBuiltInNetworkBaseAsset(asset1, asset2) {
      return asset_utils_BUILT_IN_NETWORK_BASE_ASSETS.some((baseAsset => sameNetworkBaseAsset(baseAsset, asset1) && sameNetworkBaseAsset(baseAsset, asset2)));
    }
    function formatCurrencyAmount(currencySymbol, currencyAmount, desiredDecimals) {
      return new Intl.NumberFormat("default", {
        style: "currency",
        currency: currencySymbol,
        minimumFractionDigits: desiredDecimals,
        maximumFractionDigits: desiredDecimals
      }).format(currencyAmount).split(hardcodedMainCurrencySign)[1];
    }
    function enrichAssetAmountWithMainCurrencyValues(assetAmount, assetPricePoint, desiredDecimals) {
      const convertedAssetAmount = convertAssetAmountViaPricePoint(assetAmount, assetPricePoint);
      const {unitPrice} = unitPricePointForPricePoint(assetPricePoint) ?? {
        unitPrice: undefined
      };
      if (typeof convertedAssetAmount !== "undefined") {
        const convertedDecimalValue = assetAmountToDesiredDecimals(convertedAssetAmount, desiredDecimals);
        const unitPriceDecimalValue = typeof unitPrice === "undefined" ? undefined : assetAmountToDesiredDecimals(unitPrice, desiredDecimals);
        return {
          ...assetAmount,
          mainCurrencyAmount: convertedDecimalValue,
          localizedMainCurrencyAmount: formatCurrencyAmount(convertedAssetAmount.asset.symbol, convertedDecimalValue, desiredDecimals),
          unitPrice: unitPriceDecimalValue,
          localizedUnitPrice: typeof unitPriceDecimalValue === "undefined" ? undefined : formatCurrencyAmount(convertedAssetAmount.asset.symbol, unitPriceDecimalValue, desiredDecimals)
        };
      }
      return {
        ...assetAmount
      };
    }
    function enrichAssetAmountWithDecimalValues(assetAmount, desiredDecimals) {
      const decimalAmount = isFungibleAssetAmount(assetAmount) ? assetAmountToDesiredDecimals(assetAmount, desiredDecimals) : assetAmountToDesiredDecimals({
        ...assetAmount,
        asset: {
          ...assetAmount.asset,
          decimals: 0
        }
      }, desiredDecimals);
      return {
        ...assetAmount,
        decimalAmount,
        localizedDecimalAmount: decimalAmount.toLocaleString("default", {
          maximumFractionDigits: desiredDecimals
        })
      };
    }
    function heuristicDesiredDecimalsForUnitPrice(minimumDesiredDecimals, unitPrice) {
      const numericUnitPrice = typeof unitPrice === "undefined" || typeof unitPrice === "number" ? unitPrice : fromFixedPointNumber({
        amount: unitPrice.unitPrice.amount,
        decimals: unitPrice.unitPrice.asset.decimals
      }, 10);
      return Math.max(Math.ceil(Math.log10(numericUnitPrice ?? 0)), minimumDesiredDecimals);
    }
    function isTokenListAsset(asset) {
      const tokenListCount = asset.metadata?.tokenLists?.length ?? 0;
      return tokenListCount > 0;
    }
    function isBaselineTrustedAsset(asset) {
      return isTokenListAsset(asset) || isNetworkBaseAsset(asset);
    }
    function isVerifiedAsset(asset) {
      return asset.metadata?.verified !== undefined && asset.metadata.verified;
    }
    function isUnverifiedAsset(asset) {
      return !isVerifiedAsset(asset);
    }
    function isTrustedAsset(asset) {
      return isBaselineTrustedAsset(asset) || isVerifiedAsset(asset);
    }
    function isUntrustedAsset(asset) {
      return !isTrustedAsset(asset);
    }
    const getFullAssetID = asset => {
      if (isNetworkBaseAsset(asset)) {
        return `${asset.chainID}/base`;
      }
      return `${asset.homeNetwork.chainID}/${asset.contractAddress}`;
    };
    function isSameAsset(asset1, asset2) {
      if (typeof asset1 === "undefined" || typeof asset2 === "undefined") {
        return false;
      }
      if (isSmartContractFungibleAsset(asset1) && isSmartContractFungibleAsset(asset2)) {
        return sameNetwork(asset1.homeNetwork, asset2.homeNetwork) && sameQEVMAddress(asset1.contractAddress, asset2.contractAddress);
      }
      if (isSmartContractFungibleAsset(asset1) || isSmartContractFungibleAsset(asset2)) {
        return false;
      }
      if (isNetworkBaseAsset(asset1) && isNetworkBaseAsset(asset2)) {
        return sameNetworkBaseAsset(asset1, asset2);
      }
      return asset1.symbol === asset2.symbol;
    }
    async function resolveAddressAnnotation(chainService, nameService, addressOnNetwork) {
      const {address, network} = addressOnNetwork;
      const provider = chainService.providerForNetworkOrThrow(network);
      const [codeHex, balance, nameRecord] = await Promise.all([ provider.getCode(address), chainService.getLatestBaseAccountBalance(addressOnNetwork), nameService.lookUpName(addressOnNetwork) ]);
      return {
        balance,
        nameRecord,
        hasCode: codeHex !== "0x",
        timestamp: Date.now()
      };
    }
    async function enrichAddressOnNetwork(chainService, nameService, addressOnNetwork) {
      return {
        ...addressOnNetwork,
        annotation: await resolveAddressAnnotation(chainService, nameService, addressOnNetwork)
      };
    }
    const WRAPPED_ASSET_FUNCTIONS = {
      ...QERC20_FUNCTIONS,
      deposit: lib_utils.FunctionFragment.from("deposit() public payable"),
      withdraw: lib_utils.FunctionFragment.from("withdraw(uint amount) public")
    };
    const WRAPPED_ASSET_EVENTS = {
      Deposit: lib_utils.EventFragment.from("Deposit(address indexed dst, uint amount)"),
      Withdrawal: lib_utils.EventFragment.from("Withdrawal(address indexed src, uint amount)")
    };
    const WRAPPED_ASSET_ABI = Object.values(WRAPPED_ASSET_FUNCTIONS).concat(Object.values(WRAPPED_ASSET_EVENTS));
    const WRAPPED_ASSET_INTERFACE = new qethers_lib.qethers.utils.Interface(WRAPPED_ASSET_ABI);
    function parseLogsForWrappedDepositsAndWithdrawals(logs) {
      return logs.map((({contractAddress, data, topics}) => {
        try {
          const decodedDeposit = WRAPPED_ASSET_INTERFACE.decodeEventLog(WRAPPED_ASSET_EVENTS.Deposit, data, topics);
          if (typeof decodedDeposit.amount !== "undefined" && typeof decodedDeposit.dst !== "undefined") {
            return {
              contractAddress,
              amount: decodedDeposit.amount.toBigInt(),
              recipientAddress: decodedDeposit.dst,
              senderAddress: contractAddress
            };
          }
        } catch (e) {}
        try {
          const decodedWithdrawal = WRAPPED_ASSET_INTERFACE.decodeEventLog(WRAPPED_ASSET_EVENTS.Withdrawal, data, topics);
          if (typeof decodedWithdrawal.amount !== "undefined" && typeof decodedWithdrawal.src !== "undefined") {
            return {
              contractAddress,
              amount: decodedWithdrawal.amount.toBigInt(),
              recipientAddress: contractAddress,
              senderAddress: decodedWithdrawal.src
            };
          }
        } catch (_) {
          return undefined;
        }
        return undefined;
      })).filter((info => typeof info !== "undefined"));
    }
    function isFulfilledPromise(settledResult) {
      return settledResult.status === "fulfilled";
    }
    function isDefined(input) {
      return input !== undefined;
    }
    function assertUnreachable(x) {
      throw new Error(`Didn't expect to get here with value: ${x}`);
    }
    async function buildSubannotations(chainService, nameService, relevantTransferLogs, assets, addressEnrichmentsByAddress, network, desiredDecimals, resolvedTime, block) {
      const subannotations = (await Promise.allSettled(relevantTransferLogs.map((async ({contractAddress, amount, senderAddress, recipientAddress}) => {
        const matchingFungibleAsset = assets.find((asset => isSmartContractFungibleAsset(asset) && sameQEVMAddress(asset.contractAddress, contractAddress)));
        if (!matchingFungibleAsset) {
          return undefined;
        }
        const recipient = addressEnrichmentsByAddress[normalizeQEVMAddress(recipientAddress)] ?? await enrichAddressOnNetwork(chainService, nameService, {
          address: recipientAddress,
          network
        });
        const sender = addressEnrichmentsByAddress[normalizeQEVMAddress(senderAddress)] ?? await enrichAddressOnNetwork(chainService, nameService, {
          address: senderAddress,
          network
        });
        return {
          type: "asset-transfer",
          assetAmount: enrichAssetAmountWithDecimalValues({
            asset: matchingFungibleAsset,
            amount
          }, desiredDecimals),
          sender,
          recipient,
          timestamp: resolvedTime,
          blockTimestamp: block?.timestamp
        };
      })))).filter(isFulfilledPromise).map((({value}) => value)).filter(isDefined);
      return subannotations;
    }
    async function annotationsFromLogs(chainService, indexingService, nameService, logs, network, desiredDecimals, resolvedTime, block) {
      const assets = indexingService.getCachedAssets(network);
      const accountAddresses = (await chainService.getAccountsToTrack()).map((account => account.address));
      const tokenTransferLogs = [ ...parseLogsForQERC20Transfers(logs), ...parseLogsForWrappedDepositsAndWithdrawals(logs) ];
      const relevantTransferLogs = getERC20LogsForAddresses(tokenTransferLogs, accountAddresses);
      const relevantAddresses = getDistinctRecipentAddressesFromERC20Logs(relevantTransferLogs).map(normalizeQEVMAddress);
      const addressEnrichmentsByAddress = Object.fromEntries((await Promise.allSettled(relevantAddresses.map((async address => [ address, await enrichAddressOnNetwork(chainService, nameService, {
        address,
        network
      }) ])))).filter(isFulfilledPromise).map((({value}) => value)).filter((([, annotation]) => isDefined(annotation))));
      const subannotations = await buildSubannotations(chainService, nameService, relevantTransferLogs, assets, addressEnrichmentsByAddress, network, desiredDecimals, resolvedTime, block);
      return subannotations;
    }
    async function resolveTransactionAnnotation(chainService, indexingService, nameService, network, transaction, desiredDecimals) {
      const assets = await indexingService.getCachedAssets(network);
      let txAnnotation = "annotation" in transaction && transaction.annotation !== undefined ? transaction.annotation : {
        blockTimestamp: undefined,
        timestamp: Date.now(),
        type: "contract-deployment",
        transactionLogoURL: assets.find((asset => asset.metadata?.logoURL && asset.symbol === transaction.network.baseAsset.symbol))?.metadata?.logoURL
      };
      let block;
      const {assetAmount: {amount: baseAssetBalance}} = await chainService.getLatestBaseAccountBalance({
        address: transaction.from,
        network
      });
      const {gasLimit, blockHash} = transaction;
      const additionalL1Gas = 0n;
      const gasFee = isEIP1559TransactionRequest(transaction) ? (transaction?.maxFeePerGas ?? 0n) * (gasLimit ?? 0n) + additionalL1Gas : ("gasPrice" in transaction && transaction?.gasPrice || 0n) * (gasLimit ?? 0n) + additionalL1Gas;
      txAnnotation.warnings ??= [];
      if (gasFee + (transaction.value ?? 0n) > baseAssetBalance) {
        if (!txAnnotation.warnings.includes("insufficient-funds")) {
          txAnnotation.warnings.push("insufficient-funds");
        }
      } else {
        txAnnotation.warnings = txAnnotation.warnings.filter((warning => warning !== "insufficient-funds"));
      }
      if (blockHash) {
        block = await chainService.getBlockData(network, blockHash);
        txAnnotation = {
          ...txAnnotation,
          blockTimestamp: block?.timestamp
        };
      }
      if (typeof transaction.to !== "undefined") {
        const contractInfo = await enrichAddressOnNetwork(chainService, nameService, {
          address: transaction.to,
          network
        });
        txAnnotation = txAnnotation.type === "contract-deployment" ? {
          ...txAnnotation,
          type: "contract-interaction",
          contractInfo: await enrichAddressOnNetwork(chainService, nameService, {
            address: transaction.to,
            network
          })
        } : txAnnotation;
        if (txAnnotation.type === "asset-swap") {
          txAnnotation = {
            ...txAnnotation,
            swapContractInfo: contractInfo
          };
        }
        if (transaction.input === null || transaction.input === "0x" || typeof transaction.input === "undefined") {
          const recipient = contractInfo;
          const sender = await enrichAddressOnNetwork(chainService, nameService, {
            address: transaction.from,
            network
          });
          if (typeof transaction.value !== "undefined") {
            if (recipient.annotation.hasCode && !(recipient.annotation.nameRecord?.system === "qwal-known-contracts" || recipient.annotation.nameRecord?.system === "qwal-address-book")) {
              txAnnotation.warnings ??= [];
              txAnnotation.warnings.push("send-to-contract");
            }
            txAnnotation = {
              ...txAnnotation,
              type: "asset-transfer",
              sender,
              recipient,
              assetAmount: enrichAssetAmountWithDecimalValues({
                asset: network.baseAsset,
                amount: transaction.value
              }, desiredDecimals)
            };
          }
        } else {
          const erc20Tx = parseQERC20Tx(transaction.input);
          const matchingFungibleAsset = assets.find((asset => isSmartContractFungibleAsset(asset) && sameQEVMAddress(asset.contractAddress, transaction.to)));
          const transactionLogoURL = matchingFungibleAsset?.metadata?.logoURL;
          if (matchingFungibleAsset && erc20Tx && (erc20Tx.name === "transfer" || erc20Tx.name === "transferFrom")) {
            const [sender, recipient] = await Promise.all([ enrichAddressOnNetwork(chainService, nameService, {
              address: erc20Tx.args.from ?? transaction.from,
              network
            }), enrichAddressOnNetwork(chainService, nameService, {
              address: erc20Tx.args.to,
              network
            }) ]);
            txAnnotation = {
              ...txAnnotation,
              type: "asset-transfer",
              transactionLogoURL,
              sender,
              recipient,
              assetAmount: enrichAssetAmountWithDecimalValues({
                asset: matchingFungibleAsset,
                amount: BigInt(erc20Tx.args.amount)
              }, desiredDecimals)
            };
            if (sameQEVMAddress(erc20Tx.args.to, transaction.to)) {
              txAnnotation.warnings ??= [];
              txAnnotation.warnings.push("send-to-token");
            }
            if (recipient.annotation.hasCode && !(recipient.annotation.nameRecord?.system === "qwal-known-contracts" || recipient.annotation.nameRecord?.system === "qwal-address-book")) {
              txAnnotation.warnings ??= [];
              txAnnotation.warnings.push("send-to-contract");
            }
          } else if (matchingFungibleAsset && erc20Tx && erc20Tx.name === "approve") {
            const spender = await enrichAddressOnNetwork(chainService, nameService, {
              address: erc20Tx.args.spender,
              network
            });
            if (!spender.annotation.hasCode) {
              txAnnotation.warnings ??= [];
              txAnnotation.warnings.push("approve-eoa");
            }
            txAnnotation = {
              ...txAnnotation,
              type: "asset-approval",
              transactionLogoURL,
              spender,
              assetAmount: enrichAssetAmountWithDecimalValues({
                asset: matchingFungibleAsset,
                amount: BigInt(erc20Tx.args.value)
              }, desiredDecimals)
            };
          }
        }
      }
      if ("logs" in transaction && typeof transaction.logs !== "undefined") {
        const subannotations = await annotationsFromLogs(chainService, indexingService, nameService, transaction.logs, network, desiredDecimals, txAnnotation.timestamp, block);
        if (subannotations.length > 0) {
          txAnnotation.subannotations = subannotations;
        }
      }
      return txAnnotation;
    }
    class EnrichmentService extends BaseService {
      static create=async (chainService, indexingService, nameService) => new this(await chainService, await indexingService, await nameService);
      constructor(chainService, indexingService, nameService) {
        super({});
        this.chainService = chainService;
        this.indexingService = indexingService;
        this.nameService = nameService;
      }
      async internalStartService() {
        await super.internalStartService();
        await this.connectChainServiceEvents();
      }
      async connectChainServiceEvents() {
        this.chainService.emitter.on("transaction", (async ({transaction}) => {
          const accounts = await this.chainService.getAccountsToTrack();
          const enrichedTransaction = await this.enrichTransaction(transaction, 2);
          this.emitter.emit("enrichedEVMTransaction", {
            transaction: enrichedTransaction,
            forAccounts: getRelevantTransactionAddresses(enrichedTransaction, accounts)
          });
        }));
      }
      async enrichTransactionSignature(network, transaction, desiredDecimals) {
        const enrichedTxSignatureRequest = {
          ...transaction,
          network,
          annotation: await resolveTransactionAnnotation(this.chainService, this.indexingService, this.nameService, network, transaction, desiredDecimals)
        };
        this.emitter.emit("enrichedEVMTransactionSignatureRequest", enrichedTxSignatureRequest);
        return enrichedTxSignatureRequest;
      }
      async enrichSignTypedDataRequest(signTypedDataRequest) {
        let annotation;
        const {typedData} = signTypedDataRequest;
        if (isEIP2612TypedData(typedData)) {
          const assets = this.indexingService.getCachedAssets(ZEUS);
          const correspondingAsset = assets.find((asset => {
            if (typedData.domain.verifyingContract && "contractAddress" in asset && asset.contractAddress) {
              return (0, address_lib.getAddress)(asset.contractAddress) === (0, address_lib.getAddress)(typedData.domain.verifyingContract);
            }
            return false;
          }));
          annotation = await enrichEIP2612SignTypedDataRequest(typedData, this.nameService, correspondingAsset);
        }
        const enrichedSignTypedDataRequest = {
          ...signTypedDataRequest,
          annotation
        };
        this.emitter.emit("enrichedSignTypedDataRequest", enrichedSignTypedDataRequest);
        return enrichedSignTypedDataRequest;
      }
      async enrichTransaction(transaction, desiredDecimals) {
        return {
          ...transaction,
          annotation: await resolveTransactionAnnotation(this.chainService, this.indexingService, this.nameService, transaction.network, transaction, desiredDecimals)
        };
      }
    }
    async function getPrices(_assets, _vsCurrencies) {
      lib_logger.debug("getPrices called — no price oracle configured, returning []");
      return [];
    }
    async function getTokenPrices(_tokenAddresses, _fiatCurrency, _network) {
      lib_logger.debug("getTokenPrices called — no price oracle configured, returning {}");
      return {};
    }
    function getPricePoint(asset, unitPricePoint) {
      return {
        pair: [ asset, USD ],
        amounts: [ 1n * 10n ** BigInt(asset.decimals), BigInt(Math.trunc(Number(unitPricePoint.unitPrice.amount) / 10 ** unitPricePoint.unitPrice.asset.decimals * 10 ** USD.decimals)) ],
        time: unitPricePoint.time
      };
    }
    var lodash = __webpack_require__(2543);
    var lodash_default = __webpack_require__.n(lodash);
    const BATCH_SIZE = 20;
    const SPOT_PRICE_ORACLE_CONSTANTS = {};
    const PRICE_ORACLE_FUNCTIONS = {
      getRate: lib_utils.FunctionFragment.from("getRate(address srcToken, address dstToken, bool useWrappers) external view returns (uint256 weightedRate)"),
      getRateToEth: lib_utils.FunctionFragment.from("getRateToEth(address srcToken, bool useSrcWrappers) external view returns (uint256 weightedRate)")
    };
    const PRICE_ORACLE_ABI = Object.values(PRICE_ORACLE_FUNCTIONS);
    const PRICE_ORACLE_INTERFACE = new qethers_lib.utils.Interface(PRICE_ORACLE_ABI);
    const toUSDPricePoint = (asset, coinPrice) => {
      const assetPrecision = "decimals" in asset ? asset.decimals : 0;
      return {
        pair: [ USD, asset ],
        amounts: [ toFixedPoint(coinPrice, USD.decimals), 10n ** BigInt(assetPrecision) ],
        time: Date.now()
      };
    };
    const getRateForBaseAsset = async (network, provider) => {
      const constants = SPOT_PRICE_ORACLE_CONSTANTS[network.chainID];
      if (!constants) {
        return null;
      }
      const offChainOracleContract = new qethers_lib.Contract(constants.oracleAddress, PRICE_ORACLE_ABI, provider);
      return offChainOracleContract.callStatic.getRateToEth(constants.USDCAddress, true);
    };
    const getBaseAssetPriceFromRate = (rate, network) => {
      const constants = SPOT_PRICE_ORACLE_CONSTANTS[network.chainID];
      if (!constants) return 0;
      const numerator = qethers_lib.BigNumber.from(10).pow(constants.USDCDecimals);
      const denominator = qethers_lib.BigNumber.from(10).pow(network.baseAsset.decimals);
      const BaseAssetPerUSD = denominator.mul(100).div(qethers_lib.BigNumber.from(rate).mul(numerator).div(denominator));
      return Number(BaseAssetPerUSD) / 100;
    };
    async function getUSDPriceForBaseAsset(network, provider) {
      const rate = await getRateForBaseAsset(network, provider);
      if (rate === null) {
        lib_logger.debug(`getUSDPriceForBaseAsset: no oracle configured for chain ${network.chainID} — returning zero price`);
        return toUSDPricePoint(network.baseAsset, 0);
      }
      const USDPriceOfBaseAsset = getBaseAssetPriceFromRate(rate, network);
      return toUSDPricePoint(network.baseAsset, USDPriceOfBaseAsset);
    }
    const getRatesForTokens = async (assets, provider, network) => {
      if (SPOT_PRICE_ORACLE_CONSTANTS[network.chainID] === undefined) {
        return [];
      }
      const constants = SPOT_PRICE_ORACLE_CONSTANTS[network.chainID];
      const multicall = new qethers_lib.Contract(MULTICALL_CONTRACT_ADDRESS, MULTICALL_ABI, provider);
      const response = await multicall.callStatic.tryBlockAndAggregate(false, assets.map((asset => {
        const callData = PRICE_ORACLE_INTERFACE.encodeFunctionData("getRate", [ constants.USDCAddress, asset.contractAddress, true ]);
        return [ constants.oracleAddress, callData ];
      })));
      return response.returnData.map(((data, i) => ({
        asset: assets[i],
        response: data
      })));
    };
    const getTokenPriceFromRate = (rate, asset, network) => {
      const constants = SPOT_PRICE_ORACLE_CONSTANTS[network.chainID];
      if (!constants) return 0;
      const numerator = qethers_lib.BigNumber.from(10).pow(constants.USDCDecimals);
      const denominator = asset.decimals ? qethers_lib.BigNumber.from(10).pow(asset.decimals) : qethers_lib.BigNumber.from(1);
      const tokenPerUSDC = denominator.mul(100).div(qethers_lib.BigNumber.from(rate).mul(numerator).div(denominator));
      return Number(tokenPerUSDC) / 100;
    };
    async function getUSDPriceForTokens(assets, network, provider) {
      if (!SPOT_PRICE_ORACLE_CONSTANTS[network.chainID]) {
        lib_logger.debug(`getUSDPriceForTokens: no oracle configured for chain ${network.chainID} — skipping ${assets.length} token(s)`);
        return {};
      }
      if (assets.length > BATCH_SIZE) {
        const batches = lodash_default().range(0, assets.length / BATCH_SIZE).map((batch => assets.slice(batch * BATCH_SIZE, batch * BATCH_SIZE + BATCH_SIZE)));
        lib_logger.debug("Batching assets price lookup by length", assets.length, BATCH_SIZE, batches);
        return logRejectedAndReturnFulfilledResults("Some batch asset price lookups failed", await Promise.allSettled(batches.map((subAssets => getUSDPriceForTokens(subAssets, network, provider)))), batches).reduce(((allPrices, pricesSubset) => ({
          ...allPrices,
          ...pricesSubset
        })), {});
      }
      const tokenRates = await getRatesForTokens(assets, provider, network);
      const pricePoints = {};
      tokenRates.forEach((({asset, response}) => {
        if (asset.symbol === "USDC") {
          pricePoints[asset.contractAddress] = {
            unitPrice: {
              asset: USD,
              amount: BigInt(10 ** USD.decimals)
            },
            time: Date.now()
          };
          return;
        }
        if (response.success !== true || qethers_lib.BigNumber.from(response.returnData).isZero()) {
          return;
        }
        const USDPriceOfToken = getTokenPriceFromRate(qethers_lib.BigNumber.from(response.returnData), asset, network);
        pricePoints[asset.contractAddress] = {
          unitPrice: {
            asset: USD,
            amount: BigInt(Math.trunc(USDPriceOfToken * 10 ** USD.decimals))
          },
          time: Date.now()
        };
      }));
      return pricePoints;
    }
    var web_lib = __webpack_require__(6637);
    function scoreAssetSimilarity(a, b) {
      let score = 0;
      if (a.symbol === b.symbol) {
        score += 1;
      }
      if (a.name === b.name) {
        score += 1;
      }
      if ("decimals" in a && "decimals" in b && a.decimals === b.decimals) {
        score += 1;
      } else if ("decimals" in a || "decimals" in b) {
        score -= 1;
      }
      if ("homeNetwork" in a && "homeNetwork" in b && sameNetwork(a.homeNetwork, b.homeNetwork)) {
        score += 1;
      } else if ("homeNetwork" in a || "homeNetwork" in b) {
        score -= 1;
      }
      return score;
    }
    function prioritizedAssetSimilarityKeys(asset) {
      let similarityKeys = [];
      if (isSmartContractFungibleAsset(asset)) {
        const normalizedContractAddressAndNetwork = `${normalizeQEVMAddress(asset.contractAddress)}-${asset.homeNetwork.chainID}`;
        similarityKeys = [ ...similarityKeys, normalizedContractAddressAndNetwork ];
      }
      return [ ...similarityKeys, asset.symbol ];
    }
    function findClosestAssetIndex(assetToFind, assets, minimumSimilarityScore = 2) {
      const [bestScore, index] = assets.reduce((([runningScore, runningScoreIndex], asset, i) => {
        const score = scoreAssetSimilarity(assetToFind, asset);
        if (score > runningScore) {
          return [ score, i ];
        }
        return [ runningScore, runningScoreIndex ];
      }), [ 0, -1 ]);
      if (bestScore >= minimumSimilarityScore && index >= 0) {
        return index;
      }
      return undefined;
    }
    const QEVM_ADDRESS_PATTERN = /^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$/;
    function isValidQEVMTokenListResponse(response) {
      if (typeof response !== "object" || response === null) {
        lib_logger.debug("QEVM token list validation failed: response is not an object");
        return false;
      }
      const obj = response;
      if (typeof obj.name !== "string") {
        lib_logger.debug("Token list validation failed: missing or invalid 'name'");
        return false;
      }
      if (typeof obj.timestamp !== "string") {
        lib_logger.debug("Token list validation failed: missing or invalid 'timestamp'");
        return false;
      }
      if (!Array.isArray(obj.tokens)) {
        lib_logger.debug("Token list validation failed: 'tokens' is not an array");
        return false;
      }
      if (typeof obj.version !== "object" || obj.version === null) {
        lib_logger.debug("Token list validation failed: missing or invalid 'version'");
        return false;
      }
      const version = obj.version;
      if (typeof version.major !== "number" || typeof version.minor !== "number" || typeof version.patch !== "number") {
        lib_logger.debug("Token list validation failed: 'version' fields are not numbers");
        return false;
      }
      const invalidToken = obj.tokens.find((token => {
        if (typeof token !== "object" || token === null) return true;
        const t = token;
        return !(typeof t.chainId === "number" && typeof t.address === "string" && typeof t.name === "string" && typeof t.symbol === "string" && typeof t.decimals === "number" && QEVM_ADDRESS_PATTERN.test(t.address));
      }));
      if (invalidToken !== undefined) {
        lib_logger.debug("Token list validation failed: invalid token entry", invalidToken);
        return false;
      }
      return true;
    }
    async function fetchAndValidateTokenList(url) {
      let ok = true;
      const response = await (0, web_lib.fetchJson)({
        url,
        timeout: 10 * SECOND
      }).catch((() => {
        ok = false;
      }));
      if (!ok) {
        throw new Error(`Error resolving token list at ${url}`);
      }
      if (!isValidQEVMTokenListResponse(response)) {
        throw new Error(`Invalid token list at ${url}`);
      }
      return {
        tokenList: response,
        url
      };
    }
    async function fetchAndValidateTokenLists(urls) {
      return (await Promise.allSettled(urls.map(fetchAndValidateTokenList))).filter((l => l.status === "fulfilled")).map((l => l.value));
    }
    function tokenListToFungibleAssetsForNetwork(network, {url: tokenListURL, tokenList}) {
      const networkChainID = Number(network.chainID);
      const tokenListCitation = {
        url: tokenListURL,
        name: tokenList.name,
        logoURL: tokenList.logoURI
      };
      return tokenList.tokens.filter((({chainId, symbol}) => chainId === networkChainID && symbol !== network.baseAsset.symbol)).map((tokenMetadata => ({
        metadata: {
          ...tokenMetadata.logoURI ? {
            logoURL: tokenMetadata.logoURI
          } : {},
          tokenLists: [ tokenListCitation ]
        },
        name: tokenMetadata.name,
        symbol: tokenMetadata.symbol,
        decimals: tokenMetadata.decimals,
        homeNetwork: network,
        contractAddress: normalizeQEVMAddress(tokenMetadata.address)
      })));
    }
    function mergeAssets(...assetLists) {
      function tokenReducer(seenAssetsBySimilarityKey, asset) {
        const updatedSeenAssetsBySimilarityKey = {
          ...seenAssetsBySimilarityKey
        };
        const similarityKeys = prioritizedAssetSimilarityKeys(asset);
        const referenceKey = similarityKeys[0];
        updatedSeenAssetsBySimilarityKey[referenceKey] ??= [];
        const matchingAssetIndex = findClosestAssetIndex(asset, updatedSeenAssetsBySimilarityKey[referenceKey]);
        if (typeof matchingAssetIndex !== "undefined") {
          const matchingAsset = updatedSeenAssetsBySimilarityKey[referenceKey][matchingAssetIndex];
          updatedSeenAssetsBySimilarityKey[referenceKey][matchingAssetIndex] = {
            ...asset,
            ...matchingAsset,
            metadata: {
              ...matchingAsset.metadata,
              ...asset.metadata,
              tokenLists: Object.values((matchingAsset.metadata?.tokenLists || [])?.concat(asset.metadata?.tokenLists ?? []).reduce(((citations, tokenListCitation) => ({
                ...citations,
                [tokenListCitation.url]: [ ...citations[tokenListCitation.url] ?? [], tokenListCitation ]
              })), {})).flatMap((duplicateList => duplicateList.find((list => list.logoURL !== undefined)) ?? duplicateList[0]))
            }
          };
        } else {
          updatedSeenAssetsBySimilarityKey[referenceKey].push(asset);
        }
        return updatedSeenAssetsBySimilarityKey;
      }
      const mergedAssetsBy = assetLists.flat().reduce(tokenReducer, {});
      const mergedAssets = Object.values(mergedAssetsBy).flat();
      return mergedAssets.sort(((a, b) => (a.metadata?.tokenLists?.length || 0) - (b.metadata?.tokenLists?.length || 0)));
    }
    const memoizedMergeAssets = (0, lodash.memoize)(mergeAssets, ((...assetLists) => assetLists.reduce(((acc, curr) => acc + curr.length), 0)));
    function networkAssetsFromLists(network, tokenLists) {
      const fungibleAssets = tokenLists.map((tokenListAndReference => tokenListToFungibleAssetsForNetwork(network, tokenListAndReference)));
      return memoizedMergeAssets(...fungibleAssets);
    }
    function assetID(asset) {
      const id = `${asset.symbol}`;
      if (!("contractAddress" in asset) || !("homeNetwork" in asset) || "coinType" in asset) {
        return id;
      }
      const network = asset.homeNetwork;
      return `${id}/${asset.contractAddress}/${network.family}/${network.name}`;
    }
    function normalizePricePoint(pricePoint) {
      const asset1ID = assetID(pricePoint.pair[0]);
      const asset2ID = assetID(pricePoint.pair[1]);
      return asset1ID.localeCompare(asset2ID) > 0 ? {
        ...pricePoint,
        asset1ID,
        asset2ID
      } : {
        time: pricePoint.time,
        pair: [ pricePoint.pair[1], pricePoint.pair[0] ],
        amounts: [ pricePoint.amounts[1], pricePoint.amounts[0] ],
        asset1ID: asset2ID,
        asset2ID: asset1ID
      };
    }
    function numberArrayCompare(arr1, arr2) {
      for (let i = 0; i < arr1.length; i += 1) {
        if (arr1[i] > arr2[i]) {
          return 1;
        }
        if (arr1[i] < arr2[i]) {
          return -1;
        }
      }
      return 0;
    }
    class IndexingDatabase extends Xn {
      constructor(options) {
        super("qwal/indexing", options);
        this.version(1).stores({
          prices: "++id,time,[asset1ID+asset2ID]",
          balances: "++id,address,assetAmount.amount,assetAmount.asset.symbol,network.name,blockHeight,retrievedAt",
          tokenLists: "++id,url,retrievedAt",
          customAssets: "&[contractAddress+homeNetwork.name],contractAddress,symbol,homeNetwork.chainID,homeNetwork.name",
          assetsToTrack: "&[contractAddress+homeNetwork.name],symbol,contractAddress,homeNetwork.family,homeNetwork.chainID,homeNetwork.name"
        });
      }
      async savePriceMeasurement(pricePoint, retrievedAt, dataSource, exchange) {
        const measurement = {
          ...normalizePricePoint(pricePoint),
          retrievedAt,
          dataSource,
          exchange
        };
        await this.prices.add(measurement);
      }
      async getLatestAccountBalance(address, network, asset) {
        const balanceCandidates = await this.balances.where("retrievedAt").above(Date.now() - 7 * 24 * 60 * 60 * 1e3).filter((balance => balance.address === address && balance.assetAmount.asset.symbol === asset.symbol && balance.network.name === network.name)).reverse().sortBy("retrievedAt");
        return balanceCandidates.length > 0 ? balanceCandidates[0] : null;
      }
      async addAssetToTrack(asset) {
        this.assetsToTrack.put(asset);
      }
      async getAssetsToTrack() {
        return this.assetsToTrack.toArray();
      }
      async isTrackingAsset(asset) {
        return await this.getTrackedAssetByAddressAndNetwork(asset.homeNetwork, asset.contractAddress) !== undefined;
      }
      async getAllCustomAssets() {
        return this.customAssets.toArray();
      }
      async getActiveCustomAssetsByNetworks(networks) {
        return (await this.customAssets.where("homeNetwork.chainID").anyOf(networks.map((network => network.chainID))).toArray()).filter((asset => asset?.metadata?.removed !== true));
      }
      async getRemovedCustomAssetsByNetworks(networks) {
        return (await this.customAssets.where("homeNetwork.chainID").anyOf(networks.map((network => network.chainID))).toArray()).filter((asset => asset?.metadata?.removed === true));
      }
      async getCustomAssetByAddressAndNetwork(network, contractAddress) {
        return this.customAssets.where("[contractAddress+homeNetwork.name]").equals([ contractAddress, network.name ]).first();
      }
      async getTrackedAssetByAddressAndNetwork(network, contractAddress) {
        return this.assetsToTrack.where("[contractAddress+homeNetwork.name]").equals([ contractAddress, network.name ]).first();
      }
      async addOrUpdateCustomAsset(asset) {
        this.customAssets.put(asset);
      }
      async addBalances(accountBalances) {
        await this.balances.bulkAdd(accountBalances);
      }
      async getLatestTokenList(url) {
        const candidateLists = await this.tokenLists.where("url").equals(url).reverse().sortBy("retrievedAt");
        if (candidateLists.length > 0) {
          return candidateLists[0];
        }
        return null;
      }
      async saveTokenList(url, list) {
        const cachedList = {
          name: list.name,
          logoURL: list.logoURI,
          url,
          retrievedAt: Date.now(),
          list
        };
        await this.tokenLists.add(cachedList);
      }
      async getLatestTokenLists(urls) {
        const candidateLists = await this.tokenLists.where("url").anyOf(urls).toArray();
        return Object.entries(candidateLists.reduce(((acc, cachedList) => {
          if (!(cachedList.url in acc)) {
            acc[cachedList.url] = cachedList.list;
          } else {
            const orig = acc[cachedList.url];
            const origV = [ orig.version.major, orig.version.minor, orig.version.patch ];
            const cachedV = [ cachedList.list.version.major, cachedList.list.version.minor, cachedList.list.version.patch ];
            if (numberArrayCompare(origV, cachedV) < 0) {
              acc[cachedList.url] = cachedList.list;
            }
          }
          return {
            ...acc
          };
        }), {})).map((([k, v]) => ({
          url: k,
          tokenList: v
        })));
      }
    }
    async function getOrCreateDb(options) {
      return new IndexingDatabase(options);
    }
    const FAST_TOKEN_REFRESH_BLOCK_RANGE = 10;
    const ACCELERATED_TOKEN_REFRESH_TIMEOUT = 300;
    const getAssetsByAddress = assets => {
      const activeAssetsByAddress = assets.reduce(((agg, t) => {
        const newAgg = {
          ...agg
        };
        newAgg[t.contractAddress.toLowerCase()] = t;
        return newAgg;
      }), {});
      return activeAssetsByAddress;
    };
    const getActiveAssetsByAddressForNetwork = (network, activeAssetsToTrack) => {
      const networkActiveAssets = activeAssetsToTrack.filter((asset => asset.homeNetwork.chainID === network.chainID));
      return getAssetsByAddress(networkActiveAssets);
    };
    function allowVerifyAssetByManualImport(asset, verified) {
      if (!isBaselineTrustedAsset(asset) && isUnverifiedAsset(asset)) {
        return !!verified;
      }
      return false;
    }
    class IndexingService extends BaseService {
      scheduledTokenRefresh=false;
      lastPriceAlarmTime=0;
      cachedAssets=Object.fromEntries(Object.keys(NETWORK_BY_CHAIN_ID).map((network => [ network, [] ])));
      static create=async (preferenceService, chainService, dexieOptions) => new this(await getOrCreateDb(dexieOptions), await preferenceService, await chainService);
      constructor(db, preferenceService, chainService) {
        super({
          balance: {
            schedule: {
              periodInMinutes: 1
            },
            handler: () => this.handleBalanceAlarm()
          },
          forceBalance: {
            schedule: {
              periodInMinutes: 12 * HOUR / MINUTE
            },
            handler: () => this.handleBalanceAlarm()
          },
          balanceRefresh: {
            schedule: {
              periodInMinutes: 1
            },
            handler: () => this.handleBalanceRefresh()
          },
          prices: {
            schedule: {
              delayInMinutes: 1,
              periodInMinutes: 10
            },
            handler: () => this.handlePriceAlarm()
          }
        });
        this.db = db;
        this.preferenceService = preferenceService;
        this.chainService = chainService;
      }
      async internalStartService() {
        await super.internalStartService();
        this.connectChainServiceEvents();
        const tokenListLoad = this.fetchAndCacheTokenLists();
        this.chainService.emitter.once("serviceStarted").then((async () => {
          this.handlePriceAlarm();
          const trackedNetworks = await this.chainService.getTrackedNetworks();
          await Promise.allSettled(trackedNetworks.map((async network => {
            await this.cacheAssetsForNetwork(network);
            this.emitter.emit("assetsLoaded", {
              assets: this.getCachedAssets(network),
              loadingScope: "network"
            });
          })));
          tokenListLoad.then((async () => {
            await Promise.allSettled(trackedNetworks.map((async network => {
              await this.cacheAssetsForNetwork(network);
              this.emitter.emit("assetsLoaded", {
                assets: this.getCachedAssets(network),
                loadingScope: "network"
              });
            })));
            await this.loadAccountBalances();
          })).catch((err => {
            lib_logger.error("Token list load failed during startup refresh:", err);
          }));
        }));
      }
      async getAssetsToTrack() {
        return this.db.getAssetsToTrack();
      }
      async addAssetToTrack(asset) {
        await this.db.addAssetToTrack(asset);
      }
      async isTrackingAsset(asset) {
        return this.db.isTrackingAsset(asset);
      }
      async addOrUpdateCustomAsset(asset) {
        await this.db.addOrUpdateCustomAsset(asset);
        await this.cacheAssetsForNetwork(asset.homeNetwork);
      }
      async getLatestAccountBalance(account, network, asset) {
        return this.db.getLatestAccountBalance(account, network, asset);
      }
      getCachedAssets(network) {
        return this.cachedAssets[network.chainID] ?? [];
      }
      async cacheAssetsForNetwork(network) {
        const trackedAssets = (await this.db.getAssetsToTrack()).filter((asset => sameNetwork(asset.homeNetwork, network)));
        const customAssets = await this.db.getActiveCustomAssetsByNetworks([ network ]);
        const tokenListPrefs = await this.preferenceService.getTokenListPreferences();
        const tokenLists = await this.db.getLatestTokenLists(tokenListPrefs.urls);
        this.cachedAssets[network.chainID] = mergeAssets([ network.baseAsset ], trackedAssets, customAssets, networkAssetsFromLists(network, tokenLists));
      }
      getKnownSmartContractAsset(network, contractAddress) {
        const knownAssets = this.getCachedAssets(network);
        const searchResult = knownAssets.find((asset => isSmartContractFungibleAsset(asset) && sameNetwork(asset.homeNetwork, network) && sameQEVMAddress(asset.contractAddress, contractAddress)));
        return searchResult;
      }
      acceleratedTokenRefresh={
        timeout: undefined,
        assetLookups: []
      };
      notifyEnrichedTransaction(enrichedEVMTransaction) {
        const jointAnnotations = typeof enrichedEVMTransaction.annotation === "undefined" ? [] : [ enrichedEVMTransaction.annotation, ...enrichedEVMTransaction.annotation.subannotations ?? [] ];
        jointAnnotations.forEach((async annotation => {
          if (typeof annotation !== "undefined" && annotation.type === "asset-transfer" && isSmartContractFungibleAsset(annotation.assetAmount.asset)) {
            const {asset} = annotation.assetAmount;
            const annotationAddressesOnNetwork = [ annotation.sender.address, annotation.recipient.address ].map((address => ({
              address,
              network: enrichedEVMTransaction.network
            })));
            const trackedAddresesOnNetworks = await this.chainService.filterTrackedAddressesOnNetworks(annotationAddressesOnNetwork);
            const baselineTrustedAsset = typeof this.getKnownSmartContractAsset(enrichedEVMTransaction.network, asset.contractAddress) !== "undefined" || (await this.chainService.filterTrackedAddressesOnNetworks([ {
              address: normalizeQEVMAddress(enrichedEVMTransaction.from),
              network: enrichedEVMTransaction.network
            } ])).length > 0;
            if (baselineTrustedAsset) {
              const assetLookups = trackedAddresesOnNetworks.map((addressOnNetwork => ({
                asset,
                addressOnNetwork
              })));
              this.acceleratedTokenRefresh.assetLookups.push(...assetLookups);
              this.acceleratedTokenRefresh.timeout ??= self.setTimeout(this.handleAcceleratedTokenRefresh.bind(this), ACCELERATED_TOKEN_REFRESH_TIMEOUT);
            }
          }
        }));
      }
      async handleAcceleratedTokenRefresh() {
        try {
          const {assetLookups} = this.acceleratedTokenRefresh;
          this.acceleratedTokenRefresh.timeout = undefined;
          this.acceleratedTokenRefresh.assetLookups = [];
          const lookupsByAddressOnNetwork = assetLookups.reduce(((lookups, {asset, addressOnNetwork: {address, network}}) => {
            const existingAddressOnNetworkIndex = lookups.findIndex((([{address: existingAddress, network: existingNetwork}]) => sameQEVMAddress(address, existingAddress) && sameNetwork(network, existingNetwork)));
            if (existingAddressOnNetworkIndex !== -1) {
              lookups[existingAddressOnNetworkIndex][1].push(asset);
            } else {
              lookups.push([ {
                address,
                network
              }, [ asset ] ]);
            }
            return lookups;
          }), []);
          lookupsByAddressOnNetwork.forEach((([addressOnNetwork, assets]) => {
            this.retrieveTokenBalances(addressOnNetwork, assets);
          }));
        } catch (error) {
          lib_logger.error("Error during accelerated token refresh", error);
        }
      }
      async connectChainServiceEvents() {
        this.chainService.emitter.on("assetTransfers", (async ({addressNetwork, assetTransfers}) => {
          assetTransfers.forEach((transfer => {
            const fungibleAsset = transfer.assetAmount.asset;
            if (isSmartContractFungibleAsset(fungibleAsset)) {
              this.addTokenToTrackByContract(addressNetwork.network, fungibleAsset.contractAddress, {
                discoveryTxHash: {
                  [addressNetwork.address]: transfer.txHash
                }
              });
            }
          }));
        }));
        this.chainService.emitter.on("newAccountToTrack", (async addressOnNetwork => {
          await this.loadAccountBalancesFor(addressOnNetwork);
          this.handlePriceAlarm();
        }));
        this.chainService.emitter.on("transaction", (async ({transaction, forAccounts}) => {
          if ("status" in transaction && transaction.status === 1 && transaction.blockHeight > await this.chainService.getBlockHeight(transaction.network) - FAST_TOKEN_REFRESH_BLOCK_RANGE) {
            this.scheduledTokenRefresh = true;
          }
          if ("status" in transaction && (transaction.status === 1 || transaction.status === 0)) {
            forAccounts.forEach((accountAddress => {
              this.chainService.getLatestBaseAccountBalance({
                address: accountAddress,
                network: transaction.network
              });
            }));
          }
        }));
      }
      async retrieveTokenBalances(unsafeAddressNetwork, smartContractAssets) {
        const addressNetwork = normalizeAddressOnNetwork(unsafeAddressNetwork);
        const balances = await this.chainService.assetData.getTokenBalances(addressNetwork, smartContractAssets?.map((({contractAddress}) => contractAddress)));
        const listedAssetByAddress = (smartContractAssets ?? []).reduce(((acc, asset) => {
          acc[normalizeQEVMAddress(asset.contractAddress)] = asset;
          return acc;
        }), {});
        const removedCustomAssets = await this.db.getRemovedCustomAssetsByNetworks([ addressNetwork.network ]);
        const unfilteredAccountBalances = await Promise.allSettled(balances.map((async ({smartContract: {contractAddress}, amount}) => {
          const knownAsset = listedAssetByAddress[normalizeQEVMAddress(contractAddress)] ?? this.getKnownSmartContractAsset(addressNetwork.network, contractAddress);
          if (amount > 0) {
            if (knownAsset) {
              await this.addAssetToTrack(knownAsset);
            } else {
              await this.addTokenToTrackByContract(addressNetwork.network, contractAddress);
            }
          }
          if (knownAsset) {
            const accountBalance = {
              ...addressNetwork,
              assetAmount: {
                asset: knownAsset,
                amount
              },
              retrievedAt: Date.now(),
              dataSource: "global"
            };
            return accountBalance;
          }
          return undefined;
        })));
        const accountBalances = unfilteredAccountBalances.reduce(((acc, current) => {
          if (current.status === "fulfilled" && current.value && !removedCustomAssets.some((asset => isSameAsset(asset, current.value?.assetAmount.asset)))) {
            return [ ...acc, current.value ];
          }
          return acc;
        }), []);
        await this.db.addBalances(accountBalances);
        this.emitter.emit("accountsWithBalances", {
          balances: accountBalances,
          addressOnNetwork: addressNetwork
        });
        return balances;
      }
      async updateAssetMetadata(asset, metadata) {
        const updatedAsset = {
          ...asset,
          metadata: {
            ...asset.metadata,
            ...metadata
          }
        };
        await this.db.addOrUpdateCustomAsset(updatedAsset);
        await this.cacheAssetsForNetwork(asset.homeNetwork);
        this.emitter.emit("refreshAsset", updatedAsset);
      }
      async hideAsset(asset) {
        const metadata = {
          ...asset.metadata,
          removed: true
        };
        await this.db.addOrUpdateCustomAsset({
          ...asset,
          metadata
        });
        await this.cacheAssetsForNetwork(asset.homeNetwork);
        this.emitter.emit("removeAssetData", asset);
      }
      async removeDiscoveryTxHash(address) {
        const customAssets = await this.db.getAllCustomAssets();
        customAssets.filter((asset => asset.metadata?.discoveryTxHash?.[address] !== undefined)).forEach((assetWithDiscoveryHashReference => {
          const {metadata} = assetWithDiscoveryHashReference;
          if (Object.keys(metadata?.discoveryTxHash ?? {}).length !== 0) {
            delete metadata?.discoveryTxHash?.[address];
            this.updateAssetMetadata(assetWithDiscoveryHashReference, metadata ?? {});
          }
        }));
      }
      async importCustomToken(asset) {
        const customAsset = {
          ...asset,
          metadata: {
            ...asset.metadata ?? {},
            verified: true
          }
        };
        await this.addTokenToTrackByContract(asset.homeNetwork, asset.contractAddress, customAsset.metadata);
        try {
          const addresses = await this.chainService.getTrackedAddressesOnNetwork(asset.homeNetwork);
          await Promise.allSettled(addresses.map((async addressNetwork => {
            await this.retrieveTokenBalances(addressNetwork, [ customAsset ]);
          })));
          return true;
        } catch (error) {
          lib_logger.error("Error retrieving new custom token balances for ", asset, ": ", error);
          return false;
        }
      }
      async addTokenToTrackByContract(network, contractAddress, metadata = {}) {
        const normalizedAddress = normalizeQEVMAddress(contractAddress);
        const knownAsset = this.getKnownSmartContractAsset(network, normalizedAddress);
        if (knownAsset && !allowVerifyAssetByManualImport(knownAsset, metadata?.verified)) {
          await this.addAssetToTrack(knownAsset);
          return knownAsset;
        }
        let customAsset = await this.db.getCustomAssetByAddressAndNetwork(network, normalizedAddress);
        if (!customAsset) {
          customAsset = await this.chainService.assetData.getTokenMetadata({
            contractAddress: normalizedAddress,
            homeNetwork: network
          }) || undefined;
        }
        if (customAsset) {
          const isRemoved = customAsset?.metadata?.removed ?? false;
          const isVerified = metadata.verified ?? false;
          if (!isRemoved || isRemoved && isVerified) {
            if (Object.keys(metadata).length !== 0) {
              customAsset.metadata ??= {};
              if (metadata.verified !== undefined) {
                customAsset.metadata.verified = metadata.verified;
              }
              if (metadata.discoveryTxHash) {
                customAsset.metadata.discoveryTxHash ??= {};
                Object.assign(customAsset.metadata.discoveryTxHash, metadata.discoveryTxHash);
              }
              if (metadata.logoURL) {
                customAsset.metadata.logoURL = metadata.logoURL;
              }
              if (isRemoved) {
                customAsset.metadata.removed = false;
              }
            }
            await this.addOrUpdateCustomAsset(customAsset);
            this.emitter.emit("refreshAsset", customAsset);
            await this.addAssetToTrack(customAsset);
          }
        }
        return customAsset;
      }
      async getBaseAssetsPrices() {
        try {
          const baseAssets = await this.chainService.getNetworkBaseAssets();
          let basicPrices = await getPrices(baseAssets, FIAT_CURRENCIES);
          if (basicPrices.length === 0) {
            basicPrices = await Promise.all([ ZEUS ].map((async network => {
              const provider = this.chainService.providerForNetworkOrThrow(network);
              return getUSDPriceForBaseAsset(network, provider);
            })));
          }
          const measuredAt = Date.now();
          basicPrices.forEach((pricePoint => {
            this.db.savePriceMeasurement(pricePoint, measuredAt, "qevm").catch((err => lib_logger.error("Error saving price point", err, pricePoint, measuredAt)));
          }));
          this.emitter.emit("prices", basicPrices);
        } catch (e) {
          lib_logger.error("Error getting base asset prices", BUILT_IN_NETWORK_BASE_ASSETS, FIAT_CURRENCIES);
        }
      }
      async getTrackedAssetsPrices() {
        const trackedNetworks = await this.chainService.getTrackedNetworks();
        const assetsToTrack = trackedNetworks.flatMap((network => this.getCachedAssets(network)));
        const activeAssetsToTrack = assetsToTrack.filter(isSmartContractFungibleAsset).filter(isTrustedAsset);
        try {
          const allActiveAssetsByAddress = getAssetsByAddress(activeAssetsToTrack);
          const activeAssetsByNetwork = trackedNetworks.map((network => ({
            activeAssetsByAddress: getActiveAssetsByAddressForNetwork(network, activeAssetsToTrack),
            network
          }))).filter((({activeAssetsByAddress}) => Object.keys(activeAssetsByAddress).length > 0));
          const measuredAt = Date.now();
          const activeAssetPricesByNetwork = logRejectedAndReturnFulfilledResults("Failed to retrieve token prices for network", await Promise.allSettled(activeAssetsByNetwork.map((async ({activeAssetsByAddress, network}) => {
            const tokenPrices = await getTokenPrices(Object.keys(activeAssetsByAddress), USD, network);
            if (Object.keys(tokenPrices).length) {
              return tokenPrices;
            }
            const provider = this.chainService.providerForNetworkOrThrow(network);
            return getUSDPriceForTokens(Object.values(activeAssetsByAddress), network, provider);
          }))), activeAssetsByNetwork);
          const activeAssetPrices = activeAssetPricesByNetwork.flatMap((activeAssetPrice => Object.entries(activeAssetPrice)));
          if (activeAssetPrices.length === 0) {
            return;
          }
          const pricePoints = activeAssetPrices.map((([contractAddress, unitPricePoint]) => {
            const asset = allActiveAssetsByAddress[contractAddress.toLowerCase()];
            if (asset) {
              const pricePoint = getPricePoint(asset, unitPricePoint);
              this.db.savePriceMeasurement(pricePoint, measuredAt, "qevm").catch((() => lib_logger.error("Error saving price point", pricePoint, measuredAt)));
              return pricePoint;
            }
            lib_logger.warn("Discarding price from unknown asset", contractAddress, unitPricePoint);
            return null;
          })).filter((pricePoint => pricePoint !== null));
          this.emitter.emit("prices", pricePoints);
        } catch (err) {
          lib_logger.error("Error getting token prices", activeAssetsToTrack, err);
        }
      }
      async handlePriceAlarm() {
        if (Date.now() < this.lastPriceAlarmTime + 5 * SECOND) {
          return;
        }
        this.lastPriceAlarmTime = Date.now();
        this.getBaseAssetsPrices();
        this.getTrackedAssetsPrices();
      }
      async fetchAndCacheTokenLists() {
        const tokenListPrefs = await this.preferenceService.getTokenListPreferences();
        const tokenListFetchResults = await Promise.allSettled(tokenListPrefs.urls.map((async url => {
          const cachedList = await this.db.getLatestTokenList(url);
          if (!cachedList) {
            try {
              const newListRef = await fetchAndValidateTokenList(url);
              await this.db.saveTokenList(url, newListRef.tokenList);
            } catch (err) {
              lib_logger.error(`Error fetching, validating, and saving token list ${url}`, err);
            }
          }
        })));
        lib_logger.errorLogRejectedPromises("Error fetching, validating, and saving token lists", tokenListFetchResults, tokenListPrefs.urls);
        const assetCacheResults = await Promise.allSettled(this.chainService.supportedNetworks.map((async network => {
          await this.cacheAssetsForNetwork(network);
          this.emitter.emit("assetsLoaded", {
            assets: this.getCachedAssets(network),
            loadingScope: "network"
          });
        })));
        lib_logger.errorLogRejectedPromises("Error caching network asset results", assetCacheResults, this.chainService.supportedNetworks);
      }
      async handleBalanceRefresh() {
        if (this.scheduledTokenRefresh) {
          await this.handleBalanceAlarm();
          this.scheduledTokenRefresh = false;
        }
      }
      async loadAccountBalancesFor(addressOnNetwork) {
        const {network} = addressOnNetwork;
        const loadBaseAccountBalance = this.chainService.getLatestBaseAccountBalance(addressOnNetwork);
        const assetsToCheck = this.getCachedAssets(network).filter(isSmartContractFungibleAsset);
        const loadTokenBalances = this.retrieveTokenBalances(addressOnNetwork, assetsToCheck);
        return Promise.all([ loadBaseAccountBalance, loadTokenBalances ]);
      }
      async loadAccountBalances(onlyActiveAccounts = false) {
        const accounts = await this.chainService.getAccountsToTrack(onlyActiveAccounts);
        const balanceLoadResults = await Promise.allSettled(accounts.map((addressOnNetwork => this.loadAccountBalancesFor(addressOnNetwork))));
        lib_logger.errorLogRejectedPromises("Account balances failed to load for", balanceLoadResults, accounts);
      }
      async handleBalanceAlarm() {
        const [, balanceResults] = await Promise.allSettled([ this.fetchAndCacheTokenLists(), this.loadAccountBalances(true) ]);
        if (balanceResults.status === "rejected") {
          lib_logger.error("Balance loading failed during balance alarm:", balanceResults.reason);
        }
      }
    }
    var transactions_lib = __webpack_require__(3776);
    var crypto_browserify = __webpack_require__(1565);
    var argon2 = __webpack_require__(6452);
    var argon2_default = __webpack_require__.n(argon2);
    var Buffer = __webpack_require__(8287)["Buffer"];
    let VaultVersion = function(VaultVersion) {
      VaultVersion[VaultVersion["PBKDF2"] = 1] = "PBKDF2";
      VaultVersion[VaultVersion["Argon2"] = 2] = "Argon2";
      return VaultVersion;
    }({});
    function bufferToBase64(array) {
      return Buffer.from(array).toString("base64");
    }
    function base64ToBuffer(s) {
      return Buffer.from(s, "base64");
    }
    async function generateSalt() {
      const saltBuffer = crypto.getRandomValues(new Uint8Array(64));
      return bufferToBase64(saltBuffer);
    }
    function requireCryptoGlobal(message) {
      if (__webpack_require__.g.crypto === undefined) {
        throw new Error(`${message || "Qwal"} requires WebCrypto API support — is this being run in a modern browser?`);
      }
    }
    async function deprecatedDerivePbkdf2KeyFromPassword(password, existingSalt) {
      const {crypto} = __webpack_require__.g;
      const salt = existingSalt || await generateSalt();
      const encoder = new TextEncoder;
      const derivationKey = await crypto.subtle.importKey("raw", encoder.encode(password), {
        name: "PBKDF2"
      }, false, [ "deriveKey" ]);
      const key = await crypto.subtle.deriveKey({
        name: "PBKDF2",
        salt: encoder.encode(salt),
        iterations: 1e6,
        hash: "SHA-256"
      }, derivationKey, {
        name: "AES-GCM",
        length: 256
      }, false, [ "encrypt", "decrypt" ]);
      return {
        key,
        salt
      };
    }
    async function deriveArgon2KeyFromPassword(password, existingSalt) {
      const {crypto} = __webpack_require__.g;
      const salt = existingSalt || await generateSalt();
      const {hash} = await argon2_default().hash({
        pass: password,
        salt,
        hashLen: 32
      });
      const key = await crypto.subtle.importKey("raw", hash, {
        name: "AES-GCM",
        length: 256
      }, false, [ "encrypt", "decrypt" ]);
      return {
        key,
        salt
      };
    }
    async function deriveSymmetricKeyFromPassword(version, password, existingSalt) {
      switch (version) {
       case VaultVersion.PBKDF2:
        return deprecatedDerivePbkdf2KeyFromPassword(password, existingSalt);

       case VaultVersion.Argon2:
        return deriveArgon2KeyFromPassword(password, existingSalt);

       default:
        throw new Error(`Unsupported vault version: ${version}`);
      }
    }
    async function encryptVault(vaultData) {
      requireCryptoGlobal("Encrypting a vault");
      const {crypto} = __webpack_require__.g;
      const {vault, passwordOrSaltedKey, version} = vaultData;
      const {key, salt} = typeof passwordOrSaltedKey === "string" ? await deriveSymmetricKeyFromPassword(version, passwordOrSaltedKey) : passwordOrSaltedKey;
      const encoder = new TextEncoder;
      const initializationVector = crypto.getRandomValues(new Uint8Array(16));
      const encodedPlaintext = encoder.encode(JSON.stringify(vault));
      const cipherText = await crypto.subtle.encrypt({
        name: "AES-GCM",
        iv: initializationVector
      }, key, encodedPlaintext);
      return {
        salt,
        initializationVector: bufferToBase64(initializationVector),
        cipherText: bufferToBase64(cipherText)
      };
    }
    async function decryptVault(vaultData) {
      const {vault, passwordOrSaltedKey} = vaultData;
      requireCryptoGlobal("Decrypting a vault");
      const {crypto} = __webpack_require__.g;
      const {initializationVector, salt, cipherText} = vault;
      const {key} = typeof passwordOrSaltedKey === "string" ? await deriveSymmetricKeyFromPassword(vaultData.version, passwordOrSaltedKey, salt) : passwordOrSaltedKey;
      const plaintext = await crypto.subtle.decrypt({
        name: "AES-GCM",
        iv: base64ToBuffer(initializationVector)
      }, key, base64ToBuffer(cipherText));
      return JSON.parse((new TextDecoder).decode(plaintext));
    }
    async function getEncryptedVaults() {
      const data = await browser_polyfill_default().storage.local.get("qwalVaults");
      if (!("qwalVaults" in data) || typeof data.qwalVaults !== "object") {
        return {
          version: VaultVersion.Argon2,
          vaults: []
        };
      }
      const {qwalVaults} = data;
      if ("version" in qwalVaults && "vaults" in qwalVaults && (qwalVaults.version === VaultVersion.PBKDF2 || qwalVaults.version === VaultVersion.Argon2) && Array.isArray(qwalVaults.vaults)) {
        return qwalVaults;
      }
      throw new Error("Encrypted vaults are using an unkown serialization format");
    }
    function equalVaults(vault1, vault2) {
      if (vault1.salt !== vault2.salt) {
        return false;
      }
      if (vault1.initializationVector !== vault2.initializationVector) {
        return false;
      }
      if (vault1.cipherText !== vault2.cipherText) {
        return false;
      }
      return true;
    }
    async function writeLatestEncryptedVault(encryptedVault) {
      const serializedVaults = await getEncryptedVaults();
      const vaults = [ ...serializedVaults.vaults ];
      const currentLatest = vaults.reduce(((newestVault, nextVault) => newestVault && newestVault.timeSaved > nextVault.timeSaved ? newestVault : nextVault), null);
      const oldVault = currentLatest && currentLatest.vault;
      if (!oldVault || !equalVaults(oldVault, encryptedVault)) {
        await browser_polyfill_default().storage.local.set({
          qwalVaults: {
            ...serializedVaults,
            vaults: [ ...serializedVaults.vaults, {
              timeSaved: Date.now(),
              vault: encryptedVault
            } ]
          }
        });
      }
    }
    async function migrateVaultsToLatestVersion(password) {
      const serializedVaults = await getEncryptedVaults();
      if (serializedVaults.version === VaultVersion.Argon2) {
        return {
          encryptedData: serializedVaults,
          migrated: false
        };
      }
      const {vaults} = serializedVaults;
      try {
        const newVaults = await Promise.all(vaults.map((async ({vault, timeSaved}) => {
          const deprecatedSaltedKey = await deprecatedDerivePbkdf2KeyFromPassword(password, vault.salt);
          const newSaltedKey = await deriveArgon2KeyFromPassword(password, vault.salt);
          const deprecatedDecryptedVault = await decryptVault({
            version: VaultVersion.PBKDF2,
            vault,
            passwordOrSaltedKey: deprecatedSaltedKey
          });
          const newEncryptedVault = await encryptVault({
            version: VaultVersion.Argon2,
            vault: deprecatedDecryptedVault,
            passwordOrSaltedKey: newSaltedKey
          });
          const newDecryptedVault = await decryptVault({
            version: VaultVersion.Argon2,
            vault: newEncryptedVault,
            passwordOrSaltedKey: newSaltedKey
          });
          if (JSON.stringify(newDecryptedVault) !== JSON.stringify(deprecatedDecryptedVault)) {
            throw new Error("Failed to migrate vaults to Argon2. Decrypted vaults do not match.");
          }
          return {
            timeSaved,
            vault: newEncryptedVault
          };
        })));
        const newSerializedVaults = {
          version: VaultVersion.Argon2,
          vaults: newVaults
        };
        await browser_polyfill_default().storage.local.set({
          qwalVaults: newSerializedVaults
        });
        return {
          encryptedData: newSerializedVaults,
          migrated: true
        };
      } catch (error) {
        lib_logger.error("Failed to migrate vaults to Argon2", error);
        return {
          encryptedData: serializedVaults,
          migrated: false,
          errorMessage: String(error)
        };
      }
    }
    const DEFAULT_AUTOLOCK_INTERVAL = 60 * MINUTE;
    const defaultPreferences = {
      tokenLists: {
        autoUpdate: false,
        urls: [ "https://raw.githubusercontent.com/k0oda/quantumevm-static/main/qevm.tokenlist.json" ]
      },
      currency: USD,
      defaultWallet: false,
      selectedAccount: {
        address: "",
        network: ZEUS
      },
      accountSignersSettings: [],
      autoLockInterval: DEFAULT_AUTOLOCK_INTERVAL,
      shouldShowNotifications: false
    };
    const defaults = defaultPreferences;
    var internal_signer_Buffer = __webpack_require__(8287)["Buffer"];
    let SignerImportSource = function(SignerImportSource) {
      SignerImportSource["import"] = "import";
      SignerImportSource["internal"] = "internal";
      return SignerImportSource;
    }({});
    let SignerSourceTypes = function(SignerSourceTypes) {
      SignerSourceTypes["keyPair"] = "keyPair";
      SignerSourceTypes["jsonFile"] = "jsonFile";
      return SignerSourceTypes;
    }({});
    function normalizeSeedPhrase(phrase) {
      return phrase.trim().toLowerCase().replace(/[^a-z\s]/g, "").replace(/\s+/g, " ");
    }
    class InternalSignerService extends BaseService {
      #cachedKey=null;
      #cachedVaultVersion=VaultVersion.PBKDF2;
      #keyPairs=[];
      #signerMetadata={};
      #hiddenAccounts={};
      #sessionId=null;
      #internalAutoLockInterval=DEFAULT_AUTOLOCK_INTERVAL;
      static create=async preferenceService => new this(await preferenceService);
      constructor(preferenceService) {
        super({
          autolock: {
            schedule: {
              periodInMinutes: 1
            },
            handler: () => {
              this.autolockIfNeeded();
            }
          }
        });
        this.preferenceService = preferenceService;
      }
      async internalStartService() {
        await lib_utils.SigningKey.initialize();
        await this.#validateSession();
        await super.internalStartService();
        this.#internalAutoLockInterval = await this.preferenceService.getAutoLockInterval();
        if ((await getEncryptedVaults()).vaults.length > 0) {
          this.emitter.emit("locked", this.locked());
        }
      }
      async internalStopService() {
        await this.lock();
        await super.internalStopService();
      }
      async updateAutoLockInterval() {
        this.#internalAutoLockInterval = await this.preferenceService.getAutoLockInterval();
        await this.autolockIfNeeded();
      }
      locked() {
        return this.#cachedKey === null;
      }
      #unlock() {
        this.lastActivity = Date.now();
        this.lastOutsideActivity = Date.now();
        this.#createSession();
        this.emitter.emit("locked", false);
      }
      async unlock(password, ignoreExistingVaults = false) {
        if (!this.locked()) {
          lib_logger.warn("InternalSignerService is already unlocked!");
          this.#unlock();
          return true;
        }
        const {encryptedData: {vaults, version}, ...migrationResults} = await migrateVaultsToLatestVersion(password);
        this.#cachedVaultVersion = version;
        if (migrationResults.migrated) {
          this.emitter.emit("vaultMigrationCompleted", {
            newVaultVersion: version
          });
        } else if (migrationResults.errorMessage !== undefined) {
          this.emitter.emit("vaultMigrationCompleted", {
            errorMessage: migrationResults.errorMessage
          });
        }
        if (!ignoreExistingVaults) {
          const currentEncryptedVault = vaults.slice(-1)[0]?.vault;
          if (currentEncryptedVault) {
            const saltedKey = await deriveSymmetricKeyFromPassword(version, password, currentEncryptedVault.salt);
            let plainTextVault;
            try {
              plainTextVault = await decryptVault({
                version,
                vault: currentEncryptedVault,
                passwordOrSaltedKey: saltedKey
              });
              this.#cachedKey = saltedKey;
            } catch (err) {
              return false;
            }
            this.#signerMetadata = {};
            this.#keyPairs = [];
            for (const pk of plainTextVault.keyPairs || []) {
              const wallet = await qethers_lib.Wallet.create(new lib_utils.SigningKey(pk.privateKey, pk.publicKey));
              const existingWallet = this.#keyPairs.find((item => item.address.toLowerCase() === wallet.address.toLowerCase()));
              if (!existingWallet) {
                this.#keyPairs.push(wallet);
              }
            }
            this.#signerMetadata = {
              ...plainTextVault.metadata
            };
            this.#hiddenAccounts = {
              ...plainTextVault.hiddenAccounts
            };
          }
        }
        if (!this.#cachedKey) {
          this.#cachedKey = await deriveSymmetricKeyFromPassword(version, password);
          await this.#persistInternalSigners();
        }
        this.#unlock();
        this.#emitInternalSigners();
        return true;
      }
      async lock() {
        this.lastActivity = undefined;
        this.lastOutsideActivity = undefined;
        this.#cachedKey = null;
        this.#signerMetadata = {};
        this.#keyPairs = [];
        this.#clearSession();
        this.emitter.emit("locked", true);
        this.#emitInternalSigners();
      }
      markOutsideActivity() {
        if (typeof this.lastOutsideActivity !== "undefined") {
          this.lastOutsideActivity = Date.now();
        }
      }
      async autolockIfNeeded() {
        if (typeof this.lastActivity === "undefined" || typeof this.lastOutsideActivity === "undefined") {
          if (!this.locked()) {
            await this.lock();
          }
          return;
        }
        const now = Date.now();
        const timeSinceLastActivity = now - this.lastActivity;
        const timeSinceLastOutsideActivity = now - this.lastOutsideActivity;
        if (timeSinceLastActivity >= this.#internalAutoLockInterval) {
          this.lock();
        } else if (timeSinceLastOutsideActivity >= this.#internalAutoLockInterval) {
          this.lock();
        }
      }
      requireUnlocked() {
        if (this.locked()) {
          throw new Error("InternalSignerService must be unlocked.");
        }
        this.lastActivity = Date.now();
        this.markOutsideActivity();
      }
      async importSigner(signerMetadata) {
        this.requireUnlocked();
        try {
          let address;
          if (signerMetadata.type === SignerSourceTypes.keyPair) {
            address = await this.#importKeyPair(signerMetadata.mnemonic);
          } else if (signerMetadata.type === SignerSourceTypes.jsonFile) {
            const {jsonFile, password} = signerMetadata;
            address = await this.#importJSON(jsonFile, password);
          } else {
            throw new Error("Unexpected signer type encountered during Signer import");
          }
          const normalizedAddress = normalizeQEVMAddress(address);
          this.#hiddenAccounts[normalizedAddress] = false;
          await this.#persistInternalSigners();
          this.emitter.emit("address", normalizedAddress);
          this.#emitInternalSigners();
          return normalizedAddress;
        } catch (error) {
          lib_logger.error("Signer import failed:", error);
          return null;
        }
      }
      async #importKeyPair(mnemonics) {
        const normalizedMnemonics = normalizeSeedPhrase(mnemonics);
        const newWallet = await qethers_lib.Wallet.create(normalizedMnemonics);
        const normalizedAddress = normalizeQEVMAddress(newWallet.address);
        if (this.#findSigner(normalizedAddress)) {
          return normalizedAddress;
        }
        this.#keyPairs.push(newWallet);
        this.#signerMetadata[normalizedAddress] = {
          source: SignerImportSource.import
        };
        return normalizedAddress;
      }
      async #importJSON(jsonFile, password) {
        const newWallet = await qethers_lib.Wallet.fromEncryptedJson(jsonFile, password);
        const normalizedAddress = normalizeQEVMAddress(newWallet.address);
        if (this.#findSigner(normalizedAddress)) {
          return normalizedAddress;
        }
        this.#keyPairs.push(newWallet);
        this.#signerMetadata[normalizedAddress] = {
          source: SignerImportSource.import
        };
        return normalizedAddress;
      }
      getSignerSourceForAddress(address) {
        const signerWithType = this.#findSigner(address);
        if (!signerWithType) return null;
        const normalizedAddress = normalizeQEVMAddress(address);
        const metadataKeys = Object.keys(this.#signerMetadata);
        const matchingMetadataKey = metadataKeys.find((key => normalizeQEVMAddress(key) === normalizedAddress));
        if (matchingMetadataKey) {
          return this.#signerMetadata[matchingMetadataKey].source;
        }
        return null;
      }
      getKeyPairs() {
        this.requireUnlocked();
        return this.#keyPairs.map((wallet => ({
          privateKey: wallet.privateKey,
          publicKey: wallet.publicKey,
          address: normalizeQEVMAddress(wallet.address)
        })));
      }
      async removeAccount(address) {
        const normalizedAddress = normalizeQEVMAddress(address);
        this.#hiddenAccounts[normalizedAddress] = true;
        const hiddenAccountKeys = Object.keys(this.#hiddenAccounts);
        hiddenAccountKeys.forEach((key => {
          if (normalizeQEVMAddress(key) === normalizedAddress) {
            this.#hiddenAccounts[key] = true;
          }
        }));
        const keyPairSigner = this.#findkeyPair(normalizedAddress);
        if (keyPairSigner === null) return;
        if (keyPairSigner !== null) {
          this.#removekeyPair(normalizedAddress);
        }
        await this.#persistInternalSigners();
        this.#emitInternalSigners();
      }
      #removekeyPair(address) {
        const normalizedAddress = normalizeQEVMAddress(address);
        const filteredKeyPairs = this.#keyPairs.filter((wallet => normalizeQEVMAddress(wallet.address) !== normalizedAddress));
        if (filteredKeyPairs.length === this.#keyPairs.length) {
          throw new Error(`Attempting to remove wallet that does not exist. Address: (${address})`);
        }
        this.#keyPairs = filteredKeyPairs;
        const metadataKeys = Object.keys(this.#signerMetadata);
        const matchingMetadataKey = metadataKeys.find((key => normalizeQEVMAddress(key) === normalizedAddress));
        if (matchingMetadataKey) {
          delete this.#signerMetadata[matchingMetadataKey];
        }
        return filteredKeyPairs;
      }
      async exportPrivateKey(address) {
        this.requireUnlocked();
        const signerKeyPair = this.#findSigner(address);
        if (!signerKeyPair) {
          lib_logger.error(`Export private-public key pair for address ${address} failed`);
          return null;
        }
        return signerKeyPair.signer.privateKey;
      }
      async exportMnemonic(_address) {
        throw new Error("This needs to be implemented to return mnemonics from the Wallet, not the keyring");
      }
      #findkeyPair(account) {
        const normalizedAccount = normalizeQEVMAddress(account);
        const keyPair = this.#keyPairs.find((item => normalizeQEVMAddress(item.address) === normalizedAccount));
        return keyPair ?? null;
      }
      #findSigner(account) {
        const keyPair = this.#findkeyPair(account);
        if (keyPair) {
          return {
            signer: keyPair,
            type: SignerSourceTypes.keyPair
          };
        }
        return null;
      }
      async signTransaction(addressOnNetwork, txRequest) {
        this.requireUnlocked();
        const {address: account, network} = addressOnNetwork;
        const signerKeyPair = this.#findSigner(account);
        if (!signerKeyPair) {
          throw new Error(`Signing transaction failed. Signer for address ${account} was not found.`);
        }
        const ethersTxRequest = ethersTransactionFromTransactionRequest(txRequest);
        const signedRawTx = await signerKeyPair.signer.signTransaction(ethersTxRequest);
        const tx = (0, transactions_lib.parse)(signedRawTx);
        if (!tx.hash || !tx.from || !tx.signature) {
          throw new Error("Transaction doesn't appear to have been signed.");
        }
        const {to, gasPrice, gasLimit, maxFeePerGas, maxPriorityFeePerGas, hash, from, nonce, data, value, type, signature} = tx;
        if (typeof maxPriorityFeePerGas === "undefined" || typeof maxFeePerGas === "undefined" || type !== 2) {
          const signedTx = {
            hash,
            from,
            to,
            nonce,
            input: data,
            value: value.toBigInt(),
            type,
            gasPrice: gasPrice?.toBigInt() ?? null,
            gasLimit: gasLimit.toBigInt(),
            maxFeePerGas: null,
            maxPriorityFeePerGas: null,
            signature,
            blockHash: null,
            blockHeight: null,
            asset: network.baseAsset,
            network
          };
          return signedTx;
        }
        const signedTx = {
          hash,
          from,
          to,
          nonce,
          input: data,
          value: value.toBigInt(),
          type,
          gasPrice: null,
          maxFeePerGas: maxFeePerGas.toBigInt(),
          maxPriorityFeePerGas: maxPriorityFeePerGas.toBigInt(),
          gasLimit: gasLimit.toBigInt(),
          signature,
          blockHash: null,
          blockHeight: null,
          asset: network.baseAsset,
          network
        };
        return signedTx;
      }
      async signTypedData({typedData, account}) {
        this.requireUnlocked();
        const {domain, types, message} = typedData;
        const signerWithType = this.#findSigner(account);
        if (!signerWithType) {
          throw new Error(`Signing data failed. Signer for address ${account} was not found.`);
        }
        const {EIP712Domain: _, ...typesForSigning} = types;
        try {
          const signature = await signerWithType.signer._signTypedData(domain, typesForSigning, message);
          return signature;
        } catch (error) {
          throw new Error("Signing data failed");
        }
      }
      async personalSign({signingData, account}) {
        this.requireUnlocked();
        const signerWithType = this.#findSigner(account);
        if (!signerWithType) {
          throw new Error(`Personal sign failed. Signer for address ${account} was not found.`);
        }
        const messageBytes = (0, lib_utils.arrayify)(signingData);
        try {
          const signature = await signerWithType.signer.signMessage(messageBytes);
          return signature;
        } catch (error) {
          throw new Error("Signing data failed");
        }
      }
      generateNewMnemonics() {
        this.requireUnlocked();
        const wordlist = qethers_lib.wordlists.en;
        const WORD_COUNT = 24;
        const ENTROPY_BITS = 256;
        const entropyBytes = crypto_browserify.randomBytes(ENTROPY_BITS / 8);
        const hash = crypto_browserify.createHash("sha256").update(entropyBytes).digest();
        const checksumBits = ENTROPY_BITS / 32;
        const allBytes = internal_signer_Buffer.concat([ entropyBytes, hash.slice(0, 1) ]);
        let bitString = "";
        for (const byte of allBytes) {
          bitString += byte.toString(2).padStart(8, "0");
        }
        bitString = bitString.slice(0, ENTROPY_BITS + checksumBits);
        const result = [];
        for (let i = 0; i < WORD_COUNT; i++) {
          const chunk = bitString.slice(i * 11, (i + 1) * 11);
          const index = parseInt(chunk, 2);
          result.push(wordlist.getWord(index));
        }
        const normalized = normalizeSeedPhrase(result.join(" ")).split(" ");
        return {
          id: "AA",
          mnemonic: normalized
        };
      }
      #emitInternalSigners() {
        if (this.locked()) {
          this.emitter.emit("internalSigners", {
            keyPairs: [],
            metadata: {}
          });
        } else {
          const keyPairs = this.getKeyPairs();
          this.emitter.emit("internalSigners", {
            keyPairs,
            metadata: {
              ...this.#signerMetadata
            }
          });
        }
      }
      async #persistInternalSigners() {
        this.requireUnlocked();
        if (this.#cachedKey !== null) {
          const SerializedKeyPairs = this.#keyPairs.map((wallet => ({
            version: 1,
            privateKey: wallet.privateKey,
            publicKey: wallet.publicKey
          })));
          const hiddenAccounts = {
            ...this.#hiddenAccounts
          };
          const metadata = {
            ...this.#signerMetadata
          };
          const vault = await encryptVault({
            version: this.#cachedVaultVersion,
            passwordOrSaltedKey: this.#cachedKey,
            vault: {
              keyPairs: SerializedKeyPairs,
              metadata,
              hiddenAccounts
            }
          });
          await writeLatestEncryptedVault(vault);
        }
      }
      async #validateSession() {
        try {
          if (typeof window !== "undefined" && window.sessionStorage) {
            const sessionId = window.sessionStorage.getItem("qwal_session");
            const unlockTimestamp = window.sessionStorage.getItem("qwal_unlock_time");
            if (!sessionId || !unlockTimestamp) {
              if (!this.locked()) {
                await this.lock();
              }
              return;
            }
            const unlockTime = parseInt(unlockTimestamp, 10);
            const now = Date.now();
            const sessionValid = now - unlockTime < 24 * 60 * 60 * 1e3;
            if (!sessionValid) {
              window.sessionStorage.removeItem("qwal_session");
              window.sessionStorage.removeItem("qwal_unlock_time");
              if (!this.locked()) {
                await this.lock();
              }
              return;
            }
            this.#sessionId = sessionId;
          }
        } catch (error) {
          lib_logger.warn("Session validation failed, ensuring wallet is locked:", error);
          if (!this.locked()) {
            await this.lock();
          }
        }
      }
      #createSession() {
        try {
          if (typeof window !== "undefined" && window.sessionStorage) {
            const sessionId = `qwal_session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
            const unlockTime = Date.now();
            window.sessionStorage.setItem("qwal_session", sessionId);
            window.sessionStorage.setItem("qwal_unlock_time", unlockTime.toString());
            this.#sessionId = sessionId;
          }
        } catch (error) {
          lib_logger.warn("Failed to create session:", error);
        }
      }
      #clearSession() {
        try {
          if (typeof window !== "undefined" && window.sessionStorage) {
            window.sessionStorage.removeItem("qwal_session");
            window.sessionStorage.removeItem("qwal_unlock_time");
          }
        } catch (error) {
          lib_logger.warn("Failed to clear session:", error);
        }
        this.#sessionId = null;
      }
    }
    var jtd_validators = __webpack_require__(1415);
    var json_validators = __webpack_require__(5307);
    const abi = [ "function tokenURI(uint256 _tokenId) external view returns (string)" ];
    async function getTokenURI(provider, tokenAddress, tokenID) {
      const tokenContract = new qethers_lib.Contract(tokenAddress, abi).connect(provider);
      return tokenContract.tokenURI(tokenID);
    }
    async function getTokenMetadata(provider, tokenAddress, tokenID) {
      const uri = await getTokenURI(provider, tokenAddress, tokenID);
      if (uri) {
        const jsonResponse = await (0, web_lib.fetchJson)(uri);
        if ((0, jtd_validators.QJ)(jsonResponse)) {
          return {
            name: jsonResponse.name,
            description: jsonResponse.description,
            image: jsonResponse.image
          };
        }
        lib_logger.warn("Invalid QERC-721 metadata", tokenAddress, tokenID, jsonResponse);
      } else {
        lib_logger.warn("No token URI was found, perhaps this isn't an QERC-721 metadata-compliant NFT?", tokenAddress, tokenID);
      }
      return undefined;
    }
    const ipfsGateway = new URL("https://ipfs.io/ipfs/");
    const arweaveGateway = new URL("https://arweave.net/");
    function changeURLProtocolAndBase(url, baseURL) {
      const newURL = new URL(url);
      newURL.protocol = baseURL.protocol;
      newURL.hostname = baseURL.hostname;
      newURL.pathname = `${baseURL.pathname}/${url.hostname}`;
      if (url.pathname !== "" && url.pathname !== "/") {
        newURL.pathname += url.pathname;
      }
      return newURL;
    }
    function storageGatewayURL(url) {
      const protocol = url.slice(0, url.indexOf("//"));
      switch (protocol) {
       case "ipfs:":
        {
          const contentId = url.split("ipfs://")[1];
          return new URL(contentId, ipfsGateway);
        }

       case "ar:":
        return changeURLProtocolAndBase(new URL(url), arweaveGateway);

       default:
        return new URL(url);
      }
    }
    const QEVM_NAME_SUPPORTED_NETWORKS = [ ZEUS ];
    function ensResolverFor(chainService) {
      return {
        type: "ENS",
        canAttemptNameResolution() {
          return true;
        },
        canAttemptAvatarResolution(addressOrNameOnNetwork) {
          if ("name" in addressOrNameOnNetwork) {
            return this.canAttemptAddressResolution(addressOrNameOnNetwork);
          }
          return true;
        },
        canAttemptAddressResolution({name, network}) {
          return name.endsWith(".qevm") && QEVM_NAME_SUPPORTED_NETWORKS.some((supportedNetwork => sameNetwork(network, supportedNetwork)));
        },
        async lookUpAddressForName({name, network}) {
          const address = await (chainService.providerForNetwork(ZEUS)?.resolveName(name));
          if (address === undefined || address === null) {
            return undefined;
          }
          return {
            address,
            network
          };
        },
        async lookUpAvatar(addressOrNameOnNetwork) {
          const {network} = addressOrNameOnNetwork;
          const {name} = "name" in addressOrNameOnNetwork ? addressOrNameOnNetwork : await this.lookUpNameForAddress(addressOrNameOnNetwork) ?? {
            name: undefined
          };
          const provider = chainService.providerForNetwork(ZEUS);
          if (name === undefined || provider === undefined) {
            return undefined;
          }
          const {url: avatarUrn} = await ((await provider.getResolver(name))?.getAvatar()) ?? {
            url: undefined
          };
          if (avatarUrn === undefined) {
            return undefined;
          }
          return {
            uri: avatarUrn,
            network
          };
        },
        async lookUpNameForAddress({address, network}) {
          const name = await (chainService.providerForNetwork(ZEUS)?.lookupAddress(address));
          if (name === undefined || name === null) {
            return undefined;
          }
          return {
            name,
            network
          };
        }
      };
    }
    function addressBookResolverFor(preferenceService) {
      return {
        type: "qwal-address-book",
        canAttemptNameResolution() {
          return true;
        },
        canAttemptAvatarResolution() {
          return false;
        },
        canAttemptAddressResolution() {
          return true;
        },
        async lookUpAddressForName(nameOnNetwork) {
          return preferenceService.lookUpAddressForName(nameOnNetwork);
        },
        async lookUpAvatar() {
          throw new Error("Avatar resolution not supported in address book.");
        },
        async lookUpNameForAddress(addressOnNetwork) {
          return preferenceService.lookUpNameForAddress(addressOnNetwork);
        }
      };
    }
    function knownContractResolverFor(preferenceService) {
      return {
        type: "qwal-known-contracts",
        canAttemptNameResolution() {
          return true;
        },
        canAttemptAvatarResolution() {
          return false;
        },
        canAttemptAddressResolution() {
          return true;
        },
        lookUpAddressForName: preferenceService.lookUpAddressForContractName.bind(preferenceService),
        async lookUpAvatar() {
          throw new Error("Avatar resolution not supported in known contracts resolver.");
        },
        lookUpNameForAddress: preferenceService.lookUpNameForContractAddress.bind(preferenceService)
      };
    }
    const resolvers = {
      ensResolverFor,
      addressBookResolverFor,
      knownContractResolverFor
    };
    const MINIMUM_RECORD_EXPIRY = 10 * SECOND;
    class NameService extends BaseService {
      resolvers=[];
      cachedResolvedEIP155Avatars={};
      cachedResolvedNames={
        QEVM: {}
      };
      static create=async (chainService, preferenceService) => new this(await chainService, await preferenceService);
      constructor(chainService, preferenceService) {
        super({});
        this.chainService = chainService;
        this.resolvers = [ addressBookResolverFor(preferenceService), knownContractResolverFor(preferenceService), ensResolverFor(chainService) ];
        preferenceService.emitter.on("addressBookEntryModified", (async ({network, address}) => {
          this.clearNameCacheEntry(network.chainID, address);
          await this.lookUpName({
            network,
            address
          });
        }));
        chainService.emitter.on("newAccountToTrack", (async addressOnNetwork => {
          try {
            await this.lookUpName(addressOnNetwork);
          } catch (error) {
            lib_logger.error("Error fetching name for address", addressOnNetwork, error);
          }
        }));
        this.emitter.on("resolvedName", (async ({from: {addressOnNetwork}}) => {
          try {
            const avatar = await this.lookUpAvatar(addressOnNetwork);
            if (avatar) {
              this.emitter.emit("resolvedAvatar", avatar);
            }
          } catch (error) {
            lib_logger.error("Error fetching avatar for address", addressOnNetwork, error);
          }
        }));
      }
      async lookUpEthereumAddress(nameOnNetwork) {
        const workingResolvers = this.resolvers.filter((resolver => resolver.canAttemptAddressResolution(nameOnNetwork)));
        const firstMatchingResolution = (await Promise.allSettled(workingResolvers.map((async resolver => ({
          type: resolver.type,
          resolved: await resolver.lookUpAddressForName(nameOnNetwork)
        }))))).filter(isFulfilledPromise).find((({value: {resolved}}) => resolved !== undefined))?.value;
        if (firstMatchingResolution === undefined || firstMatchingResolution.resolved === undefined) {
          return undefined;
        }
        const {type: resolverType, resolved: addressOnNetwork} = firstMatchingResolution;
        const normalizedAddressOnNetwork = normalizeAddressOnNetwork(addressOnNetwork);
        const resolvedRecord = {
          from: nameOnNetwork,
          resolved: {
            addressOnNetwork: normalizedAddressOnNetwork
          },
          system: resolverType
        };
        this.emitter.emit("resolvedAddress", resolvedRecord);
        return resolvedRecord;
      }
      async lookUpName(addressOnNetwork, checkCache = true) {
        const {address, network} = normalizeAddressOnNetwork(addressOnNetwork);
        if (!this.cachedResolvedNames[network.family][network.chainID]) {
          this.cachedResolvedNames[network.family][network.chainID] = {};
        }
        const cachedResolvedNameRecord = this.cachedResolvedNames[network.family]?.[network.chainID]?.[address];
        if (checkCache && cachedResolvedNameRecord) {
          const {resolved: {expiresAt}} = cachedResolvedNameRecord;
          if (expiresAt >= Date.now()) {
            return cachedResolvedNameRecord;
          }
        }
        const workingResolvers = this.resolvers.filter((resolver => resolver.canAttemptNameResolution({
          address,
          network
        })));
        const localResolvers = [ ...workingResolvers ].filter((resolver => resolver.type === "qwal-address-book" || resolver.type === "qwal-known-contracts"));
        const remoteResolvers = [ ...workingResolvers ].filter((resolver => resolver.type !== "qwal-address-book" && resolver.type !== "qwal-known-contracts"));
        let firstMatchingResolution = (await Promise.allSettled(localResolvers.map((async resolver => ({
          type: resolver.type,
          resolved: await resolver.lookUpNameForAddress({
            address,
            network
          })
        }))))).filter(isFulfilledPromise).find((({value: {resolved}}) => resolved !== undefined))?.value;
        if (!firstMatchingResolution) {
          firstMatchingResolution = (await Promise.allSettled(remoteResolvers.map((async resolver => ({
            type: resolver.type,
            resolved: await resolver.lookUpNameForAddress({
              address,
              network
            })
          }))))).filter(isFulfilledPromise).find((({value: {resolved}}) => resolved !== undefined))?.value;
        }
        if (firstMatchingResolution === undefined || firstMatchingResolution.resolved === undefined) {
          return undefined;
        }
        const {type: resolverType, resolved: nameOnNetwork} = firstMatchingResolution;
        const nameRecord = {
          from: {
            addressOnNetwork: {
              address,
              network
            }
          },
          resolved: {
            nameOnNetwork,
            expiresAt: Date.now() + MINIMUM_RECORD_EXPIRY
          },
          system: resolverType
        };
        const cachedNameOnNetwork = cachedResolvedNameRecord?.resolved.nameOnNetwork;
        this.cachedResolvedNames[network.family][network.chainID][address] = nameRecord;
        if (cachedNameOnNetwork?.name !== nameOnNetwork.name) {
          this.emitter.emit("resolvedName", nameRecord);
        }
        return nameRecord;
      }
      clearNameCacheEntry(chainId, address) {
        if (this.cachedResolvedNames.QEVM[chainId]?.[address] !== undefined) {
          delete this.cachedResolvedNames.QEVM[chainId][address];
        }
      }
      removeAccount(address) {
        const chainIds = Object.keys(this.cachedResolvedNames.QEVM);
        chainIds.forEach((chainId => {
          this.clearNameCacheEntry(chainId, address);
        }));
      }
      async lookUpAvatar(addressOnNetwork) {
        const workingResolvers = this.resolvers.filter((resolver => resolver.canAttemptAvatarResolution(addressOnNetwork)));
        const firstMatchingResolution = (await Promise.allSettled(workingResolvers.map((async resolver => ({
          type: resolver.type,
          resolved: await resolver.lookUpAvatar(addressOnNetwork)
        }))))).filter(isFulfilledPromise).find((({value: {resolved}}) => resolved !== undefined))?.value;
        if (firstMatchingResolution === undefined || firstMatchingResolution.resolved === undefined) {
          return undefined;
        }
        const {type: resolverType, resolved: {uri: avatarUri}} = firstMatchingResolution;
        const baseResolvedAvatar = {
          from: {
            addressOnNetwork
          },
          system: resolverType
        };
        if (avatarUri instanceof URL) {
          return {
            ...baseResolvedAvatar,
            resolved: {
              avatar: storageGatewayURL(avatarUri.href)
            }
          };
        }
        if (avatarUri.match(/^eip155:1\/erc721:/)) {
          const normalizedAvatarUri = avatarUri.toLowerCase();
          if (normalizedAvatarUri in this.cachedResolvedEIP155Avatars) {
            return this.cachedResolvedEIP155Avatars[normalizedAvatarUri];
          }
          const provider = this.chainService.providerForNetwork(addressOnNetwork.network);
          const [, , , erc721Address, nftID] = avatarUri.split(/[:/]/);
          if (provider !== undefined && erc721Address !== undefined && nftID !== undefined) {
            const metadata = await getTokenMetadata(provider, erc721Address, BigInt(nftID));
            if (metadata !== undefined && metadata.image !== undefined) {
              const {image} = metadata;
              const resolvedGateway = {
                ...baseResolvedAvatar,
                resolved: {
                  avatar: storageGatewayURL(image)
                }
              };
              this.cachedResolvedEIP155Avatars[normalizedAvatarUri] = resolvedGateway;
              return resolvedGateway;
            }
          }
        }
        try {
          const plainURL = storageGatewayURL(avatarUri);
          return {
            ...baseResolvedAvatar,
            resolved: {
              avatar: plainURL
            }
          };
        } catch (error) {
          lib_logger.error("Unexpected avatar URI scheme", avatarUri);
          return undefined;
        }
      }
    }
    const getSignerRecordId = signer => {
      switch (signer.type) {
       case "keyPair":
        return `${signer.type}/${signer.walletID}`;

       default:
        throw new Error("This is not supported in Qwal");
      }
    };
    class PreferenceDatabase extends Xn {
      constructor() {
        super("qwal/preferences");
        this.version(1).stores({
          preferences: "++id",
          signersSettings: "&id",
          shownDismissableItems: "&id,shown"
        });
        this.on("populate", (tx => {
          tx.table("preferences").add({
            savedAt: Date.now(),
            ...defaults
          });
        }));
      }
      async getPreferences() {
        return this.preferences.reverse().first();
      }
      async setAutoLockInterval(newValue) {
        await this.preferences.toCollection().modify((storedPreferences => {
          const update = {
            autoLockInterval: newValue
          };
          Object.assign(storedPreferences, update);
        }));
      }
      async setShouldShowNotifications(newValue) {
        await this.preferences.toCollection().modify((storedPreferences => {
          const update = {
            shouldShowNotifications: newValue
          };
          Object.assign(storedPreferences, update);
        }));
      }
      async setDefaultWalletValue(defaultWallet) {
        await this.preferences.toCollection().modify({
          defaultWallet
        });
      }
      async setSelectedAccount(addressNetwork) {
        await this.preferences.toCollection().modify({
          selectedAccount: addressNetwork
        });
      }
      async getAccountSignerSettings() {
        return this.signersSettings.toArray();
      }
      async updateSignerTitle(signer, title) {
        await this.signersSettings.put({
          id: getSignerRecordId(signer),
          signer,
          title
        });
        return this.signersSettings.toArray();
      }
      async deleteAccountSignerSettings(signer) {
        await this.signersSettings.delete(getSignerRecordId(signer));
        return this.signersSettings.toArray();
      }
      async markDismissableItemAsShown(item) {
        await this.shownDismissableItems.put({
          id: item,
          shown: true
        });
      }
      async getShownDismissableItems() {
        return (await this.shownDismissableItems.toArray()).map((({id}) => id));
      }
      async wasDismissableItemAlreadyShown(item) {
        return (await this.shownDismissableItems.get(item))?.shown ?? false;
      }
    }
    async function getOrCreateDB() {
      return new PreferenceDatabase;
    }
    const sameAddressBookEntry = (a, b) => normalizeQEVMAddress(a.address) === normalizeQEVMAddress(b.address) && sameNetwork(a.network, b.network);
    const BUILT_IN_CONTRACTS = [ {
      network: ZEUS,
      address: normalizeQEVMAddress("0x0000000000000000000000000000000000000000000000000000000000000000"),
      name: "Empty Placeholder"
    } ];
    class PreferenceService extends BaseService {
      knownContracts=BUILT_IN_CONTRACTS;
      addressBook=[];
      static create=async () => {
        const db = await getOrCreateDB();
        return new this(db);
      };
      constructor(db) {
        super();
        this.db = db;
      }
      async internalStartService() {
        await super.internalStartService();
        this.emitter.emit("initializeDefaultWallet", await this.getDefaultWallet());
        this.emitter.emit("initializeSelectedAccount", await this.getSelectedAccount());
        this.emitter.emit("initializeShownDismissableItems", await this.getShownDismissableItems());
        this.emitter.emit("initializeNotificationsPreferences", await this.getShouldShowNotificationsPreferences());
      }
      async internalStopService() {
        this.db.close();
        await super.internalStopService();
      }
      addOrEditNameInAddressBook(newEntry) {
        const correspondingEntryIndex = this.addressBook.findIndex((entry => sameAddressBookEntry(newEntry, entry)));
        if (correspondingEntryIndex !== -1) {
          this.addressBook[correspondingEntryIndex] = newEntry;
        } else {
          this.addressBook.push({
            network: newEntry.network,
            name: newEntry.name,
            address: normalizeQEVMAddress(newEntry.address)
          });
        }
        this.emitter.emit("addressBookEntryModified", newEntry);
      }
      lookUpAddressForName({name, network}) {
        return this.addressBook.find((({name: entryName, network: entryNetwork}) => sameNetwork(network, entryNetwork) && name === entryName));
      }
      lookUpNameForAddress(addressOnNetwork) {
        return this.addressBook.find((addressBookEntry => sameAddressBookEntry(addressBookEntry, addressOnNetwork)));
      }
      async lookUpAddressForContractName({name, network}) {
        return this.knownContracts.find((({name: entryName, network: entryNetwork}) => sameNetwork(network, entryNetwork) && name === entryName));
      }
      async lookUpNameForContractAddress({address, network}) {
        return this.knownContracts.find((({address: entryAddress, network: entryNetwork}) => sameNetwork(network, entryNetwork) && normalizeQEVMAddress(address) === normalizeQEVMAddress(entryAddress)));
      }
      async deleteAccountSignerSettings(signer) {
        const updatedSignerSettings = await this.db.deleteAccountSignerSettings(signer);
        this.emitter.emit("updatedSignerSettings", updatedSignerSettings);
      }
      async updateAccountSignerTitle(signer, title) {
        const updatedSignerSettings = this.db.updateSignerTitle(signer, title);
        this.emitter.emit("updatedSignerSettings", await updatedSignerSettings);
      }
      async markDismissableItemAsShown(item) {
        await this.db.markDismissableItemAsShown(item);
        this.emitter.emit("dismissableItemMarkedAsShown", item);
      }
      async getShownDismissableItems() {
        return this.db.getShownDismissableItems();
      }
      async getShouldShowNotificationsPreferences() {
        return (await this.db.getPreferences()).shouldShowNotifications;
      }
      async setShouldShowNotifications(shouldShowNotifications) {
        if (shouldShowNotifications) {
          const granted = await browser_polyfill_default().permissions.request({
            permissions: [ "notifications" ]
          });
          await this.db.setShouldShowNotifications(granted);
          this.emitter.emit("setNotificationsPermission", granted);
          return granted;
        }
        return false;
      }
      async getAccountSignerSettings() {
        return this.db.getAccountSignerSettings();
      }
      async getCurrency() {
        return (await this.db.getPreferences())?.currency;
      }
      async getTokenListPreferences() {
        return (await this.db.getPreferences())?.tokenLists;
      }
      async getDefaultWallet() {
        return (await this.db.getPreferences())?.defaultWallet;
      }
      async getAutoLockInterval() {
        return (await this.db.getPreferences()).autoLockInterval;
      }
      async updateAutoLockInterval(newValue) {
        await this.db.setAutoLockInterval(newValue);
        this.emitter.emit("updateAutoLockInterval", newValue);
      }
      async setDefaultWalletValue(newDefaultWalletValue) {
        return this.db.setDefaultWalletValue(newDefaultWalletValue);
      }
      async getSelectedAccount() {
        return (await this.db.getPreferences())?.selectedAccount;
      }
      async setSelectedAccount(addressNetwork) {
        return this.db.setSelectedAccount(addressNetwork);
      }
    }
    const WINDOW_PROVIDER_TARGET = "qwallet-window-provider";
    const PROVIDER_BRIDGE_TARGET = "qwallet-provider-bridge";
    const EXTERNAL_PORT_NAME = "qwallet-external";
    const INTERNAL_PORT_NAME = "qwallet-internal";
    function getType(arg) {
      return Object.prototype.toString.call(arg).slice("[object ".length, -1);
    }
    function isObject(arg) {
      return getType(arg) === "Object";
    }
    function isArray(arg) {
      return Array.isArray(arg);
    }
    function isUndefined(arg) {
      return typeof arg === "undefined";
    }
    function isString(arg) {
      return getType(arg) === "String";
    }
    function isNumber(arg) {
      return getType(arg) === "Number";
    }
    function isMessageEvent(arg) {
      return arg instanceof MessageEvent;
    }
    function isRPCRequestParamsType(arg) {
      return isObject(arg) || isArray(arg);
    }
    function isWindowResponseEvent(arg) {
      return isMessageEvent(arg) && isString(arg.origin) && !isUndefined(arg.source) && isObject(arg.data) && isString(arg.data.id) && isString(arg.data.target) && !isUndefined(arg.data.result);
    }
    function isPortResponseEvent(arg) {
      return isObject(arg) && isString(arg.id) && !isUndefined(arg.result);
    }
    const AllowedQueryParamPage = {
      signTransaction: "/sign-transaction",
      addNewChain: "/add-evm-chain",
      dappPermission: "/dapp-permission",
      signData: "/sign-data",
      personalSignData: "/personal-sign"
    };
    function isAllowedQueryParamPage(url) {
      return Object.values(AllowedQueryParamPage).includes(url);
    }
    function isQwalInternalCommunication(arg) {
      return isObject(arg) && arg.id === "qwallet";
    }
    function isQwalConfigPayload(arg) {
      return isObject(arg) && arg.method === "qwal_getConfig";
    }
    function isQwalAccountPayload(arg) {
      return isObject(arg) && arg.method === "qwal_accountChanged" && isArray(arg.address);
    }
    const EIP1193_ERROR_CODES = {
      userRejectedRequest: {
        code: 4001,
        message: "The user rejected the request."
      },
      unauthorized: {
        code: 4100,
        message: "The requested method and/or account has not been authorized by the user."
      },
      unsupportedMethod: {
        code: 4200,
        message: "The Provider does not support the requested method."
      },
      disconnected: {
        code: 4900,
        message: "The Provider is disconnected from all chains."
      },
      chainDisconnected: {
        code: 4901,
        message: "The Provider is not connected to the requested chain."
      }
    };
    class EIP1193Error extends Error {
      constructor(eip1193Error) {
        super(eip1193Error.message);
        this.eip1193Error = eip1193Error;
      }
      toJSON() {
        return this.eip1193Error;
      }
    }
    function isEIP1193ErrorCodeNumber(code) {
      return isNumber(code) && Object.values(EIP1193_ERROR_CODES).map((e => e.code)).includes(code);
    }
    function isEIP1193Error(arg) {
      return isObject(arg) && isNumber(arg.code) && isEIP1193ErrorCodeNumber(arg.code) && isString(arg.message);
    }
    const keyPermissionsByChainIdAddressOrigin = (permissions, permissionMap) => {
      const map = permissionMap ?? {
        evm: {}
      };
      permissions.forEach((permission => {
        map.evm[permission.chainID] ??= {};
        map.evm[permission.chainID][permission.accountAddress] ??= {};
        map.evm[permission.chainID][permission.accountAddress][permission.origin] = permission;
      }));
      return map;
    };
    function parsedRPCErrorResponse(error) {
      try {
        const parsedError = JSON.parse(error.body).error;
        return {
          code: 4001,
          message: "message" in parsedError && parsedError.message ? parsedError.message[0].toUpperCase() + parsedError.message.slice(1) : EIP1193_ERROR_CODES.userRejectedRequest.message
        };
      } catch (err) {
        return undefined;
      }
    }
    function handleRPCErrorResponse(error) {
      let response;
      if (typeof error === "object" && error !== null) {
        if ("eip1193Error" in error) {
          const {eip1193Error} = error;
          if (isEIP1193Error(eip1193Error)) {
            response = eip1193Error;
          }
        } else if ("body" in error) {
          response = parsedRPCErrorResponse(error);
        } else if ("error" in error) {
          response = parsedRPCErrorResponse(error.error);
        }
      }
      return response ?? new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest).toJSON();
    }
    const validateAddQuantumEVMChainParameter = ({chainId, chainName, blockExplorerUrls, iconUrls, nativeCurrency, rpcUrls}) => {
      if (!chainId || !chainName || !nativeCurrency || !blockExplorerUrls || !blockExplorerUrls.length || !rpcUrls || !rpcUrls.length) {
        throw new Error("Missing Chain Property");
      }
      if (!nativeCurrency.decimals || !nativeCurrency.name || !nativeCurrency.symbol) {
        throw new Error("Missing Currency Property");
      }
      return {
        chainId: chainId.startsWith("0x") ? String(parseInt(chainId, 16)) : chainId,
        chainName,
        nativeCurrency,
        blockExplorerUrl: blockExplorerUrls[0],
        iconUrl: iconUrls && iconUrls[0],
        rpcUrls
      };
    };
    function parseRPCRequestParams(enablingPermission, method, params) {
      switch (method) {
       case "eth_sign":
        return sameQEVMAddress(params[0], enablingPermission.accountAddress) ? params : [ params[1], params[0] ];

       case "personal_sign":
        return sameQEVMAddress(params[1], enablingPermission.accountAddress) ? params : [ params[1], params[0] ];

       default:
        return params;
      }
    }
    class ProviderBridgeServiceDatabase extends Xn {
      constructor() {
        super("qwal/provider-bridge-service");
        this.version(1).stores({
          dAppPermissions: "&[origin+accountAddress+chainID],origin,accountAddress,chainID"
        });
      }
      async getAllPermission() {
        const permissions = await this.dAppPermissions.toArray();
        return keyPermissionsByChainIdAddressOrigin(permissions);
      }
      async setPermission(permission) {
        return this.dAppPermissions.put(permission);
      }
      async deletePermission(origin, accountAddress, chainID) {
        return this.dAppPermissions.where({
          origin,
          accountAddress,
          chainID
        }).delete();
      }
      async deletePermissionByAddress(accountAddress) {
        return this.dAppPermissions.where({
          accountAddress
        }).delete();
      }
      async deletePermissionsByChain(chainID) {
        return this.dAppPermissions.where({
          chainID
        }).delete();
      }
      async checkPermission(origin, accountAddress, chainID) {
        return this.dAppPermissions.get({
          origin,
          accountAddress,
          chainID
        });
      }
    }
    async function db_getOrCreateDB() {
      return new ProviderBridgeServiceDatabase;
    }
    function checkPermissionSignTypedData(walletAddress, enablingPermission) {
      if (enablingPermission.state !== "allow" || !sameQEVMAddress(walletAddress, enablingPermission.accountAddress)) {
        throw new EIP1193Error(EIP1193_ERROR_CODES.unauthorized);
      }
    }
    function checkPermissionSign(walletAddress, enablingPermission) {
      if (enablingPermission.state !== "allow" || !sameQEVMAddress(walletAddress, enablingPermission.accountAddress)) {
        throw new EIP1193Error(EIP1193_ERROR_CODES.unauthorized);
      }
    }
    function checkPermissionSignTransaction(transactionRequest, enablingPermission) {
      if (typeof transactionRequest.chainId !== "undefined") {
        if (toHexChainID(transactionRequest.chainId) !== toHexChainID(enablingPermission.chainID)) {
          throw new EIP1193Error(EIP1193_ERROR_CODES.unauthorized);
        }
      }
      if (enablingPermission.state !== "allow" || !sameQEVMAddress(transactionRequest.from, enablingPermission.accountAddress)) {
        throw new EIP1193Error(EIP1193_ERROR_CODES.unauthorized);
      }
    }
    async function showExtensionPopup(url, additionalOptions = {}, onClose) {
      const {left = 0, top, width = 1920} = await browser_polyfill_default().windows.getCurrent();
      const popupWidth = 384;
      const popupHeight = 628;
      const queryString = new URLSearchParams({
        ...additionalOptions,
        page: url
      }).toString();
      const params = {
        url: `${browser_polyfill_default().runtime.getURL("popup.html")}?${queryString}`,
        type: "popup",
        left: left + width - popupWidth,
        top,
        width: popupWidth,
        height: popupHeight,
        focused: true
      };
      const window = await browser_polyfill_default().windows.create(params);
      if (onClose !== undefined) {
        const listener = windowId => {
          if (windowId === window.id) {
            onClose();
            browser_polyfill_default().windows.onRemoved.removeListener(listener);
          }
        };
        browser_polyfill_default().windows.onRemoved.addListener(listener);
      }
      return window;
    }
    const WEBSITE_ORIGIN = "https://quantumevm.com/" ?? 0;
    const QWAL_INTERNAL_ORIGIN = "@qwal-internal";
    class ProviderBridgeService extends BaseService {
      #pendingPermissionsRequests={};
      #pendingAddNetworkRequests={};
      addNetworkRequestId=0;
      openPorts=[];
      static create=async (internalEthereumProviderService, preferenceService) => new this(await db_getOrCreateDB(), await internalEthereumProviderService, await preferenceService);
      constructor(db, internalEthereumProviderService, preferenceService) {
        super();
        this.db = db;
        this.internalEthereumProviderService = internalEthereumProviderService;
        this.preferenceService = preferenceService;
      }
      async internalStartService() {
        await super.internalStartService();
        this.emitter.emit("initializeAllowedPages", await this.db.getAllPermission());
      }
      async onMessageListener(port, event) {
        const {url, tab} = port.sender;
        if (typeof url === "undefined") {
          return;
        }
        const {origin} = new URL(url);
        const response = {
          id: event.id,
          jsonrpc: "2.0",
          result: []
        };
        const network = await this.internalEthereumProviderService.getCurrentOrDefaultNetworkForOrigin(origin);
        const originPermission = await this.checkPermission(origin, network.chainID);
        if (origin === QWAL_INTERNAL_ORIGIN) {
          response.result = new EIP1193Error(EIP1193_ERROR_CODES.unauthorized).toJSON();
        } else if (isQwalConfigPayload(event.request)) {
          response.id = "qwallet";
          response.result = {
            method: event.request.method,
            defaultWallet: await this.preferenceService.getDefaultWallet(),
            chainId: toHexChainID(network.chainID)
          };
        } else if (event.request.method.startsWith("qwal_")) {
          switch (event.request.method) {
           case "qwal_setClaimReferrer":
            if (origin !== WEBSITE_ORIGIN) {
              lib_logger.warn(`invalid WEBSITE_ORIGIN ${WEBSITE_ORIGIN} when using a custom 'qwal_...' method`);
              return;
            }
            if (typeof event.request.params[0] !== "string") {
              lib_logger.warn("invalid 'qwal_setClaimReferrer' request");
              return;
            }
            this.emitter.emit("setClaimReferrer", String(event.request.params[0]));
            break;

           case "qwal_walletConnectInit":
            {
              const [wcUri] = event.request.params;
              if (typeof wcUri === "string") {
                await this.emitter.emit("walletConnectInit", wcUri);
              } else {
                lib_logger.warn("invalid 'qwal_walletConnectInit' request");
              }
              break;
            }

           default:
            lib_logger.debug(`Unknown method ${event.request.method} in 'ProviderBridgeService'`);
          }
          response.result = null;
        } else if (event.request.method === "eth_chainId" || event.request.method === "net_version") {
          response.result = await this.internalEthereumProviderService.routeSafeRPCRequest(event.request.method, event.request.params, origin);
        } else if (typeof originPermission !== "undefined") {
          response.result = await this.routeContentScriptRPCRequest(originPermission, event.request.method, event.request.params, origin);
        } else if (event.request.method === "eth_requestAccounts" || event.request.method === "wallet_requestPermissions") {
          const selectedAccount = await this.preferenceService.getSelectedAccount();
          const {address: accountAddress} = selectedAccount;
          const dAppChainID = Number(await this.internalEthereumProviderService.routeSafeRPCRequest("eth_chainId", [], origin)).toString();
          const [title, faviconUrl] = event.request.params.slice(-2);
          const existingPermission = await this.checkPermission(origin, dAppChainID);
          if (existingPermission !== undefined && existingPermission.state !== "allow" || this.#pendingPermissionsRequests[origin] !== undefined) {
            response.result = new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest).toJSON();
          } else {
            const permissionRequest = {
              key: `${origin}_${accountAddress}_${dAppChainID}`,
              origin,
              chainID: dAppChainID,
              faviconUrl: faviconUrl || tab?.favIconUrl || "",
              title,
              state: "request",
              accountAddress
            };
            await this.requestPermission(permissionRequest);
            const newlyPersistedPermission = await this.checkPermission(origin, dAppChainID);
            if (typeof newlyPersistedPermission !== "undefined") {
              if (event.request.method === "wallet_requestPermissions") {
                response.result = await this.routeContentScriptRPCRequest(newlyPersistedPermission, "wallet_getPermissions", event.request.params, origin);
              } else {
                response.result = await this.routeContentScriptRPCRequest(newlyPersistedPermission, "eth_accounts", event.request.params, origin);
              }
              await this.internalEthereumProviderService.switchToSupportedNetwork(origin, network);
            } else {
              response.result = new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest).toJSON();
            }
          }
        } else if (event.request.method === "eth_accounts") {
          const dAppChainID = Number(await this.internalEthereumProviderService.routeSafeRPCRequest("eth_chainId", [], origin)).toString();
          const permission = await this.checkPermission(origin, dAppChainID);
          response.result = [];
          if (permission) {
            response.result = await this.routeContentScriptRPCRequest(permission, "eth_accounts", event.request.params, origin);
          }
        } else {
          response.result = new EIP1193Error(EIP1193_ERROR_CODES.unauthorized).toJSON();
        }
        port.postMessage(response);
      }
      notifyContentScriptAboutConfigChange(newDefaultWalletValue) {
        this.openPorts.forEach((p => {
          p.postMessage({
            id: "qwallet",
            result: {
              method: "qwal_getConfig",
              defaultWallet: newDefaultWalletValue,
              shouldReload: true
            }
          });
        }));
      }
      notifyContentScriptsAboutAddressChange(newAddress) {
        this.openPorts.forEach((async port => {
          const {origin} = new URL(port.sender?.url);
          const {chainID} = await this.internalEthereumProviderService.getCurrentOrDefaultNetworkForOrigin(origin);
          if (await this.checkPermission(origin, chainID)) {
            port.postMessage({
              id: "qwallet",
              result: {
                method: "qwal_accountChanged",
                address: [ newAddress ]
              }
            });
          } else {
            port.postMessage({
              id: "qwallet",
              result: {
                method: "qwal_accountChanged",
                address: []
              }
            });
          }
        }));
      }
      async requestPermission(permissionRequest) {
        this.emitter.emit("requestPermission", permissionRequest);
        const permissionPromise = new Promise((resolve => {
          this.#pendingPermissionsRequests[permissionRequest.origin] = resolve;
          showExtensionPopup(AllowedQueryParamPage.dappPermission, {}, (() => {
            resolve("Time to move on");
          }));
        }));
        const result = await permissionPromise;
        if (this.#pendingPermissionsRequests[permissionRequest.origin]) {
          this.#pendingPermissionsRequests[permissionRequest.origin](result);
          delete this.#pendingPermissionsRequests[permissionRequest.origin];
        }
        return result;
      }
      async grantPermission(permission) {
        if (permission.state !== "allow" || !permission.accountAddress) return;
        await this.db.setPermission(permission);
        this.#pendingPermissionsRequests[permission.origin]?.(permission);
      }
      async denyOrRevokePermission(permission) {
        if (permission.state !== "deny" || !permission.accountAddress) {
          return;
        }
        const {address} = await this.preferenceService.getSelectedAccount();
        const deleted = await this.db.deletePermission(permission.origin, address, permission.chainID);
        this.#pendingPermissionsRequests[permission.origin]?.("Time to move on");
        this.internalEthereumProviderService.unsetCurrentNetworkForOrigin(permission.origin, permission.chainID);
        if (deleted > 0) {
          this.notifyContentScriptsAboutAddressChange();
        }
      }
      async revokePermissionsForAddress(revokeAddress) {
        await this.db.deletePermissionByAddress(revokeAddress);
        this.notifyContentScriptsAboutAddressChange();
      }
      async checkPermission(origin, chainID) {
        const {address: selectedAddress} = await this.preferenceService.getSelectedAccount();
        const currentAddress = selectedAddress;
        return this.db.checkPermission(origin, currentAddress, chainID);
      }
      async revokePermissionsForChain(chainId) {
        await this.db.deletePermissionsByChain(chainId);
      }
      async routeSafeRequest(method, params, origin, popupPromise) {
        const response = await this.internalEthereumProviderService.routeSafeRPCRequest(method, params, origin).finally((async () => {
          const popup = await popupPromise;
          if (typeof popup.id !== "undefined") {
            browser_polyfill_default().windows.remove(popup.id);
          }
        }));
        return response;
      }
      async routeContentScriptRPCRequest(enablingPermission, method, rawParams, origin) {
        const params = parseRPCRequestParams(enablingPermission, method, rawParams);
        try {
          switch (method) {
           case "eth_requestAccounts":
           case "eth_accounts":
            return [ enablingPermission.accountAddress ];

           case "wallet_requestPermissions":
           case "wallet_getPermissions":
            return [ {
              parentCapability: "eth_accounts",
              caveats: [ {
                type: "restrictReturnedAccounts",
                value: [ enablingPermission.accountAddress ]
              } ],
              date: Date.now()
            } ];

           case "eth_signTypedData":
           case "eth_signTypedData_v1":
           case "eth_signTypedData_v3":
           case "eth_signTypedData_v4":
            checkPermissionSignTypedData(params[0], enablingPermission);
            return await this.routeSafeRequest(method, params, origin, showExtensionPopup(AllowedQueryParamPage.signData));

           case "eth_sign":
            checkPermissionSign(params[0], enablingPermission);
            return await this.routeSafeRequest(method, params, origin, showExtensionPopup(AllowedQueryParamPage.personalSignData));

           case "personal_sign":
            checkPermissionSign(params[1], enablingPermission);
            return await this.routeSafeRequest(method, params, origin, showExtensionPopup(AllowedQueryParamPage.personalSignData));

           case "eth_signTransaction":
           case "eth_sendTransaction":
            checkPermissionSignTransaction({
              ...params[0],
              nonce: undefined
            }, enablingPermission);
            return await this.routeSafeRequest(method, params, origin, showExtensionPopup(AllowedQueryParamPage.signTransaction));

           case "wallet_switchEthereumChain":
            return await this.internalEthereumProviderService.routeSafeRPCRequest(method, params, origin);

           case "wallet_addEthereumChain":
            {
              const id = this.addNetworkRequestId.toString();
              this.addNetworkRequestId += 1;
              const [rawChainData, address, siteTitle, favicon] = params;
              const validatedData = validateAddQuantumEVMChainParameter(rawChainData);
              const supportedNetwork = await this.internalEthereumProviderService.getTrackedNetworkByChainId(validatedData.chainId);
              if (supportedNetwork) {
                return await this.internalEthereumProviderService.routeSafeRPCRequest(method, params, origin);
              }
              const window = await showExtensionPopup(AllowedQueryParamPage.addNewChain, {
                requestId: id.toString()
              });
              browser_polyfill_default().windows.onRemoved.addListener((removed => {
                if (removed === window.id) {
                  this.handleAddNetworkRequest(id, false);
                }
              }));
              const userConfirmation = new Promise(((resolve, reject) => {
                this.#pendingAddNetworkRequests[id] = {
                  resolve,
                  reject,
                  data: {
                    ...validatedData,
                    favicon,
                    siteTitle
                  }
                };
              }));
              await userConfirmation;
              const account = await this.preferenceService.getSelectedAccount();
              await this.grantPermission({
                ...enablingPermission,
                key: `${origin}_${account.address}_${validatedData.chainId}`,
                chainID: validatedData.chainId
              });
              return await this.internalEthereumProviderService.routeSafeRPCRequest(method, [ validatedData, address ], origin);
            }

           default:
            {
              return await this.internalEthereumProviderService.routeSafeRPCRequest(method, params, origin);
            }
          }
        } catch (error) {
          lib_logger.error("Error processing request", error);
          return handleRPCErrorResponse(error);
        }
      }
      getNewCustomRPCDetails(requestId) {
        return this.#pendingAddNetworkRequests[requestId].data;
      }
      handleAddNetworkRequest(id, success) {
        const request = this.#pendingAddNetworkRequests[id];
        if (success) {
          request.resolve();
        } else {
          request.reject();
        }
      }
      async connectPort(port) {
        if (port.name === EXTERNAL_PORT_NAME && port.sender?.url) {
          port.onMessage.addListener((event => {
            if (!event || typeof event !== "object" || !("id" in event) || typeof event.id !== "string" || !("request" in event) || typeof event.request !== "object") {
              lib_logger.error("Unexpected event on port", event);
              return;
            }
            this.onMessageListener(port, event);
          }));
          port.onDisconnect.addListener((() => {
            this.openPorts = this.openPorts.filter((openPort => openPort !== port));
          }));
          this.openPorts.push(port);
          port.postMessage({
            id: "qwallet",
            jsonrpc: "2.0",
            result: {
              method: "qwal_getConfig",
              defaultWallet: await this.preferenceService.getDefaultWallet()
            }
          });
        }
      }
    }
    var events = __webpack_require__(7007);
    class QwalWindowProvider extends events.EventEmitter {
      chainId="MISSING_ENV_VAR".WINDOW_PROVIDER_DEFAULT_CHAIN_ID ?? "0x101";
      connected=false;
      isQwal=true;
      isWeb3=true;
      requestResolvers=new Map;
      providerInfo={
        label: "Qwal",
        injectedNamespace: "qwal",
        iconURL: "TODO",
        identityFlag: "isQwal",
        checkIdentity: provider => !!provider && !!provider.isQwal
      };
      constructor(transport) {
        super();
        this.transport = transport;
        const internalListener = event => {
          let result;
          if (isWindowResponseEvent(event) && isQwalInternalCommunication(event.data)) {
            if (event.origin !== this.transport.origin || event.source !== window || event.data.target !== WINDOW_PROVIDER_TARGET) {
              return;
            }
            result = event.data.result;
          } else if (isPortResponseEvent(event) && isQwalInternalCommunication(event)) {
            result = event.result;
          } else {
            return;
          }
          if (isQwalConfigPayload(result)) {
            if (result.chainId && result.chainId !== this.chainId) {
              this.handleChainIdChange(result.chainId);
            }
          } else if (isQwalAccountPayload(result)) {
            this.handleAddressChange(result.address);
          }
        };
        this.request = this.request.bind(this);
        this.transport.addEventListener(internalListener);
        this.transport.addEventListener(this.internalBridgeListener.bind(this));
      }
      internalBridgeListener(event) {
        let id;
        let result;
        if (isWindowResponseEvent(event)) {
          if (event.origin !== this.transport.origin || event.source !== window || event.data.target !== WINDOW_PROVIDER_TARGET) {
            return;
          }
          id = event.data.id;
          result = event.data.result;
        } else if (isPortResponseEvent(event)) {
          id = event.id;
          result = event.result;
        } else {
          return;
        }
        const requestResolver = this.requestResolvers.get(id);
        if (!requestResolver) return;
        const {sendData, reject, resolve} = requestResolver;
        this.requestResolvers.delete(sendData.id);
        const {method: sentMethod} = sendData.request;
        if (isEIP1193Error(result)) {
          reject(result);
        }
        if (!this.connected) {
          this.connected = true;
          this.emit("connect", {
            chainId: this.chainId
          });
        }
        switch (sentMethod) {
         case "wallet_switchEthereumChain":
         case "wallet_addEthereumChain":
          if (result === null) {
            this.handleChainIdChange(sendData.request.params[0].chainId);
          }
          break;

         case "eth_chainId":
         case "net_version":
          if (typeof result === "string" && Number(this.chainId) !== Number(result)) {
            this.handleChainIdChange(result);
          }
          break;

         case "eth_accounts":
         case "eth_requestAccounts":
          if (Array.isArray(result) && result.length !== 0) {
            this.handleAddressChange(result);
          }
          break;

         default:
          break;
        }
        resolve(result);
      }
      async enable() {
        return this.request({
          method: "eth_requestAccounts"
        });
      }
      isConnected() {
        return this.connected;
      }
      send(methodOrRequest, paramsOrCallback) {
        if (typeof methodOrRequest === "string" && typeof paramsOrCallback !== "function") {
          return this.request({
            method: methodOrRequest,
            params: paramsOrCallback
          });
        }
        if (isObject(methodOrRequest) && typeof paramsOrCallback === "function") {
          return this.sendAsync(methodOrRequest, paramsOrCallback);
        }
        return Promise.reject(new Error("Unsupported function parameters"));
      }
      sendAsync(request, callback) {
        return this.request(request).then((response => callback(null, {
          result: response,
          id: request.id,
          jsonrpc: request.jsonrpc
        })), (error => callback(error, null)));
      }
      requestID=0n;
      request(arg) {
        const {method, params = []} = arg;
        if (typeof method !== "string") {
          return Promise.reject(new Error(`unsupported method type: ${method}`));
        }
        const sendData = {
          id: this.requestID.toString(),
          target: PROVIDER_BRIDGE_TARGET,
          request: {
            method,
            params
          }
        };
        this.requestID += 1n;
        this.transport.postMessage(sendData);
        return new Promise(((resolve, reject) => {
          this.requestResolvers.set(sendData.id, {
            resolve,
            reject,
            sendData
          });
        }));
      }
      handleChainIdChange(chainId) {
        this.chainId = chainId;
        this.emit("chainChanged", chainId);
        this.emit("networkChanged", Number(chainId).toString());
      }
      handleAddressChange(address) {
        if (this.selectedAddress !== address[0]) {
          this.selectedAddress = address[0];
          this.emit("accountsChanged", address);
        }
      }
    }
    class QwalWeb3Provider extends providers_lib.Web3Provider {
      switchChain(network) {
        return this.send("wallet_switchEthereumChain", [ {
          chainId: toHexChainID(network.chainID)
        } ]);
      }
      getSigner(addressOrIndex) {
        return super.getSigner(addressOrIndex);
      }
      static hexlifyTransaction(transaction, allowExtra) {
        const {annotation, ...transactionRequest} = transaction;
        return {
          ...providers_lib.Web3Provider.hexlifyTransaction(transactionRequest, allowExtra),
          annotation: encodeJSON(annotation)
        };
      }
    }
    var contract_utils_qethers;
    const internalProviderPort = {
      listeners: [],
      emitter: new (emittery_default()),
      addEventListener(listener) {
        this.listeners.push(listener);
      },
      removeEventListener(toRemove) {
        this.listeners = this.listeners.filter((listener => listener !== toRemove));
      },
      origin: (typeof window !== "undefined" ? window?.location?.origin : undefined) ?? "service-worker",
      postMessage(message) {
        this.emitter.emit("message", message);
      },
      postResponse(message) {
        this.listeners.forEach((listener => listener(message)));
      }
    };
    const internalProvider = new QwalWindowProvider(internalProviderPort);
    function getProvider() {
      return new QwalWeb3Provider(internalProvider);
    }
    const getContract = async (address, abi) => {
      const provider = getProvider();
      const signer = provider.getSigner();
      return new contract_utils_qethers.Contract(address, abi, signer);
    };
    const getSignerAddress = async () => {
      const provider = getProvider();
      const signer = provider.getSigner();
      const signerAddress = await signer.getAddress();
      return signerAddress;
    };
    const getCurrentTimestamp = async () => {
      const provider = getProvider();
      const {timestamp} = await provider.getBlock(provider.getBlockNumber());
      return timestamp;
    };
    function parseSigningData(signingData) {
      let normalizedData = signingData;
      if (signingData.startsWith("0x") && signingData.length > 66) {
        let possibleMessageString;
        try {
          possibleMessageString = (0, lib_utils.toUtf8String)(signingData);
        } catch (err) {}
        if (possibleMessageString !== undefined && (0, lib_utils.hexlify)((0, lib_utils.toUtf8Bytes)(possibleMessageString)) === signingData.toLowerCase()) {
          normalizedData = possibleMessageString;
        }
      }
      return {
        messageType: "eip191",
        signingData: normalizedData
      };
    }
    const isSameAccountSignerWithId = (signerA, signerB) => {
      if (signerA.type !== signerB.type) return false;
      switch (signerB.type) {
       case "keyPair":
        return signerB.walletID === signerA.walletID;

       default:
        return false;
      }
    };
    class InternalQuantumEVMProviderDatabase extends Xn {
      constructor() {
        super("qwal/internal-quantumevm-provider");
        this.version(1).stores({
          currentNetwork: "&origin,network.chainID"
        });
        this.on("populate", (tx => tx.db.table("currentNetwork").add({
          origin: QWAL_INTERNAL_ORIGIN,
          network: ZEUS
        })));
      }
      async setCurrentChainIdForOrigin(origin, network) {
        return this.currentNetwork.put({
          origin,
          network
        });
      }
      async unsetCurrentNetworkForOrigin(origin, chainID) {
        const originMatches = await this.currentNetwork.where({
          origin,
          "network.chainID": chainID
        }).count() > 0;
        if (originMatches) {
          await this.currentNetwork.delete(origin);
        }
      }
      async getCurrentNetworkForOrigin(origin) {
        const currentNetwork = await this.currentNetwork.get({
          origin
        });
        return currentNetwork?.network;
      }
      async removeStoredPreferencesForChain(chainID) {
        await this.currentNetwork.where({
          "network.chainID": chainID
        }).delete();
      }
    }
    async function internal_qevm_provider_db_getOrCreateDB() {
      return new InternalQuantumEVMProviderDatabase;
    }
    class InternalQuantumEVMProviderService extends BaseService {
      static create=async (chainService, preferenceService) => new this(await internal_qevm_provider_db_getOrCreateDB(), await chainService, await preferenceService);
      constructor(db, chainService, preferenceService) {
        super();
        this.db = db;
        this.chainService = chainService;
        this.preferenceService = preferenceService;
        internalProviderPort.emitter.on("message", (async event => {
          lib_logger.debug(`internal: request payload: ${JSON.stringify(event)}`);
          try {
            const response = {
              id: event.id,
              result: await this.routeSafeRPCRequest(event.request.method, event.request.params, QWAL_INTERNAL_ORIGIN)
            };
            lib_logger.debug("internal response:", response);
            internalProviderPort.postResponse(response);
          } catch (error) {
            lib_logger.debug("error processing request", event.id, error);
            internalProviderPort.postResponse({
              id: event.id,
              result: new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest).toJSON()
            });
          }
        }));
      }
      async routeSafeRPCRequest(method, params, origin) {
        switch (method) {
         case "eth_signTypedData":
         case "eth_signTypedData_v1":
         case "eth_signTypedData_v3":
         case "eth_signTypedData_v4":
          return this.signTypedData({
            account: {
              address: params[0],
              network: await this.getCurrentOrDefaultNetworkForOrigin(origin)
            },
            typedData: JSON.parse(params[1])
          });

         case "eth_chainId":
          return toHexChainID((await this.getCurrentOrDefaultNetworkForOrigin(origin)).chainID);

         case "eth_blockNumber":
         case "eth_call":
         case "eth_estimateGas":
         case "eth_feeHistory":
         case "eth_gasPrice":
         case "eth_getBalance":
         case "eth_getBlockByHash":
         case "eth_getBlockByNumber":
         case "eth_getBlockTransactionCountByHash":
         case "eth_getBlockTransactionCountByNumber":
         case "eth_getCode":
         case "eth_getFilterChanges":
         case "eth_getFilterLogs":
         case "eth_getLogs":
         case "eth_getProof":
         case "eth_getStorageAt":
         case "eth_getTransactionByBlockHashAndIndex":
         case "eth_getTransactionByBlockNumberAndIndex":
         case "eth_getTransactionByHash":
         case "eth_getTransactionCount":
         case "eth_getTransactionReceipt":
         case "eth_getUncleByBlockHashAndIndex":
         case "eth_getUncleByBlockNumberAndIndex":
         case "eth_getUncleCountByBlockHash":
         case "eth_getUncleCountByBlockNumber":
         case "eth_maxPriorityFeePerGas":
         case "eth_newBlockFilter":
         case "eth_newFilter":
         case "eth_newPendingTransactionFilter":
         case "eth_protocolVersion":
         case "eth_sendRawTransaction":
         case "eth_subscribe":
         case "eth_syncing":
         case "eth_uninstallFilter":
         case "eth_unsubscribe":
         case "net_listening":
         case "net_version":
         case "web3_clientVersion":
         case "web3_sha3":
          return this.chainService.send(method, params, await this.getCurrentOrDefaultNetworkForOrigin(origin));

         case "eth_accounts":
          {
            const {address} = await this.preferenceService.getSelectedAccount();
            return [ address ];
          }

         case "eth_sendTransaction":
          return this.signTransaction({
            ...params[0]
          }, origin, true).then((async signed => {
            await this.chainService.broadcastSignedTransaction(signed);
            return signed.hash;
          }));

         case "eth_signTransaction":
          return this.signTransaction(params[0], origin, false).then((signedTransaction => (0, 
          transactions_lib.serialize)(ethersTransactionFromSignedTransaction(signedTransaction), signedTransaction.signature)));

         case "eth_sign":
          return this.signData({
            input: params[1],
            account: params[0]
          }, origin);

         case "personal_sign":
          return this.signData({
            input: params[0],
            account: params[1]
          }, origin);

         case "wallet_addEthereumChain":
          {
            const chainInfo = params[0];
            const {chainId} = chainInfo;
            const supportedNetwork = await this.getTrackedNetworkByChainId(chainId);
            if (supportedNetwork) {
              await this.switchToSupportedNetwork(origin, supportedNetwork);
              this.emitter.emit("selectedNetwork", supportedNetwork);
              return null;
            }
            try {
              const customNetwork = await this.chainService.addCustomChain(chainInfo);
              this.emitter.emit("selectedNetwork", customNetwork);
              return null;
            } catch (e) {
              lib_logger.error(e);
              throw new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest);
            }
          }

         case "wallet_switchEthereumChain":
          {
            const newChainId = params[0].chainId;
            const supportedNetwork = await this.getTrackedNetworkByChainId(newChainId);
            if (supportedNetwork) {
              this.switchToSupportedNetwork(origin, supportedNetwork);
              return null;
            }
            throw new EIP1193Error(EIP1193_ERROR_CODES.chainDisconnected);
          }

         case "wallet_watchAsset":
          {
            const {type, options} = params[0] ? params[0] : params;
            if (type !== "ERC20") {
              throw new EIP1193Error(EIP1193_ERROR_CODES.unsupportedMethod);
            }
            if (options.chainId) {
              const supportedNetwork = await this.getTrackedNetworkByChainId(String(options.chainId));
              if (!supportedNetwork) {
                throw new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest);
              }
              this.emitter.emit("watchAssetRequest", {
                contractAddress: (0, address_lib.getAddress)(options.address),
                network: supportedNetwork
              });
              return true;
            }
            const network = await this.getCurrentOrDefaultNetworkForOrigin(origin);
            this.emitter.emit("watchAssetRequest", {
              contractAddress: (0, address_lib.getAddress)(options.address),
              network
            });
            return true;
          }

         case "metamask_getProviderState":
         case "metamask_sendDomainMetadata":
         case "wallet_requestPermissions":
         case "estimateGas":
         case "eth_coinbase":
         case "eth_decrypt":
         case "eth_getEncryptionPublicKey":
         case "eth_getWork":
         case "eth_hashrate":
         case "eth_mining":
         case "eth_submitHashrate":
         case "eth_submitWork":
         case "metamask_accountsChanged":
         case "metamask_chainChanged":
         case "metamask_logWeb3ShimUsage":
         case "metamask_unlockStateChanged":
         case "metamask_watchAsset":
         case "net_peerCount":
         case "wallet_accountsChanged":
         case "wallet_registerOnboarding":
         default:
          throw new EIP1193Error(EIP1193_ERROR_CODES.unsupportedMethod);
        }
      }
      async getCurrentInternalNetwork() {
        return this.db.getCurrentNetworkForOrigin(QWAL_INTERNAL_ORIGIN);
      }
      async getCurrentOrDefaultNetworkForOrigin(origin) {
        const currentNetwork = await this.db.getCurrentNetworkForOrigin(origin);
        if (!currentNetwork) {
          const defaultNetwork = await this.getCurrentInternalNetwork();
          return defaultNetwork;
        }
        return currentNetwork;
      }
      async removePreferencesForChain(chainId) {
        await this.db.removeStoredPreferencesForChain(chainId);
      }
      async signTransaction(transactionRequest, origin, broadcastOnSign) {
        const annotation = origin === QWAL_INTERNAL_ORIGIN && "annotation" in transactionRequest && transactionRequest.annotation !== undefined ? decodeJSON(transactionRequest.annotation) : undefined;
        if (!transactionRequest.from) {
          throw new Error("Transactions must have a from address for signing.");
        }
        const currentNetwork = await this.getCurrentOrDefaultNetworkForOrigin(origin);
        const {from, ...convertedRequest} = transactionRequestFromEthersTransactionRequest({
          data: transactionRequest.input,
          ...transactionRequest,
          gasLimit: transactionRequest.gas,
          from: transactionRequest.from,
          to: transactionRequest.to
        });
        if (typeof from === "undefined") {
          throw new Error("Transactions must have a from address for signing.");
        }
        return new Promise(((resolve, reject) => {
          this.emitter.emit("transactionSignatureRequest", {
            payload: {
              ...convertedRequest,
              from,
              network: currentNetwork,
              annotation,
              broadcastOnSign
            },
            resolver: resolve,
            rejecter: reject
          });
        }));
      }
      async getTrackedNetworkByChainId(chainID) {
        const trackedNetworks = await this.chainService.getTrackedNetworks();
        const trackedNetwork = trackedNetworks.find((network => sameChainID(network.chainID, chainID)));
        if (trackedNetwork) {
          return trackedNetwork;
        }
        try {
          const newlyTrackedNetwork = await this.chainService.startTrackingNetworkOrThrow(chainID);
          return newlyTrackedNetwork;
        } catch (e) {
          lib_logger.warn(e);
          return undefined;
        }
      }
      async signTypedData(params) {
        const {EIP712Domain, ...typesForSigning} = params.typedData.types;
        const filteredTypedDataPayload = lib_utils._TypedDataEncoder.getPayload(params.typedData.domain, typesForSigning, params.typedData.message);
        const filteredRequest = {
          ...params,
          typedData: {
            ...filteredTypedDataPayload,
            types: {
              ...EIP712Domain === undefined ? {} : {
                EIP712Domain
              },
              ...filteredTypedDataPayload.types
            }
          }
        };
        return new Promise(((resolve, reject) => {
          this.emitter.emit("signTypedDataRequest", {
            payload: filteredRequest,
            resolver: resolve,
            rejecter: reject
          });
        }));
      }
      async switchToSupportedNetwork(origin, supportedNetwork) {
        const {address} = await this.preferenceService.getSelectedAccount();
        await this.chainService.markAccountActivity({
          address,
          network: supportedNetwork
        });
        await this.db.setCurrentChainIdForOrigin(origin, supportedNetwork);
      }
      async unsetCurrentNetworkForOrigin(origin, chainId) {
        await this.db.unsetCurrentNetworkForOrigin(origin, chainId);
      }
      async signData({input, account}, origin) {
        const hexInput = input.match(/^0x[0-9A-Fa-f]*$/) ? input : (0, lib_utils.hexlify)((0, 
        lib_utils.toUtf8Bytes)(input));
        const typeAndData = parseSigningData(input);
        const currentNetwork = await this.getCurrentOrDefaultNetworkForOrigin(origin);
        return new Promise(((resolve, reject) => {
          this.emitter.emit("signDataRequest", {
            payload: {
              account: {
                address: account,
                network: currentNetwork
              },
              rawSigningData: hexInput,
              ...typeAndData
            },
            resolver: resolve,
            rejecter: reject
          });
        }));
      }
    }
    const ReadOnlyAccountSigner = {
      type: "read-only"
    };
    function getSigningErrorReason(err) {
      if (err instanceof Error && err.message.toLowerCase().includes("user rejected")) {
        return "userRejected";
      }
      return "genericError";
    }
    class SigningService extends BaseService {
      addressHandlers=[];
      static create=async (internalSignerService, chainService) => new this(await internalSignerService, await chainService);
      constructor(internalSignerService, chainService) {
        super();
        this.internalSignerService = internalSignerService;
        this.chainService = chainService;
      }
      async internalStartService() {
        await super.internalStartService();
      }
      async signTransactionWithNonce(transactionWithNonce, accountSigner) {
        switch (accountSigner.type) {
         case "keyPair":
          return this.internalSignerService.signTransaction({
            address: transactionWithNonce.from,
            network: transactionWithNonce.network
          }, transactionWithNonce);

         case "read-only":
          throw new Error("Read-only signers cannot sign.");

         default:
          return assertUnreachable(accountSigner);
        }
      }
      async removeAccount(address, signerType) {
        if (signerType) {
          switch (signerType) {
           case "keyPair":
            await this.internalSignerService.removeAccount(address);
            break;

           case "read-only":
            break;

           default:
            assertUnreachable(signerType);
          }
        }
        await this.chainService.removeAccountToTrack(address);
      }
      async prepareForSigningRequest() {
        return Promise.resolve();
      }
      async signTransaction(transactionRequest, accountSigner) {
        const transactionWithNonce = await this.chainService.populateEVMTransactionNonce(transactionRequest);
        try {
          const signedTx = await this.signTransactionWithNonce(transactionWithNonce, accountSigner);
          this.emitter.emit("signingTxResponse", {
            type: "success-tx",
            signedTx
          });
          return signedTx;
        } catch (err) {
          this.emitter.emit("signingTxResponse", {
            type: "error",
            reason: getSigningErrorReason(err)
          });
          this.chainService.releaseEVMTransactionNonce(transactionWithNonce);
          throw err;
        }
      }
      addTrackedAddress(address, handler) {
        this.addressHandlers.push({
          address,
          signer: handler
        });
      }
      async signTypedData({typedData, account, accountSigner}) {
        try {
          let signedData;
          const chainId = typeof typedData.domain.chainId === "string" ? parseInt(typedData.domain.chainId) : typedData.domain.chainId;
          if (typedData.domain.chainId !== undefined && chainId !== parseInt(account.network.chainID)) {
            throw new Error("Attempting to sign typed data with mismatched chain IDs.");
          }
          switch (accountSigner.type) {
           case "keyPair":
            signedData = await this.internalSignerService.signTypedData({
              typedData,
              account: account.address
            });
            break;

           case "read-only":
            throw new Error("Read-only signers cannot sign.");

           default:
            assertUnreachable(accountSigner);
          }
          this.emitter.emit("signingDataResponse", {
            type: "success-data",
            signedData
          });
          return signedData;
        } catch (err) {
          this.emitter.emit("signingDataResponse", {
            type: "error",
            reason: getSigningErrorReason(err)
          });
          throw err;
        }
      }
      async signData(addressOnNetwork, hexDataToSign, accountSigner) {
        if (!hexDataToSign.startsWith("0x")) {
          throw new Error("Signing service can only sign hex data.");
        }
        try {
          let signedData;
          switch (accountSigner.type) {
           case "keyPair":
            signedData = await this.internalSignerService.personalSign({
              signingData: hexDataToSign,
              account: addressOnNetwork.address
            });
            break;

           case "read-only":
            throw new Error("Read-only signers cannot sign.");

           default:
            assertUnreachable(accountSigner);
          }
          this.emitter.emit("personalSigningResponse", {
            type: "success-data",
            signedData
          });
          return signedData;
        } catch (err) {
          if (getSigningErrorReason(err) === "userRejected") {
            this.emitter.emit("personalSigningResponse", {
              type: "error",
              reason: "userRejected"
            });
            lib_logger.debug("User rejected personal sign request", err);
            throw err;
          }
          this.emitter.emit("personalSigningResponse", {
            type: "error",
            reason: "genericError"
          });
          throw err;
        }
      }
    }
    function getNFTs(_accounts, _collections) {
      return [ Promise.resolve({
        nfts: [],
        nextPageURLs: {}
      }) ];
    }
    function getNFTCollections(_accounts) {
      return [ Promise.resolve([]) ];
    }
    async function getNFTsTransfers(_accounts, _timestamp) {
      return [];
    }
    const DEFAULT_PREFERENCES = {
      transfersLookupTimestamp: undefined,
      freshCollections: {}
    };
    class NFTsDatabase extends Xn {
      constructor() {
        super("qwal/nfts");
        this.version(1).stores({
          nfts: "&[id+collectionID+owner+network.chainID]",
          collections: "&[id+owner+network.chainID]",
          preferences: "++id"
        });
        this.on("populate", (tx => tx.db.table("preferences").add(DEFAULT_PREFERENCES)));
      }
      async updateNFTs(nfts) {
        await this.nfts.bulkPut(nfts);
      }
      async updateCollections(collections) {
        await this.collections.bulkPut(collections);
      }
      async updateCollectionData(collectionID, {address, network}, data) {
        const collection = await this.collections.get({
          id: collectionID,
          owner: address,
          "network.chainID": network.chainID
        });
        if (collection) {
          const updatedCollection = {
            ...collection,
            ...data
          };
          await this.updateCollections([ updatedCollection ]);
          return updatedCollection;
        }
        return undefined;
      }
      async getAllCollections() {
        return this.collections.toArray();
      }
      async getCollectionNFTsForAccount(collectionID, {address, network}) {
        return this.nfts.filter((nft => nft.collectionID === collectionID && sameQEVMAddress(nft.owner, address) && network.chainID === nft.network.chainID)).toArray();
      }
      async removeNFTsForAddress(address) {
        await this.nfts.filter((nft => sameQEVMAddress(nft.owner, address))).delete();
        await this.collections.filter((collection => sameQEVMAddress(collection.owner, address))).delete();
      }
      async removeNFTsByIDs(removedNFTsIDs) {
        const nftsToRemove = this.nfts.filter((nft => removedNFTsIDs.some((removedID => removedID === nft.id))));
        const collectionIdsToRemove = (await nftsToRemove.toArray()).reduce(((acc, nft) => {
          acc.add(nft.collectionID);
          return acc;
        }), new Set);
        await this.collections.filter((collection => collectionIdsToRemove.has(collection.id))).delete();
        await nftsToRemove.delete();
      }
      async setTransfersLookupTimestamp(transfersLookupTimestamp) {
        await this.preferences.toCollection().modify({
          transfersLookupTimestamp
        });
      }
      async setFreshCollections(freshCollections) {
        await this.preferences.toCollection().modify({
          freshCollections
        });
      }
      async setFreshCollectionsFromSavedData() {
        const freshCollections = {};
        const nfts = await this.nfts.toArray();
        nfts.forEach((nft => {
          const {collectionID} = nft;
          const {owner} = nft;
          freshCollections[collectionID] ??= {};
          freshCollections[collectionID][normalizeQEVMAddress(owner)] = true;
        }));
        await this.setFreshCollections(freshCollections);
        return freshCollections;
      }
      async getPreferences() {
        return await this.preferences.reverse().first() ?? DEFAULT_PREFERENCES;
      }
    }
    async function nfts_db_getOrCreateDB() {
      return new NFTsDatabase;
    }
    class NFTsService extends BaseService {
      #nextPageUrls={};
      #transfersLookupTimestamp;
      #freshCollections={};
      static create=async chainService => new this(await nfts_db_getOrCreateDB(), await chainService);
      constructor(db, chainService) {
        super();
        this.db = db;
        this.chainService = chainService;
        this.#transfersLookupTimestamp = getUNIXTimestamp();
      }
      async internalStartService() {
        await super.internalStartService();
        this.connectChainServiceEvents();
      }
      async internalStopService() {
        this.db.close();
        await super.internalStopService();
      }
      async connectChainServiceEvents() {
        this.chainService.emitter.once("serviceStarted").then((async () => {
          this.emitter.emit("isReloadingNFTs", true);
          const {transfersLookupTimestamp, freshCollections} = await this.db.getPreferences();
          let collections = await this.db.getAllCollections();
          if (!collections.length) {
            await this.initializeCollections();
            collections = await this.db.getAllCollections();
          }
          this.#transfersLookupTimestamp = transfersLookupTimestamp ?? await this.setTransfersLookupTimestamp();
          this.#freshCollections = Object.keys(freshCollections).length ? freshCollections : await this.db.setFreshCollectionsFromSavedData();
          this.emitter.emit("initializeNFTs", collections);
          this.emitter.emit("isReloadingNFTs", false);
        }));
        this.chainService.emitter.on("newAccountToTrack", (async addressOnNetwork => {
          this.emitter.emit("isReloadingNFTs", true);
          await this.initializeCollections([ addressOnNetwork ]);
          this.emitter.emit("isReloadingNFTs", false);
        }));
      }
      async initializeCollections(accounts) {
        const accountsToFetch = accounts ?? await this.chainService.getAccountsToTrack();
        if (accountsToFetch.length) {
          await this.fetchCollections(accountsToFetch);
        }
      }
      async refreshCollections(accounts) {
        const accountsToFetch = accounts ?? await this.chainService.getAccountsToTrack();
        if (!accountsToFetch.length) return;
        const transfers = await this.fetchTransferredNFTs(accountsToFetch);
        if (transfers.length) {
          await this.fetchCollections(accountsToFetch);
        }
      }
      async fetchCollections(accounts) {
        await Promise.all(getNFTCollections(accounts).map((async request => request.then((async collections => {
          await this.db.updateCollections(collections);
          this.emitter.emit("updateCollections", await this.db.getAllCollections());
        })))));
      }
      async refreshNFTsFromCollection(collectionID, account) {
        this.setFreshCollection(collectionID, account.address, false);
        await this.db.setFreshCollections(this.#freshCollections);
        await this.fetchNFTsFromCollection(collectionID, account);
      }
      async fetchNFTsFromCollection(collectionID, account) {
        if (this.#freshCollections[collectionID]?.[normalizeQEVMAddress(account.address)]) {
          await this.fetchNFTsFromDatabase(collectionID, account);
        } else {
          await Promise.allSettled(getNFTs([ account ], [ collectionID ]).map((async request => {
            const {nfts, nextPageURLs} = await request;
            await this.updateSavedNFTs(collectionID, account, nfts, nextPageURLs);
          })));
        }
      }
      async fetchNFTsFromDatabase(collectionID, account) {
        await this.emitter.emit("updateNFTs", {
          collectionID,
          account,
          nfts: await this.db.getCollectionNFTsForAccount(collectionID, account),
          hasNextPage: !!this.#nextPageUrls[collectionID]?.[account.address]
        });
      }
      async fetchNFTsFromNextPage(collectionID, account) {
        const nextPage = this.#nextPageUrls[collectionID]?.[account.address];
        if (nextPage) {
          delete this.#nextPageUrls[collectionID][account.address];
        }
      }
      async updateSavedNFTs(collectionID, account, nfts, nextPageURLs) {
        await this.db.updateNFTs(nfts);
        const updatedNFTs = await this.db.getCollectionNFTsForAccount(collectionID, account);
        this.updateNextPages(nextPageURLs);
        let updatedCollection;
        if (updatedNFTs.some((nft => nft.isBadge))) {
          updatedCollection = await this.db.updateCollectionData(collectionID, account, {
            hasBadges: true
          });
        }
        if (updatedCollection) {
          this.emitter.emit("updateCollections", [ updatedCollection ]);
        }
        this.setFreshCollection(collectionID, account.address, !!updatedNFTs.length);
        await this.db.setFreshCollections(this.#freshCollections);
        const hasNextPage = !!Object.keys(nextPageURLs).length;
        await this.emitter.emit("updateNFTs", {
          collectionID,
          account,
          nfts: updatedNFTs,
          hasNextPage
        });
      }
      updateNextPages(nextPageURLs) {
        Object.keys(nextPageURLs).forEach((collectionID => Object.entries(nextPageURLs[collectionID]).forEach((([address, url]) => {
          this.#nextPageUrls[collectionID] ??= {};
          this.#nextPageUrls[collectionID][address] = url;
        }))));
      }
      setFreshCollection(collectionID, address, isFresh) {
        this.#freshCollections[collectionID] ??= {};
        this.#freshCollections[collectionID][normalizeQEVMAddress(address)] = isFresh;
      }
      async removeNFTsForAddress(address) {
        Object.keys(this.#freshCollections).forEach((collectionID => {
          if (this.#freshCollections[collectionID][normalizeQEVMAddress(address)]) {
            this.setFreshCollection(collectionID, address, false);
          }
        }));
        await this.db.removeNFTsForAddress(address);
        await this.db.setFreshCollections(this.#freshCollections);
      }
      async setTransfersLookupTimestamp() {
        const timestamp = getUNIXTimestamp(Date.now() - 2 * MINUTE);
        await this.db.setTransfersLookupTimestamp(timestamp);
        return timestamp;
      }
      async fetchTransferredNFTs(accounts) {
        const transfers = await getNFTsTransfers(accounts, this.#transfersLookupTimestamp);
        this.#transfersLookupTimestamp = await this.setTransfersLookupTimestamp();
        transfers.forEach((transfer => {
          const {collectionID, to, from, isKnownFromAddress, isKnownToAddress} = transfer;
          if (collectionID && to && isKnownToAddress) {
            this.setFreshCollection(collectionID, to, false);
          }
          if (collectionID && from && isKnownFromAddress) {
            this.setFreshCollection(collectionID, from, false);
          }
        }));
        await this.db.setFreshCollections(this.#freshCollections);
        const knownFromAddress = transfers.filter((transfer => transfer.isKnownFromAddress));
        if (knownFromAddress.length) {
          await this.db.removeNFTsByIDs(knownFromAddress.map((transferred => transferred.id)));
          this.emitter.emit("removeTransferredNFTs", knownFromAddress);
        }
        return transfers;
      }
    }
    var Emittery;
    function getNoopService() {
      return Promise.resolve({
        startService: () => Promise.resolve(),
        stopService: () => Promise.resolve(),
        emitter: new Emittery
      });
    }
    function _typeof(o) {
      "@babel/helpers - typeof";
      return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
        return typeof o;
      } : function(o) {
        return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
      }, _typeof(o);
    }
    function toPrimitive(t, r) {
      if ("object" != _typeof(t) || !t) return t;
      var e = t[Symbol.toPrimitive];
      if (void 0 !== e) {
        var i = e.call(t, r || "default");
        if ("object" != _typeof(i)) return i;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r ? String : Number)(t);
    }
    function toPropertyKey(t) {
      var i = toPrimitive(t, "string");
      return "symbol" == _typeof(i) ? i : i + "";
    }
    function _defineProperty(e, r, t) {
      return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
        value: t,
        enumerable: !0,
        configurable: !0,
        writable: !0
      }) : e[r] = t, e;
    }
    function ownKeys(e, r) {
      var t = Object.keys(e);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e);
        r && (o = o.filter((function(r) {
          return Object.getOwnPropertyDescriptor(e, r).enumerable;
        }))), t.push.apply(t, o);
      }
      return t;
    }
    function _objectSpread2(e) {
      for (var r = 1; r < arguments.length; r++) {
        var t = null != arguments[r] ? arguments[r] : {};
        r % 2 ? ownKeys(Object(t), !0).forEach((function(r) {
          _defineProperty(e, r, t[r]);
        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach((function(r) {
          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
        }));
      }
      return e;
    }
    function formatProdErrorMessage(code) {
      return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + "use the non-minified dev environment for full errors. ";
    }
    var $$observable = function() {
      return typeof Symbol === "function" && Symbol.observable || "@@observable";
    }();
    var randomString = function randomString() {
      return Math.random().toString(36).substring(7).split("").join(".");
    };
    var ActionTypes = {
      INIT: "@@redux/INIT" + randomString(),
      REPLACE: "@@redux/REPLACE" + randomString(),
      PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {
        return "@@redux/PROBE_UNKNOWN_ACTION" + randomString();
      }
    };
    function isPlainObject(obj) {
      if (typeof obj !== "object" || obj === null) return false;
      var proto = obj;
      while (Object.getPrototypeOf(proto) !== null) {
        proto = Object.getPrototypeOf(proto);
      }
      return Object.getPrototypeOf(obj) === proto;
    }
    function miniKindOf(val) {
      if (val === void 0) return "undefined";
      if (val === null) return "null";
      var type = typeof val;
      switch (type) {
       case "boolean":
       case "string":
       case "number":
       case "symbol":
       case "function":
        {
          return type;
        }
      }
      if (Array.isArray(val)) return "array";
      if (isDate(val)) return "date";
      if (isError(val)) return "error";
      var constructorName = ctorName(val);
      switch (constructorName) {
       case "Symbol":
       case "Promise":
       case "WeakMap":
       case "WeakSet":
       case "Map":
       case "Set":
        return constructorName;
      }
      return type.slice(8, -1).toLowerCase().replace(/\s/g, "");
    }
    function ctorName(val) {
      return typeof val.constructor === "function" ? val.constructor.name : null;
    }
    function isError(val) {
      return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number";
    }
    function isDate(val) {
      if (val instanceof Date) return true;
      return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function";
    }
    function kindOf(val) {
      var typeOfVal = typeof val;
      if (false) {}
      return typeOfVal;
    }
    function createStore(reducer, preloadedState, enhancer) {
      var _ref2;
      if (typeof preloadedState === "function" && typeof enhancer === "function" || typeof enhancer === "function" && typeof arguments[3] === "function") {
        throw new Error(true ? formatProdErrorMessage(0) : 0);
      }
      if (typeof preloadedState === "function" && typeof enhancer === "undefined") {
        enhancer = preloadedState;
        preloadedState = undefined;
      }
      if (typeof enhancer !== "undefined") {
        if (typeof enhancer !== "function") {
          throw new Error(true ? formatProdErrorMessage(1) : 0);
        }
        return enhancer(createStore)(reducer, preloadedState);
      }
      if (typeof reducer !== "function") {
        throw new Error(true ? formatProdErrorMessage(2) : 0);
      }
      var currentReducer = reducer;
      var currentState = preloadedState;
      var currentListeners = [];
      var nextListeners = currentListeners;
      var isDispatching = false;
      function ensureCanMutateNextListeners() {
        if (nextListeners === currentListeners) {
          nextListeners = currentListeners.slice();
        }
      }
      function getState() {
        if (isDispatching) {
          throw new Error(true ? formatProdErrorMessage(3) : 0);
        }
        return currentState;
      }
      function subscribe(listener) {
        if (typeof listener !== "function") {
          throw new Error(true ? formatProdErrorMessage(4) : 0);
        }
        if (isDispatching) {
          throw new Error(true ? formatProdErrorMessage(5) : 0);
        }
        var isSubscribed = true;
        ensureCanMutateNextListeners();
        nextListeners.push(listener);
        return function unsubscribe() {
          if (!isSubscribed) {
            return;
          }
          if (isDispatching) {
            throw new Error(true ? formatProdErrorMessage(6) : 0);
          }
          isSubscribed = false;
          ensureCanMutateNextListeners();
          var index = nextListeners.indexOf(listener);
          nextListeners.splice(index, 1);
          currentListeners = null;
        };
      }
      function dispatch(action) {
        if (!isPlainObject(action)) {
          throw new Error(true ? formatProdErrorMessage(7) : 0);
        }
        if (typeof action.type === "undefined") {
          throw new Error(true ? formatProdErrorMessage(8) : 0);
        }
        if (isDispatching) {
          throw new Error(true ? formatProdErrorMessage(9) : 0);
        }
        try {
          isDispatching = true;
          currentState = currentReducer(currentState, action);
        } finally {
          isDispatching = false;
        }
        var listeners = currentListeners = nextListeners;
        for (var i = 0; i < listeners.length; i++) {
          var listener = listeners[i];
          listener();
        }
        return action;
      }
      function replaceReducer(nextReducer) {
        if (typeof nextReducer !== "function") {
          throw new Error(true ? formatProdErrorMessage(10) : 0);
        }
        currentReducer = nextReducer;
        dispatch({
          type: ActionTypes.REPLACE
        });
      }
      function observable() {
        var _ref;
        var outerSubscribe = subscribe;
        return _ref = {
          subscribe: function subscribe(observer) {
            if (typeof observer !== "object" || observer === null) {
              throw new Error(true ? formatProdErrorMessage(11) : 0);
            }
            function observeState() {
              if (observer.next) {
                observer.next(getState());
              }
            }
            observeState();
            var unsubscribe = outerSubscribe(observeState);
            return {
              unsubscribe
            };
          }
        }, _ref[$$observable] = function() {
          return this;
        }, _ref;
      }
      dispatch({
        type: ActionTypes.INIT
      });
      return _ref2 = {
        dispatch,
        subscribe,
        getState,
        replaceReducer
      }, _ref2[$$observable] = observable, _ref2;
    }
    var legacy_createStore = null && createStore;
    function warning(message) {
      if (typeof console !== "undefined" && typeof console.error === "function") {
        console.error(message);
      }
      try {
        throw new Error(message);
      } catch (e) {}
    }
    function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
      var reducerKeys = Object.keys(reducers);
      var argumentName = action && action.type === ActionTypes.INIT ? "preloadedState argument passed to createStore" : "previous state received by the reducer";
      if (reducerKeys.length === 0) {
        return "Store does not have a valid reducer. Make sure the argument passed " + "to combineReducers is an object whose values are reducers.";
      }
      if (!isPlainObject(inputState)) {
        return "The " + argumentName + ' has unexpected type of "' + kindOf(inputState) + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
      }
      var unexpectedKeys = Object.keys(inputState).filter((function(key) {
        return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
      }));
      unexpectedKeys.forEach((function(key) {
        unexpectedKeyCache[key] = true;
      }));
      if (action && action.type === ActionTypes.REPLACE) return;
      if (unexpectedKeys.length > 0) {
        return "Unexpected " + (unexpectedKeys.length > 1 ? "keys" : "key") + " " + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
      }
    }
    function assertReducerShape(reducers) {
      Object.keys(reducers).forEach((function(key) {
        var reducer = reducers[key];
        var initialState = reducer(undefined, {
          type: ActionTypes.INIT
        });
        if (typeof initialState === "undefined") {
          throw new Error(true ? formatProdErrorMessage(12) : 0);
        }
        if (typeof reducer(undefined, {
          type: ActionTypes.PROBE_UNKNOWN_ACTION()
        }) === "undefined") {
          throw new Error(true ? formatProdErrorMessage(13) : 0);
        }
      }));
    }
    function combineReducers(reducers) {
      var reducerKeys = Object.keys(reducers);
      var finalReducers = {};
      for (var i = 0; i < reducerKeys.length; i++) {
        var key = reducerKeys[i];
        if (false) {}
        if (typeof reducers[key] === "function") {
          finalReducers[key] = reducers[key];
        }
      }
      var finalReducerKeys = Object.keys(finalReducers);
      var unexpectedKeyCache;
      if (false) {}
      var shapeAssertionError;
      try {
        assertReducerShape(finalReducers);
      } catch (e) {
        shapeAssertionError = e;
      }
      return function combination(state, action) {
        if (state === void 0) {
          state = {};
        }
        if (shapeAssertionError) {
          throw shapeAssertionError;
        }
        if (false) {
          var warningMessage;
        }
        var hasChanged = false;
        var nextState = {};
        for (var _i = 0; _i < finalReducerKeys.length; _i++) {
          var _key = finalReducerKeys[_i];
          var reducer = finalReducers[_key];
          var previousStateForKey = state[_key];
          var nextStateForKey = reducer(previousStateForKey, action);
          if (typeof nextStateForKey === "undefined") {
            var actionType = action && action.type;
            throw new Error(true ? formatProdErrorMessage(14) : 0);
          }
          nextState[_key] = nextStateForKey;
          hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
        }
        hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
        return hasChanged ? nextState : state;
      };
    }
    function bindActionCreator(actionCreator, dispatch) {
      return function() {
        return dispatch(actionCreator.apply(this, arguments));
      };
    }
    function bindActionCreators(actionCreators, dispatch) {
      if (typeof actionCreators === "function") {
        return bindActionCreator(actionCreators, dispatch);
      }
      if (typeof actionCreators !== "object" || actionCreators === null) {
        throw new Error(true ? formatProdErrorMessage(16) : 0);
      }
      var boundActionCreators = {};
      for (var key in actionCreators) {
        var actionCreator = actionCreators[key];
        if (typeof actionCreator === "function") {
          boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
        }
      }
      return boundActionCreators;
    }
    function compose() {
      for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
        funcs[_key] = arguments[_key];
      }
      if (funcs.length === 0) {
        return function(arg) {
          return arg;
        };
      }
      if (funcs.length === 1) {
        return funcs[0];
      }
      return funcs.reduce((function(a, b) {
        return function() {
          return a(b.apply(void 0, arguments));
        };
      }));
    }
    function applyMiddleware() {
      for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
        middlewares[_key] = arguments[_key];
      }
      return function(createStore) {
        return function() {
          var store = createStore.apply(void 0, arguments);
          var _dispatch = function dispatch() {
            throw new Error(true ? formatProdErrorMessage(15) : 0);
          };
          var middlewareAPI = {
            getState: store.getState,
            dispatch: function dispatch() {
              return _dispatch.apply(void 0, arguments);
            }
          };
          var chain = middlewares.map((function(middleware) {
            return middleware(middlewareAPI);
          }));
          _dispatch = compose.apply(void 0, chain)(store.dispatch);
          return _objectSpread2(_objectSpread2({}, store), {}, {
            dispatch: _dispatch
          });
        };
      };
    }
    function createThunkMiddleware(extraArgument) {
      var middleware = function middleware(_ref) {
        var dispatch = _ref.dispatch, getState = _ref.getState;
        return function(next) {
          return function(action) {
            if (typeof action === "function") {
              return action(dispatch, getState, extraArgument);
            }
            return next(action);
          };
        };
      };
      return middleware;
    }
    var thunk = createThunkMiddleware();
    thunk.withExtraArgument = createThunkMiddleware;
    const es = thunk;
    var isDraft;
    var current;
    var createSelector;
    var isDraft3;
    var createNextState3;
    var process = __webpack_require__(5606);
    var __extends = undefined && undefined.__extends || function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || {
          __proto__: []
        } instanceof Array && function(d, b) {
          d.__proto__ = b;
        } || function(d, b) {
          for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __);
      };
    }();
    var __generator = undefined && undefined.__generator || function(thisArg, body) {
      var _ = {
        label: 0,
        sent: function() {
          if (t[0] & 1) throw t[1];
          return t[1];
        },
        trys: [],
        ops: []
      }, f, y, t, g;
      return g = {
        next: verb(0),
        throw: verb(1),
        return: verb(2)
      }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([ n, v ]);
        };
      }
      function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
          if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 
          0) : y.next) && !(t = t.call(y, op[1])).done) return t;
          if (y = 0, t) op = [ op[0] & 2, t.value ];
          switch (op[0]) {
           case 0:
           case 1:
            t = op;
            break;

           case 4:
            _.label++;
            return {
              value: op[1],
              done: false
            };

           case 5:
            _.label++;
            y = op[1];
            op = [ 0 ];
            continue;

           case 7:
            op = _.ops.pop();
            _.trys.pop();
            continue;

           default:
            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
              _ = 0;
              continue;
            }
            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
              _.label = op[1];
              break;
            }
            if (op[0] === 6 && _.label < t[1]) {
              _.label = t[1];
              t = op;
              break;
            }
            if (t && _.label < t[2]) {
              _.label = t[2];
              _.ops.push(op);
              break;
            }
            if (t[2]) _.ops.pop();
            _.trys.pop();
            continue;
          }
          op = body.call(thisArg, _);
        } catch (e) {
          op = [ 6, e ];
          y = 0;
        } finally {
          f = t = 0;
        }
        if (op[0] & 5) throw op[1];
        return {
          value: op[0] ? op[1] : void 0,
          done: true
        };
      }
    };
    var __spreadArray = undefined && undefined.__spreadArray || function(to, from) {
      for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i];
      return to;
    };
    var __defProp = Object.defineProperty;
    var __defProps = Object.defineProperties;
    var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
    var __getOwnPropSymbols = Object.getOwnPropertySymbols;
    var __hasOwnProp = Object.prototype.hasOwnProperty;
    var __propIsEnum = Object.prototype.propertyIsEnumerable;
    var __defNormalProp = function(obj, key, value) {
      return key in obj ? __defProp(obj, key, {
        enumerable: true,
        configurable: true,
        writable: true,
        value
      }) : obj[key] = value;
    };
    var __spreadValues = function(a, b) {
      for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
      if (__getOwnPropSymbols) for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {
        var prop = _c[_i];
        if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
      }
      return a;
    };
    var __spreadProps = function(a, b) {
      return __defProps(a, __getOwnPropDescs(b));
    };
    var __async = function(__this, __arguments, generator) {
      return new Promise((function(resolve, reject) {
        var fulfilled = function(value) {
          try {
            step(generator.next(value));
          } catch (e) {
            reject(e);
          }
        };
        var rejected = function(value) {
          try {
            step(generator.throw(value));
          } catch (e) {
            reject(e);
          }
        };
        var step = function(x) {
          return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
        };
        step((generator = generator.apply(__this, __arguments)).next());
      }));
    };
    var createDraftSafeSelector = function() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var selector = createSelector.apply(void 0, args);
      var wrappedSelector = function(value) {
        var rest = [];
        for (var _i = 1; _i < arguments.length; _i++) {
          rest[_i - 1] = arguments[_i];
        }
        return selector.apply(void 0, __spreadArray([ isDraft(value) ? current(value) : value ], rest));
      };
      return wrappedSelector;
    };
    var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() {
      if (arguments.length === 0) return void 0;
      if (typeof arguments[0] === "object") return compose;
      return compose.apply(null, arguments);
    };
    var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() {
      return function(noop2) {
        return noop2;
      };
    };
    function redux_toolkit_esm_isPlainObject(value) {
      if (typeof value !== "object" || value === null) return false;
      var proto = Object.getPrototypeOf(value);
      if (proto === null) return true;
      var baseProto = proto;
      while (Object.getPrototypeOf(baseProto) !== null) {
        baseProto = Object.getPrototypeOf(baseProto);
      }
      return proto === baseProto;
    }
    var hasMatchFunction = function(v) {
      return v && typeof v.match === "function";
    };
    function createAction(type, prepareAction) {
      function actionCreator() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        if (prepareAction) {
          var prepared = prepareAction.apply(void 0, args);
          if (!prepared) {
            throw new Error("prepareAction did not return an object");
          }
          return __spreadValues(__spreadValues({
            type,
            payload: prepared.payload
          }, "meta" in prepared && {
            meta: prepared.meta
          }), "error" in prepared && {
            error: prepared.error
          });
        }
        return {
          type,
          payload: args[0]
        };
      }
      actionCreator.toString = function() {
        return "" + type;
      };
      actionCreator.type = type;
      actionCreator.match = function(action) {
        return action.type === type;
      };
      return actionCreator;
    }
    function isAction(action) {
      return redux_toolkit_esm_isPlainObject(action) && "type" in action;
    }
    function isActionCreator(action) {
      return typeof action === "function" && "type" in action && hasMatchFunction(action);
    }
    function isFSA(action) {
      return isAction(action) && typeof action.type === "string" && Object.keys(action).every(isValidKey);
    }
    function isValidKey(key) {
      return [ "type", "payload", "error", "meta" ].indexOf(key) > -1;
    }
    function redux_toolkit_esm_getType(actionCreator) {
      return "" + actionCreator;
    }
    function getMessage(type) {
      var splitType = type ? ("" + type).split("/") : [];
      var actionName = splitType[splitType.length - 1] || "actionCreator";
      return 'Detected an action creator with type "' + (type || "unknown") + "\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. `dispatch(" + actionName + "())` instead of `dispatch(" + actionName + ")`. This is necessary even if the action has no payload.";
    }
    function createActionCreatorInvariantMiddleware(options) {
      if (options === void 0) {
        options = {};
      }
      if (true) {
        return function() {
          return function(next) {
            return function(action) {
              return next(action);
            };
          };
        };
      }
      var _c, isActionCreator2;
    }
    function getTimeMeasureUtils(maxDelay, fnName) {
      var elapsed = 0;
      return {
        measureTime: function(fn) {
          var started = Date.now();
          try {
            return fn();
          } finally {
            var finished = Date.now();
            elapsed += finished - started;
          }
        },
        warnIfExceeded: function() {
          if (elapsed > maxDelay) {
            console.warn(fnName + " took " + elapsed + "ms, which is more than the warning threshold of " + maxDelay + "ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.");
          }
        }
      };
    }
    var MiddlewareArray = function(_super) {
      __extends(MiddlewareArray, _super);
      function MiddlewareArray() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var _this = _super.apply(this, args) || this;
        Object.setPrototypeOf(_this, MiddlewareArray.prototype);
        return _this;
      }
      Object.defineProperty(MiddlewareArray, Symbol.species, {
        get: function() {
          return MiddlewareArray;
        },
        enumerable: false,
        configurable: true
      });
      MiddlewareArray.prototype.concat = function() {
        var arr = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          arr[_i] = arguments[_i];
        }
        return _super.prototype.concat.apply(this, arr);
      };
      MiddlewareArray.prototype.prepend = function() {
        var arr = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          arr[_i] = arguments[_i];
        }
        if (arr.length === 1 && Array.isArray(arr[0])) {
          return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([ void 0 ], arr[0].concat(this))));
        }
        return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([ void 0 ], arr.concat(this))));
      };
      return MiddlewareArray;
    }(Array);
    var EnhancerArray = function(_super) {
      __extends(EnhancerArray, _super);
      function EnhancerArray() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var _this = _super.apply(this, args) || this;
        Object.setPrototypeOf(_this, EnhancerArray.prototype);
        return _this;
      }
      Object.defineProperty(EnhancerArray, Symbol.species, {
        get: function() {
          return EnhancerArray;
        },
        enumerable: false,
        configurable: true
      });
      EnhancerArray.prototype.concat = function() {
        var arr = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          arr[_i] = arguments[_i];
        }
        return _super.prototype.concat.apply(this, arr);
      };
      EnhancerArray.prototype.prepend = function() {
        var arr = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          arr[_i] = arguments[_i];
        }
        if (arr.length === 1 && Array.isArray(arr[0])) {
          return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([ void 0 ], arr[0].concat(this))));
        }
        return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([ void 0 ], arr.concat(this))));
      };
      return EnhancerArray;
    }(Array);
    function freezeDraftable(val) {
      return t(val) ? immer_esm(val, (function() {})) : val;
    }
    var isProduction = null && "production" === "production";
    var prefix = "Invariant failed";
    function invariant(condition, message) {
      if (condition) {
        return;
      }
      if (isProduction) {
        throw new Error(prefix);
      }
      throw new Error(prefix + ": " + (message || ""));
    }
    function stringify(obj, serializer, indent, decycler) {
      return JSON.stringify(obj, getSerialize(serializer, decycler), indent);
    }
    function getSerialize(serializer, decycler) {
      var stack = [], keys = [];
      if (!decycler) decycler = function(_, value) {
        if (stack[0] === value) return "[Circular ~]";
        return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]";
      };
      return function(key, value) {
        if (stack.length > 0) {
          var thisPos = stack.indexOf(this);
          ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);
          ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);
          if (~stack.indexOf(value)) value = decycler.call(this, key, value);
        } else stack.push(value);
        return serializer == null ? value : serializer.call(this, key, value);
      };
    }
    function isImmutableDefault(value) {
      return typeof value !== "object" || value == null || Object.isFrozen(value);
    }
    function trackForMutations(isImmutable, ignorePaths, obj) {
      var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);
      return {
        detectMutations: function() {
          return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);
        }
      };
    }
    function trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) {
      if (ignorePaths === void 0) {
        ignorePaths = [];
      }
      if (path === void 0) {
        path = "";
      }
      if (checkedObjects === void 0) {
        checkedObjects = new Set;
      }
      var tracked = {
        value: obj
      };
      if (!isImmutable(obj) && !checkedObjects.has(obj)) {
        checkedObjects.add(obj);
        tracked.children = {};
        for (var key in obj) {
          var childPath = path ? path + "." + key : key;
          if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {
            continue;
          }
          tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);
        }
      }
      return tracked;
    }
    function detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {
      if (ignoredPaths === void 0) {
        ignoredPaths = [];
      }
      if (sameParentRef === void 0) {
        sameParentRef = false;
      }
      if (path === void 0) {
        path = "";
      }
      var prevObj = trackedProperty ? trackedProperty.value : void 0;
      var sameRef = prevObj === obj;
      if (sameParentRef && !sameRef && !Number.isNaN(obj)) {
        return {
          wasMutated: true,
          path
        };
      }
      if (isImmutable(prevObj) || isImmutable(obj)) {
        return {
          wasMutated: false
        };
      }
      var keysToDetect = {};
      for (var key in trackedProperty.children) {
        keysToDetect[key] = true;
      }
      for (var key in obj) {
        keysToDetect[key] = true;
      }
      var hasIgnoredPaths = ignoredPaths.length > 0;
      var _loop_1 = function(key) {
        var nestedPath = path ? path + "." + key : key;
        if (hasIgnoredPaths) {
          var hasMatches = ignoredPaths.some((function(ignored) {
            if (ignored instanceof RegExp) {
              return ignored.test(nestedPath);
            }
            return nestedPath === ignored;
          }));
          if (hasMatches) {
            return "continue";
          }
        }
        var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);
        if (result.wasMutated) {
          return {
            value: result
          };
        }
      };
      for (var key in keysToDetect) {
        var state_1 = _loop_1(key);
        if (typeof state_1 === "object") return state_1.value;
      }
      return {
        wasMutated: false
      };
    }
    function createImmutableStateInvariantMiddleware(options) {
      if (options === void 0) {
        options = {};
      }
      if (true) {
        return function() {
          return function(next) {
            return function(action) {
              return next(action);
            };
          };
        };
      }
      var _c, isImmutable, ignoredPaths, _d, warnAfter, ignore;
      var track;
    }
    function isPlain(val) {
      var type = typeof val;
      return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || redux_toolkit_esm_isPlainObject(val);
    }
    function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {
      if (path === void 0) {
        path = "";
      }
      if (isSerializable === void 0) {
        isSerializable = isPlain;
      }
      if (ignoredPaths === void 0) {
        ignoredPaths = [];
      }
      var foundNestedSerializable;
      if (!isSerializable(value)) {
        return {
          keyPath: path || "<root>",
          value
        };
      }
      if (typeof value !== "object" || value === null) {
        return false;
      }
      if (cache == null ? void 0 : cache.has(value)) return false;
      var entries = getEntries != null ? getEntries(value) : Object.entries(value);
      var hasIgnoredPaths = ignoredPaths.length > 0;
      var _loop_2 = function(key, nestedValue) {
        var nestedPath = path ? path + "." + key : key;
        if (hasIgnoredPaths) {
          var hasMatches = ignoredPaths.some((function(ignored) {
            if (ignored instanceof RegExp) {
              return ignored.test(nestedPath);
            }
            return nestedPath === ignored;
          }));
          if (hasMatches) {
            return "continue";
          }
        }
        if (!isSerializable(nestedValue)) {
          return {
            value: {
              keyPath: nestedPath,
              value: nestedValue
            }
          };
        }
        if (typeof nestedValue === "object") {
          foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);
          if (foundNestedSerializable) {
            return {
              value: foundNestedSerializable
            };
          }
        }
      };
      for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
        var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];
        var state_2 = _loop_2(key, nestedValue);
        if (typeof state_2 === "object") return state_2.value;
      }
      if (cache && isNestedFrozen(value)) cache.add(value);
      return false;
    }
    function isNestedFrozen(value) {
      if (!Object.isFrozen(value)) return false;
      for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {
        var nestedValue = _c[_i];
        if (typeof nestedValue !== "object" || nestedValue === null) continue;
        if (!isNestedFrozen(nestedValue)) return false;
      }
      return true;
    }
    function createSerializableStateInvariantMiddleware(options) {
      if (options === void 0) {
        options = {};
      }
      if (true) {
        return function() {
          return function(next) {
            return function(action) {
              return next(action);
            };
          };
        };
      }
      var _c, isSerializable, getEntries, _d, ignoredActions, _e, ignoredActionPaths, _f, ignoredPaths, _g, warnAfter, _h, ignoreState, _j, ignoreActions, _k, disableCache;
      var cache;
    }
    function isBoolean(x) {
      return typeof x === "boolean";
    }
    function curryGetDefaultMiddleware() {
      return function curriedGetDefaultMiddleware(options) {
        return getDefaultMiddleware(options);
      };
    }
    function getDefaultMiddleware(options) {
      if (options === void 0) {
        options = {};
      }
      var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e, _f = options.actionCreatorCheck, actionCreatorCheck = _f === void 0 ? true : _f;
      var middlewareArray = new MiddlewareArray;
      if (thunk) {
        if (isBoolean(thunk)) {
          middlewareArray.push(es);
        } else {
          middlewareArray.push(es.withExtraArgument(thunk.extraArgument));
        }
      }
      if (false) {
        var actionCreatorOptions, serializableOptions, immutableOptions;
      }
      return middlewareArray;
    }
    var IS_PRODUCTION = "production" === "production";
    function configureStore(options) {
      var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();
      var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;
      var rootReducer;
      if (typeof reducer === "function") {
        rootReducer = reducer;
      } else if (redux_toolkit_esm_isPlainObject(reducer)) {
        rootReducer = combineReducers(reducer);
      } else {
        throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');
      }
      var finalMiddleware = middleware;
      if (typeof finalMiddleware === "function") {
        finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);
        if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {
          throw new Error("when using a middleware builder function, an array of middleware must be returned");
        }
      }
      if (!IS_PRODUCTION && finalMiddleware.some((function(item) {
        return typeof item !== "function";
      }))) {
        throw new Error("each middleware provided to configureStore must be a function");
      }
      var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);
      var finalCompose = compose;
      if (devTools) {
        finalCompose = composeWithDevTools(__spreadValues({
          trace: !IS_PRODUCTION
        }, typeof devTools === "object" && devTools));
      }
      var defaultEnhancers = new EnhancerArray(middlewareEnhancer);
      var storeEnhancers = defaultEnhancers;
      if (Array.isArray(enhancers)) {
        storeEnhancers = __spreadArray([ middlewareEnhancer ], enhancers);
      } else if (typeof enhancers === "function") {
        storeEnhancers = enhancers(defaultEnhancers);
      }
      var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);
      return createStore(rootReducer, preloadedState, composedEnhancer);
    }
    function executeReducerBuilderCallback(builderCallback) {
      var actionsMap = {};
      var actionMatchers = [];
      var defaultCaseReducer;
      var builder = {
        addCase: function(typeOrActionCreator, reducer) {
          if (false) {}
          var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type;
          if (!type) {
            throw new Error("`builder.addCase` cannot be called with an empty action type");
          }
          if (type in actionsMap) {
            throw new Error("`builder.addCase` cannot be called with two reducers for the same action type");
          }
          actionsMap[type] = reducer;
          return builder;
        },
        addMatcher: function(matcher, reducer) {
          if (false) {}
          actionMatchers.push({
            matcher,
            reducer
          });
          return builder;
        },
        addDefaultCase: function(reducer) {
          if (false) {}
          defaultCaseReducer = reducer;
          return builder;
        }
      };
      builderCallback(builder);
      return [ actionsMap, actionMatchers, defaultCaseReducer ];
    }
    function isStateFunction(x) {
      return typeof x === "function";
    }
    var hasWarnedAboutObjectNotation = false;
    function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {
      if (actionMatchers === void 0) {
        actionMatchers = [];
      }
      if (false) {}
      var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [ mapOrBuilderCallback, actionMatchers, defaultCaseReducer ], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];
      var getInitialState;
      if (isStateFunction(initialState)) {
        getInitialState = function() {
          return freezeDraftable(initialState());
        };
      } else {
        var frozenInitialState_1 = freezeDraftable(initialState);
        getInitialState = function() {
          return frozenInitialState_1;
        };
      }
      function reducer(state, action) {
        if (state === void 0) {
          state = getInitialState();
        }
        var caseReducers = __spreadArray([ actionsMap[action.type] ], finalActionMatchers.filter((function(_c) {
          var matcher = _c.matcher;
          return matcher(action);
        })).map((function(_c) {
          var reducer2 = _c.reducer;
          return reducer2;
        })));
        if (caseReducers.filter((function(cr) {
          return !!cr;
        })).length === 0) {
          caseReducers = [ finalDefaultCaseReducer ];
        }
        return caseReducers.reduce((function(previousState, caseReducer) {
          if (caseReducer) {
            if (r(previousState)) {
              var draft = previousState;
              var result = caseReducer(draft, action);
              if (result === void 0) {
                return previousState;
              }
              return result;
            } else if (!t(previousState)) {
              var result = caseReducer(previousState, action);
              if (result === void 0) {
                if (previousState === null) {
                  return previousState;
                }
                throw Error("A case reducer on a non-draftable value must not return undefined");
              }
              return result;
            } else {
              return immer_esm(previousState, (function(draft) {
                return caseReducer(draft, action);
              }));
            }
          }
          return previousState;
        }), state);
      }
      reducer.getInitialState = getInitialState;
      return reducer;
    }
    var hasWarnedAboutObjectNotation2 = false;
    function getType2(slice, actionKey) {
      return slice + "/" + actionKey;
    }
    function createSlice(options) {
      var name = options.name;
      if (!name) {
        throw new Error("`name` is a required option for createSlice");
      }
      if (typeof process !== "undefined" && "production" === "development") {}
      var initialState = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState);
      var reducers = options.reducers || {};
      var reducerNames = Object.keys(reducers);
      var sliceCaseReducersByName = {};
      var sliceCaseReducersByType = {};
      var actionCreators = {};
      reducerNames.forEach((function(reducerName) {
        var maybeReducerWithPrepare = reducers[reducerName];
        var type = getType2(name, reducerName);
        var caseReducer;
        var prepareCallback;
        if ("reducer" in maybeReducerWithPrepare) {
          caseReducer = maybeReducerWithPrepare.reducer;
          prepareCallback = maybeReducerWithPrepare.prepare;
        } else {
          caseReducer = maybeReducerWithPrepare;
        }
        sliceCaseReducersByName[reducerName] = caseReducer;
        sliceCaseReducersByType[type] = caseReducer;
        actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);
      }));
      function buildReducer() {
        if (false) {}
        var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [ options.extraReducers ], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;
        var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);
        return createReducer(initialState, (function(builder) {
          for (var key in finalCaseReducers) {
            builder.addCase(key, finalCaseReducers[key]);
          }
          for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {
            var m = actionMatchers_1[_i];
            builder.addMatcher(m.matcher, m.reducer);
          }
          if (defaultCaseReducer) {
            builder.addDefaultCase(defaultCaseReducer);
          }
        }));
      }
      var _reducer;
      return {
        name,
        reducer: function(state, action) {
          if (!_reducer) _reducer = buildReducer();
          return _reducer(state, action);
        },
        actions: actionCreators,
        caseReducers: sliceCaseReducersByName,
        getInitialState: function() {
          if (!_reducer) _reducer = buildReducer();
          return _reducer.getInitialState();
        }
      };
    }
    function getInitialEntityState() {
      return {
        ids: [],
        entities: {}
      };
    }
    function createInitialStateFactory() {
      function getInitialState(additionalState) {
        if (additionalState === void 0) {
          additionalState = {};
        }
        return Object.assign(getInitialEntityState(), additionalState);
      }
      return {
        getInitialState
      };
    }
    function createSelectorsFactory() {
      function getSelectors(selectState) {
        var selectIds = function(state) {
          return state.ids;
        };
        var selectEntities = function(state) {
          return state.entities;
        };
        var selectAll = createDraftSafeSelector(selectIds, selectEntities, (function(ids, entities) {
          return ids.map((function(id) {
            return entities[id];
          }));
        }));
        var selectId = function(_, id) {
          return id;
        };
        var selectById = function(entities, id) {
          return entities[id];
        };
        var selectTotal = createDraftSafeSelector(selectIds, (function(ids) {
          return ids.length;
        }));
        if (!selectState) {
          return {
            selectIds,
            selectEntities,
            selectAll,
            selectTotal,
            selectById: createDraftSafeSelector(selectEntities, selectId, selectById)
          };
        }
        var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);
        return {
          selectIds: createDraftSafeSelector(selectState, selectIds),
          selectEntities: selectGlobalizedEntities,
          selectAll: createDraftSafeSelector(selectState, selectAll),
          selectTotal: createDraftSafeSelector(selectState, selectTotal),
          selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)
        };
      }
      return {
        getSelectors
      };
    }
    function createSingleArgumentStateOperator(mutator) {
      var operator = createStateOperator((function(_, state) {
        return mutator(state);
      }));
      return function operation(state) {
        return operator(state, void 0);
      };
    }
    function createStateOperator(mutator) {
      return function operation(state, arg) {
        function isPayloadActionArgument(arg2) {
          return isFSA(arg2);
        }
        var runMutator = function(draft) {
          if (isPayloadActionArgument(arg)) {
            mutator(arg.payload, draft);
          } else {
            mutator(arg, draft);
          }
        };
        if (isDraft3(state)) {
          runMutator(state);
          return state;
        } else {
          return createNextState3(state, runMutator);
        }
      };
    }
    function selectIdValue(entity, selectId) {
      var key = selectId(entity);
      if (false) {}
      return key;
    }
    function ensureEntitiesArray(entities) {
      if (!Array.isArray(entities)) {
        entities = Object.values(entities);
      }
      return entities;
    }
    function splitAddedUpdatedEntities(newEntities, selectId, state) {
      newEntities = ensureEntitiesArray(newEntities);
      var added = [];
      var updated = [];
      for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {
        var entity = newEntities_1[_i];
        var id = selectIdValue(entity, selectId);
        if (id in state.entities) {
          updated.push({
            id,
            changes: entity
          });
        } else {
          added.push(entity);
        }
      }
      return [ added, updated ];
    }
    function createUnsortedStateAdapter(selectId) {
      function addOneMutably(entity, state) {
        var key = selectIdValue(entity, selectId);
        if (key in state.entities) {
          return;
        }
        state.ids.push(key);
        state.entities[key] = entity;
      }
      function addManyMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {
          var entity = newEntities_2[_i];
          addOneMutably(entity, state);
        }
      }
      function setOneMutably(entity, state) {
        var key = selectIdValue(entity, selectId);
        if (!(key in state.entities)) {
          state.ids.push(key);
        }
        state.entities[key] = entity;
      }
      function setManyMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {
          var entity = newEntities_3[_i];
          setOneMutably(entity, state);
        }
      }
      function setAllMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        state.ids = [];
        state.entities = {};
        addManyMutably(newEntities, state);
      }
      function removeOneMutably(key, state) {
        return removeManyMutably([ key ], state);
      }
      function removeManyMutably(keys, state) {
        var didMutate = false;
        keys.forEach((function(key) {
          if (key in state.entities) {
            delete state.entities[key];
            didMutate = true;
          }
        }));
        if (didMutate) {
          state.ids = state.ids.filter((function(id) {
            return id in state.entities;
          }));
        }
      }
      function removeAllMutably(state) {
        Object.assign(state, {
          ids: [],
          entities: {}
        });
      }
      function takeNewKey(keys, update, state) {
        var original2 = state.entities[update.id];
        var updated = Object.assign({}, original2, update.changes);
        var newKey = selectIdValue(updated, selectId);
        var hasNewKey = newKey !== update.id;
        if (hasNewKey) {
          keys[update.id] = newKey;
          delete state.entities[update.id];
        }
        state.entities[newKey] = updated;
        return hasNewKey;
      }
      function updateOneMutably(update, state) {
        return updateManyMutably([ update ], state);
      }
      function updateManyMutably(updates, state) {
        var newKeys = {};
        var updatesPerEntity = {};
        updates.forEach((function(update) {
          if (update.id in state.entities) {
            updatesPerEntity[update.id] = {
              id: update.id,
              changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)
            };
          }
        }));
        updates = Object.values(updatesPerEntity);
        var didMutateEntities = updates.length > 0;
        if (didMutateEntities) {
          var didMutateIds = updates.filter((function(update) {
            return takeNewKey(newKeys, update, state);
          })).length > 0;
          if (didMutateIds) {
            state.ids = Object.keys(state.entities);
          }
        }
      }
      function upsertOneMutably(entity, state) {
        return upsertManyMutably([ entity ], state);
      }
      function upsertManyMutably(newEntities, state) {
        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];
        updateManyMutably(updated, state);
        addManyMutably(added, state);
      }
      return {
        removeAll: createSingleArgumentStateOperator(removeAllMutably),
        addOne: createStateOperator(addOneMutably),
        addMany: createStateOperator(addManyMutably),
        setOne: createStateOperator(setOneMutably),
        setMany: createStateOperator(setManyMutably),
        setAll: createStateOperator(setAllMutably),
        updateOne: createStateOperator(updateOneMutably),
        updateMany: createStateOperator(updateManyMutably),
        upsertOne: createStateOperator(upsertOneMutably),
        upsertMany: createStateOperator(upsertManyMutably),
        removeOne: createStateOperator(removeOneMutably),
        removeMany: createStateOperator(removeManyMutably)
      };
    }
    function createSortedStateAdapter(selectId, sort) {
      var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;
      function addOneMutably(entity, state) {
        return addManyMutably([ entity ], state);
      }
      function addManyMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        var models = newEntities.filter((function(model) {
          return !(selectIdValue(model, selectId) in state.entities);
        }));
        if (models.length !== 0) {
          merge(models, state);
        }
      }
      function setOneMutably(entity, state) {
        return setManyMutably([ entity ], state);
      }
      function setManyMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        if (newEntities.length !== 0) {
          merge(newEntities, state);
        }
      }
      function setAllMutably(newEntities, state) {
        newEntities = ensureEntitiesArray(newEntities);
        state.entities = {};
        state.ids = [];
        addManyMutably(newEntities, state);
      }
      function updateOneMutably(update, state) {
        return updateManyMutably([ update ], state);
      }
      function updateManyMutably(updates, state) {
        var appliedUpdates = false;
        for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {
          var update = updates_1[_i];
          var entity = state.entities[update.id];
          if (!entity) {
            continue;
          }
          appliedUpdates = true;
          Object.assign(entity, update.changes);
          var newId = selectId(entity);
          if (update.id !== newId) {
            delete state.entities[update.id];
            state.entities[newId] = entity;
          }
        }
        if (appliedUpdates) {
          resortEntities(state);
        }
      }
      function upsertOneMutably(entity, state) {
        return upsertManyMutably([ entity ], state);
      }
      function upsertManyMutably(newEntities, state) {
        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];
        updateManyMutably(updated, state);
        addManyMutably(added, state);
      }
      function areArraysEqual(a, b) {
        if (a.length !== b.length) {
          return false;
        }
        for (var i = 0; i < a.length && i < b.length; i++) {
          if (a[i] === b[i]) {
            continue;
          }
          return false;
        }
        return true;
      }
      function merge(models, state) {
        models.forEach((function(model) {
          state.entities[selectId(model)] = model;
        }));
        resortEntities(state);
      }
      function resortEntities(state) {
        var allEntities = Object.values(state.entities);
        allEntities.sort(sort);
        var newSortedIds = allEntities.map(selectId);
        var ids = state.ids;
        if (!areArraysEqual(ids, newSortedIds)) {
          state.ids = newSortedIds;
        }
      }
      return {
        removeOne,
        removeMany,
        removeAll,
        addOne: createStateOperator(addOneMutably),
        updateOne: createStateOperator(updateOneMutably),
        upsertOne: createStateOperator(upsertOneMutably),
        setOne: createStateOperator(setOneMutably),
        setMany: createStateOperator(setManyMutably),
        setAll: createStateOperator(setAllMutably),
        addMany: createStateOperator(addManyMutably),
        updateMany: createStateOperator(updateManyMutably),
        upsertMany: createStateOperator(upsertManyMutably)
      };
    }
    function createEntityAdapter(options) {
      if (options === void 0) {
        options = {};
      }
      var _c = __spreadValues({
        sortComparer: false,
        selectId: function(instance) {
          return instance.id;
        }
      }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;
      var stateFactory = createInitialStateFactory();
      var selectorsFactory = createSelectorsFactory();
      var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);
      return __spreadValues(__spreadValues(__spreadValues({
        selectId,
        sortComparer
      }, stateFactory), selectorsFactory), stateAdapter);
    }
    var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW";
    var nanoid = function(size) {
      if (size === void 0) {
        size = 21;
      }
      var id = "";
      var i = size;
      while (i--) {
        id += urlAlphabet[Math.random() * 64 | 0];
      }
      return id;
    };
    var commonProperties = [ "name", "message", "stack", "code" ];
    var RejectWithValue = function() {
      function RejectWithValue(payload, meta) {
        this.payload = payload;
        this.meta = meta;
      }
      return RejectWithValue;
    }();
    var FulfillWithMeta = function() {
      function FulfillWithMeta(payload, meta) {
        this.payload = payload;
        this.meta = meta;
      }
      return FulfillWithMeta;
    }();
    var miniSerializeError = function(value) {
      if (typeof value === "object" && value !== null) {
        var simpleError = {};
        for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {
          var property = commonProperties_1[_i];
          if (typeof value[property] === "string") {
            simpleError[property] = value[property];
          }
        }
        return simpleError;
      }
      return {
        message: String(value)
      };
    };
    var createAsyncThunk = function() {
      function createAsyncThunk2(typePrefix, payloadCreator, options) {
        var fulfilled = createAction(typePrefix + "/fulfilled", (function(payload, requestId, arg, meta) {
          return {
            payload,
            meta: __spreadProps(__spreadValues({}, meta || {}), {
              arg,
              requestId,
              requestStatus: "fulfilled"
            })
          };
        }));
        var pending = createAction(typePrefix + "/pending", (function(requestId, arg, meta) {
          return {
            payload: void 0,
            meta: __spreadProps(__spreadValues({}, meta || {}), {
              arg,
              requestId,
              requestStatus: "pending"
            })
          };
        }));
        var rejected = createAction(typePrefix + "/rejected", (function(error, requestId, arg, payload, meta) {
          return {
            payload,
            error: (options && options.serializeError || miniSerializeError)(error || "Rejected"),
            meta: __spreadProps(__spreadValues({}, meta || {}), {
              arg,
              requestId,
              rejectedWithValue: !!payload,
              requestStatus: "rejected",
              aborted: (error == null ? void 0 : error.name) === "AbortError",
              condition: (error == null ? void 0 : error.name) === "ConditionError"
            })
          };
        }));
        var displayedWarning = false;
        var AC = typeof AbortController !== "undefined" ? AbortController : function() {
          function class_1() {
            this.signal = {
              aborted: false,
              addEventListener: function() {},
              dispatchEvent: function() {
                return false;
              },
              onabort: function() {},
              removeEventListener: function() {},
              reason: void 0,
              throwIfAborted: function() {}
            };
          }
          class_1.prototype.abort = function() {
            if (false) {}
          };
          return class_1;
        }();
        function actionCreator(arg) {
          return function(dispatch, getState, extra) {
            var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();
            var abortController = new AC;
            var abortReason;
            var started = false;
            function abort(reason) {
              abortReason = reason;
              abortController.abort();
            }
            var promise2 = function() {
              return __async(this, null, (function() {
                var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;
                return __generator(this, (function(_c) {
                  switch (_c.label) {
                   case 0:
                    _c.trys.push([ 0, 4, , 5 ]);
                    conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, {
                      getState,
                      extra
                    });
                    if (!isThenable(conditionResult)) return [ 3, 2 ];
                    return [ 4, conditionResult ];

                   case 1:
                    conditionResult = _c.sent();
                    _c.label = 2;

                   case 2:
                    if (conditionResult === false || abortController.signal.aborted) {
                      throw {
                        name: "ConditionError",
                        message: "Aborted due to condition callback returning false."
                      };
                    }
                    started = true;
                    abortedPromise = new Promise((function(_, reject) {
                      return abortController.signal.addEventListener("abort", (function() {
                        return reject({
                          name: "AbortError",
                          message: abortReason || "Aborted"
                        });
                      }));
                    }));
                    dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, {
                      requestId,
                      arg
                    }, {
                      getState,
                      extra
                    })));
                    return [ 4, Promise.race([ abortedPromise, Promise.resolve(payloadCreator(arg, {
                      dispatch,
                      getState,
                      extra,
                      requestId,
                      signal: abortController.signal,
                      abort,
                      rejectWithValue: function(value, meta) {
                        return new RejectWithValue(value, meta);
                      },
                      fulfillWithValue: function(value, meta) {
                        return new FulfillWithMeta(value, meta);
                      }
                    })).then((function(result) {
                      if (result instanceof RejectWithValue) {
                        throw result;
                      }
                      if (result instanceof FulfillWithMeta) {
                        return fulfilled(result.payload, requestId, arg, result.meta);
                      }
                      return fulfilled(result, requestId, arg);
                    })) ]) ];

                   case 3:
                    finalAction = _c.sent();
                    return [ 3, 5 ];

                   case 4:
                    err_1 = _c.sent();
                    finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);
                    return [ 3, 5 ];

                   case 5:
                    skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;
                    if (!skipDispatch) {
                      dispatch(finalAction);
                    }
                    return [ 2, finalAction ];
                  }
                }));
              }));
            }();
            return Object.assign(promise2, {
              abort,
              requestId,
              arg,
              unwrap: function() {
                return promise2.then(unwrapResult);
              }
            });
          };
        }
        return Object.assign(actionCreator, {
          pending,
          rejected,
          fulfilled,
          typePrefix
        });
      }
      createAsyncThunk2.withTypes = function() {
        return createAsyncThunk2;
      };
      return createAsyncThunk2;
    }();
    function unwrapResult(action) {
      if (action.meta && action.meta.rejectedWithValue) {
        throw action.payload;
      }
      if (action.error) {
        throw action.error;
      }
      return action.payload;
    }
    function isThenable(value) {
      return value !== null && typeof value === "object" && typeof value.then === "function";
    }
    var matches = function(matcher, action) {
      if (hasMatchFunction(matcher)) {
        return matcher.match(action);
      } else {
        return matcher(action);
      }
    };
    function isAnyOf() {
      var matchers = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        matchers[_i] = arguments[_i];
      }
      return function(action) {
        return matchers.some((function(matcher) {
          return matches(matcher, action);
        }));
      };
    }
    function isAllOf() {
      var matchers = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        matchers[_i] = arguments[_i];
      }
      return function(action) {
        return matchers.every((function(matcher) {
          return matches(matcher, action);
        }));
      };
    }
    function hasExpectedRequestMetadata(action, validStatus) {
      if (!action || !action.meta) return false;
      var hasValidRequestId = typeof action.meta.requestId === "string";
      var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;
      return hasValidRequestId && hasValidRequestStatus;
    }
    function isAsyncThunkArray(a) {
      return typeof a[0] === "function" && "pending" in a[0] && "fulfilled" in a[0] && "rejected" in a[0];
    }
    function isPending() {
      var asyncThunks = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        asyncThunks[_i] = arguments[_i];
      }
      if (asyncThunks.length === 0) {
        return function(action) {
          return hasExpectedRequestMetadata(action, [ "pending" ]);
        };
      }
      if (!isAsyncThunkArray(asyncThunks)) {
        return isPending()(asyncThunks[0]);
      }
      return function(action) {
        var matchers = asyncThunks.map((function(asyncThunk) {
          return asyncThunk.pending;
        }));
        var combinedMatcher = isAnyOf.apply(void 0, matchers);
        return combinedMatcher(action);
      };
    }
    function isRejected() {
      var asyncThunks = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        asyncThunks[_i] = arguments[_i];
      }
      if (asyncThunks.length === 0) {
        return function(action) {
          return hasExpectedRequestMetadata(action, [ "rejected" ]);
        };
      }
      if (!isAsyncThunkArray(asyncThunks)) {
        return isRejected()(asyncThunks[0]);
      }
      return function(action) {
        var matchers = asyncThunks.map((function(asyncThunk) {
          return asyncThunk.rejected;
        }));
        var combinedMatcher = isAnyOf.apply(void 0, matchers);
        return combinedMatcher(action);
      };
    }
    function isRejectedWithValue() {
      var asyncThunks = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        asyncThunks[_i] = arguments[_i];
      }
      var hasFlag = function(action) {
        return action && action.meta && action.meta.rejectedWithValue;
      };
      if (asyncThunks.length === 0) {
        return function(action) {
          var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);
          return combinedMatcher(action);
        };
      }
      if (!isAsyncThunkArray(asyncThunks)) {
        return isRejectedWithValue()(asyncThunks[0]);
      }
      return function(action) {
        var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);
        return combinedMatcher(action);
      };
    }
    function isFulfilled() {
      var asyncThunks = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        asyncThunks[_i] = arguments[_i];
      }
      if (asyncThunks.length === 0) {
        return function(action) {
          return hasExpectedRequestMetadata(action, [ "fulfilled" ]);
        };
      }
      if (!isAsyncThunkArray(asyncThunks)) {
        return isFulfilled()(asyncThunks[0]);
      }
      return function(action) {
        var matchers = asyncThunks.map((function(asyncThunk) {
          return asyncThunk.fulfilled;
        }));
        var combinedMatcher = isAnyOf.apply(void 0, matchers);
        return combinedMatcher(action);
      };
    }
    function isAsyncThunkAction() {
      var asyncThunks = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        asyncThunks[_i] = arguments[_i];
      }
      if (asyncThunks.length === 0) {
        return function(action) {
          return hasExpectedRequestMetadata(action, [ "pending", "fulfilled", "rejected" ]);
        };
      }
      if (!isAsyncThunkArray(asyncThunks)) {
        return isAsyncThunkAction()(asyncThunks[0]);
      }
      return function(action) {
        var matchers = [];
        for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {
          var asyncThunk = asyncThunks_1[_i];
          matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);
        }
        var combinedMatcher = isAnyOf.apply(void 0, matchers);
        return combinedMatcher(action);
      };
    }
    var assertFunction = function(func, expected) {
      if (typeof func !== "function") {
        throw new TypeError(expected + " is not a function");
      }
    };
    var noop = function() {};
    var catchRejection = function(promise2, onError) {
      if (onError === void 0) {
        onError = noop;
      }
      promise2.catch(onError);
      return promise2;
    };
    var addAbortSignalListener = function(abortSignal, callback) {
      abortSignal.addEventListener("abort", callback, {
        once: true
      });
      return function() {
        return abortSignal.removeEventListener("abort", callback);
      };
    };
    var abortControllerWithReason = function(abortController, reason) {
      var signal = abortController.signal;
      if (signal.aborted) {
        return;
      }
      if (!("reason" in signal)) {
        Object.defineProperty(signal, "reason", {
          enumerable: true,
          value: reason,
          configurable: true,
          writable: true
        });
      }
      abortController.abort(reason);
    };
    var task = "task";
    var listener = "listener";
    var completed = "completed";
    var cancelled = "cancelled";
    var taskCancelled = "task-" + cancelled;
    var taskCompleted = "task-" + completed;
    var listenerCancelled = listener + "-" + cancelled;
    var listenerCompleted = listener + "-" + completed;
    var TaskAbortError = function() {
      function TaskAbortError(code) {
        this.code = code;
        this.name = "TaskAbortError";
        this.message = task + " " + cancelled + " (reason: " + code + ")";
      }
      return TaskAbortError;
    }();
    var validateActive = function(signal) {
      if (signal.aborted) {
        throw new TaskAbortError(signal.reason);
      }
    };
    function raceWithSignal(signal, promise2) {
      var cleanup = noop;
      return new Promise((function(resolve, reject) {
        var notifyRejection = function() {
          return reject(new TaskAbortError(signal.reason));
        };
        if (signal.aborted) {
          notifyRejection();
          return;
        }
        cleanup = addAbortSignalListener(signal, notifyRejection);
        promise2.finally((function() {
          return cleanup();
        })).then(resolve, reject);
      })).finally((function() {
        cleanup = noop;
      }));
    }
    var runTask = function(task2, cleanUp) {
      return __async(void 0, null, (function() {
        var value, error_1;
        return __generator(this, (function(_c) {
          switch (_c.label) {
           case 0:
            _c.trys.push([ 0, 3, 4, 5 ]);
            return [ 4, Promise.resolve() ];

           case 1:
            _c.sent();
            return [ 4, task2() ];

           case 2:
            value = _c.sent();
            return [ 2, {
              status: "ok",
              value
            } ];

           case 3:
            error_1 = _c.sent();
            return [ 2, {
              status: error_1 instanceof TaskAbortError ? "cancelled" : "rejected",
              error: error_1
            } ];

           case 4:
            cleanUp == null ? void 0 : cleanUp();
            return [ 7 ];

           case 5:
            return [ 2 ];
          }
        }));
      }));
    };
    var createPause = function(signal) {
      return function(promise2) {
        return catchRejection(raceWithSignal(signal, promise2).then((function(output) {
          validateActive(signal);
          return output;
        })));
      };
    };
    var createDelay = function(signal) {
      var pause = createPause(signal);
      return function(timeoutMs) {
        return pause(new Promise((function(resolve) {
          return setTimeout(resolve, timeoutMs);
        })));
      };
    };
    var redux_toolkit_esm_assign = Object.assign;
    var INTERNAL_NIL_TOKEN = {};
    var alm = "listenerMiddleware";
    var createFork = function(parentAbortSignal, parentBlockingPromises) {
      var linkControllers = function(controller) {
        return addAbortSignalListener(parentAbortSignal, (function() {
          return abortControllerWithReason(controller, parentAbortSignal.reason);
        }));
      };
      return function(taskExecutor, opts) {
        assertFunction(taskExecutor, "taskExecutor");
        var childAbortController = new AbortController;
        linkControllers(childAbortController);
        var result = runTask((function() {
          return __async(void 0, null, (function() {
            var result2;
            return __generator(this, (function(_c) {
              switch (_c.label) {
               case 0:
                validateActive(parentAbortSignal);
                validateActive(childAbortController.signal);
                return [ 4, taskExecutor({
                  pause: createPause(childAbortController.signal),
                  delay: createDelay(childAbortController.signal),
                  signal: childAbortController.signal
                }) ];

               case 1:
                result2 = _c.sent();
                validateActive(childAbortController.signal);
                return [ 2, result2 ];
              }
            }));
          }));
        }), (function() {
          return abortControllerWithReason(childAbortController, taskCompleted);
        }));
        if (opts == null ? void 0 : opts.autoJoin) {
          parentBlockingPromises.push(result);
        }
        return {
          result: createPause(parentAbortSignal)(result),
          cancel: function() {
            abortControllerWithReason(childAbortController, taskCancelled);
          }
        };
      };
    };
    var createTakePattern = function(startListening, signal) {
      var take = function(predicate, timeout) {
        return __async(void 0, null, (function() {
          var unsubscribe, tuplePromise, promises, output;
          return __generator(this, (function(_c) {
            switch (_c.label) {
             case 0:
              validateActive(signal);
              unsubscribe = function() {};
              tuplePromise = new Promise((function(resolve, reject) {
                var stopListening = startListening({
                  predicate,
                  effect: function(action, listenerApi) {
                    listenerApi.unsubscribe();
                    resolve([ action, listenerApi.getState(), listenerApi.getOriginalState() ]);
                  }
                });
                unsubscribe = function() {
                  stopListening();
                  reject();
                };
              }));
              promises = [ tuplePromise ];
              if (timeout != null) {
                promises.push(new Promise((function(resolve) {
                  return setTimeout(resolve, timeout, null);
                })));
              }
              _c.label = 1;

             case 1:
              _c.trys.push([ 1, , 3, 4 ]);
              return [ 4, raceWithSignal(signal, Promise.race(promises)) ];

             case 2:
              output = _c.sent();
              validateActive(signal);
              return [ 2, output ];

             case 3:
              unsubscribe();
              return [ 7 ];

             case 4:
              return [ 2 ];
            }
          }));
        }));
      };
      return function(predicate, timeout) {
        return catchRejection(take(predicate, timeout));
      };
    };
    var getListenerEntryPropsFrom = function(options) {
      var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;
      if (type) {
        predicate = createAction(type).match;
      } else if (actionCreator) {
        type = actionCreator.type;
        predicate = actionCreator.match;
      } else if (matcher) {
        predicate = matcher;
      } else if (predicate) {} else {
        throw new Error("Creating or removing a listener requires one of the known fields for matching an action");
      }
      assertFunction(effect, "options.listener");
      return {
        predicate,
        type,
        effect
      };
    };
    var createListenerEntry = function(options) {
      var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;
      var id = nanoid();
      var entry = {
        id,
        effect,
        type,
        predicate,
        pending: new Set,
        unsubscribe: function() {
          throw new Error("Unsubscribe not initialized");
        }
      };
      return entry;
    };
    var cancelActiveListeners = function(entry) {
      entry.pending.forEach((function(controller) {
        abortControllerWithReason(controller, listenerCancelled);
      }));
    };
    var createClearListenerMiddleware = function(listenerMap) {
      return function() {
        listenerMap.forEach(cancelActiveListeners);
        listenerMap.clear();
      };
    };
    var safelyNotifyError = function(errorHandler, errorToNotify, errorInfo) {
      try {
        errorHandler(errorToNotify, errorInfo);
      } catch (errorHandlerError) {
        setTimeout((function() {
          throw errorHandlerError;
        }), 0);
      }
    };
    var addListener = createAction(alm + "/add");
    var clearAllListeners = createAction(alm + "/removeAll");
    var removeListener = createAction(alm + "/remove");
    var defaultErrorHandler = function() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      console.error.apply(console, __spreadArray([ alm + "/error" ], args));
    };
    function createListenerMiddleware(middlewareOptions) {
      var _this = this;
      if (middlewareOptions === void 0) {
        middlewareOptions = {};
      }
      var listenerMap = new Map;
      var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;
      assertFunction(onError, "onError");
      var insertEntry = function(entry) {
        entry.unsubscribe = function() {
          return listenerMap.delete(entry.id);
        };
        listenerMap.set(entry.id, entry);
        return function(cancelOptions) {
          entry.unsubscribe();
          if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {
            cancelActiveListeners(entry);
          }
        };
      };
      var findListenerEntry = function(comparator) {
        for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {
          var entry = _c[_i];
          if (comparator(entry)) {
            return entry;
          }
        }
        return void 0;
      };
      var startListening = function(options) {
        var entry = findListenerEntry((function(existingEntry) {
          return existingEntry.effect === options.effect;
        }));
        if (!entry) {
          entry = createListenerEntry(options);
        }
        return insertEntry(entry);
      };
      var stopListening = function(options) {
        var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;
        var entry = findListenerEntry((function(entry2) {
          var matchPredicateOrType = typeof type === "string" ? entry2.type === type : entry2.predicate === predicate;
          return matchPredicateOrType && entry2.effect === effect;
        }));
        if (entry) {
          entry.unsubscribe();
          if (options.cancelActive) {
            cancelActiveListeners(entry);
          }
        }
        return !!entry;
      };
      var notifyListener = function(entry, action, api, getOriginalState) {
        return __async(_this, null, (function() {
          var internalTaskController, take, autoJoinPromises, listenerError_1;
          return __generator(this, (function(_c) {
            switch (_c.label) {
             case 0:
              internalTaskController = new AbortController;
              take = createTakePattern(startListening, internalTaskController.signal);
              autoJoinPromises = [];
              _c.label = 1;

             case 1:
              _c.trys.push([ 1, 3, 4, 6 ]);
              entry.pending.add(internalTaskController);
              return [ 4, Promise.resolve(entry.effect(action, redux_toolkit_esm_assign({}, api, {
                getOriginalState,
                condition: function(predicate, timeout) {
                  return take(predicate, timeout).then(Boolean);
                },
                take,
                delay: createDelay(internalTaskController.signal),
                pause: createPause(internalTaskController.signal),
                extra,
                signal: internalTaskController.signal,
                fork: createFork(internalTaskController.signal, autoJoinPromises),
                unsubscribe: entry.unsubscribe,
                subscribe: function() {
                  listenerMap.set(entry.id, entry);
                },
                cancelActiveListeners: function() {
                  entry.pending.forEach((function(controller, _, set) {
                    if (controller !== internalTaskController) {
                      abortControllerWithReason(controller, listenerCancelled);
                      set.delete(controller);
                    }
                  }));
                }
              }))) ];

             case 2:
              _c.sent();
              return [ 3, 6 ];

             case 3:
              listenerError_1 = _c.sent();
              if (!(listenerError_1 instanceof TaskAbortError)) {
                safelyNotifyError(onError, listenerError_1, {
                  raisedBy: "effect"
                });
              }
              return [ 3, 6 ];

             case 4:
              return [ 4, Promise.allSettled(autoJoinPromises) ];

             case 5:
              _c.sent();
              abortControllerWithReason(internalTaskController, listenerCompleted);
              entry.pending.delete(internalTaskController);
              return [ 7 ];

             case 6:
              return [ 2 ];
            }
          }));
        }));
      };
      var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);
      var middleware = function(api) {
        return function(next) {
          return function(action) {
            if (!isAction(action)) {
              return next(action);
            }
            if (addListener.match(action)) {
              return startListening(action.payload);
            }
            if (clearAllListeners.match(action)) {
              clearListenerMiddleware();
              return;
            }
            if (removeListener.match(action)) {
              return stopListening(action.payload);
            }
            var originalState = api.getState();
            var getOriginalState = function() {
              if (originalState === INTERNAL_NIL_TOKEN) {
                throw new Error(alm + ": getOriginalState can only be called synchronously");
              }
              return originalState;
            };
            var result;
            try {
              result = next(action);
              if (listenerMap.size > 0) {
                var currentState = api.getState();
                var listenerEntries = Array.from(listenerMap.values());
                for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {
                  var entry = listenerEntries_1[_i];
                  var runListener = false;
                  try {
                    runListener = entry.predicate(action, currentState, originalState);
                  } catch (predicateError) {
                    runListener = false;
                    safelyNotifyError(onError, predicateError, {
                      raisedBy: "predicate"
                    });
                  }
                  if (!runListener) {
                    continue;
                  }
                  notifyListener(entry, action, api, getOriginalState);
                }
              }
            } finally {
              originalState = INTERNAL_NIL_TOKEN;
            }
            return result;
          };
        };
      };
      return {
        middleware,
        startListening,
        stopListening,
        clearListeners: clearListenerMiddleware
      };
    }
    var SHOULD_AUTOBATCH = "RTK_autoBatch";
    var prepareAutoBatched = function() {
      return function(payload) {
        var _c;
        return {
          payload,
          meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)
        };
      };
    };
    var promise;
    var queueMicrotaskShim = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : globalThis) : function(cb) {
      return (promise || (promise = Promise.resolve())).then(cb).catch((function(err) {
        return setTimeout((function() {
          throw err;
        }), 0);
      }));
    };
    var createQueueWithTimer = function(timeout) {
      return function(notify) {
        setTimeout(notify, timeout);
      };
    };
    var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);
    var autoBatchEnhancer = function(options) {
      if (options === void 0) {
        options = {
          type: "raf"
        };
      }
      return function(next) {
        return function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          var store = next.apply(void 0, args);
          var notifying = true;
          var shouldNotifyAtEndOfTick = false;
          var notificationQueued = false;
          var listeners = new Set;
          var queueCallback = options.type === "tick" ? queueMicrotaskShim : options.type === "raf" ? rAF : options.type === "callback" ? options.queueNotification : createQueueWithTimer(options.timeout);
          var notifyListeners = function() {
            notificationQueued = false;
            if (shouldNotifyAtEndOfTick) {
              shouldNotifyAtEndOfTick = false;
              listeners.forEach((function(l) {
                return l();
              }));
            }
          };
          return Object.assign({}, store, {
            subscribe: function(listener2) {
              var wrappedListener = function() {
                return notifying && listener2();
              };
              var unsubscribe = store.subscribe(wrappedListener);
              listeners.add(listener2);
              return function() {
                unsubscribe();
                listeners.delete(listener2);
              };
            },
            dispatch: function(action) {
              var _a;
              try {
                notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);
                shouldNotifyAtEndOfTick = !notifying;
                if (shouldNotifyAtEndOfTick) {
                  if (!notificationQueued) {
                    notificationQueued = true;
                    queueCallback(notifyListeners);
                  }
                }
                return store.dispatch(action);
              } finally {
                notifying = true;
              }
            }
          });
        };
      };
    };
    F();
    const allAliases = {};
    const asyncThunkProperties = (() => {
      const temp = [ "typePrefix", "pending", "rejected", "fulfilled" ];
      const exhaustiveList = temp;
      return exhaustiveList;
    })();
    function createBackgroundAsyncThunk(typePrefix, payloadCreator, options) {
      if (allAliases[typePrefix]) {
        throw new Error(`Attempted to register an alias twice: ${typePrefix}`);
      }
      const baseThunkActionCreator = createAsyncThunk(typePrefix, (async (...args) => {
        try {
          return await payloadCreator(...args);
        } catch (error) {
          lib_logger.error("Async thunk failed", error);
          throw error;
        }
      }), options);
      const webextActionCreator = Object.assign((payload => ({
        type: typePrefix,
        payload
      })), Object.fromEntries(asyncThunkProperties.map((prop => [ prop, baseThunkActionCreator[prop] ]))));
      allAliases[typePrefix] = action => baseThunkActionCreator(action.payload);
      return webextActionCreator;
    }
    const noopAction = createBackgroundAsyncThunk("noop", (() => {}));
    let AccountType = function(AccountType) {
      AccountType["ReadOnly"] = "read-only";
      AccountType["keyPair"] = "keyPair";
      AccountType["Imported"] = "imported";
      AccountType["Internal"] = "internal";
      return AccountType;
    }({});
    const accountTypes = [ AccountType.Internal, AccountType.Imported, AccountType.keyPair, AccountType.ReadOnly ];
    const DEFAULT_ACCOUNT_NAMES = [ "Phoenix", "Matilda", "Sirius", "Topa", "Atos", "Sport", "Lola", "Foz" ];
    const availableDefaultNames = [ ...DEFAULT_ACCOUNT_NAMES ];
    const initialState = {
      accountsData: {
        evm: {}
      },
      combinedData: {
        totalMainCurrencyValue: "",
        assets: []
      }
    };
    function newAccountData(address, network, accountsState) {
      const normalizedAddress = normalizeQEVMAddress(address);
      const existingAccountsCount = Object.keys(accountsState.accountsData.evm[network.chainID]).filter((key => normalizeQEVMAddress(key) !== normalizedAddress)).length;
      const sameAccountOnDifferentChain = Object.values(accountsState.accountsData.evm).flatMap((chain => Object.values(chain))).find((accountData => accountData !== "loading" && normalizeQEVMAddress(accountData.address) === normalizedAddress));
      const defaultNameIndex = existingAccountsCount % availableDefaultNames.length + Number(BigInt(normalizedAddress) % BigInt(availableDefaultNames.length - existingAccountsCount % availableDefaultNames.length));
      let defaultAccountName = sameAccountOnDifferentChain?.defaultName;
      if (typeof defaultAccountName === "undefined") {
        defaultAccountName = availableDefaultNames[defaultNameIndex];
        availableDefaultNames.splice(defaultNameIndex, 1);
        availableDefaultNames.unshift(defaultAccountName);
      }
      const defaultAccountAvatar = `./images/avatars/${defaultAccountName.toLowerCase()}@2x.png`;
      return {
        address: normalizedAddress,
        network,
        balances: {},
        ens: {},
        defaultName: defaultAccountName,
        defaultAvatar: defaultAccountAvatar
      };
    }
    function updateCombinedData(immerState) {
      const filteredEvm = Object.keys(immerState.accountsData.evm).filter((key => !TEST_NETWORK_BY_CHAIN_ID.has(key))).reduce(((evm, key) => ({
        ...evm,
        [key]: immerState.accountsData.evm[key]
      })), {});
      const combinedAccountBalances = Object.values(filteredEvm).flatMap((accountDataByChain => Object.values(accountDataByChain))).flatMap((ad => ad === "loading" ? [] : Object.values(ad.balances).map((ab => ab.assetAmount))));
      immerState.combinedData.assets = Object.values(combinedAccountBalances.filter((({asset}) => isTrustedAsset(asset))).reduce(((acc, combinedAssetAmount) => {
        const {asset} = combinedAssetAmount;
        const assetID = asset.symbol;
        let {amount} = combinedAssetAmount;
        if (acc[assetID]?.asset) {
          const accAsset = acc[assetID].asset;
          const existingDecimals = isFungibleAsset(accAsset) ? accAsset.decimals : 0;
          const newDecimals = isFungibleAsset(combinedAssetAmount.asset) ? combinedAssetAmount.asset.decimals : 0;
          if (newDecimals !== existingDecimals) {
            amount = convertFixedPoint(amount, newDecimals, existingDecimals);
          }
        }
        if (acc[assetID]) {
          acc[assetID].amount += amount;
        } else {
          acc[assetID] = {
            ...combinedAssetAmount
          };
        }
        return acc;
      }), {}));
    }
    function getOrCreateAccountData(accountState, account, network) {
      const normalizedAddress = normalizeQEVMAddress(account);
      const accountData = accountState.accountsData.evm[network.chainID][normalizedAddress];
      if (accountData === "loading" || !accountData) {
        return newAccountData(normalizedAddress, network, accountState);
      }
      return accountData;
    }
    const accountSlice = createSlice({
      name: "account",
      initialState,
      reducers: {
        loadAccount: (immerState, {payload: {address, network}}) => {
          const normalizedAddress = normalizeQEVMAddress(address);
          if (immerState.accountsData.evm[network.chainID]?.[normalizedAddress] !== undefined) {
            return;
          }
          if (immerState.accountsData.evm[network.chainID]) {
            const existingEntries = Object.keys(immerState.accountsData.evm[network.chainID]);
            const duplicateKey = existingEntries.find((key => normalizeQEVMAddress(key) === normalizedAddress && key !== normalizedAddress));
            if (duplicateKey) {
              const existingData = immerState.accountsData.evm[network.chainID][duplicateKey];
              if (existingData !== undefined) {
                immerState.accountsData.evm[network.chainID][normalizedAddress] = existingData;
              }
              delete immerState.accountsData.evm[network.chainID][duplicateKey];
              return;
            }
          }
          immerState.accountsData.evm[network.chainID] ??= {};
          immerState.accountsData.evm[network.chainID] = {
            ...immerState.accountsData.evm[network.chainID],
            [normalizedAddress]: "loading"
          };
        },
        deleteAccount: (immerState, {payload: address}) => {
          const normalizedAddress = normalizeQEVMAddress(address);
          const {evm} = immerState.accountsData;
          const hasAddress = Object.keys(evm ?? {}).some((chainID => Object.keys(evm[chainID]).some((addressOnChain => normalizeQEVMAddress(addressOnChain) === normalizedAddress))));
          if (!hasAddress) {
            return;
          }
          Object.keys(evm).forEach((chainId => {
            const updatedChain = {
              ...evm[chainId]
            };
            let foundAndDeleted = false;
            Object.keys(updatedChain).forEach((key => {
              if (normalizeQEVMAddress(key) === normalizedAddress) {
                delete updatedChain[key];
                foundAndDeleted = true;
              }
            }));
            if (foundAndDeleted) {
              immerState.accountsData.evm[chainId] = updatedChain;
            }
          }));
          updateCombinedData(immerState);
        },
        updateAccountBalance: (immerState, {payload: {balances}}) => {
          balances.forEach((updatedAccountBalance => {
            const {address, network, assetAmount: {asset}} = updatedAccountBalance;
            const normalizedAddress = normalizeQEVMAddress(address);
            const assetID = getFullAssetID(asset);
            let existingAccountData = immerState.accountsData.evm[network.chainID]?.[normalizedAddress];
            if (existingAccountData === undefined && immerState.accountsData.evm[network.chainID]) {
              const existingEntries = Object.keys(immerState.accountsData.evm[network.chainID]);
              const duplicateKey = existingEntries.find((key => normalizeQEVMAddress(key) === normalizedAddress && key !== normalizedAddress));
              if (duplicateKey) {
                existingAccountData = immerState.accountsData.evm[network.chainID][duplicateKey];
                if (existingAccountData !== undefined) {
                  immerState.accountsData.evm[network.chainID][normalizedAddress] = existingAccountData;
                  delete immerState.accountsData.evm[network.chainID][duplicateKey];
                }
              }
            }
            if (existingAccountData === undefined) {
              return;
            }
            if (existingAccountData !== "loading") {
              if (updatedAccountBalance.assetAmount.amount === 0n && existingAccountData.balances[assetID] === undefined && !isBaseAssetForNetwork(asset, network)) {
                return;
              }
              existingAccountData.balances[assetID] = updatedAccountBalance;
            } else {
              immerState.accountsData.evm[network.chainID][normalizedAddress] = {
                ...newAccountData(normalizedAddress, network, immerState),
                balances: {
                  [assetID]: updatedAccountBalance
                }
              };
            }
          }));
          updateCombinedData(immerState);
        },
        updateAccountName: (immerState, {payload: {address, network, name}}) => {
          const normalizedAddress = normalizeQEVMAddress(address);
          if (immerState.accountsData.evm[network.chainID]?.[normalizedAddress] === undefined) {
            return;
          }
          immerState.accountsData.evm[network.chainID] ??= {};
          const baseAccountData = getOrCreateAccountData(immerState, normalizedAddress, network);
          immerState.accountsData.evm[network.chainID][normalizedAddress] = {
            ...baseAccountData,
            ens: {
              ...baseAccountData.ens,
              name
            }
          };
        },
        updateENSAvatar: (immerState, {payload: {address, network, avatar}}) => {
          const normalizedAddress = normalizeQEVMAddress(address);
          if (immerState.accountsData.evm[network.chainID]?.[normalizedAddress] === undefined) {
            return;
          }
          immerState.accountsData.evm[network.chainID] ??= {};
          const baseAccountData = getOrCreateAccountData(immerState, normalizedAddress, network);
          immerState.accountsData.evm[network.chainID][normalizedAddress] = {
            ...baseAccountData,
            ens: {
              ...baseAccountData.ens,
              avatarURL: avatar
            }
          };
        },
        updateAccountAssetReferences: (immerState, {payload: assets}) => {
          const assetsByChainID = {};
          assets.forEach((asset => {
            assetsByChainID[asset.homeNetwork.chainID] ??= [];
            assetsByChainID[asset.homeNetwork.chainID].push(asset);
          }));
          Object.keys(assetsByChainID).forEach((chainID => {
            const allAccounts = immerState.accountsData.evm[chainID];
            Object.keys(allAccounts ?? {}).forEach((address => {
              const account = allAccounts[address];
              if (account !== "loading") {
                assetsByChainID[chainID].forEach((asset => {
                  const {assetAmount} = account.balances[getFullAssetID(asset)] ?? {
                    assetAmount: undefined
                  };
                  if (assetAmount && isSmartContractFungibleAsset(assetAmount.asset) && sameQEVMAddress(assetAmount.asset.contractAddress, asset.contractAddress)) {
                    Object.assign(assetAmount.asset, asset);
                  }
                }));
              }
            }));
          }));
          updateCombinedData(immerState);
        },
        removeAssetReferences: (immerState, {payload: asset}) => {
          const allAccounts = immerState.accountsData.evm[asset.homeNetwork.chainID];
          Object.keys(allAccounts).forEach((address => {
            const account = allAccounts[address];
            if (account !== "loading") {
              Object.values(account.balances).forEach((({assetAmount}) => {
                if (isSameAsset(assetAmount.asset, asset)) {
                  delete account.balances[getFullAssetID(assetAmount.asset)];
                }
              }));
            }
          }));
          updateCombinedData(immerState);
        },
        removeChainBalances: (immerState, {payload: chainID}) => {
          delete immerState.accountsData.evm[chainID];
        }
      }
    });
    const {deleteAccount, loadAccount, updateAccountBalance, updateAccountName, updateENSAvatar, updateAccountAssetReferences, removeAssetReferences, removeChainBalances} = accountSlice.actions;
    const accounts = accountSlice.reducer;
    const resolveNameOnNetwork = createBackgroundAsyncThunk("account/resolveNameOnNetwork", (async (nameOnNetwork, {extra: {main}}) => main.resolveNameOnNetwork(nameOnNetwork)));
    const addAddressNetwork = createBackgroundAsyncThunk("account/addAccount", (async (addressNetwork, {dispatch, extra: {main}}) => {
      const normalizedAddressNetwork = {
        address: addressNetwork.address,
        network: addressNetwork.network
      };
      dispatch(loadAccount(normalizedAddressNetwork));
      await main.addAccount(normalizedAddressNetwork);
    }));
    const addOrEditAddressName = createBackgroundAsyncThunk("account/addOrEditAddressName", (async (payload, {extra: {main}}) => {
      await main.addOrEditAddressName(payload);
    }));
    const removeAccount = createBackgroundAsyncThunk("account/removeAccount", (async (payload, {extra: {main}}) => {
      const {addressOnNetwork, signer, lastAddressInAccount} = payload;
      const normalizedAddress = normalizeQEVMAddress(addressOnNetwork.address);
      await main.removeAccount(normalizedAddress, signer, lastAddressInAccount);
    }));
    const assets_initialState = [];
    const assetsSlice = createSlice({
      name: "assets",
      initialState: assets_initialState,
      reducers: {
        assetsLoaded: (immerState, {payload: {assets: newAssets, loadingScope}}) => {
          const networksToReset = loadingScope === "network" ? newAssets.reduce(((uniqueNetworks, asset) => {
            const lastNetwork = uniqueNetworks.at(-1);
            return "homeNetwork" in asset && (uniqueNetworks.length === 0 || lastNetwork && !sameNetwork(asset.homeNetwork, lastNetwork)) ? [ ...uniqueNetworks, asset.homeNetwork ] : uniqueNetworks;
          }), []) : [];
          const newAssetsBySymbol = {};
          newAssets.forEach((asset => {
            newAssetsBySymbol[asset.symbol] ??= [];
            newAssetsBySymbol[asset.symbol].push(asset);
          }));
          const pruneIndexes = [];
          immerState.forEach(((existingAsset, i) => {
            const matchingNewAssets = (newAssetsBySymbol[existingAsset.symbol] ?? []).filter((newAsset => isSameAsset(existingAsset, newAsset)));
            const assetOnAResettingNetwork = loadingScope === "network" && networksToReset.some((network => "homeNetwork" in existingAsset && sameNetwork(existingAsset.homeNetwork, network)));
            if (matchingNewAssets.length === 0) {
              if (loadingScope === "all" || loadingScope === "network" && assetOnAResettingNetwork) {
                pruneIndexes.push(i);
                return;
              }
              return;
            }
            if (loadingScope === "all" || loadingScope === "network" && assetOnAResettingNetwork) {
              Object.assign(existingAsset, matchingNewAssets[0]);
            } else {
              immerState[i].metadata = matchingNewAssets[0].metadata;
            }
            newAssetsBySymbol[existingAsset.symbol] = newAssetsBySymbol[existingAsset.symbol].filter((newAsset => !matchingNewAssets.includes(newAsset)));
          }));
          if (pruneIndexes.length === 1) {
            immerState.splice(pruneIndexes[0], 1);
          } else if (pruneIndexes.length > 1) {
            const currentRun = {
              runStart: pruneIndexes[0],
              runLength: 1
            };
            for (let i = 1; i < pruneIndexes.length; i += 1) {
              if (pruneIndexes[i] === currentRun.runStart + currentRun.runLength) {
                currentRun.runLength += 1;
              } else {
                immerState.splice(currentRun.runStart, currentRun.runLength);
                currentRun.runStart = pruneIndexes[i];
                currentRun.runLength = 1;
              }
            }
          }
          Object.values(newAssetsBySymbol).flat().forEach((newAsset => {
            immerState.push(newAsset);
          }));
        },
        removeAsset: (immerState, {payload: removedAsset}) => immerState.filter((asset => !isSameAsset(asset, removedAsset)))
      }
    });
    const {assetsLoaded, removeAsset} = assetsSlice.actions;
    const assets = assetsSlice.reducer;
    const updateAssetMetadata = createBackgroundAsyncThunk("assets/updateAssetMetadata", (async ({asset, metadata}, {extra: {main}}) => {
      await main.updateAssetMetadata(asset, metadata);
    }));
    const refreshAsset = createBackgroundAsyncThunk("assets/refreshAsset", (async ({asset}, {dispatch}) => {
      await dispatch(assetsLoaded({
        assets: [ asset ],
        loadingScope: "incremental"
      }));
      await dispatch(updateAccountAssetReferences([ asset ]));
    }));
    const hideAsset = createBackgroundAsyncThunk("assets/hideAsset", (async ({asset}, {extra: {main}}) => {
      await main.hideAsset(asset);
    }));
    const removeAssetData = createBackgroundAsyncThunk("assets/removeAssetData", (async ({asset}, {dispatch}) => {
      await dispatch(removeAsset(asset));
      await dispatch(removeAssetReferences(asset));
    }));
    const transferAsset = createBackgroundAsyncThunk("assets/transferAsset", (async ({fromAddressNetwork: {address: fromAddress, network: fromNetwork}, toAddressNetwork: {address: toAddress, network: toNetwork}, assetAmount, gasLimit, nonce}) => {
      if (!sameNetwork(fromNetwork, toNetwork)) {
        throw new Error("Only same-network transfers are supported for now.");
      }
      const provider = getProvider();
      await provider.switchChain(fromNetwork);
      let networkVerified = false;
      try {
        const network = await provider.getNetwork();
        if (network.chainId.toString() === fromNetwork.chainID) {
          networkVerified = true;
        }
      } catch (e) {
        if (e && typeof e === "object" && "code" in e && "message" in e && e.code === "NETWORK_ERROR" && typeof e.message === "string" && e.message.includes("underlying network changed")) {
          const {detectedNetwork} = e;
          if (detectedNetwork && detectedNetwork.chainId.toString() === fromNetwork.chainID) {
            networkVerified = true;
          } else {
            throw new Error(`Network switched to unexpected chainId: ${detectedNetwork?.chainId}`);
          }
        } else {
          throw e;
        }
      }
      if (!networkVerified) {
        throw new Error(`Failed to verify network switch to ${fromNetwork.chainID}`);
      }
      const freshProvider = getProvider();
      const signer = freshProvider.getSigner();
      if (isBaseAssetForNetwork(assetAmount.asset, fromNetwork)) {
        lib_logger.debug(`Sending ${assetAmount.amount} ${assetAmount.asset.symbol} from ` + `${fromAddress} to ${toAddress} as a base asset transfer.`);
        await signer.sendTransaction({
          from: fromAddress,
          to: toAddress,
          value: assetAmount.amount,
          gasLimit,
          nonce
        });
      } else if (isSmartContractFungibleAsset(assetAmount.asset)) {
        lib_logger.debug(`Sending ${assetAmount.amount} ${assetAmount.asset.symbol} from ` + `${fromAddress} to ${toAddress} as an ERC20 transfer.`);
        const token = new qethers_lib.qethers.Contract(assetAmount.asset.contractAddress, QERC20_INTERFACE, signer);
        const transactionDetails = await token.populateTransaction.transfer(toAddress, assetAmount.amount);
        await signer.sendUncheckedTransaction({
          ...transactionDetails,
          gasLimit: gasLimit ?? transactionDetails.gasLimit,
          nonce
        });
      } else {
        throw new Error("Only base fungible smart contract asset transfers are supported for now.");
      }
    }));
    const importCustomToken = createBackgroundAsyncThunk("assets/importCustomToken", (async ({asset}, {extra: {main}}) => ({
      success: await main.importCustomToken(asset)
    })));
    const checkTokenContractDetails = createBackgroundAsyncThunk("assets/checkTokenContractDetails", (async ({contractAddress, network}, {getState, extra: {main}}) => {
      const state = getState();
      const currentAccount = state.ui.selectedAccount;
      try {
        return await main.queryCustomTokenDetails(contractAddress, {
          ...currentAccount,
          network
        });
      } catch (error) {
        return null;
      }
    }));
    var NOT_FOUND = "NOT_FOUND";
    function createSingletonCache(equals) {
      var entry;
      return {
        get: function get(key) {
          if (entry && equals(entry.key, key)) {
            return entry.value;
          }
          return NOT_FOUND;
        },
        put: function put(key, value) {
          entry = {
            key,
            value
          };
        },
        getEntries: function getEntries() {
          return entry ? [ entry ] : [];
        },
        clear: function clear() {
          entry = undefined;
        }
      };
    }
    function createLruCache(maxSize, equals) {
      var entries = [];
      function get(key) {
        var cacheIndex = entries.findIndex((function(entry) {
          return equals(key, entry.key);
        }));
        if (cacheIndex > -1) {
          var entry = entries[cacheIndex];
          if (cacheIndex > 0) {
            entries.splice(cacheIndex, 1);
            entries.unshift(entry);
          }
          return entry.value;
        }
        return NOT_FOUND;
      }
      function put(key, value) {
        if (get(key) === NOT_FOUND) {
          entries.unshift({
            key,
            value
          });
          if (entries.length > maxSize) {
            entries.pop();
          }
        }
      }
      function getEntries() {
        return entries;
      }
      function clear() {
        entries = [];
      }
      return {
        get,
        put,
        getEntries,
        clear
      };
    }
    var defaultEqualityCheck = function defaultEqualityCheck(a, b) {
      return a === b;
    };
    function createCacheKeyComparator(equalityCheck) {
      return function areArgumentsShallowlyEqual(prev, next) {
        if (prev === null || next === null || prev.length !== next.length) {
          return false;
        }
        var length = prev.length;
        for (var i = 0; i < length; i++) {
          if (!equalityCheck(prev[i], next[i])) {
            return false;
          }
        }
        return true;
      };
    }
    function defaultMemoize(func, equalityCheckOrOptions) {
      var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
        equalityCheck: equalityCheckOrOptions
      };
      var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
      var comparator = createCacheKeyComparator(equalityCheck);
      var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
      function memoized() {
        var value = cache.get(arguments);
        if (value === NOT_FOUND) {
          value = func.apply(null, arguments);
          if (resultEqualityCheck) {
            var entries = cache.getEntries();
            var matchingEntry = entries.find((function(entry) {
              return resultEqualityCheck(entry.value, value);
            }));
            if (matchingEntry) {
              value = matchingEntry.value;
            }
          }
          cache.put(arguments, value);
        }
        return value;
      }
      memoized.clearCache = function() {
        return cache.clear();
      };
      return memoized;
    }
    function getDependencies(funcs) {
      var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
      if (!dependencies.every((function(dep) {
        return typeof dep === "function";
      }))) {
        var dependencyTypes = dependencies.map((function(dep) {
          return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
        })).join(", ");
        throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
      }
      return dependencies;
    }
    function createSelectorCreator(memoize) {
      for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
        memoizeOptionsFromArgs[_key - 1] = arguments[_key];
      }
      var createSelector = function createSelector() {
        for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          funcs[_key2] = arguments[_key2];
        }
        var _recomputations = 0;
        var _lastResult;
        var directlyPassedOptions = {
          memoizeOptions: undefined
        };
        var resultFunc = funcs.pop();
        if (typeof resultFunc === "object") {
          directlyPassedOptions = resultFunc;
          resultFunc = funcs.pop();
        }
        if (typeof resultFunc !== "function") {
          throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
        }
        var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
        var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [ memoizeOptions ];
        var dependencies = getDependencies(funcs);
        var memoizedResultFunc = memoize.apply(void 0, [ function recomputationWrapper() {
          _recomputations++;
          return resultFunc.apply(null, arguments);
        } ].concat(finalMemoizeOptions));
        var selector = memoize((function dependenciesChecker() {
          var params = [];
          var length = dependencies.length;
          for (var i = 0; i < length; i++) {
            params.push(dependencies[i].apply(null, arguments));
          }
          _lastResult = memoizedResultFunc.apply(null, params);
          return _lastResult;
        }));
        Object.assign(selector, {
          resultFunc,
          memoizedResultFunc,
          dependencies,
          lastResult: function lastResult() {
            return _lastResult;
          },
          recomputations: function recomputations() {
            return _recomputations;
          },
          resetRecomputations: function resetRecomputations() {
            return _recomputations = 0;
          }
        });
        return selector;
      };
      return createSelector;
    }
    var es_createSelector = createSelectorCreator(defaultMemoize);
    var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {
      if (selectorCreator === void 0) {
        selectorCreator = es_createSelector;
      }
      if (typeof selectors !== "object") {
        throw new Error("createStructuredSelector expects first argument to be an object " + ("where each property is a selector, instead received a " + typeof selectors));
      }
      var objectKeys = Object.keys(selectors);
      var resultSelector = selectorCreator(objectKeys.map((function(key) {
        return selectors[key];
      })), (function() {
        for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
          values[_key3] = arguments[_key3];
        }
        return values.reduce((function(composition, value, index) {
          composition[objectKeys[index]] = value;
          return composition;
        }), {});
      }));
      return resultSelector;
    };
    const defaultSettings = {
      hideDust: false,
      defaultWallet: false,
      showTestNetworks: true,
      showNotifications: undefined,
      showUnverifiedAssets: false,
      hideBanners: false,
      autoLockInterval: DEFAULT_AUTOLOCK_INTERVAL
    };
    const emitter = new (emittery_default());
    const ui_initialState = {
      showingActivityDetailID: null,
      selectedAccount: {
        address: "",
        network: ZEUS
      },
      initializationLoadingTimeExpired: false,
      settings: defaultSettings,
      snackbarMessage: "",
      slippageTolerance: .01,
      accountSignerSettings: []
    };
    const uiSlice = createSlice({
      name: "ui",
      initialState: ui_initialState,
      reducers: {
        toggleHideDust: (immerState, {payload: shouldHideDust}) => {
          immerState.settings.hideDust = shouldHideDust;
        },
        toggleTestNetworks: (immerState, {payload: showTestNetworks}) => {
          immerState.settings.showTestNetworks = showTestNetworks;
        },
        toggleShowUnverifiedAssets: (immerState, {payload: showUnverifiedAssets}) => {
          immerState.settings.showUnverifiedAssets = showUnverifiedAssets;
        },
        toggleNotifications: (immerState, {payload: showNotifications}) => {
          immerState.settings.showNotifications = showNotifications;
        },
        toggleHideBanners: (state, {payload: hideBanners}) => ({
          ...state,
          settings: {
            ...state.settings,
            hideBanners
          }
        }),
        setShowingActivityDetail: (state, {payload: transactionID}) => ({
          ...state,
          showingActivityDetailID: transactionID
        }),
        setSelectedAccount: (immerState, {payload: addressNetwork}) => {
          immerState.selectedAccount = addressNetwork;
        },
        initializationLoadingTimeHitLimit: state => ({
          ...state,
          initializationLoadingTimeExpired: true
        }),
        setSnackbarMessage: (state, {payload: snackbarMessage}) => ({
          ...state,
          snackbarMessage
        }),
        clearSnackbarMessage: state => ({
          ...state,
          snackbarMessage: ""
        }),
        setDefaultWallet: (state, {payload: defaultWallet}) => ({
          ...state,
          settings: {
            ...state.settings,
            defaultWallet
          }
        }),
        setShownDismissableItems: (state, {payload: shownDismissableItems}) => ({
          ...state,
          shownDismissableItems
        }),
        dismissableItemMarkedAsShown: (state, {payload: shownDismissableItem}) => ({
          ...state,
          shownDismissableItems: [ ...state.shownDismissableItems ?? [], shownDismissableItem ]
        }),
        setRouteHistoryEntries: (state, {payload: routeHistoryEntries}) => ({
          ...state,
          routeHistoryEntries
        }),
        setSlippageTolerance: (state, {payload: slippageTolerance}) => ({
          ...state,
          slippageTolerance
        }),
        setAccountsSignerSettings: (state, {payload}) => ({
          ...state,
          accountSignerSettings: payload
        }),
        setAutoLockInterval: (state, {payload}) => ({
          ...state,
          settings: {
            ...state.settings,
            autoLockInterval: payload
          }
        })
      }
    });
    const {setShowingActivityDetail, initializationLoadingTimeHitLimit, toggleHideDust, toggleTestNetworks, toggleShowUnverifiedAssets, toggleHideBanners, toggleNotifications, setSelectedAccount, setSnackbarMessage, setDefaultWallet, setShownDismissableItems, dismissableItemMarkedAsShown, clearSnackbarMessage, setRouteHistoryEntries, setSlippageTolerance, setAccountsSignerSettings, setAutoLockInterval} = uiSlice.actions;
    const ui = uiSlice.reducer;
    const setShouldShowNotifications = createBackgroundAsyncThunk("ui/showNotifications", (async shouldShowNotifications => {
      await emitter.emit("shouldShowNotifications", shouldShowNotifications);
    }));
    const setNewDefaultWalletValue = createBackgroundAsyncThunk("ui/setNewDefaultWalletValue", (async (defaultWallet, {dispatch}) => {
      await emitter.emit("newDefaultWalletValue", defaultWallet);
      dispatch(uiSlice.actions.setDefaultWallet(defaultWallet));
    }));
    const setNewSelectedAccount = createBackgroundAsyncThunk("ui/setNewCurrentAddressValue", (async (addressNetwork, {dispatch}) => {
      await emitter.emit("newSelectedAccount", addressNetwork);
      dispatch(uiSlice.actions.setSelectedAccount(addressNetwork));
      await emitter.emit("newSelectedAccountSwitched", addressNetwork);
    }));
    const updateSignerTitle = createBackgroundAsyncThunk("ui/updateSignerTitle", (async ([signer, title], {extra: {main}}) => main.updateSignerTitle(signer, title)));
    const markDismissableItemAsShown = createBackgroundAsyncThunk("ui/markDismissableItemAsShown", (async (item, {extra: {main}}) => main.markDismissableItemAsShown(item)));
    const getAddNetworkRequestDetails = createBackgroundAsyncThunk("ui/getAddNetworkRequestDetails", (async (requestId, {extra: {main}}) => main.getAddNetworkRequestDetails(requestId)));
    const addNetworkUserResponse = createBackgroundAsyncThunk("ui/handleAddNetworkConfirmation", (async ([requestId, result]) => {
      emitter.emit("addCustomNetworkResponse", [ requestId, result ]);
    }));
    const updateAutoLockInterval = createBackgroundAsyncThunk("ui/updateAutoLockInterval", (async newValue => {
      const parsedValue = parseInt(newValue, 10);
      if (Number.isNaN(parsedValue) || parsedValue <= 1) {
        throw new Error("Invalid value for auto lock timer");
      }
      emitter.emit("updateAutoLockInterval", parsedValue);
    }));
    const userActivityEncountered = createBackgroundAsyncThunk("ui/userActivityEncountered", (async addressNetwork => {
      await emitter.emit("userActivityEncountered", addressNetwork);
    }));
    const setSelectedNetwork = createBackgroundAsyncThunk("ui/setSelectedNetwork", (async (network, {getState, dispatch}) => {
      const state = getState();
      const {ui, account} = state;
      const currentlySelectedChainID = ui.selectedAccount.network.chainID;
      emitter.emit("newSelectedNetwork", network);
      Object.keys(account.accountsData.evm[currentlySelectedChainID]).forEach((address => {
        if (!account.accountsData.evm[network.chainID]?.[address]) {
          dispatch(addAddressNetwork({
            address,
            network
          }));
        }
      }));
      dispatch(setNewSelectedAccount({
        ...ui.selectedAccount,
        network
      }));
    }));
    const refreshBackgroundPage = createBackgroundAsyncThunk("ui/refreshBackgroundPage", (async () => {
      await emitter.emit("refreshBackgroundPage", null);
    }));
    const selectUI = es_createSelector((state => state.ui), (uiState => uiState));
    const selectSettings = es_createSelector(selectUI, (ui => ui.settings));
    const selectHideDust = es_createSelector(selectSettings, (settings => settings?.hideDust));
    const selectAutoLockTimer = es_createSelector(selectSettings, (settings => settings.autoLockInterval));
    const selectSnackbarMessage = es_createSelector(selectUI, (ui => ui.snackbarMessage));
    const selectDefaultWallet = es_createSelector(selectSettings, (settings => settings?.defaultWallet));
    const selectSlippageTolerance = es_createSelector(selectUI, (ui => ui.slippageTolerance));
    const selectInitializationTimeExpired = es_createSelector(selectUI, (ui => ui.initializationLoadingTimeExpired));
    const selectShowTestNetworks = es_createSelector(selectSettings, (settings => settings?.showTestNetworks));
    const selectShowUnverifiedAssets = es_createSelector(selectSettings, (settings => settings?.showUnverifiedAssets));
    const selectShowNotifications = es_createSelector(selectSettings, (settings => settings?.showNotifications));
    const selectHideBanners = es_createSelector(selectSettings, (settings => settings?.hideBanners));
    function selectShouldShowDismissableItem(dismissableItem) {
      return state => {
        const itemWasShown = selectUI(state).shownDismissableItems?.includes(dismissableItem) ?? false;
        return !itemWasShown;
      };
    }
    const internal_signer_initialState = {
      keyPairs: [],
      metadata: {},
      status: "uninitialized",
      mnemonicsToVerify: null
    };
    const internal_signer_emitter = new (emittery_default());
    const importSigner = createBackgroundAsyncThunk("internalSigner/importSigner", (async (signerRaw, {getState, dispatch, extra: {main}}) => {
      const address = await main.importSigner(signerRaw);
      if (!address) {
        return {
          success: false,
          errorMessage: "Unexpected error during account import."
        };
      }
      const {ui} = getState();
      dispatch(setNewSelectedAccount({
        address,
        network: ui.selectedAccount.network
      }));
      return {
        success: true
      };
    }));
    const internalSignerSlice = createSlice({
      name: "internalSigner",
      initialState: internal_signer_initialState,
      reducers: {
        internalSignerLocked: state => ({
          ...state,
          status: "locked"
        }),
        internalSignerUnlocked: state => ({
          ...state,
          status: "unlocked"
        }),
        updateInternalSigners: (state, {payload: {keyPairs, metadata}}) => {
          if (state.status === "locked" && keyPairs.length === 0) {
            return state;
          }
          return {
            ...state,
            keyPairs,
            metadata
          };
        },
        setMnemonicsToVerify: (state, {payload}) => ({
          ...state,
          mnemonicsToVerify: payload
        })
      }
    });
    const {updateInternalSigners, internalSignerLocked, internalSignerUnlocked, setMnemonicsToVerify} = internalSignerSlice.actions;
    const internal_signer = internalSignerSlice.reducer;
    const generateNewMnemonics = createBackgroundAsyncThunk("internalSigner/generateNewMnemonics", (async () => {
      await internal_signer_emitter.emit("generateNewMnemonics");
    }));
    const deriveAddress = createBackgroundAsyncThunk("internalSigner/deriveAddress", (async id => {
      await internal_signer_emitter.emit("deriveAddress", id);
    }));
    const unlockInternalSigners = createBackgroundAsyncThunk("internalSigner/unlockInternalSigners", (async (password, {extra: {main}}) => ({
      success: await main.unlockInternalSigners(password)
    })));
    const lockInternalSigners = createBackgroundAsyncThunk("internalSigner/lockInternalSigners", (async () => {
      await internal_signer_emitter.emit("lockInternalSigners");
    }));
    const createPassword = createBackgroundAsyncThunk("internalSigner/createPassword", (async password => {
      await internal_signer_emitter.emit("createPassword", password);
    }));
    const validateSession = createBackgroundAsyncThunk("internalSigner/validateSession", (async (_, {extra: {main}}) => ({
      isValid: await main.validateSession()
    })));
    const exportMnemonic = createBackgroundAsyncThunk("internalSigner/exportMnemonic", (async (address, {extra: {main}}) => main.exportMnemonic(address)));
    const exportPrivateKey = createBackgroundAsyncThunk("internalSigner/exportPrivateKey", (async (address, {extra: {main}}) => main.exportPrivateKey(address)));
    const selectCurrentNetwork = es_createSelector((state => state.ui.selectedAccount.network), (selectedNetwork => selectedNetwork));
    const selectCurrentAccount = es_createSelector((state => state.ui.selectedAccount), (({address, network}) => ({
      address,
      network,
      truncatedAddress: address.toLowerCase().slice(0, 7)
    })));
    const selectShowingActivityDetail = es_createSelector((state => state.activities.activities), selectCurrentAccount, (state => state.ui.showingActivityDetailID), ((activities, currentAccountOnNetwork, showingActivityDetailID) => {
      if (!showingActivityDetailID) {
        return null;
      }
      return activities[currentAccountOnNetwork.address]?.[currentAccountOnNetwork.network.chainID]?.find((activity => activity.hash === showingActivityDetailID)) ?? null;
    }));
    const selectCurrentAddressNetwork = es_createSelector((state => state.ui.selectedAccount), (selectedAccount => selectedAccount));
    const selectMainCurrencySymbol = es_createSelector((_ => null), (() => hardcodedMainCurrencySymbol));
    const selectMainCurrencySign = es_createSelector((_ => null), (() => hardcodedMainCurrencySign));
    const selectMainCurrency = es_createSelector((state => state.ui), (state => state.assets), (state => selectMainCurrencySymbol(state)), ((_, assets, mainCurrencySymbol) => assets.find((asset => asset.symbol === mainCurrencySymbol))));
    const networks_initialState = {
      evmNetworks: {},
      blockInfo: {
        1: {
          blockHeight: null,
          baseFeePerGas: null
        }
      }
    };
    const networksSlice = createSlice({
      name: "networks",
      initialState: networks_initialState,
      reducers: {
        blockSeen: (immerState, {payload: blockPayload}) => {
          const block = blockPayload;
          if (!(block.network.chainID in immerState.blockInfo)) {
            immerState.blockInfo[block.network.chainID] = {
              blockHeight: block.blockHeight,
              baseFeePerGas: block?.baseFeePerGas ?? null
            };
          } else if (block.blockHeight > (immerState.blockInfo[block.network.chainID].blockHeight || 0)) {
            immerState.blockInfo[block.network.chainID].blockHeight = block.blockHeight;
            immerState.blockInfo[block.network.chainID].baseFeePerGas = block?.baseFeePerGas ?? null;
          }
        },
        setEVMNetworks: (immerState, {payload}) => {
          const chainIds = payload.map((network => network.chainID));
          payload.forEach((network => {
            immerState.evmNetworks[network.chainID] = network;
          }));
          Object.keys(immerState.evmNetworks).forEach((chainID => {
            if (!chainIds.includes(chainID)) {
              delete immerState.evmNetworks[chainID];
              delete immerState.blockInfo[chainID];
            }
          }));
        }
      }
    });
    const {blockSeen, setEVMNetworks} = networksSlice.actions;
    const networks = networksSlice.reducer;
    const removeCustomChain = createBackgroundAsyncThunk("networks/removeCustomChain", (async (chainID, {getState, dispatch, extra: {main}}) => {
      const store = getState();
      const currentNetwork = selectCurrentNetwork(store);
      if (currentNetwork.chainID === chainID) {
        await dispatch(setSelectedNetwork(ZEUS));
      }
      await dispatch(removeChainBalances(chainID));
      return main.removeEVMNetwork(chainID);
    }));
    const ESTIMATED_FEE_MULTIPLIERS = {
      70: 11n,
      95: 13n,
      99: 18n,
      0: 20n
    };
    const ESTIMATED_FEE_MULTIPLIERS_BY_TYPE = {
      regular: 11n,
      express: 13n,
      instant: 18n
    };
    const MAX_FEE_MULTIPLIER = {
      70: 13n,
      95: 15n,
      99: 20n,
      0: 20n
    };
    const INSTANT = 99;
    const EXPRESS = 95;
    const REGULAR = 70;
    const CUSTOM = 0;
    let TransactionConstructionStatus = function(TransactionConstructionStatus) {
      TransactionConstructionStatus["Idle"] = "idle";
      TransactionConstructionStatus["Pending"] = "pending";
      TransactionConstructionStatus["Loaded"] = "loaded";
      TransactionConstructionStatus["Signed"] = "signed";
      return TransactionConstructionStatus;
    }({});
    let NetworkFeeTypeChosen = function(NetworkFeeTypeChosen) {
      NetworkFeeTypeChosen["Regular"] = "regular";
      NetworkFeeTypeChosen["Express"] = "express";
      NetworkFeeTypeChosen["Instant"] = "instant";
      NetworkFeeTypeChosen["Custom"] = "custom";
      return NetworkFeeTypeChosen;
    }({});
    const defaultCustomGas = {
      maxFeePerGas: 0n,
      maxPriorityFeePerGas: 0n,
      confidence: 0
    };
    const transaction_construction_initialState = {
      status: TransactionConstructionStatus.Idle,
      feeTypeSelected: NetworkFeeTypeChosen.Regular,
      estimatedFeesPerGas: {},
      transactionLikelyFails: false,
      customFeesPerGas: defaultCustomGas
    };
    const transaction_construction_emitter = new (emittery_default());
    const makeBlockEstimate = (type, estimatedFeesPerGas) => {
      let maxFeePerGas = estimatedFeesPerGas.estimatedPrices.find((el => el.confidence === type))?.maxFeePerGas;
      if (typeof maxFeePerGas === "undefined") {
        maxFeePerGas = estimatedFeesPerGas.baseFeePerGas;
      }
      maxFeePerGas = maxFeePerGas * MAX_FEE_MULTIPLIER[type] / 10n;
      return {
        maxFeePerGas,
        confidence: type,
        maxPriorityFeePerGas: estimatedFeesPerGas.estimatedPrices.find((el => el.confidence === type))?.maxPriorityFeePerGas ?? 0n,
        price: estimatedFeesPerGas.estimatedPrices.find((el => el.confidence === type))?.price ?? 0n
      };
    };
    const updateTransactionData = createBackgroundAsyncThunk("transaction-construction/update-transaction", (async payload => {
      await transaction_construction_emitter.emit("updateTransaction", payload);
    }));
    const signTransaction = createBackgroundAsyncThunk("transaction-construction/sign", (async request => {
      await transaction_construction_emitter.emit("requestSignature", request);
    }));
    const transactionSlice = createSlice({
      name: "transaction-construction",
      initialState: transaction_construction_initialState,
      reducers: {
        transactionRequest: (state, {payload: {transactionRequest, transactionLikelyFails}}) => {
          const newState = {
            ...state,
            status: TransactionConstructionStatus.Loaded,
            signedTransaction: undefined,
            transactionRequest: {
              ...transactionRequest
            },
            transactionLikelyFails
          };
          const feeType = state.feeTypeSelected;
          const {chainID} = transactionRequest.network;
          if (isEIP1559TransactionRequest(newState.transactionRequest) && isEIP1559TransactionRequest(transactionRequest)) {
            const estimatedMaxFeePerGas = feeType === NetworkFeeTypeChosen.Custom ? state.customFeesPerGas?.maxFeePerGas : state.estimatedFeesPerGas?.[chainID]?.[feeType]?.maxFeePerGas;
            newState.transactionRequest.maxFeePerGas = estimatedMaxFeePerGas ?? transactionRequest.maxFeePerGas;
            const estimatedMaxPriorityFeePerGas = feeType === NetworkFeeTypeChosen.Custom ? state.customFeesPerGas?.maxPriorityFeePerGas : state.estimatedFeesPerGas?.[chainID]?.[feeType]?.maxPriorityFeePerGas;
            newState.transactionRequest.maxPriorityFeePerGas = estimatedMaxPriorityFeePerGas ?? transactionRequest.maxPriorityFeePerGas;
          }
          if (!isEIP1559TransactionRequest(transactionRequest) && !isEIP1559TransactionRequest(newState.transactionRequest)) {
            newState.transactionRequest.gasPrice = state.estimatedFeesPerGas?.[chainID]?.[feeType]?.price ?? transactionRequest.gasPrice;
          }
          return newState;
        },
        clearTransactionState: (state, {payload}) => ({
          estimatedFeesPerGas: state.estimatedFeesPerGas,
          status: payload,
          feeTypeSelected: state.feeTypeSelected ?? NetworkFeeTypeChosen.Regular,
          broadcastOnSign: false,
          transactionLikelyFails: false,
          signedTransaction: undefined,
          customFeesPerGas: state.customFeesPerGas
        }),
        updateRollupEstimates: (immerState, {payload}) => {
          const {estimatedRollupFee, estimatedRollupGwei} = payload;
          if (immerState.transactionRequest && !isEIP1559TransactionRequest(immerState.transactionRequest)) {
            immerState.transactionRequest.estimatedRollupFee = estimatedRollupFee;
            immerState.transactionRequest.estimatedRollupGwei = estimatedRollupGwei;
          }
        },
        setFeeType: (immerState, {payload}) => {
          immerState.feeTypeSelected = payload;
        },
        signed: (state, {payload}) => ({
          ...state,
          status: TransactionConstructionStatus.Signed,
          signedTransaction: payload
        }),
        broadcastOnSign: (state, {payload}) => ({
          ...state,
          broadcastOnSign: payload
        }),
        transactionLikelyFails: state => ({
          ...state,
          transactionLikelyFails: true
        }),
        estimatedFeesPerGas: (immerState, {payload: {estimatedFeesPerGas, network}}) => {
          immerState.estimatedFeesPerGas = {
            ...immerState.estimatedFeesPerGas ?? {},
            [network.chainID]: {
              baseFeePerGas: estimatedFeesPerGas.baseFeePerGas,
              instant: makeBlockEstimate(INSTANT, estimatedFeesPerGas),
              express: makeBlockEstimate(EXPRESS, estimatedFeesPerGas),
              regular: makeBlockEstimate(REGULAR, estimatedFeesPerGas)
            }
          };
        },
        setCustomGas: (immerState, {payload: {maxPriorityFeePerGas, maxFeePerGas}}) => {
          immerState.customFeesPerGas = {
            maxPriorityFeePerGas,
            maxFeePerGas,
            confidence: 0
          };
        },
        clearCustomGas: immerState => {
          immerState.customFeesPerGas = defaultCustomGas;
          immerState.feeTypeSelected = NetworkFeeTypeChosen.Regular;
        },
        setCustomGasLimit: (immerState, {payload: gasLimit}) => {
          if (typeof gasLimit !== "undefined" && immerState.transactionRequest && isEIP1559TransactionRequest(immerState.transactionRequest)) {
            immerState.transactionRequest.gasLimit = gasLimit;
          }
        }
      },
      extraReducers: builder => {
        builder.addCase(updateTransactionData.pending, (immerState => {
          immerState.status = TransactionConstructionStatus.Pending;
          immerState.signedTransaction = undefined;
        }));
      }
    });
    const {transactionRequest, clearTransactionState, transactionLikelyFails, broadcastOnSign, signed, setFeeType, estimatedFeesPerGas, setCustomGas, clearCustomGas, updateRollupEstimates, setCustomGasLimit} = transactionSlice.actions;
    const transaction_construction = transactionSlice.reducer;
    const broadcastSignedTransaction = createBackgroundAsyncThunk("transaction-construction/broadcast", (async transaction => {
      await transaction_construction_emitter.emit("broadcastSignedTransaction", transaction);
    }));
    const transactionSigned = createBackgroundAsyncThunk("transaction-construction/transaction-signed", (async (transaction, {dispatch, getState}) => {
      await dispatch(signed(transaction));
      const {transactionConstruction} = getState();
      if (transactionConstruction.broadcastOnSign ?? false) {
        await dispatch(broadcastSignedTransaction(transaction));
      }
    }));
    const rejectTransactionSignature = createBackgroundAsyncThunk("transaction-construction/reject", (async (_, {dispatch}) => {
      await transaction_construction_emitter.emit("signatureRejected");
      dispatch(transactionSlice.actions.clearTransactionState(TransactionConstructionStatus.Idle));
    }));
    const selectCurrentAccountActivities = es_createSelector((state => state.activities.activities), selectCurrentAccount, selectCurrentNetwork, ((activities, account, network) => activities?.[account.address]?.[network.chainID] ?? []));
    const selectActivitesHashesForEnrichment = es_createSelector(selectCurrentAccountActivities, (currentActivities => currentActivities.flatMap((activity => "type" in activity ? [] : activity.hash))));
    const getAllAddresses = es_createSelector((state => state.account), (account => [ ...new Set(Object.values(account.accountsData.evm).flatMap((chainAddresses => Object.keys(chainAddresses)))) ]));
    const selectAccountSignersByAddress = es_createSelector(getAllAddresses, (allAddresses => {
      const result = {};
      allAddresses.forEach((address => {
        result[address] = {
          type: "keyPair",
          walletID: undefined
        };
      }));
      return result;
    }));
    const selectCurrentAccountSigner = es_createSelector(selectAccountSignersByAddress, selectCurrentAccount, ((signingAccounts, selectedAccount) => signingAccounts[selectedAccount.address]));
    const prices_initialState = {};
    const pricesSlice = createSlice({
      name: "prices",
      initialState: prices_initialState,
      reducers: {
        newPricePoints: (immerState, {payload: pricePoints}) => {
          pricePoints.forEach((pricePoint => {
            const fiatCurrency = pricePoint.pair.find((asset => FIAT_CURRENCIES_SYMBOL.includes(asset.symbol)));
            const [pricedAsset] = pricePoint.pair.filter((asset => asset !== fiatCurrency));
            if (fiatCurrency && isTrustedAsset(pricedAsset)) {
              const assetId = getFullAssetID(pricedAsset);
              immerState[assetId] ??= {};
              immerState[assetId][fiatCurrency.symbol] = pricePoint;
            }
          }));
        },
        updatePriceAssetReferences: (immerState, {payload: assets}) => {
          assets.forEach((asset => {
            const assetId = getFullAssetID(asset);
            Object.values(immerState[assetId] ?? {}).forEach((immerPricePoint => {
              const updateIndex = immerPricePoint.pair.findIndex((priceAsset => isSameAsset(asset, priceAsset)));
              if (updateIndex > -1) {
                Object.assign(immerPricePoint.pair[updateIndex], asset);
              }
            }));
          }));
        }
      }
    });
    const {newPricePoints, updatePriceAssetReferences} = pricesSlice.actions;
    const prices = pricesSlice.reducer;
    const selectPricesState = state => state;
    const selectAsset = (_, asset) => asset;
    const selectPairedAssetSymbol = (_, _2, pairedAssetSymbol) => pairedAssetSymbol;
    const selectAssetPricePoint = es_createSelector([ selectPricesState, selectAsset, selectPairedAssetSymbol ], ((prices, assetToFind, pairedAssetSymbol) => {
      const getTargetAssetFromPricePoint = pricePoint => pricePoint.pair.filter((({symbol}) => symbol !== pairedAssetSymbol))[0];
      const hasRecentPriceData = assetPriceData => !!assetPriceData?.[pairedAssetSymbol];
      let pricedAsset;
      if (isSmartContractFungibleAsset(assetToFind)) {
        const assetID = getFullAssetID(assetToFind);
        if (hasRecentPriceData(prices[assetID])) {
          pricedAsset = prices[assetID];
        }
        if (!isTrustedAsset(assetToFind)) {
          return undefined;
        }
      }
      if (!pricedAsset) {
        pricedAsset = Object.values(prices).find((assetPriceData => hasRecentPriceData(assetPriceData) && getTargetAssetFromPricePoint(assetPriceData[pairedAssetSymbol]).symbol === assetToFind.symbol));
      }
      if (pricedAsset) {
        let pricePoint = pricedAsset[pairedAssetSymbol];
        if (pricePoint.pair[0].symbol !== assetToFind.symbol) {
          pricePoint = flipPricePoint(pricePoint);
        }
        const assetDecimals = isFungibleAsset(assetToFind) ? assetToFind.decimals : 0;
        const pricePointAssetDecimals = isFungibleAsset(pricePoint.pair[0]) ? pricePoint.pair[0].decimals : 0;
        if (assetDecimals !== pricePointAssetDecimals) {
          const {amounts} = pricePoint;
          pricePoint = {
            ...pricePoint,
            amounts: [ convertFixedPoint(amounts[0], pricePointAssetDecimals, assetDecimals), amounts[1] ]
          };
        }
        return pricePoint;
      }
      return undefined;
    }));
    const desiredDecimals = {
      default: 2,
      greater: 6
    };
    const EXCEPTION_ASSETS_BY_SYMBOL = [ "BTC", "sBTC", "WBTC", "tBTC" ].map((symbol => symbol.toUpperCase()));
    const userValueDustThreshold = 2;
    const shouldForciblyDisplayAsset = assetAmount => isNetworkBaseAsset(assetAmount.asset);
    function determineAssetDisplayAndVerify(assetAmount, {hideDust, showUnverifiedAssets}) {
      const isTrusted = isTrustedAsset(assetAmount.asset);
      if (shouldForciblyDisplayAsset(assetAmount)) {
        return {
          displayAsset: true,
          trustedAsset: isTrusted
        };
      }
      const isNotDust = typeof assetAmount.mainCurrencyAmount === "undefined" ? true : assetAmount.mainCurrencyAmount > userValueDustThreshold;
      const isPresent = assetAmount.decimalAmount > 0;
      const showDust = !hideDust;
      const verificationStatusAllowsVisibility = showUnverifiedAssets || isTrusted;
      const enoughBalanceToBeVisible = isPresent && (isNotDust || showDust);
      return {
        displayAsset: verificationStatusAllowsVisibility && enoughBalanceToBeVisible,
        trustedAsset: isTrusted
      };
    }
    const computeCombinedAssetAmountsData = (assetAmounts, assets, mainCurrencySymbol, hideDust, showUnverifiedAssets, prices) => {
      const allAssetAmounts = assetAmounts.map((assetAmount => {
        const assetPricePoint = selectAssetPricePoint(prices, assetAmount.asset, mainCurrencySymbol);
        const mainCurrencyEnrichedAssetAmount = enrichAssetAmountWithMainCurrencyValues(assetAmount, assetPricePoint, desiredDecimals.default);
        const fullyEnrichedAssetAmount = enrichAssetAmountWithDecimalValues(mainCurrencyEnrichedAssetAmount, heuristicDesiredDecimalsForUnitPrice(EXCEPTION_ASSETS_BY_SYMBOL.includes(assetAmount.asset.symbol.toUpperCase()) ? desiredDecimals.greater : desiredDecimals.default, mainCurrencyEnrichedAssetAmount.unitPrice));
        return fullyEnrichedAssetAmount;
      })).sort(((asset1, asset2) => {
        const leftIsBaseAsset = isNetworkBaseAsset(asset1.asset);
        const rightIsBaseAsset = isNetworkBaseAsset(asset2.asset);
        if (leftIsBaseAsset !== rightIsBaseAsset) {
          return leftIsBaseAsset ? -1 : 1;
        }
        if (asset1.mainCurrencyAmount !== undefined && asset2.mainCurrencyAmount !== undefined) {
          return asset2.mainCurrencyAmount - asset1.mainCurrencyAmount;
        }
        if (asset1.mainCurrencyAmount === asset2.mainCurrencyAmount) {
          return asset1.asset.symbol.localeCompare(asset2.asset.symbol);
        }
        return asset1.mainCurrencyAmount === undefined ? 1 : -1;
      }));
      const {combinedAssetAmounts, unverifiedAssetAmounts} = allAssetAmounts.reduce(((acc, assetAmount) => {
        const {displayAsset, trustedAsset} = determineAssetDisplayAndVerify(assetAmount, {
          hideDust,
          showUnverifiedAssets
        });
        if (displayAsset) {
          if (trustedAsset) {
            acc.combinedAssetAmounts.push(assetAmount);
          } else {
            acc.unverifiedAssetAmounts.push(assetAmount);
          }
        }
        return acc;
      }), {
        combinedAssetAmounts: [],
        unverifiedAssetAmounts: []
      });
      let totalMainCurrencyAmount;
      combinedAssetAmounts.forEach((assetAmount => {
        if (typeof assetAmount.mainCurrencyAmount !== "undefined") {
          totalMainCurrencyAmount ??= 0;
          totalMainCurrencyAmount += assetAmount.mainCurrencyAmount;
        }
      }));
      return {
        allAssetAmounts,
        combinedAssetAmounts,
        unverifiedAssetAmounts,
        totalMainCurrencyAmount
      };
    };
    const getAccountState = state => state.account;
    const getCurrentAccountState = state => {
      const {address, network} = state.ui.selectedAccount;
      return state.account.accountsData.evm[network.chainID]?.[normalizeQEVMAddress(address)];
    };
    const getAssetsState = state => state.assets;
    const getPricesState = state => state.prices;
    const selectAccountAndTimestampedActivities = es_createSelector(getAccountState, getAssetsState, getPricesState, selectHideDust, selectShowUnverifiedAssets, selectMainCurrencySymbol, ((account, assets, prices, hideDust, showUnverifiedAssets, mainCurrencySymbol) => {
      const {combinedAssetAmounts, totalMainCurrencyAmount} = computeCombinedAssetAmountsData(account.combinedData.assets, assets, mainCurrencySymbol, hideDust, showUnverifiedAssets, prices);
      return {
        combinedData: {
          assets: combinedAssetAmounts,
          totalMainCurrencyValue: totalMainCurrencyAmount ? formatCurrencyAmount(mainCurrencySymbol, totalMainCurrencyAmount, desiredDecimals.default) : undefined
        },
        accountData: account.accountsData
      };
    }));
    const selectCurrentAccountBalances = es_createSelector(getCurrentAccountState, getAssetsState, getPricesState, selectHideDust, selectShowUnverifiedAssets, selectMainCurrencySymbol, ((currentAccount, assets, prices, hideDust, showUnverifiedAssets, mainCurrencySymbol) => {
      if (typeof currentAccount === "undefined" || currentAccount === "loading") {
        return undefined;
      }
      const assetAmounts = Object.values(currentAccount.balances).map((balance => balance.assetAmount));
      const {allAssetAmounts, combinedAssetAmounts, unverifiedAssetAmounts, totalMainCurrencyAmount} = computeCombinedAssetAmountsData(assetAmounts, assets, mainCurrencySymbol, hideDust, showUnverifiedAssets, prices);
      return {
        allAssetAmounts,
        assetAmounts: combinedAssetAmounts,
        unverifiedAssetAmounts,
        totalMainCurrencyValue: totalMainCurrencyAmount ? formatCurrencyAmount(mainCurrencySymbol, totalMainCurrencyAmount, desiredDecimals.default) : undefined
      };
    }));
    function signerIdFor(accountSigner) {
      switch (accountSigner.type) {
       case "keyPair":
        return "keyPair";

       case "read-only":
        return null;

       default:
        return assertUnreachable(accountSigner);
      }
    }
    const signerTypeToAccountType = {
      keyPair: AccountType.keyPair,
      "read-only": AccountType.ReadOnly
    };
    const getAccountType = (address, signer) => {
      switch (true) {
       case signerTypeToAccountType[signer.type] === AccountType.keyPair:
        return signerTypeToAccountType[signer.type];

       default:
        return AccountType.Internal;
      }
    };
    const getTotalBalance = (accountBalances, prices, mainCurrencySymbol) => Object.values(accountBalances).map((({assetAmount}) => {
      const assetPricePoint = selectAssetPricePoint(prices, assetAmount.asset, mainCurrencySymbol);
      if (typeof assetPricePoint === "undefined") {
        return 0;
      }
      const convertedAmount = convertAssetAmountViaPricePoint(assetAmount, assetPricePoint);
      if (typeof convertedAmount === "undefined") {
        return 0;
      }
      return assetAmountToDesiredDecimals(convertedAmount, desiredDecimals.default);
    })).reduce(((total, assetBalance) => total + assetBalance), 0);
    function getNetworkAccountTotalsByCategory(state, network) {
      const accounts = getAccountState(state);
      const prices = getPricesState(state);
      const accountSignersByAddress = selectAccountSignersByAddress(state);
      const mainCurrencySymbol = selectMainCurrencySymbol(state);
      return Object.entries(accounts.accountsData.evm[network.chainID] ?? {}).filter((([, accountData]) => typeof accountData !== "undefined")).map((([address, accountData]) => {
        const shortenedAddress = truncateAddress(address);
        const accountSigner = accountSignersByAddress[address];
        const signerId = signerIdFor(accountSigner);
        const accountType = getAccountType(address, accountSigner);
        if (accountData === "loading") {
          return {
            address,
            network,
            shortenedAddress,
            accountType,
            signerId,
            accountSigner
          };
        }
        const {name, avatarURL} = accountData.ens;
        return {
          address,
          network,
          shortenedAddress,
          accountType,
          signerId,
          accountSigner,
          name: name ?? accountData.defaultName,
          avatarURL: avatarURL ?? accountData.defaultAvatar,
          localizedTotalMainCurrencyAmount: formatCurrencyAmount(mainCurrencySymbol, getTotalBalance(accountData.balances, prices, mainCurrencySymbol), desiredDecimals.default)
        };
      })).reduce(((seenTotalsByType, accountTotal) => ({
        ...seenTotalsByType,
        [accountTotal.accountType]: [ ...seenTotalsByType[accountTotal.accountType] ?? [], accountTotal ]
      })), {});
    }
    const selectNetworkAccountTotalsByCategoryResolver = es_createSelector((state => state), (state => network => getNetworkAccountTotalsByCategory(state, network)));
    const selectCurrentNetworkAccountTotalsByCategory = es_createSelector(selectNetworkAccountTotalsByCategoryResolver, selectCurrentNetwork, ((selectNetworkAccountTotalsByCategory, currentNetwork) => selectNetworkAccountTotalsByCategory(currentNetwork)));
    const selectAccountTotals = es_createSelector(selectCurrentNetworkAccountTotalsByCategory, (selectNetworkAccountTotalsByCategory => Object.values(selectNetworkAccountTotalsByCategory).flat()));
    const selectAccountTotalsForOverview = es_createSelector(getAccountState, getAssetsState, getPricesState, selectMainCurrencySymbol, ((accountsState, assetsState, pricesState, mainCurrencySymbol) => {
      const accountsTotal = {};
      Object.entries(accountsState.accountsData.evm).filter((([chainID, accounts]) => typeof accounts !== "undefined" && !TEST_NETWORK_BY_CHAIN_ID.has(chainID))).forEach((([chainID, accounts]) => Object.entries(accounts).forEach((([address, accountData]) => {
        if (accountData === "loading") return;
        const normalizedAddress = normalizeQEVMAddress(address);
        accountsTotal[normalizedAddress] ??= {
          ensName: accountData.ens.name,
          shortenedAddress: truncateAddress(address),
          totals: {}
        };
        accountsTotal[normalizedAddress].totals[chainID] = getTotalBalance(accountData.balances, pricesState, mainCurrencySymbol);
      }))));
      return accountsTotal;
    }));
    function findAccountTotal(categorizedAccountTotals, accountAddressOnNetwork) {
      return Object.values(categorizedAccountTotals).flat().find((({address, network}) => sameQEVMAddress(address, accountAddressOnNetwork.address) && sameNetwork(network, accountAddressOnNetwork.network)));
    }
    const getAccountTotal = (state, accountAddressOnNetwork) => findAccountTotal(selectNetworkAccountTotalsByCategoryResolver(state)(accountAddressOnNetwork.network), accountAddressOnNetwork);
    const getAccountNameOnChain = (state, accountAddressOnNetwork) => {
      const account = getAccountTotal(state, accountAddressOnNetwork);
      return account?.name && !DEFAULT_ACCOUNT_NAMES.includes(account.name) ? account.name : undefined;
    };
    const selectCurrentAccountTotal = es_createSelector(selectCurrentNetworkAccountTotalsByCategory, selectCurrentAccount, ((categorizedAccountTotals, currentAccount) => findAccountTotal(categorizedAccountTotals, currentAccount)));
    const accountsSelectors_getAllAddresses = es_createSelector(getAccountState, (account => account ? [ ...new Set(Object.values(account.accountsData.evm).flatMap((chainAddresses => Object.keys(chainAddresses)))) ] : []));
    const getAddressCount = es_createSelector(accountsSelectors_getAllAddresses, (allAddresses => allAddresses.length));
    const getAllNetworks = es_createSelector(getAccountState, (account => Object.keys(account.accountsData.evm).map((chainID => NETWORK_BY_CHAIN_ID[chainID]))));
    const getNetworkCountForOverview = es_createSelector(getAccountState, (account => Object.keys(account.accountsData.evm).filter((chainID => !TEST_NETWORK_BY_CHAIN_ID.has(chainID))).length));
    const getTotalBalanceForOverview = es_createSelector(selectAccountTotalsForOverview, selectMainCurrencySymbol, ((accountsTotal, currencySymbol) => formatCurrencyAmount(currencySymbol, Object.values(accountsTotal).reduce(((total, {totals}) => Object.values(totals).reduce(((sum, balance) => sum + balance), 0) + total), 0), 2)));
    const selectInternalSignerStatus = es_createSelector((state => state.internalSigner.status), (status => status));
    const selectWalletsByAddress = es_createSelector((state => state.internalSigner.keyPairs), (pkWallets => Object.fromEntries(pkWallets.map((wallet => [ wallet.address, wallet ])))));
    const getProviderBridgeState = state => state.dapp;
    const selectPermissionRequests = es_createSelector(getProviderBridgeState, (slice => Object.values(slice.permissionRequests)));
    const selectPendingPermissionRequests = es_createSelector(selectPermissionRequests, (permissionRequests => permissionRequests.filter((p => p.state === "request"))));
    const selectCurrentPendingPermission = es_createSelector(selectPendingPermissionRequests, (permissionRequests => permissionRequests.length > 0 ? permissionRequests[0] : undefined));
    const selectAllowedPages = es_createSelector((state => getProviderBridgeState(state).allowed), selectCurrentAccount, ((allowed, currentAccount) => {
      const permissions = [];
      Object.keys(allowed.evm).forEach((chainId => {
        Object.keys(allowed.evm[chainId]).forEach((address => {
          if (address === currentAccount.address) {
            Object.values(allowed.evm[chainId][address]).forEach((permission => {
              permissions.push(permission);
            }));
          }
        }));
      }));
      return permissions;
    }));
    const ETH_SYMBOLS = [ "ETH", "WETH" ];
    const isEnabledFilter = (id, filters) => filters.some((filter => id === filter.id && filter.isEnabled));
    const isETHPrice = collection => ETH_SYMBOLS.includes(collection?.floorPrice?.tokenSymbol ?? "");
    const getAdditionalDataForFilter = (id, accounts) => {
      const a = accounts.find((({address}) => address === id));
      return a ? {
        name: a.name ?? a.address,
        thumbnailURL: a.avatarURL
      } : {};
    };
    const sortByPrice = (type, collection1, collection2) => {
      if (collection1.floorPrice?.valueUSD === undefined) return 1;
      if (collection2.floorPrice?.valueUSD === undefined) return -1;
      if (type === "asc") {
        return collection1.floorPrice.valueUSD - collection2.floorPrice.valueUSD;
      }
      return collection2.floorPrice.valueUSD - collection1.floorPrice.valueUSD;
    };
    const sortByDate = (type, collection1, collection2) => {
      const transferDate1 = new Date(collection1.nfts[0]?.transferDate ?? "").getTime();
      const transferDate2 = new Date(collection2.nfts[0]?.transferDate ?? "").getTime();
      if (type === "new") {
        return transferDate1 > transferDate2 ? -1 : 1;
      }
      return transferDate1 > transferDate2 ? 1 : -1;
    };
    const sortNFTsByDate = (type, nfts) => {
      const sorted = nfts.sort(((nft1, nft2) => new Date(nft2.transferDate ?? "").getTime() - new Date(nft1.transferDate ?? "").getTime()));
      return type === "new" ? sorted : sorted.reverse();
    };
    const sortByNFTCount = (collection1, collection2) => (Number(collection2?.nftCount) || 0) - (Number(collection1?.nftCount) || 0);
    const sortCollections = (collection1, collection2, type) => {
      switch (type) {
       case "asc":
        return sortByPrice("asc", collection1, collection2);

       case "desc":
        return sortByPrice("desc", collection1, collection2);

       case "new":
        return sortByDate("new", collection1, collection2);

       case "old":
        return sortByDate("old", collection1, collection2);

       case "number":
        return sortByNFTCount(collection1, collection2);

       default:
        return 0;
      }
    };
    const sortNFTs = (collection, type) => {
      switch (type) {
       case "new":
        return {
          ...collection,
          nfts: sortNFTsByDate("new", collection.nfts)
        };

       case "old":
        return {
          ...collection,
          nfts: sortNFTsByDate("old", collection.nfts)
        };

       default:
        return collection;
      }
    };
    const getTotalFloorPrice = collections => collections.reduce(((acc, collection) => {
      if (!collection.floorPrice) return acc;
      const sum = collection.floorPrice.value * (collection.nftCount ?? 0);
      if (isETHPrice(collection)) {
        acc.ETH += sum;
      } else {
        acc[collection.floorPrice.tokenSymbol] ??= 0;
        acc[collection.floorPrice.tokenSymbol] += sum;
      }
      return acc;
    }), {
      ETH: 0
    });
    const getNFTsCount = collections => collections.reduce(((sum, collection) => sum + (collection.nftCount ?? 0)), 0);
    function enrichCollectionWithUSDFloorPrice(collection, prices, mainCurrencySymbol) {
      if (!collection.floorPrice) return collection;
      const {tokenSymbol, value} = collection.floorPrice;
      const symbol = isETHPrice(collection) ? "ETH" : tokenSymbol;
      const baseAsset = BUILT_IN_NETWORK_BASE_ASSETS.find((asset => symbol === asset.symbol));
      if (!baseAsset) return collection;
      const pricePoint = selectAssetPricePoint(prices, baseAsset, mainCurrencySymbol);
      const valueUSD = enrichAssetAmountWithMainCurrencyValues({
        asset: baseAsset,
        amount: BigInt(Math.round(value * 10 ** baseAsset.decimals))
      }, pricePoint, 2).mainCurrencyAmount ?? 0;
      return {
        ...collection,
        floorPrice: {
          value,
          valueUSD,
          tokenSymbol
        }
      };
    }
    const getFilteredCollections = (collections, filters, prices, mainCurrencySymbol) => {
      const applyPriceSort = filters.type === "asc" || filters.type === "desc";
      return collections.filter((collection => isEnabledFilter(collection.id, filters.collections) && isEnabledFilter(collection.owner, filters.accounts))).map((collection => {
        const collectionWithSortedNFTs = sortNFTs(collection, filters.type);
        return applyPriceSort ? enrichCollectionWithUSDFloorPrice(collectionWithSortedNFTs, prices, mainCurrencySymbol) : collectionWithSortedNFTs;
      })).sort(((collection1, collection2) => sortCollections(collection1, collection2, filters.type)));
    };
    const selectNFTs = es_createSelector((state => state.nfts), (nftsSlice => nftsSlice.nfts));
    const selectIsReloadingNFTs = es_createSelector((state => state.nfts), (nftsSlice => nftsSlice.isReloading));
    const selectCurrentAccountNFTs = es_createSelector(selectNFTs, selectCurrentAccount, ((nfts, account) => Object.values(nfts[account.network.chainID]?.[normalizeQEVMAddress(account.address)] ?? {})));
    const selectNFTFilters = es_createSelector((state => state.nfts), (nftsSlice => nftsSlice.filters));
    const selectEnrichedNFTFilters = es_createSelector(selectNFTFilters, selectAccountTotals, ((filters, accountTotals) => {
      const accounts = filters.accounts.reduce(((acc, filter) => {
        const additionalData = getAdditionalDataForFilter(filter.id, accountTotals);
        if (Object.keys(additionalData).length > 0) {
          return [ ...acc, {
            ...filter,
            ...additionalData
          } ];
        }
        return [ ...acc ];
      }), []);
      const collections = filters.collections.filter((({owners}) => {
        const enablingAccount = (owners ?? []).find((owner => accounts.find((account => account.id === owner && account.isEnabled))));
        return !!enablingAccount;
      })).sort(((collection1, collection2) => collection1.name.localeCompare(collection2.name)));
      return {
        ...filters,
        collections,
        accounts
      };
    }));
    const selectAllCollections = es_createSelector(selectNFTs, (nfts => Object.values(nfts).flatMap((byAddress => Object.values(byAddress).flatMap((byCollection => Object.values(byCollection)))))));
    const selectAllNFTCollections = es_createSelector(selectAllCollections, (collections => collections.filter((collection => !collection.hasBadges))));
    const selectAllNFTBadgesCollections = es_createSelector(selectAllCollections, (collections => collections.filter((collection => collection.hasBadges))));
    const selectFilteredNFTCollections = es_createSelector(selectAllNFTCollections, selectNFTFilters, getPricesState, selectMainCurrencySymbol, ((collections, filters, prices, mainCurrencySymbol) => getFilteredCollections(collections, filters, prices, mainCurrencySymbol)));
    const selectFilteredNFTBadgesCollections = es_createSelector(selectAllNFTBadgesCollections, selectNFTFilters, getPricesState, selectMainCurrencySymbol, ((collections, filters, prices, mainCurrencySymbol) => getFilteredCollections(collections, filters, prices, mainCurrencySymbol)));
    const selectCurrentAccountNFTsCount = es_createSelector(selectCurrentAccountNFTs, (collections => getNFTsCount(collections)));
    const selectAllNFTsCount = es_createSelector(selectAllNFTCollections, (collections => getNFTsCount(collections)));
    const selectAllNFTBadgesCount = es_createSelector(selectAllNFTBadgesCollections, (collections => getNFTsCount(collections)));
    const selectFilteredNFTsCount = es_createSelector(selectFilteredNFTCollections, (collections => getNFTsCount(collections)));
    const selectFilteredNFTBadgesCount = es_createSelector(selectFilteredNFTBadgesCollections, (collections => getNFTsCount(collections)));
    const selectFilteredNFTCollectionsCount = es_createSelector(selectFilteredNFTCollections, (collections => collections.length));
    const selectFilteredTotalFloorPrice = es_createSelector(selectFilteredNFTCollections, (collections => getTotalFloorPrice(collections)));
    const isDeleted = ability => ability.removedFromUi;
    const isExpired = ability => ability.closeAt ? new Date(ability.closeAt) < new Date : false;
    const filterByState = (ability, state) => {
      switch (state) {
       case "open":
        return !isDeleted(ability) && !isExpired(ability) && ability.completed === false;

       case "completed":
        return !isDeleted(ability) && !isExpired(ability) && ability.completed === true;

       case "expired":
        return !isDeleted(ability) && isExpired(ability);

       case "deleted":
        return isDeleted(ability);

       default:
        return true;
      }
    };
    const filterByType = (type, types) => types.includes(type);
    const filterByAddress = (address, accounts) => accounts.includes(address);
    const filterAbility = (ability, filter) => filterByAddress(ability.address, filter.accounts) && filterByState(ability, filter.state) && filterByType(ability.type, filter.types);
    const selectAbilities = es_createSelector((state => state.abilities), (abilitiesSlice => abilitiesSlice.abilities));
    const selectDescriptionHidden = es_createSelector((state => state.abilities.hideDescription), (hideDescription => hideDescription));
    const selectAbilityFilter = es_createSelector((state => state.abilities), (abilitiesSlice => abilitiesSlice.filter));
    const selectAbilityFilterState = es_createSelector((state => state.abilities), (abilitiesSlice => abilitiesSlice.filter.state));
    const selectAbilityFilterTypes = es_createSelector((state => state.abilities), (abilitiesSlice => abilitiesSlice.filter.types));
    const selectAbilityFilterAccounts = es_createSelector((state => state.abilities), (abilitiesSlice => abilitiesSlice.filter.accounts));
    const selectFilteredAbilities = es_createSelector(selectAbilityFilter, selectAbilities, ((filter, abilities) => {
      const activeAbilities = [];
      Object.values(abilities).forEach((addressAbilities => {
        activeAbilities.push(...Object.values(addressAbilities).filter((ability => filterAbility(ability, filter))));
      }));
      return activeAbilities;
    }));
    const selectOpenAbilityCount = es_createSelector(selectAbilityFilter, selectAbilities, ((filter, abilities) => Object.values(abilities).flatMap((address => Object.values(address))).filter((ability => filterAbility(ability, {
      ...filter,
      state: "open"
    }))).length));
    const selectTransactionNetwork = es_createSelector((state => state.transactionConstruction.transactionRequest?.network), (network => network));
    const selectDefaultNetworkFeeSettings = es_createSelector((state => state.transactionConstruction), (state => state.networks), selectCurrentNetwork, selectTransactionNetwork, ((transactionConstruction, networks, selectedNetwork, transactionNetwork) => {
      const currentNetwork = transactionNetwork || selectedNetwork;
      const selectedFeesPerGas = transactionConstruction.estimatedFeesPerGas?.[currentNetwork.chainID]?.[transactionConstruction.feeTypeSelected] ?? transactionConstruction.customFeesPerGas;
      return {
        feeType: transactionConstruction.feeTypeSelected,
        gasLimit: undefined,
        suggestedGasLimit: transactionConstruction.transactionRequest?.gasLimit,
        values: {
          maxFeePerGas: selectedFeesPerGas?.maxFeePerGas ?? 0n,
          maxPriorityFeePerGas: selectedFeesPerGas?.maxPriorityFeePerGas ?? 0n,
          gasPrice: selectedFeesPerGas?.price ?? 0n,
          baseFeePerGas: networks.blockInfo[currentNetwork.chainID]?.baseFeePerGas ?? undefined
        }
      };
    }));
    const selectEstimatedFeesPerGas = es_createSelector((state => state.transactionConstruction.estimatedFeesPerGas), selectTransactionNetwork, selectCurrentNetwork, ((gasData, transactionNetwork, selectedNetwork) => transactionNetwork ? gasData[transactionNetwork.chainID] : gasData[selectedNetwork.chainID]));
    const selectFeeType = es_createSelector((state => state.transactionConstruction.feeTypeSelected), (feeTypeChosen => feeTypeChosen));
    const selectBaseAsset = es_createSelector((state => state.transactionConstruction.transactionRequest?.network.baseAsset), (baseAsset => baseAsset));
    const selectTransactionMainCurrencyPricePoint = es_createSelector([ selectBaseAsset, getPricesState, state => selectMainCurrencySymbol(state), selectCurrentNetwork ], ((baseAsset, prices, mainCurrencySymbol, currentNetwork) => selectAssetPricePoint(prices, baseAsset ?? currentNetwork.baseAsset, mainCurrencySymbol)));
    const selectTransactionData = es_createSelector((state => state.transactionConstruction.transactionRequest), (transactionRequestData => transactionRequestData));
    const selectIsTransactionPendingSignature = es_createSelector((state => state.transactionConstruction.status), (status => status === "loaded" || status === "pending"));
    const selectIsTransactionLoaded = es_createSelector((state => state.transactionConstruction.status), (status => status === "loaded"));
    const selectIsTransactionSigned = es_createSelector((state => state.transactionConstruction.status), (status => status === "signed"));
    const selectCurrentlyChosenNetworkFees = es_createSelector((state => state.transactionConstruction?.estimatedFeesPerGas?.[state.transactionConstruction.feeTypeSelected]), (feeData => feeData));
    const selectHasInsufficientFunds = es_createSelector(selectTransactionData, (transactionDetails => !!transactionDetails?.annotation?.warnings?.includes("insufficient-funds")));
    const dapp_initialState = {
      permissionRequests: {},
      allowed: {
        evm: {}
      }
    };
    const dapp_emitter = new (emittery_default());
    const grantPermission = createBackgroundAsyncThunk("dapp-permission/permissionGrant", (async permission => {
      dapp_emitter.emit("grantPermission", {
        ...permission
      });
      return permission;
    }));
    const denyOrRevokePermission = createBackgroundAsyncThunk("dapp-permission/permissionDenyOrRevoke", (async permission => {
      await dapp_emitter.emit("denyOrRevokePermission", permission);
      return permission;
    }));
    const dappSlice = createSlice({
      name: "dapp-permission",
      initialState: dapp_initialState,
      reducers: {
        initializePermissions: (immerState, {payload: allowed}) => {
          immerState.allowed = allowed;
        },
        requestPermission: (state, {payload: request}) => {
          if (state.permissionRequests[request.origin]?.state !== "allow") {
            return {
              ...state,
              permissionRequests: {
                [request.origin]: {
                  ...request
                }
              }
            };
          }
          return state;
        },
        revokePermissionsForAddress: (immerState, {payload: address}) => {
          Object.keys(immerState.allowed.evm).forEach((chainID => {
            if (immerState.allowed.evm[chainID]?.[address]) {
              const {[address]: _, ...withoutAddressToRemove} = immerState.allowed.evm[chainID];
              immerState.allowed.evm[chainID] = withoutAddressToRemove;
            }
          }));
        }
      },
      extraReducers: builder => {
        builder.addCase(grantPermission.fulfilled, ((immerState, {payload: permission}) => {
          const updatedPermissionRequests = {
            ...immerState.permissionRequests
          };
          delete updatedPermissionRequests[permission.origin];
          const permissions = DEFAULT_NETWORKS.map((network => ({
            ...permission,
            chainID: network.chainID
          })));
          const allowedPermission = keyPermissionsByChainIdAddressOrigin(permissions, immerState.allowed);
          immerState.allowed = allowedPermission;
        })).addCase(denyOrRevokePermission.fulfilled, ((immerState, {payload: permission}) => {
          const updatedPermissionRequests = {
            ...immerState.permissionRequests
          };
          delete updatedPermissionRequests[permission.origin];
          Object.keys(immerState.allowed.evm).forEach((chainID => {
            if (immerState.allowed.evm[chainID]?.[permission.accountAddress]) {
              const {[permission.origin]: _, ...withoutOriginToRemove} = immerState.allowed.evm[chainID][permission.accountAddress];
              immerState.allowed.evm[chainID][permission.accountAddress] = withoutOriginToRemove;
            }
          }));
        }));
      }
    });
    const {requestPermission, initializePermissions, revokePermissionsForAddress} = dappSlice.actions;
    const dapp = dappSlice.reducer;
    const signingSliceEmitter = new (emittery_default());
    const signing_initialState = {
      typedDataRequest: undefined,
      signedTypedData: undefined,
      signedData: undefined,
      signDataRequest: undefined,
      additionalSigningStatus: undefined
    };
    const signTypedData = createBackgroundAsyncThunk("signing/signTypedData", (async data => {
      const {request: {account, typedData}, accountSigner} = data;
      await signingSliceEmitter.emit("requestSignTypedData", {
        typedData,
        account,
        accountSigner
      });
    }));
    const signData = createBackgroundAsyncThunk("signing/signData", (async data => {
      const {request, accountSigner} = data;
      await signingSliceEmitter.emit("requestSignData", {
        ...request,
        accountSigner
      });
    }));
    const signingSlice = createSlice({
      name: "signing",
      initialState: signing_initialState,
      reducers: {
        signedTypedData: (state, {payload}) => ({
          ...state,
          signedTypedData: payload,
          typedDataRequest: undefined
        }),
        typedDataRequest: (state, {payload}) => ({
          ...state,
          typedDataRequest: payload
        }),
        signDataRequest: (state, {payload}) => ({
          ...state,
          signDataRequest: payload
        }),
        signedData: (state, {payload}) => ({
          ...state,
          signedData: payload,
          signDataRequest: undefined
        }),
        clearSigningState: state => ({
          ...state,
          typedDataRequest: undefined,
          signDataRequest: undefined,
          additionalSigningStatus: undefined
        }),
        updateAdditionalSigningStatus: (state, {payload}) => ({
          ...state,
          additionalSigningStatus: payload
        })
      }
    });
    const {signedTypedData, typedDataRequest, signedData: signing_signedData, signDataRequest, clearSigningState, updateAdditionalSigningStatus} = signingSlice.actions;
    const signing = signingSlice.reducer;
    const selectTypedData = es_createSelector((state => state.signing.typedDataRequest), (signTypes => signTypes));
    const selectSigningData = es_createSelector((state => state.signing.signDataRequest), (signTypes => signTypes));
    const selectAdditionalSigningStatus = es_createSelector((state => state.signing.additionalSigningStatus), (additionalSigningStatus => additionalSigningStatus));
    const rejectDataSignature = createBackgroundAsyncThunk("signing/reject", (async (_, {dispatch}) => {
      await signingSliceEmitter.emit("signatureRejected");
      dispatch(signingSlice.actions.clearSigningState());
    }));
    var TxStatus = function(TxStatus) {
      TxStatus[TxStatus["FAIL"] = 0] = "FAIL";
      TxStatus[TxStatus["SUCCESS"] = 1] = "SUCCESS";
      return TxStatus;
    }(TxStatus || {});
    const INFINITE_VALUE = "infinite";
    const ACTIVITY_DECIMALS = 2;
    function isEnrichedTransaction(transaction) {
      return "annotation" in transaction;
    }
    function getAmount(tx) {
      const {value, network: {baseAsset: {symbol}}} = tx;
      if (value == null || typeof value === "undefined") {
        return "(Unknown)";
      }
      return `${convertToEth(value) || "0"} ${symbol}`;
    }
    function getBlockHeight(tx) {
      const {blockHeight} = tx;
      const status = "status" in tx ? tx.status : undefined;
      if (blockHeight !== null && status !== undefined && status !== TxStatus.SUCCESS) {
        return "(failed)";
      }
      if (blockHeight !== null) {
        return blockHeight.toString();
      }
      if (blockHeight === null && status === TxStatus.FAIL) {
        return "(dropped)";
      }
      return "(pending)";
    }
    function getGweiPrice(value) {
      if (value === null || typeof value === "undefined") {
        return "(Unknown)";
      }
      return `${weiToGwei(value) || "0"} Gwei`;
    }
    function getTimestamp(blockTimestamp) {
      return blockTimestamp ? new Date(blockTimestamp * 1e3).toLocaleString() : "(Unknown)";
    }
    const getAssetSymbol = transaction => {
      const {annotation} = transaction;
      switch (annotation?.type) {
       case "asset-transfer":
       case "asset-approval":
        return annotation.assetAmount.asset.symbol;

       default:
        return transaction.asset.symbol;
      }
    };
    const getValue = transaction => {
      const {asset, value} = transaction;
      const localizedValue = assetAmountToDesiredDecimals({
        asset,
        amount: value
      }, ACTIVITY_DECIMALS).toLocaleString("default", {
        maximumFractionDigits: ACTIVITY_DECIMALS
      });
      if (isEnrichedTransaction(transaction)) {
        const {annotation} = transaction;
        switch (annotation?.type) {
         case "asset-transfer":
          return annotation.assetAmount.localizedDecimalAmount;

         case "asset-approval":
          return isMaxUint256(annotation.assetAmount.amount) ? INFINITE_VALUE : annotation.assetAmount.localizedDecimalAmount;

         default:
          return localizedValue;
        }
      }
      return localizedValue;
    };
    const getActivity = transaction => {
      const {to, from, blockHeight, nonce, hash, blockHash, asset} = transaction;
      let activity = {
        status: "status" in transaction ? transaction.status : undefined,
        to: to && normalizeQEVMAddress(to),
        from: normalizeQEVMAddress(from),
        recipient: {
          address: to
        },
        sender: {
          address: from
        },
        blockHeight,
        assetSymbol: asset.symbol,
        nonce,
        hash,
        blockHash,
        value: getValue(transaction)
      };
      if (isEnrichedTransaction(transaction)) {
        const {annotation} = transaction;
        activity = {
          ...activity,
          type: annotation?.type,
          value: getValue(transaction),
          blockTimestamp: annotation?.blockTimestamp,
          assetLogoUrl: annotation?.transactionLogoURL,
          assetSymbol: getAssetSymbol(transaction),
          recipient: getRecipient(transaction),
          sender: getSender(transaction)
        };
      }
      return activity;
    };
    const sortActivities = (a, b) => {
      if (a.blockHeight === null || b.blockHeight === null || a.blockHeight === b.blockHeight) {
        if (a.nonce === b.nonce) {
          if (a.blockHeight === null) {
            return 1;
          }
          if (b.blockHeight === null) {
            return -1;
          }
        }
        return b.nonce - a.nonce;
      }
      if (a.blockHeight === null && b.blockHeight === null) {
        return 0;
      }
      if (a.blockHeight === null) {
        return -1;
      }
      if (b.blockHeight === null) {
        return 1;
      }
      return b.blockHeight - a.blockHeight;
    };
    function getActivityDetails(tx) {
      const {annotation} = tx;
      const assetTransfers = annotation?.subannotations === undefined ? [] : annotation.subannotations.map((subannotation => {
        if (subannotation.type === "asset-transfer" && (sameQEVMAddress(subannotation.sender.address, tx.from) || sameQEVMAddress(subannotation.recipient.address, tx.from))) {
          return {
            direction: sameQEVMAddress(subannotation.sender.address, tx.from) ? "out" : "in",
            assetSymbol: subannotation.assetAmount.asset.symbol,
            assetLogoUrl: subannotation.assetAmount.asset.metadata?.logoURL,
            localizedDecimalAmount: subannotation.assetAmount.localizedDecimalAmount
          };
        }
        return undefined;
      })).filter(isDefined);
      return [ {
        label: "Block Height",
        value: getBlockHeight(tx)
      }, {
        label: "Amount",
        value: getAmount(tx)
      }, {
        label: "Max Fee/Gas",
        value: getGweiPrice(tx.maxFeePerGas)
      }, {
        label: "Gas Price",
        value: getGweiPrice(tx.gasPrice)
      }, {
        label: "Gas",
        value: "gasUsed" in tx ? tx.gasUsed.toString() : ""
      }, {
        label: "Nonce",
        value: tx.nonce.toString()
      }, {
        label: "Timestamp",
        value: getTimestamp(tx.annotation?.blockTimestamp)
      } ].concat(assetTransfers.map((transfer => ({
        assetIconUrl: transfer.assetLogoUrl ?? "",
        label: transfer.assetSymbol,
        value: transfer.direction === "in" ? transfer.localizedDecimalAmount : `-${transfer.localizedDecimalAmount}`
      }))));
    }
    const ACTIVITIES_MAX_COUNT = 25;
    const cleanActivitiesArray = (activitiesArray = []) => {
      activitiesArray.sort(sortActivities);
      activitiesArray.splice(ACTIVITIES_MAX_COUNT);
    };
    const addActivityToState = activities => (address, chainID, transaction) => {
      const activity = getActivity(transaction);
      const normalizedAddress = normalizeQEVMAddress(address);
      activities[normalizedAddress] ??= {};
      activities[normalizedAddress][chainID] ??= [];
      const exisistingIndex = activities[normalizedAddress][chainID].findIndex((tx => tx.hash === transaction.hash));
      if (exisistingIndex !== -1) {
        activities[normalizedAddress][chainID][exisistingIndex] = activity;
      } else {
        activities[normalizedAddress][chainID].push(activity);
      }
    };
    const initializeActivitiesFromTransactions = ({transactions, accounts}) => {
      const activities = {};
      const addActivity = addActivityToState(activities);
      const normalizedAccounts = accounts.map((account => normalizeAddressOnNetwork(account)));
      transactions.forEach((transaction => {
        const {to, from, network} = transaction;
        const isTrackedTo = normalizedAccounts.some((({address, network: activeNetwork}) => network.chainID === activeNetwork.chainID && sameQEVMAddress(to, address)));
        const isTrackedFrom = normalizedAccounts.some((({address, network: activeNetwork}) => network.chainID === activeNetwork.chainID && sameQEVMAddress(from, address)));
        if (to && isTrackedTo) {
          addActivity(to, network.chainID, transaction);
        }
        if (from && isTrackedFrom) {
          addActivity(from, network.chainID, transaction);
        }
      }));
      normalizedAccounts.forEach((({address, network}) => cleanActivitiesArray(activities[address]?.[network.chainID])));
      return activities;
    };
    const activities_initialState = {
      activities: {}
    };
    const activitiesSlice = createSlice({
      name: "activities",
      initialState: activities_initialState,
      reducers: {
        initializeActivities: (immerState, {payload}) => ({
          activities: initializeActivitiesFromTransactions(payload)
        }),
        initializeActivitiesForAccount: (immerState, {payload: {transactions, account}}) => {
          const {address, network: {chainID}} = account;
          transactions.forEach((transaction => addActivityToState(immerState.activities)(address, chainID, transaction)));
          cleanActivitiesArray(immerState.activities[normalizeQEVMAddress(address)]?.[chainID]);
        },
        removeActivities: (immerState, {payload: address}) => {
          immerState.activities[address] = {};
        },
        addActivity: (immerState, {payload: {transaction, forAccounts}}) => {
          const {chainID} = transaction.network;
          forAccounts.forEach((address => {
            addActivityToState(immerState.activities)(address, chainID, transaction);
            cleanActivitiesArray(immerState.activities[normalizeQEVMAddress(address)]?.[chainID]);
          }));
        }
      }
    });
    const {initializeActivities, addActivity, removeActivities, initializeActivitiesForAccount} = activitiesSlice.actions;
    const activities = activitiesSlice.reducer;
    const fetchSelectedActivityDetails = createBackgroundAsyncThunk("activities/fetchSelectedActivityDetails", (async (activityHash, {extra: {main}}) => main.getActivityDetails(activityHash)));
    const nfts_emitter = new (emittery_default());
    function updateCollection(acc, collection) {
      const {id, name, nftCount, totalNftCount, network, owner, floorPrice, hasBadges, thumbnailURL} = collection;
      const {chainID} = network;
      const ownerAddress = normalizeQEVMAddress(owner);
      acc.nfts[chainID] ??= {};
      acc.nfts[chainID][ownerAddress] ??= {};
      const savedCollection = acc.nfts[chainID][ownerAddress][collection.id] ?? {};
      acc.nfts[chainID][ownerAddress][collection.id] = {
        id,
        name,
        nftCount: nftCount ?? savedCollection.nftCount ?? 0,
        totalNftCount,
        nfts: savedCollection.nfts ?? [],
        hasBadges: savedCollection.hasBadges || hasBadges,
        chainID,
        owner: ownerAddress,
        thumbnailURL,
        hasNextPage: false,
        floorPrice: floorPrice && {
          value: fromFixedPointNumber({
            amount: floorPrice.value,
            decimals: floorPrice.token.decimals
          }, 4),
          tokenSymbol: floorPrice.token.symbol
        }
      };
    }
    function updateFilter(acc, collection, type) {
      const {id, name, thumbnailURL, owner} = collection;
      const existingFilterId = acc.filters[type].findIndex((obj => obj.id === (type === "accounts" ? owner : id)));
      const filter = type === "accounts" ? {
        id: owner,
        name: owner
      } : {
        id,
        name,
        thumbnailURL
      };
      if (existingFilterId >= 0) {
        acc.filters[type][existingFilterId] = {
          ...acc.filters[type][existingFilterId],
          ...filter
        };
        if (type === "collections") {
          const owners = acc.filters[type][existingFilterId].owners ?? [];
          if (!owners.includes(owner)) {
            acc.filters[type][existingFilterId].owners = [ ...owners, owner ];
          }
        }
      } else {
        acc.filters[type].push({
          ...filter,
          isEnabled: true,
          ...type === "collections" && {
            owners: [ owner ]
          }
        });
      }
    }
    function updateFilters(acc, collection) {
      const {nftCount} = collection;
      if ((nftCount ?? 0) > 0) {
        updateFilter(acc, collection, "collections");
      }
      updateFilter(acc, collection, "accounts");
    }
    function parseNFTs(nfts) {
      return nfts.map((nft => {
        const {network, rarity, ...cached} = nft;
        return {
          ...cached,
          chainID: network.chainID,
          rarityRank: rarity.rank ?? null
        };
      }));
    }
    const NFTsSlice = createSlice({
      name: "nfts",
      initialState: {
        isReloading: false,
        nfts: {},
        filters: {
          collections: [],
          accounts: [],
          type: "desc"
        }
      },
      reducers: {
        initializeNFTs: (immerState, {payload: collections}) => {
          const state = {
            isReloading: false,
            nfts: {},
            filters: {
              collections: [],
              accounts: [],
              type: "desc"
            }
          };
          collections.forEach((collection => {
            updateCollection(state, collection);
            updateFilters(state, collection);
          }));
          return state;
        },
        updateNFTsCollections: (immerState, {payload: collections}) => {
          collections.forEach((collection => {
            updateCollection(immerState, collection);
            updateFilters(immerState, collection);
          }));
        },
        updateNFTs: (immerState, {payload}) => {
          const {account: {network, address}, collectionID, nfts, hasNextPage} = payload;
          const collectionToUpdate = immerState.nfts[network.chainID][normalizeQEVMAddress(address)][collectionID];
          collectionToUpdate.nfts = parseNFTs(nfts);
          collectionToUpdate.hasNextPage = hasNextPage;
        },
        updateIsReloading: (immerState, {payload: isReloading}) => {
          immerState.isReloading = isReloading;
        },
        deleteNFTsForAddress: (immerState, {payload: address}) => {
          const normalizedAddress = normalizeQEVMAddress(address);
          immerState.filters.accounts = immerState.filters.accounts.filter((({id}) => id !== address));
          immerState.filters.collections = immerState.filters.collections.flatMap((collection => {
            if (collection.owners?.includes(address)) {
              return collection.owners.length === 1 ? [] : {
                ...collection,
                owners: collection.owners.filter((owner => owner !== address))
              };
            }
            return collection;
          }));
          Object.keys(immerState.nfts).forEach((chainID => {
            delete immerState.nfts[chainID][normalizedAddress];
          }));
        },
        deleteTransferredNFTs: (immerState, {payload: transfers}) => {
          transfers.forEach((({id: nftID, chainID, from: address, collectionID}) => {
            if (!address || !collectionID) return;
            const normalizedAddress = normalizeQEVMAddress(address);
            const collection = immerState.nfts[chainID]?.[normalizedAddress]?.[collectionID];
            if (collection) {
              const hasLastNFT = (collection.nftCount ?? 0) <= 1;
              const hasCachedTransferredNFT = collection.nfts.some((nft => nft.id === nftID));
              collection.nftCount = (collection.nftCount || 1) - 1;
              if (hasCachedTransferredNFT || hasLastNFT) {
                if (collection.nfts.length === 1 || hasLastNFT) {
                  immerState.filters.collections = immerState.filters.collections.filter((({id}) => id !== collectionID));
                  delete immerState.nfts[chainID][normalizedAddress][collectionID];
                } else {
                  collection.nfts = collection.nfts.filter((nft => nft.id !== nftID));
                }
              }
            }
          }));
        },
        cleanCachedNFTs: immerState => {
          Object.keys(immerState.nfts).forEach((chainID => Object.keys(immerState.nfts[chainID]).forEach((address => Object.keys(immerState.nfts[chainID][address]).forEach((collectionID => {
            const collection = immerState.nfts[chainID][address][collectionID];
            if (!collection.hasBadges) {
              const reducedList = collection.nfts.slice(0, 2);
              collection.nfts = reducedList;
            }
          }))))));
        },
        updateCollectionFilter: (immerState, {payload: filter}) => {
          const idx = immerState.filters.collections.findIndex((({id}) => id === filter.id));
          immerState.filters.collections[idx] = filter;
        },
        updateAccountFilter: (immerState, {payload: filter}) => {
          const idx = immerState.filters.accounts.findIndex((({id}) => id === filter.id));
          immerState.filters.accounts[idx] = filter;
        },
        updateSortType: (immerState, {payload: type}) => {
          immerState.filters.type = type;
        }
      }
    });
    const {initializeNFTs, updateNFTsCollections, updateNFTs, updateIsReloading, deleteNFTsForAddress, deleteTransferredNFTs, cleanCachedNFTs, updateCollectionFilter, updateAccountFilter, updateSortType} = NFTsSlice.actions;
    const nfts = NFTsSlice.reducer;
    const fetchNFTsFromCollection = createBackgroundAsyncThunk("nfts/fetchNFTsFromCollection", (async payload => {
      await nfts_emitter.emit("fetchNFTs", payload);
    }));
    const refetchNFTsFromCollection = createBackgroundAsyncThunk("nfts/refetchNFTsFromCollection", (async payload => {
      await nfts_emitter.emit("refetchNFTs", payload);
    }));
    const fetchMoreNFTsFromCollection = createBackgroundAsyncThunk("nfts/fetchMoreNFTsFromCollection", (async payload => {
      await nfts_emitter.emit("fetchMoreNFTs", payload);
    }));
    const refetchCollections = createBackgroundAsyncThunk("nfts/refetchCollections", (async () => {
      await nfts_emitter.emit("refetchCollections");
    }));
    class AbilitiesDatabase extends Xn {
      constructor() {
        super("qwal/abilities");
        this.version(1).stores({
          abilities: "&[abilityId+address], interestRank"
        });
      }
      async updateAbilities(abilities) {
        await this.abilities.bulkPut(abilities);
      }
      async removeAbilities(abilities) {
        const keys = abilities.map((({abilityId, address}) => [ abilityId, address ]));
        await this.abilities.bulkDelete(keys);
      }
      async getAbilities() {
        return this.abilities.toArray();
      }
      async getSortedAbilities() {
        return this.abilities.orderBy("interestRank").toArray();
      }
      async getAbility(address, abilityId) {
        return this.abilities.get({
          address,
          abilityId
        });
      }
      async markAsCompleted(address, abilityId) {
        const ability = await this.getAbility(address, abilityId);
        if (ability) {
          const updatedAbility = {
            ...ability,
            completed: true
          };
          this.abilities.put(updatedAbility);
          return updatedAbility;
        }
        return undefined;
      }
      async markAsRemoved(address, abilityId) {
        const ability = await this.getAbility(address, abilityId);
        if (ability) {
          const updatedAbility = {
            ...ability,
            removedFromUi: true
          };
          this.abilities.put(updatedAbility);
          return updatedAbility;
        }
        return undefined;
      }
      async deleteAbilitiesForAccount(address) {
        return this.abilities.filter((ability => ability.address === address)).delete();
      }
    }
    async function abilities_db_getOrCreateDB() {
      return new AbilitiesDatabase;
    }
    class AbilitiesService extends BaseService {
      constructor(db, chainService) {
        super();
        this.db = db;
        this.chainService = chainService;
      }
      ABILITY_TIME_KEY="LAST_ABILITY_FETCH_TIME";
      static create=async chainService => new this(await abilities_db_getOrCreateDB(), await chainService);
      async internalStartService() {
        await super.internalStartService();
        await this.fetchAbilities();
      }
      async getNewAccountAbilities(address) {
        this.pollForAbilities(address);
        this.emitter.emit("newAccount", address);
      }
      async syncAbilities(latestAbilities) {
        const cachedAbilities = await this.db.getAbilities();
        const cachedAbilitiesById = Object.fromEntries(cachedAbilities.map((ability => [ ability.abilityId, ability ])));
        const syncedAbilities = latestAbilities.map((latestAbility => {
          const cachedAbility = cachedAbilitiesById[latestAbility.abilityId];
          delete cachedAbilitiesById[latestAbility.abilityId];
          const cachedCompleted = cachedAbility?.completed ?? false;
          return {
            ...latestAbility,
            removedFromUi: cachedAbility?.removedFromUi ?? false,
            completed: cachedCompleted || latestAbility.completed
          };
        }));
        const removedAbilities = Object.values(cachedAbilitiesById);
        if (removedAbilities.length > 0) {
          await this.db.removeAbilities(removedAbilities);
        }
        await this.db.updateAbilities(syncedAbilities);
        return this.db.getSortedAbilities();
      }
      async pollForAbilities(_address) {}
      async markAbilityAsCompleted(address, abilityId) {
        const ability = await this.db.markAsCompleted(address, abilityId);
        if (ability) {
          this.emitter.emit("updatedAbility", ability);
        }
      }
      async markAbilityAsRemoved(address, abilityId) {
        const ability = await this.db.markAsRemoved(address, abilityId);
        if (ability) {
          this.emitter.emit("updatedAbility", ability);
        }
      }
      async fetchAbilities() {
        const accountsToTrack = await this.chainService.getAccountsToTrack();
        const addresses = new Set(accountsToTrack.map((account => normalizeQEVMAddress(account.address))));
        for (const address of addresses) {
          this.emitter.emit("initAbilities", address);
        }
      }
      async refreshAbilities() {
        const lastFetchTime = Date.now();
        if (lastFetchTime && Number(lastFetchTime) + HOUR > Date.now()) {
          return;
        }
        await this.fetchAbilities();
      }
      async reportAndRemoveAbility(address, _abilitySlug, abilityId, _) {
        this.markAbilityAsRemoved(address, abilityId);
      }
      async deleteAbilitiesForAccount(address) {
        const deletedRecords = await this.db.deleteAbilitiesForAccount(address);
        if (deletedRecords > 0) {
          this.emitter.emit("deleteAbilities", address);
        }
        this.emitter.emit("deleteAccount", address);
      }
    }
    const ABILITY_TYPES_ENABLED = [ "mint", "airdrop", "vote", "access", "claim" ];
    const ABILITY_TYPES = [ ...ABILITY_TYPES_ENABLED, "event", "misc" ];
    const ABILITY_TYPE_COLOR = {
      mint: "#20c580",
      airdrop: "#FF1E6F",
      vote: "#E3C10B",
      result: "#E3C10B",
      access: "#02C0EA",
      event: "#FF8A1E",
      article: "#B2B2B2",
      misc: "#CBCBCB",
      claim: "#F4D530"
    };
    const isKeyPairAccount = (internalSigner, address) => internalSigner.keyPairs.flatMap((({address}) => address)).includes(address);
    const abilities_initialState = {
      filter: {
        state: "open",
        types: [ ...ABILITY_TYPES_ENABLED ],
        accounts: []
      },
      abilities: {},
      hideDescription: false
    };
    const abilitiesSlice = createSlice({
      name: "abilities",
      initialState: abilities_initialState,
      reducers: {
        setAbilitiesForAddress: (immerState, {payload}) => {
          const {address, abilities} = payload;
          immerState.abilities[address] = Object.fromEntries(abilities.map((ability => [ ability.abilityId, ability ])));
        },
        updateAbility: (immerState, {payload}) => {
          immerState.abilities[payload.address][payload.abilityId] = payload;
        },
        deleteAbilitiesForAccount: (immerState, {payload: address}) => {
          delete immerState.abilities[address];
        },
        deleteAbility: (immerState, {payload}) => {
          delete immerState.abilities[payload.address]?.[payload.abilityId];
        },
        toggleHideDescription: (immerState, {payload}) => {
          immerState.hideDescription = payload;
        },
        updateState: (immerState, {payload: state}) => {
          immerState.filter.state = state;
        },
        addType: (immerState, {payload: type}) => {
          immerState.filter.types.push(type);
        },
        deleteType: (immerState, {payload: type}) => {
          immerState.filter.types = immerState.filter.types.filter((value => value !== type));
        },
        addAccount: (immerState, {payload: account}) => {
          if (!immerState.filter.accounts.includes(account)) {
            immerState.filter.accounts.push(account);
          }
        },
        deleteAccount: (immerState, {payload: account}) => {
          immerState.filter.accounts = immerState.filter.accounts.filter((value => value !== account));
        }
      }
    });
    const {setAbilitiesForAddress, updateAbility, deleteAbilitiesForAccount, deleteAbility, toggleHideDescription, updateState, addType, deleteType, addAccount, deleteAccount: abilities_deleteAccount} = abilitiesSlice.actions;
    const completeAbility = createBackgroundAsyncThunk("abilities/completeAbility", (async ({address, abilityId}, {extra: {main}}) => {
      await main.markAbilityAsCompleted(address, abilityId);
    }));
    const removeAbility = createBackgroundAsyncThunk("abilities/removeAbility", (async ({address, abilityId}, {extra: {main}}) => {
      await main.markAbilityAsRemoved(address, abilityId);
    }));
    const reportAndRemoveAbility = createBackgroundAsyncThunk("abilities/reportAndRemoveAbility", (async ({address, abilitySlug, abilityId, reason}, {extra: {main}}) => {
      await main.reportAndRemoveAbility(address, abilitySlug, abilityId, reason);
    }));
    const initAbilities = createBackgroundAsyncThunk("abilities/initAbilities", (async (address, {dispatch, getState, extra: {main}}) => {
      const {internalSigner, abilities} = getState();
      if (isKeyPairAccount(internalSigner, address)) {
        await main.pollForAbilities(address);
        if (JSON.stringify(abilities) === JSON.stringify(abilities_initialState)) {
          dispatch(addAccount(address));
        }
      }
    }));
    const abilities = abilitiesSlice.reducer;
    const QWAL_ICON_URL = "https://quantumevm.com/static/images/favicon.svg";
    const NOTIFICATIONS_XP_DROP_THRESHOLD = 24 * HOUR;
    class NotificationsService extends BaseService {
      isPermissionGranted=null;
      clickHandlers={};
      static create=async preferenceService => new this(await preferenceService);
      constructor(preferenceService) {
        super();
        this.preferenceService = preferenceService;
      }
      async internalStartService() {
        await super.internalStartService();
        const boundHandleNotificationClicks = this.handleNotificationClicks.bind(this);
        const boundCleanUpNotificationClickHandler = this.cleanUpNotificationClickHandler.bind(this);
        this.preferenceService.emitter.on("initializeNotificationsPreferences", (async isPermissionGranted => {
          this.isPermissionGranted = isPermissionGranted;
        }));
        this.preferenceService.emitter.on("setNotificationsPermission", (isPermissionGranted => {
          this.isPermissionGranted = isPermissionGranted;
          if (this.isPermissionGranted) {
            browser_polyfill_default().notifications.onClicked.addListener(boundHandleNotificationClicks);
            browser_polyfill_default().notifications.onClosed.addListener(boundCleanUpNotificationClickHandler);
          } else {
            browser_polyfill_default().notifications.onClicked.removeListener(boundHandleNotificationClicks);
            browser_polyfill_default().notifications.onClosed.removeListener(boundCleanUpNotificationClickHandler);
          }
        }));
        if (this.isPermissionGranted) {
          browser_polyfill_default().notifications.onClicked.addListener(boundHandleNotificationClicks);
          browser_polyfill_default().notifications.onClosed.addListener(boundCleanUpNotificationClickHandler);
        }
      }
      handleNotificationClicks(notificationId) {
        this.clickHandlers?.[notificationId]();
      }
      cleanUpNotificationClickHandler(notificationId) {
        delete this.clickHandlers?.[notificationId];
      }
      notify({options, callback}) {
        if (!this.isPermissionGranted) {
          return;
        }
        const notificationId = (0, lodash.uniqueId)("notification-");
        const notificationOptions = {
          type: "basic",
          iconUrl: QWAL_ICON_URL,
          ...options
        };
        if (typeof callback === "function") {
          this.clickHandlers[notificationId] = callback;
        }
        browser_polyfill_default().notifications.create(notificationId, notificationOptions);
      }
      notifyXPDrop(callback) {
        const shouldShowXpDropNotifications = this.lastXpDropNotificationInMs ? Date.now() > this.lastXpDropNotificationInMs + NOTIFICATIONS_XP_DROP_THRESHOLD : true;
        if (shouldShowXpDropNotifications) {
          this.lastXpDropNotificationInMs = Date.now();
          const options = {
            title: "Weekly XP distributed",
            message: "Visit Subscape to see if you are eligible"
          };
          this.notify({
            options,
            callback
          });
        }
      }
    }
    const to_2 = prevState => {
      const typedPrevState = prevState;
      return {
        ...typedPrevState,
        ui: {
          ...typedPrevState.ui,
          settings: {
            ...typedPrevState.ui?.settings,
            showTestNetworks: true
          }
        }
      };
    };
    const REDUX_STATE_VERSION = 2;
    const allMigrations = {
      2: to_2
    };
    function migrateReduxState(previousState, previousVersion) {
      const resolvedVersion = previousVersion ?? 1;
      let migratedState = previousState;
      if (resolvedVersion < REDUX_STATE_VERSION) {
        const outstandingMigrations = Object.entries(allMigrations).sort((([a], [b]) => parseInt(a, 10) - parseInt(b, 10))).filter((([version]) => parseInt(version, 10) > resolvedVersion)).map((([, migration]) => migration));
        migratedState = outstandingMigrations.reduce(((state, migration) => migration(state)), migratedState);
      }
      return migratedState;
    }
    const migrations = null && allMigrations;
    const mainReducer = combineReducers({
      account: accounts,
      assets,
      activities,
      internalSigner: internal_signer,
      networks,
      transactionConstruction: transaction_construction,
      ui,
      dapp,
      signing,
      abilities,
      nfts,
      prices
    });
    const redux_slices = mainReducer;
    var store_encodeJSON;
    const wrapStore = (0, lib.Iq)();
    const devToolsSanitizer = input => {
      switch (typeof input) {
       case "bigint":
       case "object":
        return JSON.parse(store_encodeJSON(input));

       default:
        return input;
      }
    };
    async function persistStoreBsae(state) {
      if (true) {
        await browser_polyfill_default().storage.local.set({
          state: encodeJSON(state),
          version: REDUX_STATE_VERSION
        });
      }
    }
    const persistStore = (0, lodash.debounce)(persistStoreBsae, 50, {
      trailing: true,
      maxWait: 50
    });
    const reduxCache = store => next => action => {
      const result = next(action);
      const state = store.getState();
      persistStore(state);
      return result;
    };
    async function readAndMigrateState() {
      let savedReduxState = {};
      if (true) {
        const {state, stateDiffs, version} = await browser_polyfill_default().storage.local.get([ "state", "stateDiffs", "version" ]);
        if (state) {
          const restoredState = (stateDiffs ?? "").split("\n").filter((entry => entry.length > 0)).reduce(((previousState, currentStateDiffString) => patch(previousState, JSON.parse(currentStateDiffString))), decodeJSON(state));
          if (typeof restoredState === "object" && restoredState !== null) {
            savedReduxState = migrateReduxState(restoredState, version || undefined);
            await persistStoreBsae(savedReduxState);
          } else {
            throw new Error(`Unexpected JSON persisted for state: ${state}`);
          }
        }
      }
      return savedReduxState;
    }
    function initializeStore(thunkArgument, preloadedState) {
      const baseStore = configureStore({
        preloadedState,
        reducer: redux_slices,
        middleware: getDefaultMiddleware => {
          const middleware = getDefaultMiddleware({
            serializableCheck: {
              isSerializable: value => isPlain(value) || typeof value === "bigint"
            },
            thunk: {
              extraArgument: {
                main: thunkArgument
              }
            }
          });
          middleware.unshift((0, lib.nK)(allAliases));
          middleware.push(reduxCache);
          return middleware;
        },
        devTools: false,
        enhancers: false ? 0 : []
      });
      let storeUpdateLock;
      let releaseLock;
      const queueUpdate = (0, lodash.debounce)(((lastState, newState, updateFn) => {
        if (lastState !== newState) {
          const diff = differ_diff(lastState, newState);
          if (diff !== undefined) {
            updateFn(newState, [ diff ]);
          }
        }
        releaseLock();
      }), 30, {
        maxWait: 30,
        trailing: true
      });
      wrapStore(baseStore, {
        serializer: encodeJSON,
        deserializer: decodeJSON,
        diffStrategy: (oldObj, newObj, forceUpdate) => {
          if (!storeUpdateLock) {
            storeUpdateLock = new Promise((resolve => {
              releaseLock = () => {
                resolve();
                storeUpdateLock = null;
              };
            }));
          }
          queueUpdate(oldObj, newObj, forceUpdate);
          return [];
        },
        dispatchResponder: async (dispatchResult, send) => {
          try {
            const result = await dispatchResult;
            await storeUpdateLock;
            send({
              error: null,
              value: encodeJSON(result)
            });
          } catch (error) {
            lib_logger.error("Error awaiting and dispatching redux store result: ", error);
            await storeUpdateLock;
            send({
              error: encodeJSON(error),
              value: null
            });
          }
        }
      });
      return baseStore;
    }
    class ReduxService extends BaseService {
      static create=async () => {
        const preferenceService = PreferenceService.create();
        const internalSignerService = InternalSignerService.create(preferenceService);
        const chainService = ChainService.create(preferenceService, internalSignerService);
        const indexingService = IndexingService.create(preferenceService, chainService);
        const nameService = NameService.create(chainService, preferenceService);
        const enrichmentService = EnrichmentService.create(chainService, indexingService, nameService);
        const internalEthereumProviderService = InternalQuantumEVMProviderService.create(chainService, preferenceService);
        const providerBridgeService = ProviderBridgeService.create(internalEthereumProviderService, preferenceService);
        const notificationsService = NotificationsService.create(preferenceService);
        const signingService = SigningService.create(internalSignerService, chainService);
        const nftsService = NFTsService.create(chainService);
        const abilitiesService = AbilitiesService.create(chainService);
        const savedReduxState = readAndMigrateState();
        return new this(await savedReduxState, await preferenceService, await chainService, await enrichmentService, await indexingService, await internalSignerService, await nameService, await internalEthereumProviderService, await providerBridgeService, await signingService, await nftsService, await abilitiesService, await notificationsService);
      };
      constructor(savedReduxState, preferenceService, chainService, enrichmentService, indexingService, internalSignerService, nameService, internalEthereumProviderService, providerBridgeService, signingService, nftsService, abilitiesService, notificationsService) {
        super({
          initialLoadWaitExpired: {
            schedule: {
              delayInMinutes: 2.5
            },
            handler: () => this.store.dispatch(initializationLoadingTimeHitLimit())
          }
        });
        this.preferenceService = preferenceService;
        this.chainService = chainService;
        this.enrichmentService = enrichmentService;
        this.indexingService = indexingService;
        this.internalSignerService = internalSignerService;
        this.nameService = nameService;
        this.internalEthereumProviderService = internalEthereumProviderService;
        this.providerBridgeService = providerBridgeService;
        this.signingService = signingService;
        this.nftsService = nftsService;
        this.abilitiesService = abilitiesService;
        this.notificationsService = notificationsService;
        this.store = initializeStore(this, savedReduxState);
        this.initializeRedux();
      }
      async internalStartService() {
        await super.internalStartService();
        const servicesToBeStarted = [ this.preferenceService.startService(), this.chainService.startService(), this.indexingService.startService(), this.enrichmentService.startService(), this.internalSignerService.startService(), this.nameService.startService(), this.internalEthereumProviderService.startService(), this.providerBridgeService.startService(), this.signingService.startService(), this.nftsService.startService(), this.abilitiesService.startService(), this.notificationsService.startService() ];
        await Promise.all(servicesToBeStarted);
      }
      async internalStopService() {
        const servicesToBeStopped = [ this.preferenceService.stopService(), this.chainService.stopService(), this.indexingService.stopService(), this.enrichmentService.stopService(), this.internalSignerService.stopService(), this.nameService.stopService(), this.internalEthereumProviderService.stopService(), this.providerBridgeService.stopService(), this.signingService.stopService(), this.nftsService.stopService(), this.abilitiesService.stopService(), this.notificationsService.stopService() ];
        await Promise.all(servicesToBeStopped);
        await super.internalStopService();
      }
      async initializeRedux() {
        this.connectIndexingService();
        this.connectInternalSignerService();
        this.connectNameService();
        this.connectInternalEthereumProviderService();
        this.connectProviderBridgeService();
        this.connectPreferenceService();
        this.connectEnrichmentService();
        this.connectSigningService();
        this.connectAbilitiesService();
        this.connectNFTsService();
        await this.connectChainService();
        this.store.dispatch(clearTransactionState(TransactionConstructionStatus.Idle));
      }
      async addAccount(addressNetwork) {
        await this.chainService.addAccountToTrack(addressNetwork);
      }
      addOrEditAddressName({address, network, name}) {
        this.preferenceService.addOrEditNameInAddressBook({
          address,
          network,
          name
        });
      }
      async removeAccount(address, signer, lastAddressInAccount) {
        this.store.dispatch(deleteAccount(address));
        if (signer.type !== AccountType.ReadOnly && lastAddressInAccount) {
          await this.preferenceService.deleteAccountSignerSettings(signer);
        }
        this.store.dispatch(removeActivities(address));
        this.store.dispatch(deleteNFTsForAddress(address));
        await this.nftsService.removeNFTsForAddress(address);
        if (signer.type !== AccountType.ReadOnly) {
          await this.abilitiesService.deleteAbilitiesForAccount(address);
        }
        this.store.dispatch(revokePermissionsForAddress(address));
        await this.providerBridgeService.revokePermissionsForAddress(address);
        await this.signingService.removeAccount(address, signer.type);
        this.nameService.removeAccount(address);
        this.indexingService.removeDiscoveryTxHash(address);
      }
      async getAccountEthBalanceUncached(addressNetwork) {
        const accountBalance = await this.chainService.getLatestBaseAccountBalance(addressNetwork);
        return accountBalance.assetAmount.amount;
      }
      async enrichActivitiesForSelectedAccount() {
        const addressNetwork = this.store.getState().ui.selectedAccount;
        if (addressNetwork) {
          await this.enrichActivities(addressNetwork);
        }
      }
      async enrichActivities(addressNetwork) {
        const accountsToTrack = await this.chainService.getAccountsToTrack();
        const activitiesToEnrich = selectActivitesHashesForEnrichment(this.store.getState());
        activitiesToEnrich.forEach((async txHash => {
          const transaction = await this.chainService.getTransaction(addressNetwork.network, txHash);
          const enrichedTransaction = await this.enrichmentService.enrichTransaction(transaction, 2);
          this.store.dispatch(addActivity({
            transaction: enrichedTransaction,
            forAccounts: getRelevantTransactionAddresses(enrichedTransaction, accountsToTrack)
          }));
        }));
      }
      async connectChainService() {
        this.chainService.emitter.on("initializeActivities", (async payload => {
          this.store.dispatch(initializeActivities(payload));
          await this.enrichActivitiesForSelectedAccount();
          this.chainService.emitter.on("initializeActivitiesForAccount", (async payloadForAccount => {
            this.store.dispatch(initializeActivitiesForAccount(payloadForAccount));
            await this.enrichActivitiesForSelectedAccount();
          }));
          const existingAccounts = await this.chainService.getAccountsToTrack();
          existingAccounts.forEach((addressNetwork => {
            this.store.dispatch(loadAccount(addressNetwork));
          }));
        }));
        this.chainService.emitter.on("accountsWithBalances", (accountWithBalance => {
          this.store.dispatch(updateAccountBalance(accountWithBalance));
        }));
        this.chainService.emitter.on("supportedNetworks", (supportedNetworks => {
          this.store.dispatch(setEVMNetworks(supportedNetworks));
        }));
        this.chainService.emitter.on("block", (block => {
          this.store.dispatch(blockSeen(block));
        }));
        this.chainService.emitter.on("transactionSend", (async () => {
          this.store.dispatch(setSnackbarMessage("Transaction signed, broadcasting..."));
          this.store.dispatch(clearTransactionState(TransactionConstructionStatus.Idle));
        }));
        this.chainService.emitter.on("transactionSendFailure", (async () => {
          this.store.dispatch(setSnackbarMessage("Transaction failed to broadcast."));
        }));
        transaction_construction_emitter.on("updateTransaction", (async transaction => {
          const {network} = transaction;
          const {values: {maxFeePerGas, maxPriorityFeePerGas}} = selectDefaultNetworkFeeSettings(this.store.getState());
          const {transactionRequest: populatedRequest, gasEstimationError} = await this.chainService.populatePartialTransactionRequest(network, {
            ...transaction
          }, {
            maxFeePerGas,
            maxPriorityFeePerGas
          });
          const getAnnotation = async () => {
            const {annotation} = await this.enrichmentService.enrichTransactionSignature(network, populatedRequest, 2);
            return annotation;
          };
          const maybeEnrichedAnnotation = await Promise.race([ getAnnotation(), wait(1e4) ]);
          if (maybeEnrichedAnnotation) {
            populatedRequest.annotation = maybeEnrichedAnnotation;
          }
          if (typeof gasEstimationError === "undefined") {
            this.store.dispatch(transactionRequest({
              transactionRequest: populatedRequest,
              transactionLikelyFails: false
            }));
          } else {
            this.store.dispatch(transactionRequest({
              transactionRequest: populatedRequest,
              transactionLikelyFails: true
            }));
          }
        }));
        transaction_construction_emitter.on("broadcastSignedTransaction", (async transaction => {
          this.chainService.broadcastSignedTransaction(transaction);
        }));
        transaction_construction_emitter.on("requestSignature", (async ({request, accountSigner}) => {
          try {
            const signedTransactionResult = await this.signingService.signTransaction(request, accountSigner);
            this.store.dispatch(transactionSigned(signedTransactionResult));
          } catch (exception) {
            lib_logger.error("Error signing transaction", exception);
            this.store.dispatch(clearTransactionState(TransactionConstructionStatus.Idle));
          }
        }));
        signingSliceEmitter.on("requestSignTypedData", (async ({typedData, account, accountSigner}) => {
          try {
            const signedData = await this.signingService.signTypedData({
              typedData,
              account,
              accountSigner
            });
            this.store.dispatch(signedTypedData(signedData));
          } catch (err) {
            lib_logger.error("Error signing typed data", typedData, "error: ", err);
            this.store.dispatch(clearSigningState);
          }
        }));
        signingSliceEmitter.on("requestSignData", (async ({rawSigningData, account, accountSigner}) => {
          const signedData = await this.signingService.signData(account, rawSigningData, accountSigner);
          this.store.dispatch(signing_signedData(signedData));
        }));
        this.chainService.emitter.on("blockPrices", (async ({blockPrices, network}) => {
          this.store.dispatch(estimatedFeesPerGas({
            estimatedFeesPerGas: blockPrices,
            network
          }));
        }));
        this.chainService.emitter.on("transaction", (async transactionInfo => {
          this.store.dispatch(addActivity(transactionInfo));
        }));
        emitter.on("userActivityEncountered", (addressOnNetwork => {
          this.abilitiesService.refreshAbilities();
          this.chainService.markAccountActivity(addressOnNetwork);
        }));
      }
      async connectNameService() {
        this.nameService.emitter.on("resolvedName", (async ({from: {addressOnNetwork}, resolved: {nameOnNetwork: {name}}}) => {
          this.store.dispatch(updateAccountName({
            ...addressOnNetwork,
            name
          }));
        }));
        this.nameService.emitter.on("resolvedAvatar", (async ({from: {addressOnNetwork}, resolved: {avatar}}) => {
          this.store.dispatch(updateENSAvatar({
            ...addressOnNetwork,
            avatar: avatar.toString()
          }));
        }));
      }
      async connectIndexingService() {
        this.indexingService.emitter.on("accountsWithBalances", (async ({balances, addressOnNetwork}) => {
          const assetsToTrack = await this.indexingService.getAssetsToTrack();
          const trackedAccounts = await this.chainService.getAccountsToTrack();
          const allTrackedAddresses = new Set(trackedAccounts.map((account => account.address)));
          if (!allTrackedAddresses.has(addressOnNetwork.address)) {
            return;
          }
          const filteredBalancesToDispatch = [];
          balances.filter((balance => !isBaseAssetForNetwork(balance.assetAmount.asset, balance.network))).forEach((balance => {
            const balanceHasAnAlreadyTrackedAsset = assetsToTrack.some((tracked => isSameAsset(tracked, balance.assetAmount.asset)));
            if (balance.assetAmount.amount > 0 || balanceHasAnAlreadyTrackedAsset) {
              filteredBalancesToDispatch.push(balance);
            }
          }));
          this.store.dispatch(updateAccountBalance({
            balances: filteredBalancesToDispatch,
            addressOnNetwork
          }));
        }));
        this.indexingService.emitter.on("assetsLoaded", (async ({assets, loadingScope}) => {
          this.store.dispatch(assetsLoaded({
            assets,
            loadingScope
          }));
          const smartContractAssets = assets.filter(isSmartContractFungibleAsset);
          if (smartContractAssets.length > 0) {
            this.store.dispatch(updateAccountAssetReferences(smartContractAssets));
            this.store.dispatch(updatePriceAssetReferences(smartContractAssets));
          }
        }));
        this.indexingService.emitter.on("prices", (pricePoints => {
          this.store.dispatch(newPricePoints(pricePoints));
        }));
        this.indexingService.emitter.on("refreshAsset", (asset => {
          this.store.dispatch(refreshAsset({
            asset
          }));
        }));
        this.indexingService.emitter.on("removeAssetData", (asset => {
          this.store.dispatch(removeAssetData({
            asset
          }));
        }));
      }
      async connectEnrichmentService() {
        this.enrichmentService.emitter.on("enrichedEVMTransaction", (transactionData => {
          this.indexingService.notifyEnrichedTransaction(transactionData.transaction);
          this.store.dispatch(addActivity(transactionData));
        }));
      }
      async connectSigningService() {
        this.internalSignerService.emitter.on("address", (address => this.signingService.addTrackedAddress(address, "keyPair")));
      }
      async connectInternalSignerService() {
        this.internalSignerService.emitter.on("internalSigners", (signers => {
          this.store.dispatch(updateInternalSigners(signers));
        }));
        this.internalSignerService.emitter.on("address", (async address => {
          const trackedNetworks = await this.chainService.getTrackedNetworks();
          trackedNetworks.forEach((network => {
            this.store.dispatch(loadAccount({
              address,
              network
            }));
            this.chainService.addAccountToTrack({
              address,
              network
            });
            this.abilitiesService.getNewAccountAbilities(address);
          }));
        }));
        this.internalSignerService.emitter.on("locked", (async isLocked => {
          if (isLocked) {
            this.store.dispatch(internalSignerLocked());
          } else {
            this.store.dispatch(internalSignerUnlocked());
          }
        }));
        internal_signer_emitter.on("createPassword", (async password => {
          await this.internalSignerService.unlock(password, true);
        }));
        internal_signer_emitter.on("lockInternalSigners", (async () => {
          await this.internalSignerService.lock();
        }));
        internal_signer_emitter.on("generateNewMnemonics", (async () => {
          const generated = this.internalSignerService.generateNewMnemonics();
          this.store.dispatch(setMnemonicsToVerify(generated));
        }));
      }
      async connectInternalEthereumProviderService() {
        this.internalEthereumProviderService.emitter.on("transactionSignatureRequest", (async ({payload, resolver, rejecter}) => {
          await this.signingService.prepareForSigningRequest();
          this.store.dispatch(clearTransactionState(TransactionConstructionStatus.Pending));
          this.store.dispatch(updateTransactionData(payload));
          const clear = () => {
            this.signingService.emitter.off("signingTxResponse", handleAndClear);
            transaction_construction_emitter.off("signatureRejected", rejectAndClear);
          };
          const handleAndClear = response => {
            clear();
            switch (response.type) {
             case "success-tx":
              resolver(response.signedTx);
              break;

             default:
              rejecter();
              break;
            }
          };
          const rejectAndClear = async () => {
            clear();
            rejecter();
          };
          this.signingService.emitter.on("signingTxResponse", handleAndClear);
          transaction_construction_emitter.on("signatureRejected", rejectAndClear);
        }));
        this.internalEthereumProviderService.emitter.on("signTypedDataRequest", (async ({payload, resolver, rejecter}) => {
          const [, enrichedSignTypedDataRequest] = await Promise.all([ this.signingService.prepareForSigningRequest(), this.enrichmentService.enrichSignTypedDataRequest(payload) ]);
          this.store.dispatch(typedDataRequest(enrichedSignTypedDataRequest));
          const clear = () => {
            this.signingService.emitter.off("signingDataResponse", handleAndClear);
            signingSliceEmitter.off("signatureRejected", rejectAndClear);
          };
          const handleAndClear = response => {
            clear();
            switch (response.type) {
             case "success-data":
              resolver(response.signedData);
              break;

             default:
              rejecter();
              break;
            }
          };
          const rejectAndClear = () => {
            clear();
            rejecter();
          };
          this.signingService.emitter.on("signingDataResponse", handleAndClear);
          signingSliceEmitter.on("signatureRejected", rejectAndClear);
        }));
        this.internalEthereumProviderService.emitter.on("signDataRequest", (async ({payload, resolver, rejecter}) => {
          await this.signingService.prepareForSigningRequest();
          this.chainService.pollBlockPricesForNetwork(payload.account.network.chainID);
          this.store.dispatch(signDataRequest(payload));
          const clear = () => {
            this.signingService.emitter.off("personalSigningResponse", handleAndClear);
            signingSliceEmitter.off("signatureRejected", rejectAndClear);
          };
          const handleAndClear = response => {
            clear();
            switch (response.type) {
             case "success-data":
              resolver(response.signedData);
              break;

             default:
              rejecter();
              break;
            }
          };
          const rejectAndClear = () => {
            clear();
            rejecter();
          };
          this.signingService.emitter.on("personalSigningResponse", handleAndClear);
          signingSliceEmitter.on("signatureRejected", rejectAndClear);
        }));
        this.internalEthereumProviderService.emitter.on("selectedNetwork", (network => {
          this.store.dispatch(setSelectedNetwork(network));
        }));
        emitter.on("newSelectedNetwork", (network => {
          this.internalEthereumProviderService.routeSafeRPCRequest("wallet_switchEthereumChain", [ {
            chainId: network.chainID
          } ], QWAL_INTERNAL_ORIGIN);
          this.chainService.pollBlockPricesForNetwork(network.chainID);
          this.store.dispatch(clearCustomGas());
        }));
        this.internalEthereumProviderService.emitter.on("watchAssetRequest", (async ({contractAddress, network}) => {
          const {address} = this.store.getState().ui.selectedAccount;
          const asset = await this.indexingService.addTokenToTrackByContract(network, contractAddress);
          if (asset) {
            await this.indexingService.retrieveTokenBalances({
              address,
              network
            }, [ asset ]);
          }
        }));
      }
      async connectProviderBridgeService() {
        emitter.on("addCustomNetworkResponse", (([requestId, success]) => this.providerBridgeService.handleAddNetworkRequest(requestId, success)));
        this.providerBridgeService.emitter.on("requestPermission", (permissionRequest => {
          this.store.dispatch(requestPermission(permissionRequest));
        }));
        this.providerBridgeService.emitter.on("initializeAllowedPages", (async allowedPages => {
          this.store.dispatch(initializePermissions(allowedPages));
        }));
        dapp_emitter.on("grantPermission", (async permission => {
          await Promise.all(this.chainService.supportedNetworks.map((async network => {
            await this.providerBridgeService.grantPermission({
              ...permission,
              chainID: network.chainID
            });
          })));
        }));
        dapp_emitter.on("denyOrRevokePermission", (async permission => {
          await Promise.all(this.chainService.supportedNetworks.map((async network => {
            await this.providerBridgeService.denyOrRevokePermission({
              ...permission,
              chainID: network.chainID
            });
          })));
        }));
      }
      async connectPreferenceService() {
        this.preferenceService.emitter.on("initializeDefaultWallet", (async isDefaultWallet => {
          this.store.dispatch(setDefaultWallet(isDefaultWallet));
        }));
        this.preferenceService.emitter.on("initializeSelectedAccount", (async dbAddressNetwork => {
          if (dbAddressNetwork) {
            this.store.dispatch(setSelectedAccount(dbAddressNetwork));
          } else {
            const addressNetwork = this.store.getState().ui.selectedAccount;
            if (addressNetwork) {
              await this.preferenceService.setSelectedAccount(addressNetwork);
            }
          }
        }));
        this.preferenceService.emitter.on("updatedSignerSettings", (accountSignerSettings => {
          this.store.dispatch(setAccountsSignerSettings(accountSignerSettings));
        }));
        this.preferenceService.emitter.on("updateAutoLockInterval", (async newTimerValue => {
          await this.internalSignerService.updateAutoLockInterval();
          this.store.dispatch(setAutoLockInterval(newTimerValue));
        }));
        this.preferenceService.emitter.on("initializeShownDismissableItems", (async dismissableItems => {
          this.store.dispatch(setShownDismissableItems(dismissableItems));
        }));
        this.preferenceService.emitter.on("initializeNotificationsPreferences", (async isPermissionGranted => {
          this.store.dispatch(toggleNotifications(isPermissionGranted));
        }));
        this.preferenceService.emitter.on("dismissableItemMarkedAsShown", (async dismissableItem => {
          this.store.dispatch(dismissableItemMarkedAsShown(dismissableItem));
        }));
        emitter.on("newSelectedAccount", (async addressNetwork => {
          await this.preferenceService.setSelectedAccount(addressNetwork);
          await this.chainService.markAccountActivity(addressNetwork);
          this.providerBridgeService.notifyContentScriptsAboutAddressChange(addressNetwork.address);
        }));
        emitter.on("newSelectedAccountSwitched", (async addressNetwork => {
          this.enrichActivities(addressNetwork);
        }));
        emitter.on("newDefaultWalletValue", (async newDefaultWalletValue => {
          await this.preferenceService.setDefaultWalletValue(newDefaultWalletValue);
          this.providerBridgeService.notifyContentScriptAboutConfigChange(newDefaultWalletValue);
        }));
        emitter.on("refreshBackgroundPage", (async () => {
          window.location.reload();
        }));
      }
      connectNFTsService() {
        this.nftsService.emitter.on("initializeNFTs", (collections => {
          this.store.dispatch(initializeNFTs(collections));
        }));
        this.nftsService.emitter.on("updateCollections", (collections => {
          this.store.dispatch(updateNFTsCollections(collections));
        }));
        this.nftsService.emitter.on("updateNFTs", (async payload => {
          this.store.dispatch(updateNFTs(payload));
        }));
        this.nftsService.emitter.on("removeTransferredNFTs", (async payload => {
          this.store.dispatch(deleteTransferredNFTs(payload));
        }));
        this.nftsService.emitter.on("isReloadingNFTs", (async payload => {
          this.store.dispatch(updateIsReloading(payload));
        }));
        nfts_emitter.on("fetchNFTs", (({collectionID, account}) => this.nftsService.fetchNFTsFromCollection(collectionID, account)));
        nfts_emitter.on("refetchNFTs", (({collectionID, account}) => this.nftsService.refreshNFTsFromCollection(collectionID, account)));
        nfts_emitter.on("fetchMoreNFTs", (({collectionID, account}) => this.nftsService.fetchNFTsFromNextPage(collectionID, account)));
        nfts_emitter.on("refetchCollections", (() => this.nftsService.refreshCollections()));
      }
      connectAbilitiesService() {
        this.abilitiesService.emitter.on("initAbilities", (address => {
          this.store.dispatch(initAbilities(address));
        }));
        this.abilitiesService.emitter.on("updatedAbilities", (({address, abilities}) => {
          this.store.dispatch(setAbilitiesForAddress({
            address,
            abilities
          }));
        }));
        this.abilitiesService.emitter.on("deleteAbilities", (address => {
          this.store.dispatch(deleteAbilitiesForAccount(address));
        }));
        this.abilitiesService.emitter.on("updatedAbility", (ability => {
          this.store.dispatch(updateAbility(ability));
        }));
        this.abilitiesService.emitter.on("newAccount", (address => {
          this.store.dispatch(addAccount(address));
        }));
        this.abilitiesService.emitter.on("deleteAccount", (address => {
          this.store.dispatch(abilities_deleteAccount(address));
        }));
      }
      async unlockInternalSigners(password) {
        return this.internalSignerService.unlock(password);
      }
      async validateSession() {
        return !this.internalSignerService.locked();
      }
      async exportMnemonic(address) {
        return this.internalSignerService.exportMnemonic(address);
      }
      async exportPrivateKey(address) {
        return this.internalSignerService.exportPrivateKey(address);
      }
      async importSigner(signerRaw) {
        return this.internalSignerService.importSigner(signerRaw);
      }
      async getActivityDetails(txHash) {
        const addressNetwork = this.store.getState().ui.selectedAccount;
        const transaction = await this.chainService.getTransaction(addressNetwork.network, txHash);
        const enrichedTransaction = await this.enrichmentService.enrichTransaction(transaction, 2);
        return getActivityDetails(enrichedTransaction);
      }
      async connectPreferenceListeners() {
        emitter.on("shouldShowNotifications", (async shouldShowNotifications => {
          const isPermissionGranted = await this.preferenceService.setShouldShowNotifications(shouldShowNotifications);
          this.store.dispatch(toggleNotifications(isPermissionGranted));
        }));
        emitter.on("updateAutoLockInterval", (async newTimerValue => {
          await this.preferenceService.updateAutoLockInterval(newTimerValue);
        }));
      }
      async updateAssetMetadata(asset, metadata) {
        await this.indexingService.updateAssetMetadata(asset, metadata);
      }
      async hideAsset(asset) {
        await this.indexingService.hideAsset(asset);
      }
      getAddNetworkRequestDetails(requestId) {
        return this.providerBridgeService.getNewCustomRPCDetails(requestId);
      }
      async updateSignerTitle(signer, title) {
        return this.preferenceService.updateAccountSignerTitle(signer, title);
      }
      async markDismissableItemAsShown(item) {
        return this.preferenceService.markDismissableItemAsShown(item);
      }
      async resolveNameOnNetwork(nameOnNetwork) {
        try {
          return (await this.nameService.lookUpEthereumAddress(nameOnNetwork))?.resolved?.addressOnNetwork;
        } catch (error) {
          lib_logger.info("Error looking up Ethereum address: ", error);
          return undefined;
        }
      }
      async pollForAbilities(address) {
        return this.abilitiesService.pollForAbilities(address);
      }
      async markAbilityAsCompleted(address, abilityId) {
        return this.abilitiesService.markAbilityAsCompleted(address, abilityId);
      }
      async markAbilityAsRemoved(address, abilityId) {
        return this.abilitiesService.markAbilityAsRemoved(address, abilityId);
      }
      async reportAndRemoveAbility(address, abilitySlug, abilityId, reason) {
        this.abilitiesService.reportAndRemoveAbility(address, abilitySlug, abilityId, reason);
      }
      async removeEVMNetwork(chainID) {
        await this.internalEthereumProviderService.removePreferencesForChain(chainID);
        await this.providerBridgeService.revokePermissionsForChain(chainID);
        await this.chainService.removeCustomChain(chainID);
      }
      async queryCustomTokenDetails(contractAddress, addressOnNetwork) {
        const {network} = addressOnNetwork;
        const cachedAsset = this.indexingService.getCachedAssets(network).find((asset => isSmartContractFungibleAsset(asset) && sameQEVMAddress(contractAddress, asset.contractAddress)));
        const assetData = await this.chainService.queryAccountTokenDetails(contractAddress, addressOnNetwork, cachedAsset);
        const priceData = await getTokenPrices([ contractAddress ], USD, network);
        const convertedAssetAmount = contractAddress in priceData ? convertAssetAmountViaPricePoint(assetData, getPricePoint(assetData.asset, priceData[contractAddress])) : undefined;
        const mainCurrencyAmount = convertedAssetAmount ? assetAmountToDesiredDecimals(convertedAssetAmount, 2) : undefined;
        return {
          ...assetData,
          balance: Number.parseFloat(qethers_lib.utils.formatUnits(assetData.amount, assetData.asset.decimals)),
          mainCurrencyAmount,
          exists: !!cachedAsset
        };
      }
      async importCustomToken(asset) {
        return this.indexingService.importCustomToken(asset);
      }
      async connectPort(port) {
        this.connectPopupMonitor(port);
        this.providerBridgeService.connectPort(port);
      }
      connectPopupMonitor(port) {
        if (port.name !== POPUP_MONITOR_PORT_NAME) return;
        port.onDisconnect.addListener((() => {
          this.onPopupDisconnected();
        }));
      }
      onPopupDisconnected() {
        this.store.dispatch(rejectTransactionSignature());
        this.store.dispatch(rejectDataSignature());
      }
    }
    var background_ReduxService;
    async function newProxyStore() {
      const proxyStore = new lib.il({
        serializer: encodeJSON,
        deserializer: decodeJSON,
        patchStrategy: (oldObj, patchesWrapper) => {
          if (patchesWrapper.length === 0) {
            return oldObj;
          }
          const result = fn(oldObj, (draft => patch(draft, patchesWrapper[0])));
          return result;
        }
      });
      await proxyStore.ready();
      return proxyStore;
    }
    async function startRedux() {
      const reduxService = await background_ReduxService.create();
      reduxService.startService();
      return reduxService.started();
    }
    if (chrome && chrome.runtime && chrome.runtime.setUninstallURL) {
      chrome.runtime.setUninstallURL("https://quantumevm.com/wallet");
    }
    function _classCallCheck(a, n) {
      if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
    }
    function _defineProperties(e, r) {
      for (var t = 0; t < r.length; t++) {
        var o = r[t];
        o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), 
        Object.defineProperty(e, toPropertyKey(o.key), o);
      }
    }
    function _createClass(e, r, t) {
      return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
        writable: !1
      }), e;
    }
    function _assertThisInitialized(e) {
      if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      return e;
    }
    function _setPrototypeOf(t, e) {
      return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t, e) {
        return t.__proto__ = e, t;
      }, _setPrototypeOf(t, e);
    }
    function _inherits(t, e) {
      if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
      t.prototype = Object.create(e && e.prototype, {
        constructor: {
          value: t,
          writable: !0,
          configurable: !0
        }
      }), Object.defineProperty(t, "prototype", {
        writable: !1
      }), e && _setPrototypeOf(t, e);
    }
    function _possibleConstructorReturn(t, e) {
      if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
      if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
      return _assertThisInitialized(t);
    }
    function _getPrototypeOf(t) {
      return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) {
        return t.__proto__ || Object.getPrototypeOf(t);
      }, _getPrototypeOf(t);
    }
    function _arrayWithHoles(r) {
      if (Array.isArray(r)) return r;
    }
    function _iterableToArray(r) {
      if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
    }
    function _arrayLikeToArray(r, a) {
      (null == a || a > r.length) && (a = r.length);
      for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
      return n;
    }
    function _unsupportedIterableToArray(r, a) {
      if (r) {
        if ("string" == typeof r) return _arrayLikeToArray(r, a);
        var t = {}.toString.call(r).slice(8, -1);
        return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
      }
    }
    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    function _toArray(r) {
      return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest();
    }
    function i18next_ownKeys(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          i18next_ownKeys(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          i18next_ownKeys(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    var consoleLogger = {
      type: "logger",
      log: function log(args) {
        this.output("log", args);
      },
      warn: function warn(args) {
        this.output("warn", args);
      },
      error: function error(args) {
        this.output("error", args);
      },
      output: function output(type, args) {
        if (console && console[type]) console[type].apply(console, args);
      }
    };
    var i18next_Logger = function() {
      function Logger(concreteLogger) {
        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
        _classCallCheck(this, Logger);
        this.init(concreteLogger, options);
      }
      _createClass(Logger, [ {
        key: "init",
        value: function init(concreteLogger) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          this.prefix = options.prefix || "i18next:";
          this.logger = concreteLogger || consoleLogger;
          this.options = options;
          this.debug = options.debug;
        }
      }, {
        key: "setDebug",
        value: function setDebug(bool) {
          this.debug = bool;
        }
      }, {
        key: "log",
        value: function log() {
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          return this.forward(args, "log", "", true);
        }
      }, {
        key: "warn",
        value: function warn() {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          return this.forward(args, "warn", "", true);
        }
      }, {
        key: "error",
        value: function error() {
          for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
            args[_key3] = arguments[_key3];
          }
          return this.forward(args, "error", "");
        }
      }, {
        key: "deprecate",
        value: function deprecate() {
          for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
            args[_key4] = arguments[_key4];
          }
          return this.forward(args, "warn", "WARNING DEPRECATED: ", true);
        }
      }, {
        key: "forward",
        value: function forward(args, lvl, prefix, debugOnly) {
          if (debugOnly && !this.debug) return null;
          if (typeof args[0] === "string") args[0] = "".concat(prefix).concat(this.prefix, " ").concat(args[0]);
          return this.logger[lvl](args);
        }
      }, {
        key: "create",
        value: function create(moduleName) {
          return new Logger(this.logger, _objectSpread(_objectSpread({}, {
            prefix: "".concat(this.prefix, ":").concat(moduleName, ":")
          }), this.options));
        }
      }, {
        key: "clone",
        value: function clone(options) {
          options = options || this.options;
          options.prefix = options.prefix || this.prefix;
          return new Logger(this.logger, options);
        }
      } ]);
      return Logger;
    }();
    var baseLogger = new i18next_Logger;
    var EventEmitter = function() {
      function EventEmitter() {
        _classCallCheck(this, EventEmitter);
        this.observers = {};
      }
      _createClass(EventEmitter, [ {
        key: "on",
        value: function on(events, listener) {
          var _this = this;
          events.split(" ").forEach((function(event) {
            _this.observers[event] = _this.observers[event] || [];
            _this.observers[event].push(listener);
          }));
          return this;
        }
      }, {
        key: "off",
        value: function off(event, listener) {
          if (!this.observers[event]) return;
          if (!listener) {
            delete this.observers[event];
            return;
          }
          this.observers[event] = this.observers[event].filter((function(l) {
            return l !== listener;
          }));
        }
      }, {
        key: "emit",
        value: function emit(event) {
          for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
            args[_key - 1] = arguments[_key];
          }
          if (this.observers[event]) {
            var cloned = [].concat(this.observers[event]);
            cloned.forEach((function(observer) {
              observer.apply(void 0, args);
            }));
          }
          if (this.observers["*"]) {
            var _cloned = [].concat(this.observers["*"]);
            _cloned.forEach((function(observer) {
              observer.apply(observer, [ event ].concat(args));
            }));
          }
        }
      } ]);
      return EventEmitter;
    }();
    function defer() {
      var res;
      var rej;
      var promise = new Promise((function(resolve, reject) {
        res = resolve;
        rej = reject;
      }));
      promise.resolve = res;
      promise.reject = rej;
      return promise;
    }
    function makeString(object) {
      if (object == null) return "";
      return "" + object;
    }
    function copy(a, s, t) {
      a.forEach((function(m) {
        if (s[m]) t[m] = s[m];
      }));
    }
    function getLastOfPath(object, path, Empty) {
      function cleanKey(key) {
        return key && key.indexOf("###") > -1 ? key.replace(/###/g, ".") : key;
      }
      function canNotTraverseDeeper() {
        return !object || typeof object === "string";
      }
      var stack = typeof path !== "string" ? [].concat(path) : path.split(".");
      while (stack.length > 1) {
        if (canNotTraverseDeeper()) return {};
        var key = cleanKey(stack.shift());
        if (!object[key] && Empty) object[key] = new Empty;
        if (Object.prototype.hasOwnProperty.call(object, key)) {
          object = object[key];
        } else {
          object = {};
        }
      }
      if (canNotTraverseDeeper()) return {};
      return {
        obj: object,
        k: cleanKey(stack.shift())
      };
    }
    function setPath(object, path, newValue) {
      var _getLastOfPath = getLastOfPath(object, path, Object), obj = _getLastOfPath.obj, k = _getLastOfPath.k;
      obj[k] = newValue;
    }
    function pushPath(object, path, newValue, concat) {
      var _getLastOfPath2 = getLastOfPath(object, path, Object), obj = _getLastOfPath2.obj, k = _getLastOfPath2.k;
      obj[k] = obj[k] || [];
      if (concat) obj[k] = obj[k].concat(newValue);
      if (!concat) obj[k].push(newValue);
    }
    function getPath(object, path) {
      var _getLastOfPath3 = getLastOfPath(object, path), obj = _getLastOfPath3.obj, k = _getLastOfPath3.k;
      if (!obj) return undefined;
      return obj[k];
    }
    function getPathWithDefaults(data, defaultData, key) {
      var value = getPath(data, key);
      if (value !== undefined) {
        return value;
      }
      return getPath(defaultData, key);
    }
    function deepExtend(target, source, overwrite) {
      for (var prop in source) {
        if (prop !== "__proto__" && prop !== "constructor") {
          if (prop in target) {
            if (typeof target[prop] === "string" || target[prop] instanceof String || typeof source[prop] === "string" || source[prop] instanceof String) {
              if (overwrite) target[prop] = source[prop];
            } else {
              deepExtend(target[prop], source[prop], overwrite);
            }
          } else {
            target[prop] = source[prop];
          }
        }
      }
      return target;
    }
    function regexEscape(str) {
      return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
    }
    var _entityMap = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#39;",
      "/": "&#x2F;"
    };
    function i18next_escape(data) {
      if (typeof data === "string") {
        return data.replace(/[&<>"'\/]/g, (function(s) {
          return _entityMap[s];
        }));
      }
      return data;
    }
    var isIE10 = typeof window !== "undefined" && window.navigator && typeof window.navigator.userAgentData === "undefined" && window.navigator.userAgent && window.navigator.userAgent.indexOf("MSIE") > -1;
    var chars = [ " ", ",", "?", "!", ";" ];
    function looksLikeObjectPath(key, nsSeparator, keySeparator) {
      nsSeparator = nsSeparator || "";
      keySeparator = keySeparator || "";
      var possibleChars = chars.filter((function(c) {
        return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;
      }));
      if (possibleChars.length === 0) return true;
      var r = new RegExp("(".concat(possibleChars.map((function(c) {
        return c === "?" ? "\\?" : c;
      })).join("|"), ")"));
      var matched = !r.test(key);
      if (!matched) {
        var ki = key.indexOf(keySeparator);
        if (ki > 0 && !r.test(key.substring(0, ki))) {
          matched = true;
        }
      }
      return matched;
    }
    function ownKeys$1(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$1(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$1(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$1(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function _createSuper(Derived) {
      var hasNativeReflectConstruct = _isNativeReflectConstruct();
      return function _createSuperInternal() {
        var Super = _getPrototypeOf(Derived), result;
        if (hasNativeReflectConstruct) {
          var NewTarget = _getPrototypeOf(this).constructor;
          result = Reflect.construct(Super, arguments, NewTarget);
        } else {
          result = Super.apply(this, arguments);
        }
        return _possibleConstructorReturn(this, result);
      };
    }
    function _isNativeReflectConstruct() {
      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
      if (Reflect.construct.sham) return false;
      if (typeof Proxy === "function") return true;
      try {
        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {})));
        return true;
      } catch (e) {
        return false;
      }
    }
    function deepFind(obj, path) {
      var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ".";
      if (!obj) return undefined;
      if (obj[path]) return obj[path];
      var paths = path.split(keySeparator);
      var current = obj;
      for (var i = 0; i < paths.length; ++i) {
        if (!current) return undefined;
        if (typeof current[paths[i]] === "string" && i + 1 < paths.length) {
          return undefined;
        }
        if (current[paths[i]] === undefined) {
          var j = 2;
          var p = paths.slice(i, i + j).join(keySeparator);
          var mix = current[p];
          while (mix === undefined && paths.length > i + j) {
            j++;
            p = paths.slice(i, i + j).join(keySeparator);
            mix = current[p];
          }
          if (mix === undefined) return undefined;
          if (mix === null) return null;
          if (path.endsWith(p)) {
            if (typeof mix === "string") return mix;
            if (p && typeof mix[p] === "string") return mix[p];
          }
          var joinedPath = paths.slice(i + j).join(keySeparator);
          if (joinedPath) return deepFind(mix, joinedPath, keySeparator);
          return undefined;
        }
        current = current[paths[i]];
      }
      return current;
    }
    var ResourceStore = function(_EventEmitter) {
      _inherits(ResourceStore, _EventEmitter);
      var _super = _createSuper(ResourceStore);
      function ResourceStore(data) {
        var _this;
        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
          ns: [ "translation" ],
          defaultNS: "translation"
        };
        _classCallCheck(this, ResourceStore);
        _this = _super.call(this);
        if (isIE10) {
          EventEmitter.call(_assertThisInitialized(_this));
        }
        _this.data = data || {};
        _this.options = options;
        if (_this.options.keySeparator === undefined) {
          _this.options.keySeparator = ".";
        }
        if (_this.options.ignoreJSONStructure === undefined) {
          _this.options.ignoreJSONStructure = true;
        }
        return _this;
      }
      _createClass(ResourceStore, [ {
        key: "addNamespaces",
        value: function addNamespaces(ns) {
          if (this.options.ns.indexOf(ns) < 0) {
            this.options.ns.push(ns);
          }
        }
      }, {
        key: "removeNamespaces",
        value: function removeNamespaces(ns) {
          var index = this.options.ns.indexOf(ns);
          if (index > -1) {
            this.options.ns.splice(index, 1);
          }
        }
      }, {
        key: "getResource",
        value: function getResource(lng, ns, key) {
          var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
          var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;
          var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;
          var path = [ lng, ns ];
          if (key && typeof key !== "string") path = path.concat(key);
          if (key && typeof key === "string") path = path.concat(keySeparator ? key.split(keySeparator) : key);
          if (lng.indexOf(".") > -1) {
            path = lng.split(".");
          }
          var result = getPath(this.data, path);
          if (result || !ignoreJSONStructure || typeof key !== "string") return result;
          return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);
        }
      }, {
        key: "addResource",
        value: function addResource(lng, ns, key, value) {
          var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {
            silent: false
          };
          var keySeparator = this.options.keySeparator;
          if (keySeparator === undefined) keySeparator = ".";
          var path = [ lng, ns ];
          if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);
          if (lng.indexOf(".") > -1) {
            path = lng.split(".");
            value = ns;
            ns = path[1];
          }
          this.addNamespaces(ns);
          setPath(this.data, path, value);
          if (!options.silent) this.emit("added", lng, ns, key, value);
        }
      }, {
        key: "addResources",
        value: function addResources(lng, ns, resources) {
          var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
            silent: false
          };
          for (var m in resources) {
            if (typeof resources[m] === "string" || Object.prototype.toString.apply(resources[m]) === "[object Array]") this.addResource(lng, ns, m, resources[m], {
              silent: true
            });
          }
          if (!options.silent) this.emit("added", lng, ns, resources);
        }
      }, {
        key: "addResourceBundle",
        value: function addResourceBundle(lng, ns, resources, deep, overwrite) {
          var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {
            silent: false
          };
          var path = [ lng, ns ];
          if (lng.indexOf(".") > -1) {
            path = lng.split(".");
            deep = resources;
            resources = ns;
            ns = path[1];
          }
          this.addNamespaces(ns);
          var pack = getPath(this.data, path) || {};
          if (deep) {
            deepExtend(pack, resources, overwrite);
          } else {
            pack = _objectSpread$1(_objectSpread$1({}, pack), resources);
          }
          setPath(this.data, path, pack);
          if (!options.silent) this.emit("added", lng, ns, resources);
        }
      }, {
        key: "removeResourceBundle",
        value: function removeResourceBundle(lng, ns) {
          if (this.hasResourceBundle(lng, ns)) {
            delete this.data[lng][ns];
          }
          this.removeNamespaces(ns);
          this.emit("removed", lng, ns);
        }
      }, {
        key: "hasResourceBundle",
        value: function hasResourceBundle(lng, ns) {
          return this.getResource(lng, ns) !== undefined;
        }
      }, {
        key: "getResourceBundle",
        value: function getResourceBundle(lng, ns) {
          if (!ns) ns = this.options.defaultNS;
          if (this.options.compatibilityAPI === "v1") return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));
          return this.getResource(lng, ns);
        }
      }, {
        key: "getDataByLanguage",
        value: function getDataByLanguage(lng) {
          return this.data[lng];
        }
      }, {
        key: "hasLanguageSomeTranslations",
        value: function hasLanguageSomeTranslations(lng) {
          var data = this.getDataByLanguage(lng);
          var n = data && Object.keys(data) || [];
          return !!n.find((function(v) {
            return data[v] && Object.keys(data[v]).length > 0;
          }));
        }
      }, {
        key: "toJSON",
        value: function toJSON() {
          return this.data;
        }
      } ]);
      return ResourceStore;
    }(EventEmitter);
    var postProcessor = {
      processors: {},
      addPostProcessor: function addPostProcessor(module) {
        this.processors[module.name] = module;
      },
      handle: function handle(processors, value, key, options, translator) {
        var _this = this;
        processors.forEach((function(processor) {
          if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);
        }));
        return value;
      }
    };
    function ownKeys$2(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$2(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$2(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$2(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function _createSuper$1(Derived) {
      var hasNativeReflectConstruct = _isNativeReflectConstruct$1();
      return function _createSuperInternal() {
        var Super = _getPrototypeOf(Derived), result;
        if (hasNativeReflectConstruct) {
          var NewTarget = _getPrototypeOf(this).constructor;
          result = Reflect.construct(Super, arguments, NewTarget);
        } else {
          result = Super.apply(this, arguments);
        }
        return _possibleConstructorReturn(this, result);
      };
    }
    function _isNativeReflectConstruct$1() {
      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
      if (Reflect.construct.sham) return false;
      if (typeof Proxy === "function") return true;
      try {
        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {})));
        return true;
      } catch (e) {
        return false;
      }
    }
    var checkedLoadedFor = {};
    var Translator = function(_EventEmitter) {
      _inherits(Translator, _EventEmitter);
      var _super = _createSuper$1(Translator);
      function Translator(services) {
        var _this;
        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
        _classCallCheck(this, Translator);
        _this = _super.call(this);
        if (isIE10) {
          EventEmitter.call(_assertThisInitialized(_this));
        }
        copy([ "resourceStore", "languageUtils", "pluralResolver", "interpolator", "backendConnector", "i18nFormat", "utils" ], services, _assertThisInitialized(_this));
        _this.options = options;
        if (_this.options.keySeparator === undefined) {
          _this.options.keySeparator = ".";
        }
        _this.logger = baseLogger.create("translator");
        return _this;
      }
      _createClass(Translator, [ {
        key: "changeLanguage",
        value: function changeLanguage(lng) {
          if (lng) this.language = lng;
        }
      }, {
        key: "exists",
        value: function exists(key) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
            interpolation: {}
          };
          if (key === undefined || key === null) {
            return false;
          }
          var resolved = this.resolve(key, options);
          return resolved && resolved.res !== undefined;
        }
      }, {
        key: "extractFromKey",
        value: function extractFromKey(key, options) {
          var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;
          if (nsSeparator === undefined) nsSeparator = ":";
          var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;
          var namespaces = options.ns || this.options.defaultNS || [];
          var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;
          var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);
          if (wouldCheckForNsInKey && !seemsNaturalLanguage) {
            var m = key.match(this.interpolator.nestingRegexp);
            if (m && m.length > 0) {
              return {
                key,
                namespaces
              };
            }
            var parts = key.split(nsSeparator);
            if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();
            key = parts.join(keySeparator);
          }
          if (typeof namespaces === "string") namespaces = [ namespaces ];
          return {
            key,
            namespaces
          };
        }
      }, {
        key: "translate",
        value: function translate(keys, options, lastKey) {
          var _this2 = this;
          if (_typeof(options) !== "object" && this.options.overloadTranslationOptionHandler) {
            options = this.options.overloadTranslationOptionHandler(arguments);
          }
          if (!options) options = {};
          if (keys === undefined || keys === null) return "";
          if (!Array.isArray(keys)) keys = [ String(keys) ];
          var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;
          var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;
          var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options), key = _this$extractFromKey.key, namespaces = _this$extractFromKey.namespaces;
          var namespace = namespaces[namespaces.length - 1];
          var lng = options.lng || this.language;
          var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;
          if (lng && lng.toLowerCase() === "cimode") {
            if (appendNamespaceToCIMode) {
              var nsSeparator = options.nsSeparator || this.options.nsSeparator;
              if (returnDetails) {
                resolved.res = "".concat(namespace).concat(nsSeparator).concat(key);
                return resolved;
              }
              return "".concat(namespace).concat(nsSeparator).concat(key);
            }
            if (returnDetails) {
              resolved.res = key;
              return resolved;
            }
            return key;
          }
          var resolved = this.resolve(keys, options);
          var res = resolved && resolved.res;
          var resUsedKey = resolved && resolved.usedKey || key;
          var resExactUsedKey = resolved && resolved.exactUsedKey || key;
          var resType = Object.prototype.toString.apply(res);
          var noObject = [ "[object Number]", "[object Function]", "[object RegExp]" ];
          var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;
          var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;
          var handleAsObject = typeof res !== "string" && typeof res !== "boolean" && typeof res !== "number";
          if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === "string" && resType === "[object Array]")) {
            if (!options.returnObjects && !this.options.returnObjects) {
              if (!this.options.returnedObjectHandler) {
                this.logger.warn("accessing an object - but returnObjects options is not enabled!");
              }
              var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {
                ns: namespaces
              })) : "key '".concat(key, " (").concat(this.language, ")' returned an object instead of string.");
              if (returnDetails) {
                resolved.res = r;
                return resolved;
              }
              return r;
            }
            if (keySeparator) {
              var resTypeIsArray = resType === "[object Array]";
              var copy = resTypeIsArray ? [] : {};
              var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;
              for (var m in res) {
                if (Object.prototype.hasOwnProperty.call(res, m)) {
                  var deepKey = "".concat(newKeyToUse).concat(keySeparator).concat(m);
                  copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {
                    joinArrays: false,
                    ns: namespaces
                  }));
                  if (copy[m] === deepKey) copy[m] = res[m];
                }
              }
              res = copy;
            }
          } else if (handleAsObjectInI18nFormat && typeof joinArrays === "string" && resType === "[object Array]") {
            res = res.join(joinArrays);
            if (res) res = this.extendTranslation(res, keys, options, lastKey);
          } else {
            var usedDefault = false;
            var usedKey = false;
            var needsPluralHandling = options.count !== undefined && typeof options.count !== "string";
            var hasDefaultValue = Translator.hasDefaultValue(options);
            var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : "";
            var defaultValue = options["defaultValue".concat(defaultValueSuffix)] || options.defaultValue;
            if (!this.isValidLookup(res) && hasDefaultValue) {
              usedDefault = true;
              res = defaultValue;
            }
            if (!this.isValidLookup(res)) {
              usedKey = true;
              res = key;
            }
            var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;
            var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;
            var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;
            if (usedKey || usedDefault || updateMissing) {
              this.logger.log(updateMissing ? "updateKey" : "missingKey", lng, namespace, key, updateMissing ? defaultValue : res);
              if (keySeparator) {
                var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {
                  keySeparator: false
                }));
                if (fk && fk.res) this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.");
              }
              var lngs = [];
              var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);
              if (this.options.saveMissingTo === "fallback" && fallbackLngs && fallbackLngs[0]) {
                for (var i = 0; i < fallbackLngs.length; i++) {
                  lngs.push(fallbackLngs[i]);
                }
              } else if (this.options.saveMissingTo === "all") {
                lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);
              } else {
                lngs.push(options.lng || this.language);
              }
              var send = function send(l, k, specificDefaultValue) {
                var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;
                if (_this2.options.missingKeyHandler) {
                  _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);
                } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {
                  _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);
                }
                _this2.emit("missingKey", l, namespace, k, res);
              };
              if (this.options.saveMissing) {
                if (this.options.saveMissingPlurals && needsPluralHandling) {
                  lngs.forEach((function(language) {
                    _this2.pluralResolver.getSuffixes(language, options).forEach((function(suffix) {
                      send([ language ], key + suffix, options["defaultValue".concat(suffix)] || defaultValue);
                    }));
                  }));
                } else {
                  send(lngs, key, defaultValue);
                }
              }
            }
            res = this.extendTranslation(res, keys, options, resolved, lastKey);
            if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = "".concat(namespace, ":").concat(key);
            if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {
              if (this.options.compatibilityAPI !== "v1") {
                res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? "".concat(namespace, ":").concat(key) : key, usedDefault ? res : undefined);
              } else {
                res = this.options.parseMissingKeyHandler(res);
              }
            }
          }
          if (returnDetails) {
            resolved.res = res;
            return resolved;
          }
          return res;
        }
      }, {
        key: "extendTranslation",
        value: function extendTranslation(res, key, options, resolved, lastKey) {
          var _this3 = this;
          if (this.i18nFormat && this.i18nFormat.parse) {
            res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {
              resolved
            });
          } else if (!options.skipInterpolation) {
            if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {
              interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)
            }));
            var skipOnVariables = typeof res === "string" && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);
            var nestBef;
            if (skipOnVariables) {
              var nb = res.match(this.interpolator.nestingRegexp);
              nestBef = nb && nb.length;
            }
            var data = options.replace && typeof options.replace !== "string" ? options.replace : options;
            if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);
            res = this.interpolator.interpolate(res, data, options.lng || this.language, options);
            if (skipOnVariables) {
              var na = res.match(this.interpolator.nestingRegexp);
              var nestAft = na && na.length;
              if (nestBef < nestAft) options.nest = false;
            }
            if (options.nest !== false) res = this.interpolator.nest(res, (function() {
              for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                args[_key] = arguments[_key];
              }
              if (lastKey && lastKey[0] === args[0] && !options.context) {
                _this3.logger.warn("It seems you are nesting recursively key: ".concat(args[0], " in key: ").concat(key[0]));
                return null;
              }
              return _this3.translate.apply(_this3, args.concat([ key ]));
            }), options);
            if (options.interpolation) this.interpolator.reset();
          }
          var postProcess = options.postProcess || this.options.postProcess;
          var postProcessorNames = typeof postProcess === "string" ? [ postProcess ] : postProcess;
          if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {
            res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({
              i18nResolved: resolved
            }, options) : options, this);
          }
          return res;
        }
      }, {
        key: "resolve",
        value: function resolve(keys) {
          var _this4 = this;
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          var found;
          var usedKey;
          var exactUsedKey;
          var usedLng;
          var usedNS;
          if (typeof keys === "string") keys = [ keys ];
          keys.forEach((function(k) {
            if (_this4.isValidLookup(found)) return;
            var extracted = _this4.extractFromKey(k, options);
            var key = extracted.key;
            usedKey = key;
            var namespaces = extracted.namespaces;
            if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);
            var needsPluralHandling = options.count !== undefined && typeof options.count !== "string";
            var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();
            var needsContextHandling = options.context !== undefined && (typeof options.context === "string" || typeof options.context === "number") && options.context !== "";
            var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);
            namespaces.forEach((function(ns) {
              if (_this4.isValidLookup(found)) return;
              usedNS = ns;
              if (!checkedLoadedFor["".concat(codes[0], "-").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {
                checkedLoadedFor["".concat(codes[0], "-").concat(ns)] = true;
                _this4.logger.warn('key "'.concat(usedKey, '" for languages "').concat(codes.join(", "), '" won\'t get resolved as namespace "').concat(usedNS, '" was not yet loaded'), "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
              }
              codes.forEach((function(code) {
                if (_this4.isValidLookup(found)) return;
                usedLng = code;
                var finalKeys = [ key ];
                if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {
                  _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);
                } else {
                  var pluralSuffix;
                  if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);
                  var zeroSuffix = "".concat(_this4.options.pluralSeparator, "zero");
                  if (needsPluralHandling) {
                    finalKeys.push(key + pluralSuffix);
                    if (needsZeroSuffixLookup) {
                      finalKeys.push(key + zeroSuffix);
                    }
                  }
                  if (needsContextHandling) {
                    var contextKey = "".concat(key).concat(_this4.options.contextSeparator).concat(options.context);
                    finalKeys.push(contextKey);
                    if (needsPluralHandling) {
                      finalKeys.push(contextKey + pluralSuffix);
                      if (needsZeroSuffixLookup) {
                        finalKeys.push(contextKey + zeroSuffix);
                      }
                    }
                  }
                }
                var possibleKey;
                while (possibleKey = finalKeys.pop()) {
                  if (!_this4.isValidLookup(found)) {
                    exactUsedKey = possibleKey;
                    found = _this4.getResource(code, ns, possibleKey, options);
                  }
                }
              }));
            }));
          }));
          return {
            res: found,
            usedKey,
            exactUsedKey,
            usedLng,
            usedNS
          };
        }
      }, {
        key: "isValidLookup",
        value: function isValidLookup(res) {
          return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === "");
        }
      }, {
        key: "getResource",
        value: function getResource(code, ns, key) {
          var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
          if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);
          return this.resourceStore.getResource(code, ns, key, options);
        }
      } ], [ {
        key: "hasDefaultValue",
        value: function hasDefaultValue(options) {
          var prefix = "defaultValue";
          for (var option in options) {
            if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {
              return true;
            }
          }
          return false;
        }
      } ]);
      return Translator;
    }(EventEmitter);
    function capitalize(string) {
      return string.charAt(0).toUpperCase() + string.slice(1);
    }
    var LanguageUtil = function() {
      function LanguageUtil(options) {
        _classCallCheck(this, LanguageUtil);
        this.options = options;
        this.supportedLngs = this.options.supportedLngs || false;
        this.logger = baseLogger.create("languageUtils");
      }
      _createClass(LanguageUtil, [ {
        key: "getScriptPartFromCode",
        value: function getScriptPartFromCode(code) {
          if (!code || code.indexOf("-") < 0) return null;
          var p = code.split("-");
          if (p.length === 2) return null;
          p.pop();
          if (p[p.length - 1].toLowerCase() === "x") return null;
          return this.formatLanguageCode(p.join("-"));
        }
      }, {
        key: "getLanguagePartFromCode",
        value: function getLanguagePartFromCode(code) {
          if (!code || code.indexOf("-") < 0) return code;
          var p = code.split("-");
          return this.formatLanguageCode(p[0]);
        }
      }, {
        key: "formatLanguageCode",
        value: function formatLanguageCode(code) {
          if (typeof code === "string" && code.indexOf("-") > -1) {
            var specialCases = [ "hans", "hant", "latn", "cyrl", "cans", "mong", "arab" ];
            var p = code.split("-");
            if (this.options.lowerCaseLng) {
              p = p.map((function(part) {
                return part.toLowerCase();
              }));
            } else if (p.length === 2) {
              p[0] = p[0].toLowerCase();
              p[1] = p[1].toUpperCase();
              if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
            } else if (p.length === 3) {
              p[0] = p[0].toLowerCase();
              if (p[1].length === 2) p[1] = p[1].toUpperCase();
              if (p[0] !== "sgn" && p[2].length === 2) p[2] = p[2].toUpperCase();
              if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
              if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());
            }
            return p.join("-");
          }
          return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;
        }
      }, {
        key: "isSupportedCode",
        value: function isSupportedCode(code) {
          if (this.options.load === "languageOnly" || this.options.nonExplicitSupportedLngs) {
            code = this.getLanguagePartFromCode(code);
          }
          return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;
        }
      }, {
        key: "getBestMatchFromCodes",
        value: function getBestMatchFromCodes(codes) {
          var _this = this;
          if (!codes) return null;
          var found;
          codes.forEach((function(code) {
            if (found) return;
            var cleanedLng = _this.formatLanguageCode(code);
            if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;
          }));
          if (!found && this.options.supportedLngs) {
            codes.forEach((function(code) {
              if (found) return;
              var lngOnly = _this.getLanguagePartFromCode(code);
              if (_this.isSupportedCode(lngOnly)) return found = lngOnly;
              found = _this.options.supportedLngs.find((function(supportedLng) {
                if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;
              }));
            }));
          }
          if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];
          return found;
        }
      }, {
        key: "getFallbackCodes",
        value: function getFallbackCodes(fallbacks, code) {
          if (!fallbacks) return [];
          if (typeof fallbacks === "function") fallbacks = fallbacks(code);
          if (typeof fallbacks === "string") fallbacks = [ fallbacks ];
          if (Object.prototype.toString.apply(fallbacks) === "[object Array]") return fallbacks;
          if (!code) return fallbacks["default"] || [];
          var found = fallbacks[code];
          if (!found) found = fallbacks[this.getScriptPartFromCode(code)];
          if (!found) found = fallbacks[this.formatLanguageCode(code)];
          if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];
          if (!found) found = fallbacks["default"];
          return found || [];
        }
      }, {
        key: "toResolveHierarchy",
        value: function toResolveHierarchy(code, fallbackCode) {
          var _this2 = this;
          var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);
          var codes = [];
          var addCode = function addCode(c) {
            if (!c) return;
            if (_this2.isSupportedCode(c)) {
              codes.push(c);
            } else {
              _this2.logger.warn("rejecting language code not found in supportedLngs: ".concat(c));
            }
          };
          if (typeof code === "string" && code.indexOf("-") > -1) {
            if (this.options.load !== "languageOnly") addCode(this.formatLanguageCode(code));
            if (this.options.load !== "languageOnly" && this.options.load !== "currentOnly") addCode(this.getScriptPartFromCode(code));
            if (this.options.load !== "currentOnly") addCode(this.getLanguagePartFromCode(code));
          } else if (typeof code === "string") {
            addCode(this.formatLanguageCode(code));
          }
          fallbackCodes.forEach((function(fc) {
            if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));
          }));
          return codes;
        }
      } ]);
      return LanguageUtil;
    }();
    var sets = [ {
      lngs: [ "ach", "ak", "am", "arn", "br", "fil", "gun", "ln", "mfe", "mg", "mi", "oc", "pt", "pt-BR", "tg", "tl", "ti", "tr", "uz", "wa" ],
      nr: [ 1, 2 ],
      fc: 1
    }, {
      lngs: [ "af", "an", "ast", "az", "bg", "bn", "ca", "da", "de", "dev", "el", "en", "eo", "es", "et", "eu", "fi", "fo", "fur", "fy", "gl", "gu", "ha", "hi", "hu", "hy", "ia", "it", "kk", "kn", "ku", "lb", "mai", "ml", "mn", "mr", "nah", "nap", "nb", "ne", "nl", "nn", "no", "nso", "pa", "pap", "pms", "ps", "pt-PT", "rm", "sco", "se", "si", "so", "son", "sq", "sv", "sw", "ta", "te", "tk", "ur", "yo" ],
      nr: [ 1, 2 ],
      fc: 2
    }, {
      lngs: [ "ay", "bo", "cgg", "fa", "ht", "id", "ja", "jbo", "ka", "km", "ko", "ky", "lo", "ms", "sah", "su", "th", "tt", "ug", "vi", "wo", "zh" ],
      nr: [ 1 ],
      fc: 3
    }, {
      lngs: [ "be", "bs", "cnr", "dz", "hr", "ru", "sr", "uk" ],
      nr: [ 1, 2, 5 ],
      fc: 4
    }, {
      lngs: [ "ar" ],
      nr: [ 0, 1, 2, 3, 11, 100 ],
      fc: 5
    }, {
      lngs: [ "cs", "sk" ],
      nr: [ 1, 2, 5 ],
      fc: 6
    }, {
      lngs: [ "csb", "pl" ],
      nr: [ 1, 2, 5 ],
      fc: 7
    }, {
      lngs: [ "cy" ],
      nr: [ 1, 2, 3, 8 ],
      fc: 8
    }, {
      lngs: [ "fr" ],
      nr: [ 1, 2 ],
      fc: 9
    }, {
      lngs: [ "ga" ],
      nr: [ 1, 2, 3, 7, 11 ],
      fc: 10
    }, {
      lngs: [ "gd" ],
      nr: [ 1, 2, 3, 20 ],
      fc: 11
    }, {
      lngs: [ "is" ],
      nr: [ 1, 2 ],
      fc: 12
    }, {
      lngs: [ "jv" ],
      nr: [ 0, 1 ],
      fc: 13
    }, {
      lngs: [ "kw" ],
      nr: [ 1, 2, 3, 4 ],
      fc: 14
    }, {
      lngs: [ "lt" ],
      nr: [ 1, 2, 10 ],
      fc: 15
    }, {
      lngs: [ "lv" ],
      nr: [ 1, 2, 0 ],
      fc: 16
    }, {
      lngs: [ "mk" ],
      nr: [ 1, 2 ],
      fc: 17
    }, {
      lngs: [ "mnk" ],
      nr: [ 0, 1, 2 ],
      fc: 18
    }, {
      lngs: [ "mt" ],
      nr: [ 1, 2, 11, 20 ],
      fc: 19
    }, {
      lngs: [ "or" ],
      nr: [ 2, 1 ],
      fc: 2
    }, {
      lngs: [ "ro" ],
      nr: [ 1, 2, 20 ],
      fc: 20
    }, {
      lngs: [ "sl" ],
      nr: [ 5, 1, 2, 3 ],
      fc: 21
    }, {
      lngs: [ "he", "iw" ],
      nr: [ 1, 2, 20, 21 ],
      fc: 22
    } ];
    var _rulesPluralsTypes = {
      1: function _(n) {
        return Number(n > 1);
      },
      2: function _(n) {
        return Number(n != 1);
      },
      3: function _(n) {
        return 0;
      },
      4: function _(n) {
        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
      },
      5: function _(n) {
        return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);
      },
      6: function _(n) {
        return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);
      },
      7: function _(n) {
        return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
      },
      8: function _(n) {
        return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);
      },
      9: function _(n) {
        return Number(n >= 2);
      },
      10: function _(n) {
        return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);
      },
      11: function _(n) {
        return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);
      },
      12: function _(n) {
        return Number(n % 10 != 1 || n % 100 == 11);
      },
      13: function _(n) {
        return Number(n !== 0);
      },
      14: function _(n) {
        return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);
      },
      15: function _(n) {
        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
      },
      16: function _(n) {
        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);
      },
      17: function _(n) {
        return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);
      },
      18: function _(n) {
        return Number(n == 0 ? 0 : n == 1 ? 1 : 2);
      },
      19: function _(n) {
        return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);
      },
      20: function _(n) {
        return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);
      },
      21: function _(n) {
        return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);
      },
      22: function _(n) {
        return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);
      }
    };
    var deprecatedJsonVersions = [ "v1", "v2", "v3" ];
    var suffixesOrder = {
      zero: 0,
      one: 1,
      two: 2,
      few: 3,
      many: 4,
      other: 5
    };
    function createRules() {
      var rules = {};
      sets.forEach((function(set) {
        set.lngs.forEach((function(l) {
          rules[l] = {
            numbers: set.nr,
            plurals: _rulesPluralsTypes[set.fc]
          };
        }));
      }));
      return rules;
    }
    var PluralResolver = function() {
      function PluralResolver(languageUtils) {
        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
        _classCallCheck(this, PluralResolver);
        this.languageUtils = languageUtils;
        this.options = options;
        this.logger = baseLogger.create("pluralResolver");
        if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === "v4") && (typeof Intl === "undefined" || !Intl.PluralRules)) {
          this.options.compatibilityJSON = "v3";
          this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.");
        }
        this.rules = createRules();
      }
      _createClass(PluralResolver, [ {
        key: "addRule",
        value: function addRule(lng, obj) {
          this.rules[lng] = obj;
        }
      }, {
        key: "getRule",
        value: function getRule(code) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          if (this.shouldUseIntlApi()) {
            try {
              return new Intl.PluralRules(code, {
                type: options.ordinal ? "ordinal" : "cardinal"
              });
            } catch (_unused) {
              return;
            }
          }
          return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];
        }
      }, {
        key: "needsPlural",
        value: function needsPlural(code) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          var rule = this.getRule(code, options);
          if (this.shouldUseIntlApi()) {
            return rule && rule.resolvedOptions().pluralCategories.length > 1;
          }
          return rule && rule.numbers.length > 1;
        }
      }, {
        key: "getPluralFormsOfKey",
        value: function getPluralFormsOfKey(code, key) {
          var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
          return this.getSuffixes(code, options).map((function(suffix) {
            return "".concat(key).concat(suffix);
          }));
        }
      }, {
        key: "getSuffixes",
        value: function getSuffixes(code) {
          var _this = this;
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          var rule = this.getRule(code, options);
          if (!rule) {
            return [];
          }
          if (this.shouldUseIntlApi()) {
            return rule.resolvedOptions().pluralCategories.sort((function(pluralCategory1, pluralCategory2) {
              return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];
            })).map((function(pluralCategory) {
              return "".concat(_this.options.prepend).concat(pluralCategory);
            }));
          }
          return rule.numbers.map((function(number) {
            return _this.getSuffix(code, number, options);
          }));
        }
      }, {
        key: "getSuffix",
        value: function getSuffix(code, count) {
          var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
          var rule = this.getRule(code, options);
          if (rule) {
            if (this.shouldUseIntlApi()) {
              return "".concat(this.options.prepend).concat(rule.select(count));
            }
            return this.getSuffixRetroCompatible(rule, count);
          }
          this.logger.warn("no plural rule found for: ".concat(code));
          return "";
        }
      }, {
        key: "getSuffixRetroCompatible",
        value: function getSuffixRetroCompatible(rule, count) {
          var _this2 = this;
          var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));
          var suffix = rule.numbers[idx];
          if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
            if (suffix === 2) {
              suffix = "plural";
            } else if (suffix === 1) {
              suffix = "";
            }
          }
          var returnSuffix = function returnSuffix() {
            return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();
          };
          if (this.options.compatibilityJSON === "v1") {
            if (suffix === 1) return "";
            if (typeof suffix === "number") return "_plural_".concat(suffix.toString());
            return returnSuffix();
          } else if (this.options.compatibilityJSON === "v2") {
            return returnSuffix();
          } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
            return returnSuffix();
          }
          return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();
        }
      }, {
        key: "shouldUseIntlApi",
        value: function shouldUseIntlApi() {
          return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);
        }
      } ]);
      return PluralResolver;
    }();
    function ownKeys$3(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$3(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$3(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$3(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    var Interpolator = function() {
      function Interpolator() {
        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        _classCallCheck(this, Interpolator);
        this.logger = baseLogger.create("interpolator");
        this.options = options;
        this.format = options.interpolation && options.interpolation.format || function(value) {
          return value;
        };
        this.init(options);
      }
      _createClass(Interpolator, [ {
        key: "init",
        value: function init() {
          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
          if (!options.interpolation) options.interpolation = {
            escapeValue: true
          };
          var iOpts = options.interpolation;
          this.escape = iOpts.escape !== undefined ? iOpts.escape : i18next_escape;
          this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;
          this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;
          this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || "{{";
          this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || "}}";
          this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
          this.unescapePrefix = iOpts.unescapeSuffix ? "" : iOpts.unescapePrefix || "-";
          this.unescapeSuffix = this.unescapePrefix ? "" : iOpts.unescapeSuffix || "";
          this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape("$t(");
          this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(")");
          this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ",";
          this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1e3;
          this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;
          this.resetRegExp();
        }
      }, {
        key: "reset",
        value: function reset() {
          if (this.options) this.init(this.options);
        }
      }, {
        key: "resetRegExp",
        value: function resetRegExp() {
          var regexpStr = "".concat(this.prefix, "(.+?)").concat(this.suffix);
          this.regexp = new RegExp(regexpStr, "g");
          var regexpUnescapeStr = "".concat(this.prefix).concat(this.unescapePrefix, "(.+?)").concat(this.unescapeSuffix).concat(this.suffix);
          this.regexpUnescape = new RegExp(regexpUnescapeStr, "g");
          var nestingRegexpStr = "".concat(this.nestingPrefix, "(.+?)").concat(this.nestingSuffix);
          this.nestingRegexp = new RegExp(nestingRegexpStr, "g");
        }
      }, {
        key: "interpolate",
        value: function interpolate(str, data, lng, options) {
          var _this = this;
          var match;
          var value;
          var replaces;
          var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};
          function regexSafe(val) {
            return val.replace(/\$/g, "$$$$");
          }
          var handleFormat = function handleFormat(key) {
            if (key.indexOf(_this.formatSeparator) < 0) {
              var path = getPathWithDefaults(data, defaultData, key);
              return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {
                interpolationkey: key
              })) : path;
            }
            var p = key.split(_this.formatSeparator);
            var k = p.shift().trim();
            var f = p.join(_this.formatSeparator).trim();
            return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {
              interpolationkey: k
            }));
          };
          this.resetRegExp();
          var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;
          var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;
          var todos = [ {
            regex: this.regexpUnescape,
            safeValue: function safeValue(val) {
              return regexSafe(val);
            }
          }, {
            regex: this.regexp,
            safeValue: function safeValue(val) {
              return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);
            }
          } ];
          todos.forEach((function(todo) {
            replaces = 0;
            while (match = todo.regex.exec(str)) {
              var matchedVar = match[1].trim();
              value = handleFormat(matchedVar);
              if (value === undefined) {
                if (typeof missingInterpolationHandler === "function") {
                  var temp = missingInterpolationHandler(str, match, options);
                  value = typeof temp === "string" ? temp : "";
                } else if (options && options.hasOwnProperty(matchedVar)) {
                  value = "";
                } else if (skipOnVariables) {
                  value = match[0];
                  continue;
                } else {
                  _this.logger.warn("missed to pass in variable ".concat(matchedVar, " for interpolating ").concat(str));
                  value = "";
                }
              } else if (typeof value !== "string" && !_this.useRawValueToEscape) {
                value = makeString(value);
              }
              var safeValue = todo.safeValue(value);
              str = str.replace(match[0], safeValue);
              if (skipOnVariables) {
                todo.regex.lastIndex += value.length;
                todo.regex.lastIndex -= match[0].length;
              } else {
                todo.regex.lastIndex = 0;
              }
              replaces++;
              if (replaces >= _this.maxReplaces) {
                break;
              }
            }
          }));
          return str;
        }
      }, {
        key: "nest",
        value: function nest(str, fc) {
          var _this2 = this;
          var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
          var match;
          var value;
          var clonedOptions = _objectSpread$3({}, options);
          clonedOptions.applyPostProcessor = false;
          delete clonedOptions.defaultValue;
          function handleHasOptions(key, inheritedOptions) {
            var sep = this.nestingOptionsSeparator;
            if (key.indexOf(sep) < 0) return key;
            var c = key.split(new RegExp("".concat(sep, "[ ]*{")));
            var optionsString = "{".concat(c[1]);
            key = c[0];
            optionsString = this.interpolate(optionsString, clonedOptions);
            var matchedSingleQuotes = optionsString.match(/'/g);
            var matchedDoubleQuotes = optionsString.match(/"/g);
            if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {
              optionsString = optionsString.replace(/'/g, '"');
            }
            try {
              clonedOptions = JSON.parse(optionsString);
              if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);
            } catch (e) {
              this.logger.warn("failed parsing options string in nesting for key ".concat(key), e);
              return "".concat(key).concat(sep).concat(optionsString);
            }
            delete clonedOptions.defaultValue;
            return key;
          }
          while (match = this.nestingRegexp.exec(str)) {
            var formatters = [];
            var doReduce = false;
            if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {
              var r = match[1].split(this.formatSeparator).map((function(elem) {
                return elem.trim();
              }));
              match[1] = r.shift();
              formatters = r;
              doReduce = true;
            }
            value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);
            if (value && match[0] === str && typeof value !== "string") return value;
            if (typeof value !== "string") value = makeString(value);
            if (!value) {
              this.logger.warn("missed to resolve ".concat(match[1], " for nesting ").concat(str));
              value = "";
            }
            if (doReduce) {
              value = formatters.reduce((function(v, f) {
                return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {
                  interpolationkey: match[1].trim()
                }));
              }), value.trim());
            }
            str = str.replace(match[0], value);
            this.regexp.lastIndex = 0;
          }
          return str;
        }
      } ]);
      return Interpolator;
    }();
    function ownKeys$4(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$4(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$4(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$4(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function parseFormatStr(formatStr) {
      var formatName = formatStr.toLowerCase().trim();
      var formatOptions = {};
      if (formatStr.indexOf("(") > -1) {
        var p = formatStr.split("(");
        formatName = p[0].toLowerCase().trim();
        var optStr = p[1].substring(0, p[1].length - 1);
        if (formatName === "currency" && optStr.indexOf(":") < 0) {
          if (!formatOptions.currency) formatOptions.currency = optStr.trim();
        } else if (formatName === "relativetime" && optStr.indexOf(":") < 0) {
          if (!formatOptions.range) formatOptions.range = optStr.trim();
        } else {
          var opts = optStr.split(";");
          opts.forEach((function(opt) {
            if (!opt) return;
            var _opt$split = opt.split(":"), _opt$split2 = _toArray(_opt$split), key = _opt$split2[0], rest = _opt$split2.slice(1);
            var val = rest.join(":").trim().replace(/^'+|'+$/g, "");
            if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;
            if (val === "false") formatOptions[key.trim()] = false;
            if (val === "true") formatOptions[key.trim()] = true;
            if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);
          }));
        }
      }
      return {
        formatName,
        formatOptions
      };
    }
    function createCachedFormatter(fn) {
      var cache = {};
      return function invokeFormatter(val, lng, options) {
        var key = lng + JSON.stringify(options);
        var formatter = cache[key];
        if (!formatter) {
          formatter = fn(lng, options);
          cache[key] = formatter;
        }
        return formatter(val);
      };
    }
    var Formatter = function() {
      function Formatter() {
        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        _classCallCheck(this, Formatter);
        this.logger = baseLogger.create("formatter");
        this.options = options;
        this.formats = {
          number: createCachedFormatter((function(lng, options) {
            var formatter = new Intl.NumberFormat(lng, options);
            return function(val) {
              return formatter.format(val);
            };
          })),
          currency: createCachedFormatter((function(lng, options) {
            var formatter = new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {
              style: "currency"
            }));
            return function(val) {
              return formatter.format(val);
            };
          })),
          datetime: createCachedFormatter((function(lng, options) {
            var formatter = new Intl.DateTimeFormat(lng, _objectSpread$4({}, options));
            return function(val) {
              return formatter.format(val);
            };
          })),
          relativetime: createCachedFormatter((function(lng, options) {
            var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options));
            return function(val) {
              return formatter.format(val, options.range || "day");
            };
          })),
          list: createCachedFormatter((function(lng, options) {
            var formatter = new Intl.ListFormat(lng, _objectSpread$4({}, options));
            return function(val) {
              return formatter.format(val);
            };
          }))
        };
        this.init(options);
      }
      _createClass(Formatter, [ {
        key: "init",
        value: function init(services) {
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
            interpolation: {}
          };
          var iOpts = options.interpolation;
          this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
        }
      }, {
        key: "add",
        value: function add(name, fc) {
          this.formats[name.toLowerCase().trim()] = fc;
        }
      }, {
        key: "addCached",
        value: function addCached(name, fc) {
          this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);
        }
      }, {
        key: "format",
        value: function format(value, _format, lng, options) {
          var _this = this;
          var formats = _format.split(this.formatSeparator);
          var result = formats.reduce((function(mem, f) {
            var _parseFormatStr = parseFormatStr(f), formatName = _parseFormatStr.formatName, formatOptions = _parseFormatStr.formatOptions;
            if (_this.formats[formatName]) {
              var formatted = mem;
              try {
                var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};
                var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;
                formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));
              } catch (error) {
                _this.logger.warn(error);
              }
              return formatted;
            } else {
              _this.logger.warn("there was no format function for ".concat(formatName));
            }
            return mem;
          }), value);
          return result;
        }
      } ]);
      return Formatter;
    }();
    function ownKeys$5(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$5(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$5(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$5(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function _createSuper$2(Derived) {
      var hasNativeReflectConstruct = _isNativeReflectConstruct$2();
      return function _createSuperInternal() {
        var Super = _getPrototypeOf(Derived), result;
        if (hasNativeReflectConstruct) {
          var NewTarget = _getPrototypeOf(this).constructor;
          result = Reflect.construct(Super, arguments, NewTarget);
        } else {
          result = Super.apply(this, arguments);
        }
        return _possibleConstructorReturn(this, result);
      };
    }
    function _isNativeReflectConstruct$2() {
      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
      if (Reflect.construct.sham) return false;
      if (typeof Proxy === "function") return true;
      try {
        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {})));
        return true;
      } catch (e) {
        return false;
      }
    }
    function removePending(q, name) {
      if (q.pending[name] !== undefined) {
        delete q.pending[name];
        q.pendingCount--;
      }
    }
    var Connector = function(_EventEmitter) {
      _inherits(Connector, _EventEmitter);
      var _super = _createSuper$2(Connector);
      function Connector(backend, store, services) {
        var _this;
        var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
        _classCallCheck(this, Connector);
        _this = _super.call(this);
        if (isIE10) {
          EventEmitter.call(_assertThisInitialized(_this));
        }
        _this.backend = backend;
        _this.store = store;
        _this.services = services;
        _this.languageUtils = services.languageUtils;
        _this.options = options;
        _this.logger = baseLogger.create("backendConnector");
        _this.waitingReads = [];
        _this.maxParallelReads = options.maxParallelReads || 10;
        _this.readingCalls = 0;
        _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;
        _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;
        _this.state = {};
        _this.queue = [];
        if (_this.backend && _this.backend.init) {
          _this.backend.init(services, options.backend, options);
        }
        return _this;
      }
      _createClass(Connector, [ {
        key: "queueLoad",
        value: function queueLoad(languages, namespaces, options, callback) {
          var _this2 = this;
          var toLoad = {};
          var pending = {};
          var toLoadLanguages = {};
          var toLoadNamespaces = {};
          languages.forEach((function(lng) {
            var hasAllNamespaces = true;
            namespaces.forEach((function(ns) {
              var name = "".concat(lng, "|").concat(ns);
              if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {
                _this2.state[name] = 2;
              } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {
                if (pending[name] === undefined) pending[name] = true;
              } else {
                _this2.state[name] = 1;
                hasAllNamespaces = false;
                if (pending[name] === undefined) pending[name] = true;
                if (toLoad[name] === undefined) toLoad[name] = true;
                if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;
              }
            }));
            if (!hasAllNamespaces) toLoadLanguages[lng] = true;
          }));
          if (Object.keys(toLoad).length || Object.keys(pending).length) {
            this.queue.push({
              pending,
              pendingCount: Object.keys(pending).length,
              loaded: {},
              errors: [],
              callback
            });
          }
          return {
            toLoad: Object.keys(toLoad),
            pending: Object.keys(pending),
            toLoadLanguages: Object.keys(toLoadLanguages),
            toLoadNamespaces: Object.keys(toLoadNamespaces)
          };
        }
      }, {
        key: "loaded",
        value: function loaded(name, err, data) {
          var s = name.split("|");
          var lng = s[0];
          var ns = s[1];
          if (err) this.emit("failedLoading", lng, ns, err);
          if (data) {
            this.store.addResourceBundle(lng, ns, data);
          }
          this.state[name] = err ? -1 : 2;
          var loaded = {};
          this.queue.forEach((function(q) {
            pushPath(q.loaded, [ lng ], ns);
            removePending(q, name);
            if (err) q.errors.push(err);
            if (q.pendingCount === 0 && !q.done) {
              Object.keys(q.loaded).forEach((function(l) {
                if (!loaded[l]) loaded[l] = {};
                var loadedKeys = q.loaded[l];
                if (loadedKeys.length) {
                  loadedKeys.forEach((function(ns) {
                    if (loaded[l][ns] === undefined) loaded[l][ns] = true;
                  }));
                }
              }));
              q.done = true;
              if (q.errors.length) {
                q.callback(q.errors);
              } else {
                q.callback();
              }
            }
          }));
          this.emit("loaded", loaded);
          this.queue = this.queue.filter((function(q) {
            return !q.done;
          }));
        }
      }, {
        key: "read",
        value: function read(lng, ns, fcName) {
          var _this3 = this;
          var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
          var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;
          var callback = arguments.length > 5 ? arguments[5] : undefined;
          if (!lng.length) return callback(null, {});
          if (this.readingCalls >= this.maxParallelReads) {
            this.waitingReads.push({
              lng,
              ns,
              fcName,
              tried,
              wait,
              callback
            });
            return;
          }
          this.readingCalls++;
          return this.backend[fcName](lng, ns, (function(err, data) {
            _this3.readingCalls--;
            if (_this3.waitingReads.length > 0) {
              var next = _this3.waitingReads.shift();
              _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);
            }
            if (err && data && tried < _this3.maxRetries) {
              setTimeout((function() {
                _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);
              }), wait);
              return;
            }
            callback(err, data);
          }));
        }
      }, {
        key: "prepareLoading",
        value: function prepareLoading(languages, namespaces) {
          var _this4 = this;
          var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
          var callback = arguments.length > 3 ? arguments[3] : undefined;
          if (!this.backend) {
            this.logger.warn("No backend was added via i18next.use. Will not load resources.");
            return callback && callback();
          }
          if (typeof languages === "string") languages = this.languageUtils.toResolveHierarchy(languages);
          if (typeof namespaces === "string") namespaces = [ namespaces ];
          var toLoad = this.queueLoad(languages, namespaces, options, callback);
          if (!toLoad.toLoad.length) {
            if (!toLoad.pending.length) callback();
            return null;
          }
          toLoad.toLoad.forEach((function(name) {
            _this4.loadOne(name);
          }));
        }
      }, {
        key: "load",
        value: function load(languages, namespaces, callback) {
          this.prepareLoading(languages, namespaces, {}, callback);
        }
      }, {
        key: "reload",
        value: function reload(languages, namespaces, callback) {
          this.prepareLoading(languages, namespaces, {
            reload: true
          }, callback);
        }
      }, {
        key: "loadOne",
        value: function loadOne(name) {
          var _this5 = this;
          var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
          var s = name.split("|");
          var lng = s[0];
          var ns = s[1];
          this.read(lng, ns, "read", undefined, undefined, (function(err, data) {
            if (err) _this5.logger.warn("".concat(prefix, "loading namespace ").concat(ns, " for language ").concat(lng, " failed"), err);
            if (!err && data) _this5.logger.log("".concat(prefix, "loaded namespace ").concat(ns, " for language ").concat(lng), data);
            _this5.loaded(name, err, data);
          }));
        }
      }, {
        key: "saveMissing",
        value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {
          var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
          if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {
            this.logger.warn('did not save key "'.concat(key, '" as the namespace "').concat(namespace, '" was not yet loaded'), "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
            return;
          }
          if (key === undefined || key === null || key === "") return;
          if (this.backend && this.backend.create) {
            this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {
              isUpdate
            }));
          }
          if (!languages || !languages[0]) return;
          this.store.addResource(languages[0], namespace, key, fallbackValue);
        }
      } ]);
      return Connector;
    }(EventEmitter);
    function get() {
      return {
        debug: false,
        initImmediate: true,
        ns: [ "translation" ],
        defaultNS: [ "translation" ],
        fallbackLng: [ "dev" ],
        fallbackNS: false,
        supportedLngs: false,
        nonExplicitSupportedLngs: false,
        load: "all",
        preload: false,
        simplifyPluralSuffix: true,
        keySeparator: ".",
        nsSeparator: ":",
        pluralSeparator: "_",
        contextSeparator: "_",
        partialBundledLanguages: false,
        saveMissing: false,
        updateMissing: false,
        saveMissingTo: "fallback",
        saveMissingPlurals: true,
        missingKeyHandler: false,
        missingInterpolationHandler: false,
        postProcess: false,
        postProcessPassResolved: false,
        returnNull: true,
        returnEmptyString: true,
        returnObjects: false,
        joinArrays: false,
        returnedObjectHandler: false,
        parseMissingKeyHandler: false,
        appendNamespaceToMissingKey: false,
        appendNamespaceToCIMode: false,
        overloadTranslationOptionHandler: function handle(args) {
          var ret = {};
          if (_typeof(args[1]) === "object") ret = args[1];
          if (typeof args[1] === "string") ret.defaultValue = args[1];
          if (typeof args[2] === "string") ret.tDescription = args[2];
          if (_typeof(args[2]) === "object" || _typeof(args[3]) === "object") {
            var options = args[3] || args[2];
            Object.keys(options).forEach((function(key) {
              ret[key] = options[key];
            }));
          }
          return ret;
        },
        interpolation: {
          escapeValue: true,
          format: function format(value, _format, lng, options) {
            return value;
          },
          prefix: "{{",
          suffix: "}}",
          formatSeparator: ",",
          unescapePrefix: "-",
          nestingPrefix: "$t(",
          nestingSuffix: ")",
          nestingOptionsSeparator: ",",
          maxReplaces: 1e3,
          skipOnVariables: true
        }
      };
    }
    function transformOptions(options) {
      if (typeof options.ns === "string") options.ns = [ options.ns ];
      if (typeof options.fallbackLng === "string") options.fallbackLng = [ options.fallbackLng ];
      if (typeof options.fallbackNS === "string") options.fallbackNS = [ options.fallbackNS ];
      if (options.supportedLngs && options.supportedLngs.indexOf("cimode") < 0) {
        options.supportedLngs = options.supportedLngs.concat([ "cimode" ]);
      }
      return options;
    }
    function ownKeys$6(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function _objectSpread$6(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          ownKeys$6(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          ownKeys$6(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function _createSuper$3(Derived) {
      var hasNativeReflectConstruct = _isNativeReflectConstruct$3();
      return function _createSuperInternal() {
        var Super = _getPrototypeOf(Derived), result;
        if (hasNativeReflectConstruct) {
          var NewTarget = _getPrototypeOf(this).constructor;
          result = Reflect.construct(Super, arguments, NewTarget);
        } else {
          result = Super.apply(this, arguments);
        }
        return _possibleConstructorReturn(this, result);
      };
    }
    function _isNativeReflectConstruct$3() {
      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
      if (Reflect.construct.sham) return false;
      if (typeof Proxy === "function") return true;
      try {
        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {})));
        return true;
      } catch (e) {
        return false;
      }
    }
    function i18next_noop() {}
    function bindMemberFunctions(inst) {
      var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));
      mems.forEach((function(mem) {
        if (typeof inst[mem] === "function") {
          inst[mem] = inst[mem].bind(inst);
        }
      }));
    }
    var I18n = function(_EventEmitter) {
      _inherits(I18n, _EventEmitter);
      var _super = _createSuper$3(I18n);
      function I18n() {
        var _this;
        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        var callback = arguments.length > 1 ? arguments[1] : undefined;
        _classCallCheck(this, I18n);
        _this = _super.call(this);
        if (isIE10) {
          EventEmitter.call(_assertThisInitialized(_this));
        }
        _this.options = transformOptions(options);
        _this.services = {};
        _this.logger = baseLogger;
        _this.modules = {
          external: []
        };
        bindMemberFunctions(_assertThisInitialized(_this));
        if (callback && !_this.isInitialized && !options.isClone) {
          if (!_this.options.initImmediate) {
            _this.init(options, callback);
            return _possibleConstructorReturn(_this, _assertThisInitialized(_this));
          }
          setTimeout((function() {
            _this.init(options, callback);
          }), 0);
        }
        return _this;
      }
      _createClass(I18n, [ {
        key: "init",
        value: function init() {
          var _this2 = this;
          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
          var callback = arguments.length > 1 ? arguments[1] : undefined;
          if (typeof options === "function") {
            callback = options;
            options = {};
          }
          if (!options.defaultNS && options.defaultNS !== false && options.ns) {
            if (typeof options.ns === "string") {
              options.defaultNS = options.ns;
            } else if (options.ns.indexOf("translation") < 0) {
              options.defaultNS = options.ns[0];
            }
          }
          var defOpts = get();
          this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));
          if (this.options.compatibilityAPI !== "v1") {
            this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);
          }
          if (options.keySeparator !== undefined) {
            this.options.userDefinedKeySeparator = options.keySeparator;
          }
          if (options.nsSeparator !== undefined) {
            this.options.userDefinedNsSeparator = options.nsSeparator;
          }
          function createClassOnDemand(ClassOrObject) {
            if (!ClassOrObject) return null;
            if (typeof ClassOrObject === "function") return new ClassOrObject;
            return ClassOrObject;
          }
          if (!this.options.isClone) {
            if (this.modules.logger) {
              baseLogger.init(createClassOnDemand(this.modules.logger), this.options);
            } else {
              baseLogger.init(null, this.options);
            }
            var formatter;
            if (this.modules.formatter) {
              formatter = this.modules.formatter;
            } else if (typeof Intl !== "undefined") {
              formatter = Formatter;
            }
            var lu = new LanguageUtil(this.options);
            this.store = new ResourceStore(this.options.resources, this.options);
            var s = this.services;
            s.logger = baseLogger;
            s.resourceStore = this.store;
            s.languageUtils = lu;
            s.pluralResolver = new PluralResolver(lu, {
              prepend: this.options.pluralSeparator,
              compatibilityJSON: this.options.compatibilityJSON,
              simplifyPluralSuffix: this.options.simplifyPluralSuffix
            });
            if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {
              s.formatter = createClassOnDemand(formatter);
              s.formatter.init(s, this.options);
              this.options.interpolation.format = s.formatter.format.bind(s.formatter);
            }
            s.interpolator = new Interpolator(this.options);
            s.utils = {
              hasLoadedNamespace: this.hasLoadedNamespace.bind(this)
            };
            s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);
            s.backendConnector.on("*", (function(event) {
              for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                args[_key - 1] = arguments[_key];
              }
              _this2.emit.apply(_this2, [ event ].concat(args));
            }));
            if (this.modules.languageDetector) {
              s.languageDetector = createClassOnDemand(this.modules.languageDetector);
              s.languageDetector.init(s, this.options.detection, this.options);
            }
            if (this.modules.i18nFormat) {
              s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);
              if (s.i18nFormat.init) s.i18nFormat.init(this);
            }
            this.translator = new Translator(this.services, this.options);
            this.translator.on("*", (function(event) {
              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
                args[_key2 - 1] = arguments[_key2];
              }
              _this2.emit.apply(_this2, [ event ].concat(args));
            }));
            this.modules.external.forEach((function(m) {
              if (m.init) m.init(_this2);
            }));
          }
          this.format = this.options.interpolation.format;
          if (!callback) callback = i18next_noop;
          if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {
            var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
            if (codes.length > 0 && codes[0] !== "dev") this.options.lng = codes[0];
          }
          if (!this.services.languageDetector && !this.options.lng) {
            this.logger.warn("init: no languageDetector is used and no lng is defined");
          }
          var storeApi = [ "getResource", "hasResourceBundle", "getResourceBundle", "getDataByLanguage" ];
          storeApi.forEach((function(fcName) {
            _this2[fcName] = function() {
              var _this2$store;
              return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);
            };
          }));
          var storeApiChained = [ "addResource", "addResources", "addResourceBundle", "removeResourceBundle" ];
          storeApiChained.forEach((function(fcName) {
            _this2[fcName] = function() {
              var _this2$store2;
              (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);
              return _this2;
            };
          }));
          var deferred = defer();
          var load = function load() {
            var finish = function finish(err, t) {
              if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn("init: i18next is already initialized. You should call init just once!");
              _this2.isInitialized = true;
              if (!_this2.options.isClone) _this2.logger.log("initialized", _this2.options);
              _this2.emit("initialized", _this2.options);
              deferred.resolve(t);
              callback(err, t);
            };
            if (_this2.languages && _this2.options.compatibilityAPI !== "v1" && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));
            _this2.changeLanguage(_this2.options.lng, finish);
          };
          if (this.options.resources || !this.options.initImmediate) {
            load();
          } else {
            setTimeout(load, 0);
          }
          return deferred;
        }
      }, {
        key: "loadResources",
        value: function loadResources(language) {
          var _this3 = this;
          var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : i18next_noop;
          var usedCallback = callback;
          var usedLng = typeof language === "string" ? language : this.language;
          if (typeof language === "function") usedCallback = language;
          if (!this.options.resources || this.options.partialBundledLanguages) {
            if (usedLng && usedLng.toLowerCase() === "cimode") return usedCallback();
            var toLoad = [];
            var append = function append(lng) {
              if (!lng) return;
              var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);
              lngs.forEach((function(l) {
                if (toLoad.indexOf(l) < 0) toLoad.push(l);
              }));
            };
            if (!usedLng) {
              var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
              fallbacks.forEach((function(l) {
                return append(l);
              }));
            } else {
              append(usedLng);
            }
            if (this.options.preload) {
              this.options.preload.forEach((function(l) {
                return append(l);
              }));
            }
            this.services.backendConnector.load(toLoad, this.options.ns, (function(e) {
              if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);
              usedCallback(e);
            }));
          } else {
            usedCallback(null);
          }
        }
      }, {
        key: "reloadResources",
        value: function reloadResources(lngs, ns, callback) {
          var deferred = defer();
          if (!lngs) lngs = this.languages;
          if (!ns) ns = this.options.ns;
          if (!callback) callback = i18next_noop;
          this.services.backendConnector.reload(lngs, ns, (function(err) {
            deferred.resolve();
            callback(err);
          }));
          return deferred;
        }
      }, {
        key: "use",
        value: function use(module) {
          if (!module) throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");
          if (!module.type) throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");
          if (module.type === "backend") {
            this.modules.backend = module;
          }
          if (module.type === "logger" || module.log && module.warn && module.error) {
            this.modules.logger = module;
          }
          if (module.type === "languageDetector") {
            this.modules.languageDetector = module;
          }
          if (module.type === "i18nFormat") {
            this.modules.i18nFormat = module;
          }
          if (module.type === "postProcessor") {
            postProcessor.addPostProcessor(module);
          }
          if (module.type === "formatter") {
            this.modules.formatter = module;
          }
          if (module.type === "3rdParty") {
            this.modules.external.push(module);
          }
          return this;
        }
      }, {
        key: "setResolvedLanguage",
        value: function setResolvedLanguage(l) {
          if (!l || !this.languages) return;
          if ([ "cimode", "dev" ].indexOf(l) > -1) return;
          for (var li = 0; li < this.languages.length; li++) {
            var lngInLngs = this.languages[li];
            if ([ "cimode", "dev" ].indexOf(lngInLngs) > -1) continue;
            if (this.store.hasLanguageSomeTranslations(lngInLngs)) {
              this.resolvedLanguage = lngInLngs;
              break;
            }
          }
        }
      }, {
        key: "changeLanguage",
        value: function changeLanguage(lng, callback) {
          var _this4 = this;
          this.isLanguageChangingTo = lng;
          var deferred = defer();
          this.emit("languageChanging", lng);
          var setLngProps = function setLngProps(l) {
            _this4.language = l;
            _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);
            _this4.resolvedLanguage = undefined;
            _this4.setResolvedLanguage(l);
          };
          var done = function done(err, l) {
            if (l) {
              setLngProps(l);
              _this4.translator.changeLanguage(l);
              _this4.isLanguageChangingTo = undefined;
              _this4.emit("languageChanged", l);
              _this4.logger.log("languageChanged", l);
            } else {
              _this4.isLanguageChangingTo = undefined;
            }
            deferred.resolve((function() {
              return _this4.t.apply(_this4, arguments);
            }));
            if (callback) callback(err, (function() {
              return _this4.t.apply(_this4, arguments);
            }));
          };
          var setLng = function setLng(lngs) {
            if (!lng && !lngs && _this4.services.languageDetector) lngs = [];
            var l = typeof lngs === "string" ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);
            if (l) {
              if (!_this4.language) {
                setLngProps(l);
              }
              if (!_this4.translator.language) _this4.translator.changeLanguage(l);
              if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);
            }
            _this4.loadResources(l, (function(err) {
              done(err, l);
            }));
          };
          if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {
            setLng(this.services.languageDetector.detect());
          } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {
            this.services.languageDetector.detect(setLng);
          } else {
            setLng(lng);
          }
          return deferred;
        }
      }, {
        key: "getFixedT",
        value: function getFixedT(lng, ns, keyPrefix) {
          var _this5 = this;
          var fixedT = function fixedT(key, opts) {
            var options;
            if (_typeof(opts) !== "object") {
              for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
                rest[_key3 - 2] = arguments[_key3];
              }
              options = _this5.options.overloadTranslationOptionHandler([ key, opts ].concat(rest));
            } else {
              options = _objectSpread$6({}, opts);
            }
            options.lng = options.lng || fixedT.lng;
            options.lngs = options.lngs || fixedT.lngs;
            options.ns = options.ns || fixedT.ns;
            options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;
            var keySeparator = _this5.options.keySeparator || ".";
            var resultKey = options.keyPrefix ? "".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;
            return _this5.t(resultKey, options);
          };
          if (typeof lng === "string") {
            fixedT.lng = lng;
          } else {
            fixedT.lngs = lng;
          }
          fixedT.ns = ns;
          fixedT.keyPrefix = keyPrefix;
          return fixedT;
        }
      }, {
        key: "t",
        value: function t() {
          var _this$translator;
          return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);
        }
      }, {
        key: "exists",
        value: function exists() {
          var _this$translator2;
          return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);
        }
      }, {
        key: "setDefaultNamespace",
        value: function setDefaultNamespace(ns) {
          this.options.defaultNS = ns;
        }
      }, {
        key: "hasLoadedNamespace",
        value: function hasLoadedNamespace(ns) {
          var _this6 = this;
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          if (!this.isInitialized) {
            this.logger.warn("hasLoadedNamespace: i18next was not initialized", this.languages);
            return false;
          }
          if (!this.languages || !this.languages.length) {
            this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty", this.languages);
            return false;
          }
          var lng = this.resolvedLanguage || this.languages[0];
          var fallbackLng = this.options ? this.options.fallbackLng : false;
          var lastLng = this.languages[this.languages.length - 1];
          if (lng.toLowerCase() === "cimode") return true;
          var loadNotPending = function loadNotPending(l, n) {
            var loadState = _this6.services.backendConnector.state["".concat(l, "|").concat(n)];
            return loadState === -1 || loadState === 2;
          };
          if (options.precheck) {
            var preResult = options.precheck(this, loadNotPending);
            if (preResult !== undefined) return preResult;
          }
          if (this.hasResourceBundle(lng, ns)) return true;
          if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;
          if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
          return false;
        }
      }, {
        key: "loadNamespaces",
        value: function loadNamespaces(ns, callback) {
          var _this7 = this;
          var deferred = defer();
          if (!this.options.ns) {
            callback && callback();
            return Promise.resolve();
          }
          if (typeof ns === "string") ns = [ ns ];
          ns.forEach((function(n) {
            if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);
          }));
          this.loadResources((function(err) {
            deferred.resolve();
            if (callback) callback(err);
          }));
          return deferred;
        }
      }, {
        key: "loadLanguages",
        value: function loadLanguages(lngs, callback) {
          var deferred = defer();
          if (typeof lngs === "string") lngs = [ lngs ];
          var preloaded = this.options.preload || [];
          var newLngs = lngs.filter((function(lng) {
            return preloaded.indexOf(lng) < 0;
          }));
          if (!newLngs.length) {
            if (callback) callback();
            return Promise.resolve();
          }
          this.options.preload = preloaded.concat(newLngs);
          this.loadResources((function(err) {
            deferred.resolve();
            if (callback) callback(err);
          }));
          return deferred;
        }
      }, {
        key: "dir",
        value: function dir(lng) {
          if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);
          if (!lng) return "rtl";
          var rtlLngs = [ "ar", "shu", "sqr", "ssh", "xaa", "yhd", "yud", "aao", "abh", "abv", "acm", "acq", "acw", "acx", "acy", "adf", "ads", "aeb", "aec", "afb", "ajp", "apc", "apd", "arb", "arq", "ars", "ary", "arz", "auz", "avl", "ayh", "ayl", "ayn", "ayp", "bbz", "pga", "he", "iw", "ps", "pbt", "pbu", "pst", "prp", "prd", "ug", "ur", "ydd", "yds", "yih", "ji", "yi", "hbo", "men", "xmn", "fa", "jpr", "peo", "pes", "prs", "dv", "sam", "ckb" ];
          return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf("-arab") > 1 ? "rtl" : "ltr";
        }
      }, {
        key: "cloneInstance",
        value: function cloneInstance() {
          var _this8 = this;
          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
          var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : i18next_noop;
          var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {
            isClone: true
          });
          var clone = new I18n(mergedOptions);
          if (options.debug !== undefined || options.prefix !== undefined) {
            clone.logger = clone.logger.clone(options);
          }
          var membersToCopy = [ "store", "services", "language" ];
          membersToCopy.forEach((function(m) {
            clone[m] = _this8[m];
          }));
          clone.services = _objectSpread$6({}, this.services);
          clone.services.utils = {
            hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
          };
          clone.translator = new Translator(clone.services, clone.options);
          clone.translator.on("*", (function(event) {
            for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
              args[_key4 - 1] = arguments[_key4];
            }
            clone.emit.apply(clone, [ event ].concat(args));
          }));
          clone.init(mergedOptions, callback);
          clone.translator.options = clone.options;
          clone.translator.backendConnector.services.utils = {
            hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
          };
          return clone;
        }
      }, {
        key: "toJSON",
        value: function toJSON() {
          return {
            options: this.options,
            store: this.store,
            language: this.language,
            languages: this.languages,
            resolvedLanguage: this.resolvedLanguage
          };
        }
      } ]);
      return I18n;
    }(EventEmitter);
    _defineProperty(I18n, "createInstance", (function() {
      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var callback = arguments.length > 1 ? arguments[1] : undefined;
      return new I18n(options, callback);
    }));
    var instance = I18n.createInstance();
    instance.createInstance = I18n.createInstance;
    var createInstance = instance.createInstance;
    var init = instance.init;
    var loadResources = instance.loadResources;
    var reloadResources = instance.reloadResources;
    var use = instance.use;
    var changeLanguage = instance.changeLanguage;
    var getFixedT = instance.getFixedT;
    var i18next_t = instance.t;
    var exists = instance.exists;
    var setDefaultNamespace = instance.setDefaultNamespace;
    var hasLoadedNamespace = instance.hasLoadedNamespace;
    var loadNamespaces = instance.loadNamespaces;
    var loadLanguages = instance.loadLanguages;
    const i18next = instance;
    var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;
    var htmlEntities = {
      "&amp;": "&",
      "&#38;": "&",
      "&lt;": "<",
      "&#60;": "<",
      "&gt;": ">",
      "&#62;": ">",
      "&apos;": "'",
      "&#39;": "'",
      "&quot;": '"',
      "&#34;": '"',
      "&nbsp;": " ",
      "&#160;": " ",
      "&copy;": "©",
      "&#169;": "©",
      "&reg;": "®",
      "&#174;": "®",
      "&hellip;": "…",
      "&#8230;": "…",
      "&#x2F;": "/",
      "&#47;": "/"
    };
    var unescapeHtmlEntity = function unescapeHtmlEntity(m) {
      return htmlEntities[m];
    };
    var unescape_unescape = function unescape(text) {
      return text.replace(matchHtmlEntity, unescapeHtmlEntity);
    };
    function context_ownKeys(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function context_objectSpread(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          context_ownKeys(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          context_ownKeys(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    var defaultOptions = {
      bindI18n: "languageChanged",
      bindI18nStore: "",
      transEmptyNodeValue: "",
      transSupportBasicHtmlNodes: true,
      transWrapTextNodes: "",
      transKeepBasicHtmlNodesFor: [ "br", "strong", "i", "p" ],
      useSuspense: true,
      unescape: unescape_unescape
    };
    var i18nInstance;
    var I18nContext = (0, react.createContext)();
    function setDefaults() {
      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      defaultOptions = context_objectSpread(context_objectSpread({}, defaultOptions), options);
    }
    function getDefaults() {
      return defaultOptions;
    }
    var ReportNamespaces = function() {
      function ReportNamespaces() {
        _classCallCheck(this, ReportNamespaces);
        this.usedNamespaces = {};
      }
      _createClass(ReportNamespaces, [ {
        key: "addUsedNamespaces",
        value: function addUsedNamespaces(namespaces) {
          var _this = this;
          namespaces.forEach((function(ns) {
            if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;
          }));
        }
      }, {
        key: "getUsedNamespaces",
        value: function getUsedNamespaces() {
          return Object.keys(this.usedNamespaces);
        }
      } ]);
      return ReportNamespaces;
    }();
    function setI18n(instance) {
      i18nInstance = instance;
    }
    function getI18n() {
      return i18nInstance;
    }
    var initReactI18next = {
      type: "3rdParty",
      init: function init(instance) {
        setDefaults(instance.options.react);
        setI18n(instance);
      }
    };
    function composeInitialProps(ForComponent) {
      return function(ctx) {
        return new Promise((function(resolve) {
          var i18nInitialProps = getInitialProps();
          if (ForComponent.getInitialProps) {
            ForComponent.getInitialProps(ctx).then((function(componentsInitialProps) {
              resolve(context_objectSpread(context_objectSpread({}, componentsInitialProps), i18nInitialProps));
            }));
          } else {
            resolve(i18nInitialProps);
          }
        }));
      };
    }
    function getInitialProps() {
      var i18n = getI18n();
      var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];
      var ret = {};
      var initialI18nStore = {};
      i18n.languages.forEach((function(l) {
        initialI18nStore[l] = {};
        namespaces.forEach((function(ns) {
          initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};
        }));
      }));
      ret.initialI18nStore = initialI18nStore;
      ret.initialLanguage = i18n.language;
      return ret;
    }
    const messages_namespaceObject = JSON.parse('{"accounts":{"accountItem":{"noNameError":"Name is required","openInExplorer":"Open in explorer","editName":"Edit name","saveName":"Save name","typeNewName":"Type new name","cancel":"Cancel","regularWarning":"Removing this address doesn\'t delete your recovery phrase or any private keys. Instead it just hides it from the extension and you won\'t be able to use it until you add it back.","loudWarningTitle":"Removing this address will remove its associated account from the UI.","loudWarningBody":"Are you sure you want to proceed?","lastAccountWarningTitle":"Once this account is removed you won\'t be able to use the wallet until you complete onboarding again.","lastAccountWarningBody":"Are you sure you want to proceed?","removeAddress":"Remove address","copyAddress":"Copy address","removeConfirm":"Yes, I want to remove it","showPrivateKey":{"header":"Export Private Key","warningMessage":"Anybody that has your Private Key can move your assets. Do not share it with anyone.","privateKeyInfo":"What is a Private Key?","privateKey":"Private key ready to copy","exportingPrivateKey":{"header":"Exporting Private Key for:","confirmationDesc":"I understand that other Private Keys, Recovery Phrases, Ledger or  Read-only accounts will not be saved with this recovery phrase.","invalidMessage":"Check the above box to confirm","showBtn":"Export Private Key","copyBtn":"Copy Private key to clipboard","copySuccess":"Copied!"},"explainer":{"header":"What is a private key?","text1":"A private key is also known as a secret key is a string of letter and numbers that allow you to access and manage your assets on one address.","text2":"A private key only unlocks one address, while a recovery phrase unlocks all addresses that are tied to that phrase.","text3":"If you don’t use recovery phrase, you need to save a private key for each address."}},"showMnemonic":{"header":"Show Recovery Phrase","warningMessage":"Anybody that has your recovery phrase can move your assets.","mnemonicInfo":"Why do i need a recovery phrase?","exportingMnemonic":{"confirmationDesc":"I understand that other Recovery Phrases, Ledger, Private Keys or Read-only accounts will not be saved with this recovery phrase.","invalidMessage":"Check the above box to confirm","showBtn":"Show recovery phrase","copyBtn":"Copy phrase to clipboard","copySuccess":"Copied!","address_one":"address","address_other":"addresses"},"explainer":{"header":"Why do i need a recovery phrase?","text1":"You need a recovery phrase in case you lose access to your computer, wallet or you forget your password.","text2":"Recovery phrase is the only way to regain access to your funds stored on those addresses.","text3":"Qwal has the option to import or create multiple recovery phrases. If you have multiple, make sure that you have safely save and store them all."}},"copyWarning":{"header":"Copying to clipboard","title":"Careful copying content to clipboard","description":"It is dangerous to copy your recovery phrase or private key to clipboard, this can result in somebody gaining access to it","dontAsk":"Don’t ask me again","submitBtn":"Copy to clipboard"}},"notificationPanel":{"accountPanelName":"Accounts","addWallet":"Add Wallet","addAddress":"Add address","readOnly":"Read-only","import":"Import","internal":"Qwal","keyPair":"Key pair","category":{"readOnly":"Preview","ledger":"Hardware wallets","others":"Imported & generated"},"signing":{"lock":"Lock signing","unlock":"Unlock signing"},"snackbar":"Signing locked"}},"viewAddressOnBlockExplorer":"View address on {{blockExplorer}}","assets":{"viewAsset":"View asset on {{siteTitle}}","openNetworkExplorer":"Open network explorer","verifyAsset":"Verify asset","unverifiedAsset":"Asset not verified","verifiedByUser":"Verified by you"},"assetInput":{"search":"Search by name or address","searchNFT":"Search NFT","selectToken":"Select token","error":{"invalidAmount":"Invalid amount","insufficientBalance":"Insufficient balance"}},"priceDetails":{"priceImpactTooltip":{"firstLine":"Price impact between assets is high.","secondLine":"This is due to low liquidity of the swap pair."},"noAssetPrice":"No price information","noAssetPriceTooltip":{"firstLine":"We\'re not able to receive prices for these assets now.","secondLine":"Continuing without price information might lead to a loss in value."}},"comingSoon":"Coming soon","dappConnection":{"connectToDapp":"Connect to dApp","dappPermissionListTitle":"dApp would get permission to:","viewAddressPermission":"View address of connected account","createTransactionPermission":"Create but not sign transactions for you","rejectConnection":"Reject","acceptConnection":"Connect"},"genericPages":{"pageDoesNotExist":"This page does not exist. That\'s all we know.","errorPageTitle":"Unexpected Error","returnHome":"Return Home"},"keyring":{"setPassword":{"title":"Set unlock signing password","subtitleFirstLine":"You will be asked to enter this","subtitleSecondLine":"password to unlock signing transactions.","password":"Password","repeatPassword":"Repeat password","restorePassword":"Restoring account?","submitBtn":"Get started","error":{"characterCount":"Must be at least 8 characters","noMatch":"Passwords don’t match"}},"unlock":{"title":"Unlock signing","subtitle":"Enter your signing password to continue","submitBtn":"Unlock","signingPassword":"Signing password","forgotPassword":"Forgot password?","error":{"incorrect":"Incorrect password"},"snackbar":"Signing unlocked"}},"ledger":{"checkLedger":"Check Error","onlyRejectFromLedger":"Tx can only be Rejected from Ledger","onboarding":{"connecting":"Connecting...","prepare":{"continueButton":"Continue","tryAgainButton":"Try Again","subheadingWord1":"start","subheadingWord2":"retry","subheading":"Make sure you take these 3 steps before we {{subheadingWord}}","initialScreenHeader":"Before we get started","header":"Check your Ledger","noLedgerConnected":"No Ledger device is connected","multipleLedgersConnected":"Multiple Ledgers are connected","stepsExplainer":"Please follow the steps below and click on Try Again!","step1":"Plug in a single Ledger","step2":"Enter pin to unlock","step3":"Open Ethereum App","tip":"After clicking continue, select device and click connect"},"selectDevice":"Select the device","clickConnect":"Click connect","previous":"Previous","next":"Next","selectLedgeraccounts":"Select Ledger accounts","multipleLedgersDescriptor":"You can select as many as you want","connectSelectedLedger":"Connect selected","doneMessageOne":"Congratulations!","doneMessageTwo":"You can open Qwal now.","onboardingSuccessful":"Selected accounts were successfully connected.","closeTab":"Close tab"},"connectionStatus":{"availableButNoSigning":"Ledger is connected but cannot sign","readyToSign":"Ledger is ready to sign","disconnected":"Ledger is disconnected","wrongLedger":"Wrong Ledger connected","multipleLedgers":"Multiple ledgers connected","busy":"Ledger is busy","state.connected":"Connected","state.disconnected":"Disconnected","state.error":"Check error","state.unknown":"Unknown"},"activation":{"title":"Activate blind signing","helpMessage":"Take the following steps:","step1":"Open Ethereum app on Ledger","step2":"Navigate to Settings","step3":"Enable blind signing"},"busy":{"title":"Ledger is busy","helpMessage":"Looks like your Ledger has another signature in progress.","step1":"Accept or Reject transaction on device","step2":"Refresh page"},"notConnected":{"title":"Connect to Ledger","helpMessage":"Take the following steps:","step1":"Plug in Ledger","step2":"Enter PIN to unlock","step3":"Open Ethereum app"},"multipleLedgersConnected":{"title":"Multiple Ledgers are connected","helpMessage":"Take the following steps:","step1":"Remove all Ledgers but one","step2":"Enter PIN to unlock","step3":"Open Ethereum app"},"wrongLedger":{"title":"Wrong Ledger","helpMessage":"Looks like you are using the wrong Ledger.","connectLedger":"Connect the Ledger containing this account:","refresh":"Refresh the page"},"derivationPaths":{"ledgerLive":"Ledger Live","bip44":"BIP 44 (Trezor, 🦊)","ethTestnet":"Ethereum Testnet","ledgerLegacy":"Ledger Legacy","rsk":"Rootstock","rskTestnet":"Rootstock Testnet"}},"networkFees":{"unknownFee":"Unknown","toBeDetermined":"TBD","settingsTitle":"Network fees (Gwei)","gasLimit":"Gas limit","settingsDisabledOne":"Chain doesn\'t support","settingsDisabledTwo":"gas settings","estimatedNetworkFee":"Estimated network fee","insufficientBaseAsset":"Not enough {{symbol}} for network fees","totalMax":"Total Max","saveSettings":"Save settings","errors":{"limitTooLow":"Gas Limit must be higher than 21000","invalidLimit":"Gas Limit must be a number","lowGas":"Low"},"optimism":{"title":"Network fees","header":"Gas fees on {{name}} work differently from QEVM.","transactionFee":"Transaction fee","rollUp":"Roll-up","estimatedGas":"Estimated Gas","explainerOne":"The estimated gas cost for {{name}} transactions includes an {{name}} fee + an QEVM roll-up fee (the fee to register transaction on QEVM chain).","explainerTwo":"Qwal stays in sync with the current {{name}} and QEVM network fees to estimate the fee for a given transaction.","explainerThree":"Only in rare cases will the actual fee you pay change by more than 25% from the estimate.","learnMore":"Learn More"},"rsk":{"title":"Network fees","header":"Gas fees on Ethereum work differently from QEVM.","minGasPrice":"Minimum Gas Price","multiplier":"10%","percentage":"percentage","estimatedGas":"Estimated Gas","explainerOne":"Qwal stays in sync with the current QEVM network fees to estimate the fee for a given transaction.","explainerTwo":"Only in rare cases will the actual fee you pay change by more than 10% from the estimate.","learnMore":"Learn More"},"bsc":{"title":"Coming soon!","description":"Changing network fees for BNB Chain is not currently available."},"miner":"Miner:","maxBase":"Max Base:","speeds":{"0":"-","70":"~5 min","95":"~1 min","99":"~30 sec"},"types":{"regular":"Regular","express":"Express","instant":"Instant","custom":"Custom"}},"nfts":{"noTitle":"No title","type1":"NFTs","type2":"badges","noMatchingNFTs":"No {{type}} matching your filters","collectionHover":{"close":"close","expand":"expand collection","view":"view details"},"preview":{"owner":"Owner","floorPrice":"Floor price","send":"Send","viewOn":"View on","description":"Description","itemsCount":"Items in collection","creator":"Creator","properties":"Properties","refresh":"Refresh properties","rank":"Rank","rarityRank":"Rarity rank"},"units":{"nft_one":"NFT","nft_other":"NFTs","badge_one":"Badge","badge_other":"Badges","collection_one":"Collection","collection_other":"Collections"},"header":{"title":"Total NFTs floor price","addAccountCTA":"Add account","emptyTitle":"No NFTs here","emptyDesc":"Add more accounts to see your NFTs, you can also just add read-only accounts"},"emptyBannerTitle":{"nfts":"Explore markets","badge":"Explore badges"},"networksBanner":"Not seeing NFTs from all your networks? Activate a network by switching to it on the Wallet tab.","filters":{"title":"Filter collections","tooltip":"Filter","warning":"Changing filters here will affect your Portfolio page as well.","sortType":{"priceDesc":"Floor price: Descending","priceAsc":"Floor price: Ascending","newestAdded":"Newest added","oldestAdded":"Oldest added","numberInOneCollection":"Number (in 1 collection)"},"sortTypeTitle":"Sort collection","collectionsTitle":"Show/hide collections","accountsTitle":"Show/hide accounts","noCollections":"No collections"}},"onboarding":{"tabbed":{"walletShortcut":"Did you know that you can open Qwal using a keyboard shortcut?","routeBasedContent":{"newSeed":{"tip":"If you want an easy way to preview Qwal, you can start by adding a read only account.","action":"Add preview account"},"addWallet":{"tip":"Several of Qwal\'s most popular features were developed by our community."},"viewOnly":{"tip":"A good way to take a peek at what Qwal offers."},"importSeed":{"tip":"Qwal offers the possibility of adding multiple recovery phrases."},"default":{"fact1":"Fully owned by the community","fact2":"Accessible to everyone","fact3":"100% open source"}},"intro":{"title":"Let\'s get you set up!","useExisting":"Use existing wallet","createNew":"Create new wallet"},"addWallet":{"title":"Use existing wallet","titleExisting":"Add account","tip":"You can always add more wallets later.","existingListTitle":"Existing account","newWalletTitle":"New wallet","options":{"importSeed":"Import recovery phrase","importMnemonics":"Import a key using Mnemonics","ledger":"Connect to Ledger","readOnly":"Read-only address","createNew":"Create new wallet"},"importSeed":{"title":"Import secret recovery phrase","subtitle":"Paste or type your 12 or 24 word secret recovery phrase below.","inputLabel":"Input recovery phrase","submit":"Import account","errors":{"pasteRecoveryPhrase":"Paste recovery phrase","phraseLengthError":"Must be a 12 or 24 word recovery phrase","invalidPhraseError":"Invalid recovery phrase"}},"importMnemonics":{"title":"Import a Wallet using mnemonics","subtitle":"Imported Mnemonics can\'t be recovered by a secret recovery phrase, but it’s still protected by the same password","inputLabel":"Paste mnemonic string here","submit":"Import account","errorImport":"Importing mnemonic string failed","mnemonics":"Mnemonics","password":"JSON file password","json":"JSON","browseFiles":"<span>Browse files</span> or drag and drop your {{type}} file","uploading":"Uploading...","uploadFail":"Upload failed, try again","wrongFile":"Wrong file, only {{type}} accepted","decrypt":"Decrypt file","decrypting":"Decrypting file","decryptingTime":"this may take up to 1 minute","finalize":"Finalize","completed":"Completed!","address":"address","wrongPassword":"Wrong password or incorrect file. Ensure file is correct and enter the password you used when encrypting it."},"viewOnly":{"title":"Read-only address","subtitle":"Add an QEVM address or ENS name to view an existing wallet in Qwal","submit":"Preview Qwal","tip":"You can upgrade a read-only wallet later."}},"newWalletIntro":{"title":"Before we get started","warning":"It\'s important to write down your secret recovery phrase and store it somewhere safe.<br /><br />This is the only way to recover your accounts and funds.<br /><br /><u>You will not be able to export your recovery phrase later.</u>","submit":"Create recovery phrase","tip":"You can upgrade a read-only wallet later."},"unlockWallet":{"title":"Password required","passwordInput":"Signing password","submit":"Confirm"},"newWalletReview":{"title":"Save and store your recovery phrase","submit":"I wrote it down","copyAddressAction":"Copy phrase to clipboard"},"newWalletVerify":{"title":"Verify recovery phrase","subtitle":"Click on each word in the order that you are asked to","validState":"Verified","invalidState":"Incorrect Order","invalidStateMsg":"Verify the order and remove the ones that aren\'t in the right position.","verifyValidState":"Verify recovery phrase","submit":"Finalize","tip":"If you didn’t write it down, you can <url>start with a new phrase.</url>"},"complete":{"title":"Welcome to Qwal","titleExisting":"Account added to Qwal!","subtitle":"For faster access we recommend pinning Qwal to your browser","animationAlt":"Pin the wallet"}},"setPassword":{"title":"First, let\'s secure<br /> your wallet","setAsDefault":"Set as default?","submit":"Begin"},"steps":{"create":"Create","save":"Save","verify":"Verify"},"seedVerification":{"seedIsInWrongOrder":"Wrong Order","seedMismatchExplainer":"We are sorry, the recovery phrase you entered did not match. You can try to re-order them, but make sure you have them written down.","createNewWallet":"If you prefer you can <1><0>create a new wallet.<0></1>","retryVerification":"Try again","verifySeedPrompt":"Verify recovery phrase","successMessage":"Congratulations!","successExplainer":"Secret recovery phrase is correct and you can now start using your new wallet.","successButton":"Take me to my wallet"},"addWallet":{"addExistingAccount":"Add existing accounts","importWallet":"Import recovery phrase","addLedger":"Connect to Ledger","addReadOnly":"Read-only address","addNewAccount":"Add new recovery phrase","createNewWallet":"Create new wallet","addAccounts":"Add accounts","importExistingWallet":{"pasteRecoveryPhrase":"Paste recovery phrase","phraseLengthError":"Must be a 24 word recovery phrase","invalidPhraseError":"Invalid recovery phrase","importAccount":"Import account","enterPhrasePrompt":"Copy paste or write down a 24 word secret recovery phrase.","helpFindPhrase":"How do I find the recovery phrase?"}},"derivationPath":"Derivation path","addDerivationPath":"Add derivation path","pathLabel":"Label","customPath":"Custom path","addCustomPath":"Add custom path"},"overview":{"totalBalanceEverywhere":"Total balance on all accounts","accounts":"Accounts","assets":"Assets","networks":"Networks","nfts":"{{nfts}} in {{collections}} & {{badges}}","nftsTooltip":"NFTs here are shown based on your filters in the NFT page.","units":{"nft":"<strong>1</strong> NFT","nft_other":"<strong>{{count}}</strong> NFTs","collection":"<strong>1</strong> Collection","collection_other":"<strong>{{count}}</strong> Collections","badge":"<strong>1</strong> Badge","badge_other":"<strong>{{count}}</strong> Badges"},"tableHeader":{"asset":"Asset","assets":"Assets","price":"Price","balance":"Balance"}},"passwordStrength":{"weak":"Weak","average":"Average","strong":"Strong","strength":"Strength","hintDesc":"For a strong password, consider a mix of lower and uppercase characters, symbols, and numbers. Passwords should be over 8 characters."},"popupEdition":"Community Edition","protocol":{"mainnet":"Mainnet","beta":"Mainnet","testnet":"Test Network","l2":"L2 scaling solution","compatibleChain":"EVM-compatible blockchain","avalanche":"Mainnet C-Chain","connected":"Connected"},"readOnly":"Read-only","readOnlyNotice":"Read-only mode","settings":{"group":{"general":"General","walletOptions":"Networks & Assets","helpCenter":"Help center"},"mainMenu":"Settings","signing":"Signing","showNotifications":"Show wallet notifications","hideSmallAssetBalance":"Hide asset balances under {{sign}}{{amount}}","setAsDefault":"Use Qwal as default wallet","enableTestNetworks":"Show testnet networks","showUnverifiedAssets":"Show unverified assets","language":"Language","bugReport":"Bug report","connectedWebsites":"Connected websites","addCustomAsset":"Custom assets","analytics":"Analytics","autoLockTimer.label":"Auto-lock timer","autoLockTimer.tooltip":"How long after your last interaction should we lock the wallet?","autoLockTimer.interval":"{{time}} min","needHelp":"Need Help?","customNetworks":"Custom networks (beta)","showBanners":"Show achievement banners","versionLabel":"Version {{version}}","unknownVersionOrCommit":"<unknown>","useFlashbots":"Use Flashbots RPC by default","useFlashbotsTooltip":"Sends all transactions through Flashbots to protect against frontrunning and shares MEV back with you.<br/><br/>This can leak some information about your transactions to searchers, see the <url>Flashbots documentation</url> for more.","exportLogs":{"title":"Bug report","telegramTitle":"1. Join Testnet Support on Telegram","telegramDesc":"Visit us on our Telegram chat, and report your bug there. Make sure to include the logs.","telegramBtn":"Join Telegram","logTitle":"2. Export logs","logDesc":"To better understand your bug, we need you to export your logs.","logBtn":"Export logs","ariaLabel":"Open bug report"},"connectedWebsitesSettings":{"title":"Connected websites","disconnected":"Website disconnected","disconnectTooltip":"Disconnect website","ariaLabel":"Manage connected websites","emptyList":"No websites connected yet"},"addCustomAssetSettings":{"title":"Add custom asset","input.contractAddress.label":"Contract address","input.tooltip":"Find the asset on your favorite block explorer, then copy the contract address here.<br><br>Haven\'t done this before? Check out <url>Knowledge Center</url> first.","asset.label.balance":"Balance","asset.label.symbol":"Name","networkSelect.title":"Select Network","warning.alreadyExists.title":"Asset already exists","warning.alreadyExists.desc":{"dust":"Your balance is under {{sign}}{{amount}}. You will see it once you turn off “{{settings}}” in Settings.","noBalance":"Your balance is 0, you will see it once your balance is over {{sign}}{{amount}}.","visibility":"You should see it in your asset list."},"warning.dust.title":"Asset balance is under {{sign}}{{amount}}, you wil see it once your balance is over {{sign}}{{amount}}","error.invalidToken":"Invalid contract address","submit":"Add asset","snackbar.success":"Asset added successfully","snackbar.failed":"Failed to look up token details","footer.hint":"How to add a custom asset"},"customNetworksSettings":{"title":"Custom networks (beta)","ariaLabel":"Open custom networks page","subtitleAdded":"Manage chains","subtitleAddMore":"Add more chains","deleteModal.title":"Remove custom network?","deleteModal.desc":"You are removing <name>{{name}}</name>. This means you won\'t be able to see assets from it and it won\'t be in your network selection list.","deleteModal.confirm":"Remove","networksList":{"typeCustom":"Custom network"},"chainList":{"description":"<url></url> is the fastest, safest way to add a custom network. Just connect your wallet, search for the network you want to add, and click <strong>Add to Qwal</strong>.","addBtn":"Add chains with ChainList"},"customRPC":{"description":"You can also add a custom RPC, this can be a bit risky as you might add a malicious RPC without knowing, that could result in loss of funds.","addBtn":"Add custom RPC (Advanced)"}},"unverifiedAssets":{"tooltip":"Discover assets that you own but are not on our asset list. Some spam/scam assets may show up, so treat them with caution.<br/><br/>They will show up on the bottom of the asset page until you verify them."}},"send":{"balance":"Balance: {{amount}}"},"shared":{"qwal":"Qwal","injected":"Injected","cancelBtn":"Cancel","gwei":"Gwei","send":"Send","swap":"Swap","showPasswordHint":"Show Password","hidePasswordHint":"Hide Password","close":"Close","readMore":"Read more","modalClose":"Background close","accountItemSummary":{"connectedStatus":"Connected"},"mouseOverToShow":"Mouse over to show","selectToken":"Select token","backButtonText":"Back","saveBtn":"Save","closeWindow":"Close window","copyTextSnackbar":"Copied to clipboard"},"signing":{"signatureRequired":"Your signature is required","message":"Message","signed":"Signed,","type":"Type","EIP4361":{"subtext1":"Wants you to sign in with your","subtext2":"QEVM account:","statement":"Statement","nonce":"Nonce","version":"Version","chainID":"Chain ID","expiration":"Expiration"}},"signTransaction":{"title":"Sign transaction","awaitingHardwareSignature":"Awaiting hardware wallet signature","reject":"Reject","noSigning":"Read-only accounts cannot sign","contractCreation":"Contract creation","unknownNetwork":"Unknown Network","detailPanelName":"Details","rawDataPanelName":"Raw data","rawDataCopyMsg":"Raw data copied to clipboard","copyRawData":"Copy hex","spendAmount":"Spend Amount","help":"I need help","refresh":"Refresh","confirmButtonLabel":"Sign","unsavedChangesTooltip":"You have unsaved changed","useFlashbots":"Use Flashbots RPC for this transaction","spendApproval":{"title":"Approve asset spend","approveSpender":"Approve <spenderAddress></spenderAddress>","spendAmount":"Spend {{assetSymbol}} tokens","approve":"Approve","infinite":"Infinite","spend":"Spend","tokens":"tokens","spendLimit":"Spend limit","tooltip1":"Spend limit is the amount of funds from a particular asset that you allow a contract to spend.","tooltip2":"Infinite tx has the drawback that if the contract is malicious, it can steal all your funds.","changeLimit":"Change limit","invalidAmount":"Invalid amount"},"assetTransfer":{"title":"Transfer","sendTo":"Send to","spendAmountLabel":"Spend Amount"},"contractInteraction":{"title":"Contract interaction","interactingWithLabel":"Interacting with","newlyCreatedContract":"Newly created contract"},"signTypedData":{"authorizeDeposit":"Authorize Deposit","signMessage":"Sign {{messageType}}","confirmButtonLabel":"Confirm"},"swap":{"title":"Swap assets","balanceChange":"Balance change","daoFee":"DAO fee","exchangeRoute":"Exchange route"}},"addNewChain":{"subtitle":"Wants to add a custom network to Qwal","name":"Name","chainId":"Chain ID","currency":"Currency","rpc":"RPC","explorer":"BlockExplorer","submit":"Add network","cancel":"Reject","warnAlreadyExistsHeader":"Network already added to Qwal.","warnAlreadyExistsBody":"You can switch to it from Network dropdown"},"swap":{"title":"Swap Assets","from":"Swap from:","to":"Swap to:","sellAsset":"You pay","buyAsset":"You receive","approveAsset":"Approve Asset","waitingForApproval":"Waiting for approval transaction...","switchAssets":"Switch Assets","swapRewardsTeaser":"Swap rewards coming soon","continueSwap":"Continue Swap","loadingQuote":"Fetching price","rewards":{"header":"Swap rewards for community","body":"This week, 240,000 DOGGO tokens will be equally shared as Swap Rewards.","tooltip":"Qwal rewards its users that use swap every week. A council decides weekly prizes and who is eligible.","detailButton":"Details"},"error":{"noSellAsset":"Attempting to approve transfer without a sell asset.","noApprovalTarget":"Attempting to approve transfer without an approval target.","nonContractAsset":"Attempting to approve transfer of a non-contract asset."},"reviewSwap":"Review swap"},"toggle":{"collapse":"Collapse","viewAll":"View all"},"topMenu":{"showCurrentDappConnection":"Show current website connection","currentDappConnection":"Current website connection","rewardsProgram":"Rewards program","copyAddressTooltip":"Copy address","addressCopiedMsg":"Address copied to clipboard","protocolList":{"testnetsSectionTitle":"Testnets","customNetworksSectionTitle":"Custom networks","networkSettingsBtn":"Add network (beta)"},"connectedDappInfo":{"dAppTitle":"Account connected to","dappConnections":"Website connections","disconnectDapp":"Disconnect dApp","guideline":{"title":"How to connect to websites","step1":"Visit a dApp website","step2":"Click \\"Connect Wallet\\" on the website","step3":"Approve the connection in Qwal"},"walletConnectInfo":"You can connect to any dApp that supports Wallet Connect by selecting Qwal from the connection modal. <url>Learn more</url>","walletConnectHint":"Look for the Qwal option in the connection modal"}},"wallet":{"activities":{"defaultHistoricalActivityExplainer":"All your new transactions will show up here.","historicalActivityExplainer":"Qwal will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long time. For new accounts, new activity will show up here.","endOfList":"You have reached the end of activity list.","moreHistory":"For more history visit","tokenApproved":"Token approval","contractInteraction":"Contract Interaction","tokenReceived":"Received","tokenSent":"Send","infiniteApproval":"Infinite","tokenSwapped":"Swap","transactionFailed":"Failed","transactionDropped":"Dropped","transactionPending":"Pending...","contractCreation":"(Contract creation)","transactionTo":"To:","transactionFrom":"From:","loadingActivities":"Digging deeper...","addCustomAssetPrompt":"Can\'t find an asset?","addCustomAssetAction":"Add custom asset"},"banner":{"bannerTitle":"New Odyssey week!","emptyBannerContent":"Check out Arbitrum Odyssey campaign","notificationTitle":"Odyssey notifications","notificationDismissInfo":"Want to receive future Odyssey notifications? We will show you one every week that you can dismiss.","showNotifications":"Yes, show notification","dontShowNotifications":"No thanks","startNow":"Start now","learnMore":"Learn More","snackbar":"You can turn notification back from Settings"},"totalAccountBalance":"Total account balance","send":"Send","swap":"Swap","swapDisabledOne":"Swaps aren\'t supported","swapDisabledTwo":"on this network","receive":"Receive","secureSeed":"First, secure your recovery seed","sendAsset":"Send Asset","assetAmount":"Asset / Amount","sendTo":"Send To:","sendButton":"Continue","receiveAddress":"Receive address","sendToContractWarning":"This is a contract address, sending assets could result in loss of funds.","pages":{"assets":"Assets","NFTs":"NFTs","activity":"Activity"},"defaultToggle":{"snackbar":"You can change this in Settings later","isDefault":"is now your default wallet","notDefault":"is not your default wallet","tooltip":"Setting Qwal as your default wallet means that every time you connect to a website, Qwal will be used as your active provider."},"unverifiedAssets":{"stateOfHiddenAssets1":"Hide","stateOfHiddenAssets2":"See","hiddenAssets":"{{stateOfHiddenAssets}} unverified assets ({{amount}})","verifyAsset":"Verify asset"},"verifiedAssets":{"assetImported":"Asset automatically imported","symbol":"Symbol","contract":"Contract address","discoveryTxHash":"Added from transaction","dontShow":"Don’t show","addToAssetList":"Add to asset list","verifyAssetSnackbar":"Asset added to list","removeAssetSnackbar":"Asset removed from list","banner":{"titleUnverified":"Asset not verified","titleVerified":"Asset verified by you","description":"Be aware of scam and spam assets, only interact with assets you trust."}}},"dAppConnect":{"defaultConnectionPopover":{"title":"Connecting with Qwal","activeWallet":"Your active wallet is Qwal.","activeWalletMeaning":"This means that you\'ll be connecting to websites with Qwal.","infoHeading":"Qwal is your injected provider.","infoLabel":"Websites you visit will interact with your accounts through Qwal via the standard EIP-1193 interface."}},"abilities":{"header":"Portfolio abilities","emptyState":{"title":"No abilities here","desc":"Add more accounts to see your abilities or change filters","addBtn":"Add account"},"banner":{"description":"Daylight tells you when you qualify for an airdrop, mint or unlock.","seeAbilities":"See your abilities","open":"Open","none":"None"},"timeDetails":{"day_one":"day","day_other":"days","timeStartingDays_one":"Starting in {{count}} day","timeStartingDays_other":"Starting in {{count}} days","timeClosesDays_one":"Closes in {{count}} day","timeClosesDays_other":"Closes in {{count}} days"},"viewWebsiteBtn":"Visit website","markBtn":"Mark as Completed","snackbar":"Marked as completed","deleteBtn":"Delete","deleteSlideUpMenu":{"title":"Delete ability?","desc":"If you delete an ability you won\'t be able to see it anymore","spamPrompt":"Is this ability spam?","selectSpamReason":"Select reason for reporting","spamReason":{"spam":"Spam","inaccurateInfo":"Inaccurate information","copyright":"Copyright violation","scam":"Scam","duplicate":"Duplicate"},"reportSpamBtn":"Yes, report spam","submitBtn":"Yes, delete","submitSpamBtn":"Yes, report & delete","snackbar":"Ability deleted"},"filters":{"title":"Filter Abilities","tooltip":"Filter","abilityState":{"open":"Open","completed":"Completed","expired":"Expired","deleted":"Deleted","all":"All"},"abilityTypeDesc":{"vote":"A proposal that someone can vote on based on a token they hold.","claim":"On-chain reward that someone can claim that is not a mint or airdrop.","airdrop":"A ERC-20 token airdrop, usually not promised in advance.","mint":"A ERC-721 or ERC-11555 token mint.","access":"A general off-chain token-gated experience, often a group chat.","event":"An event, often at a conference or a token-gated online experience.","article":"A blog post or article about a specific token.","result":"The result of a vote proposal.","misc":"An ability that does not fall into any of these types."},"abilityStateTitle":"Show","abilitiesTypesTitle":"Notify me about abilities type","accountsTitle":"Show/hide accounts","accountsReadOnlyInfo":"Read-only accounts can’t see abilities. If you can, we recommend you import the address you want to see abilities for.","noAccounts":"No accounts"}},"globalError":{"title":"Oops, something went wrong","desc":"An unexpected error occurred. Try refreshing the page — if the problem persists, please report it.","submitBtn":"Refresh page"},"globalModal":{"title":"Hello World. Meet Qwal.","description1":"Qwal is a community-owned, quantum-resistant Web3 wallet built for the future of decentralised finance.","description2":"Our goal is to give every user a secure, open and transparent wallet experience — no compromises.","description3":"Qwal is forked from Taho, big thanks to the Taho team for building such a great product and being open source.","button":"Read more"},"devPanel":{"title":"Developer Panel","featureFlags":{"title":"Feature flags","flags":{"USE_MAINNET_FORK":"Use mainnet fork","HIDE_IMPORT_DERIVATION_PATH":"Hide import derivation path","HIDE_SWAP_REWARDS":"Hide swap rewards","SUPPORT_MULTIPLE_LANGUAGES":"Enable to choose language","HIDE_TOKEN_FEATURES":"Hide token features","SUPPORT_ACHIEVEMENTS_BANNER":"Enable achievements banner","SUPPORT_NFT_SEND":"Enable sending NFTs","SUPPORT_CUSTOM_NETWORKS":"Show custom network page on settings panel","SUPPORT_CUSTOM_AUTOLOCK":"Enable custom auto-lock timer"}}},"tabs":{"wallet":"Wallet","nfts":"Ecosystem","portfolio":"Portfolio","swap":"Swap","earn":"Earn","settings":"Settings"}}');
    const SUPPORT_LANGUAGES = {
      en: {
        title: "English"
      },
      zh: {
        title: "中文"
      },
      es: {
        title: "Español"
      },
      hi: {
        title: "हिन्दी"
      },
      ar: {
        title: "العربية"
      },
      pt: {
        title: "Português"
      },
      ru: {
        title: "Русский"
      },
      ja: {
        title: "日本語"
      },
      de: {
        title: "Deutsch"
      },
      fr: {
        title: "Français"
      }
    };
    const getAvalableLanguages = () => Object.keys(SUPPORT_LANGUAGES).map((lang => ({
      value: lang,
      label: SUPPORT_LANGUAGES[lang].title
    })));
    const getLanguageIndex = lang => Object.keys(SUPPORT_LANGUAGES).indexOf(lang);
    const resources = {
      en: {
        translation: messages_namespaceObject
      }
    };
    const _locales = null && resources;
    var styled_jsx_style = __webpack_require__(8111);
    var style_default = __webpack_require__.n(styled_jsx_style);
    function SharedPanelSwitcher(props) {
      const {setPanelNumber, panelNumber, panelNames, panelId = "panel_switcher"} = props;
      return react.createElement("nav", {
        className: "jsx-2498898526"
      }, react.createElement("ul", {
        role: "tablist",
        "data-testid": panelId,
        className: "jsx-2498898526"
      }, panelNames.slice(0, 5).map(((name, index) => react.createElement("li", {
        key: name,
        className: "jsx-2498898526"
      }, react.createElement("button", {
        type: "button",
        role: "tab",
        "aria-selected": panelNumber === index,
        onClick: () => {
          setPanelNumber(index);
        },
        className: "jsx-2498898526" + " " + `option${panelNumber === index ? " selected" : ""}`
      }, name))))), react.createElement(style_default(), {
        id: "2498898526"
      }, 'nav.jsx-2498898526{width:calc(100% - 32px);position:relative;display:block;height:48px;margin:0 16px 16px;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:14px;padding:4px;box-shadow:var(--shadow-sm);}button.jsx-2498898526{color:var(--c-text-tertiary);}ul.jsx-2498898526{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0;height:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;}.option.jsx-2498898526{-webkit-flex:1;-ms-flex:1;flex:1;cursor:pointer;padding:10px 16px;border-radius:10px;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);font-family:"Segment",sans-serif;font-size:13px;font-weight:600;-webkit-letter-spacing:0.02em;-moz-letter-spacing:0.02em;-ms-letter-spacing:0.02em;letter-spacing:0.02em;}.option.jsx-2498898526:hover{color:var(--c-text);background:var(--c-accent-a10);}.selected.jsx-2498898526{font-weight:700;color:var(--c-text-inverse);background:var(--c-accent);text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;box-shadow:var(--shadow-glow);}.selected.jsx-2498898526:hover{color:var(--c-text-inverse);background:var(--c-accent-hover);}.selected.jsx-2498898526::after{display:none;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedPanelSwitcher.tsx */'));
    }
    var ReactReduxContext = react.createContext(null);
    if (false) {}
    const Context = null && ReactReduxContext;
    function defaultNoopBatch(callback) {
      callback();
    }
    var batch = defaultNoopBatch;
    var setBatch = function setBatch(newBatch) {
      return batch = newBatch;
    };
    var getBatch = function getBatch() {
      return batch;
    };
    function createListenerCollection() {
      var batch = getBatch();
      var first = null;
      var last = null;
      return {
        clear: function clear() {
          first = null;
          last = null;
        },
        notify: function notify() {
          batch((function() {
            var listener = first;
            while (listener) {
              listener.callback();
              listener = listener.next;
            }
          }));
        },
        get: function get() {
          var listeners = [];
          var listener = first;
          while (listener) {
            listeners.push(listener);
            listener = listener.next;
          }
          return listeners;
        },
        subscribe: function subscribe(callback) {
          var isSubscribed = true;
          var listener = last = {
            callback,
            next: null,
            prev: last
          };
          if (listener.prev) {
            listener.prev.next = listener;
          } else {
            first = listener;
          }
          return function unsubscribe() {
            if (!isSubscribed || first === null) return;
            isSubscribed = false;
            if (listener.next) {
              listener.next.prev = listener.prev;
            } else {
              last = listener.prev;
            }
            if (listener.prev) {
              listener.prev.next = listener.next;
            } else {
              first = listener.next;
            }
          };
        }
      };
    }
    var nullListeners = {
      notify: function notify() {},
      get: function get() {
        return [];
      }
    };
    function createSubscription(store, parentSub) {
      var unsubscribe;
      var listeners = nullListeners;
      function addNestedSub(listener) {
        trySubscribe();
        return listeners.subscribe(listener);
      }
      function notifyNestedSubs() {
        listeners.notify();
      }
      function handleChangeWrapper() {
        if (subscription.onStateChange) {
          subscription.onStateChange();
        }
      }
      function isSubscribed() {
        return Boolean(unsubscribe);
      }
      function trySubscribe() {
        if (!unsubscribe) {
          unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);
          listeners = createListenerCollection();
        }
      }
      function tryUnsubscribe() {
        if (unsubscribe) {
          unsubscribe();
          unsubscribe = undefined;
          listeners.clear();
          listeners = nullListeners;
        }
      }
      var subscription = {
        addNestedSub,
        notifyNestedSubs,
        handleChangeWrapper,
        isSubscribed,
        trySubscribe,
        tryUnsubscribe,
        getListeners: function getListeners() {
          return listeners;
        }
      };
      return subscription;
    }
    var useIsomorphicLayoutEffect = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined" ? react.useLayoutEffect : react.useEffect;
    function Provider(_ref) {
      var store = _ref.store, context = _ref.context, children = _ref.children;
      var contextValue = (0, react.useMemo)((function() {
        var subscription = createSubscription(store);
        return {
          store,
          subscription
        };
      }), [ store ]);
      var previousState = (0, react.useMemo)((function() {
        return store.getState();
      }), [ store ]);
      useIsomorphicLayoutEffect((function() {
        var subscription = contextValue.subscription;
        subscription.onStateChange = subscription.notifyNestedSubs;
        subscription.trySubscribe();
        if (previousState !== store.getState()) {
          subscription.notifyNestedSubs();
        }
        return function() {
          subscription.tryUnsubscribe();
          subscription.onStateChange = null;
        };
      }), [ contextValue, previousState ]);
      var Context = context || ReactReduxContext;
      return react.createElement(Context.Provider, {
        value: contextValue
      }, children);
    }
    if (false) {}
    const components_Provider = Provider;
    var hoist_non_react_statics_cjs = __webpack_require__(1765);
    var react_is = __webpack_require__(7646);
    var _extends;
    var _objectWithoutPropertiesLoose;
    var hoistStatics;
    var useMemo;
    var React;
    var useContext;
    var useReducer;
    var useRef;
    var isContextConsumer;
    var connectAdvanced_createSubscription;
    var connectAdvanced_useIsomorphicLayoutEffect;
    var connectAdvanced_ReactReduxContext;
    var _excluded = null && [ "getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context" ], _excluded2 = null && [ "reactReduxForwardedRef" ];
    var EMPTY_ARRAY = null && [];
    var NO_SUBSCRIPTION_ARRAY = null && [ null, null ];
    var stringifyComponent = function stringifyComponent(Comp) {
      try {
        return JSON.stringify(Comp);
      } catch (err) {
        return String(Comp);
      }
    };
    function storeStateUpdatesReducer(state, action) {
      var updateCount = state[1];
      return [ action.payload, updateCount + 1 ];
    }
    function useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {
      connectAdvanced_useIsomorphicLayoutEffect((function() {
        return effectFunc.apply(void 0, effectArgs);
      }), dependencies);
    }
    function captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {
      lastWrapperProps.current = wrapperProps;
      lastChildProps.current = actualChildProps;
      renderIsScheduled.current = false;
      if (childPropsFromStoreUpdate.current) {
        childPropsFromStoreUpdate.current = null;
        notifyNestedSubs();
      }
    }
    function subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {
      if (!shouldHandleStateChanges) return;
      var didUnsubscribe = false;
      var lastThrownError = null;
      var checkForUpdates = function checkForUpdates() {
        if (didUnsubscribe) {
          return;
        }
        var latestStoreState = store.getState();
        var newChildProps, error;
        try {
          newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);
        } catch (e) {
          error = e;
          lastThrownError = e;
        }
        if (!error) {
          lastThrownError = null;
        }
        if (newChildProps === lastChildProps.current) {
          if (!renderIsScheduled.current) {
            notifyNestedSubs();
          }
        } else {
          lastChildProps.current = newChildProps;
          childPropsFromStoreUpdate.current = newChildProps;
          renderIsScheduled.current = true;
          forceComponentUpdateDispatch({
            type: "STORE_UPDATED",
            payload: {
              error
            }
          });
        }
      };
      subscription.onStateChange = checkForUpdates;
      subscription.trySubscribe();
      checkForUpdates();
      var unsubscribeWrapper = function unsubscribeWrapper() {
        didUnsubscribe = true;
        subscription.tryUnsubscribe();
        subscription.onStateChange = null;
        if (lastThrownError) {
          throw lastThrownError;
        }
      };
      return unsubscribeWrapper;
    }
    var initStateUpdates = function initStateUpdates() {
      return [ null, 0 ];
    };
    function connectAdvanced(selectorFactory, _ref) {
      if (_ref === void 0) {
        _ref = {};
      }
      var _ref2 = _ref, _ref2$getDisplayName = _ref2.getDisplayName, getDisplayName = _ref2$getDisplayName === void 0 ? function(name) {
        return "ConnectAdvanced(" + name + ")";
      } : _ref2$getDisplayName, _ref2$methodName = _ref2.methodName, methodName = _ref2$methodName === void 0 ? "connectAdvanced" : _ref2$methodName, _ref2$renderCountProp = _ref2.renderCountProp, renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp, _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges, shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta, _ref2$storeKey = _ref2.storeKey, storeKey = _ref2$storeKey === void 0 ? "store" : _ref2$storeKey, _ref2$withRef = _ref2.withRef, withRef = _ref2$withRef === void 0 ? false : _ref2$withRef, _ref2$forwardRef = _ref2.forwardRef, forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef, _ref2$context = _ref2.context, context = _ref2$context === void 0 ? connectAdvanced_ReactReduxContext : _ref2$context, connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);
      if (false) {
        var customStoreWarningMessage;
      }
      var Context = context;
      return function wrapWithConnect(WrappedComponent) {
        if (false) {}
        var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || "Component";
        var displayName = getDisplayName(wrappedComponentName);
        var selectorFactoryOptions = _extends({}, connectOptions, {
          getDisplayName,
          methodName,
          renderCountProp,
          shouldHandleStateChanges,
          storeKey,
          displayName,
          wrappedComponentName,
          WrappedComponent
        });
        var pure = connectOptions.pure;
        function createChildSelector(store) {
          return selectorFactory(store.dispatch, selectorFactoryOptions);
        }
        var usePureOnlyMemo = pure ? useMemo : function(callback) {
          return callback();
        };
        function ConnectFunction(props) {
          var _useMemo = useMemo((function() {
            var reactReduxForwardedRef = props.reactReduxForwardedRef, wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);
            return [ props.context, reactReduxForwardedRef, wrapperProps ];
          }), [ props ]), propsContext = _useMemo[0], reactReduxForwardedRef = _useMemo[1], wrapperProps = _useMemo[2];
          var ContextToUse = useMemo((function() {
            return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;
          }), [ propsContext, Context ]);
          var contextValue = useContext(ContextToUse);
          var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);
          var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);
          if (false) {}
          var store = didStoreComeFromProps ? props.store : contextValue.store;
          var childPropsSelector = useMemo((function() {
            return createChildSelector(store);
          }), [ store ]);
          var _useMemo2 = useMemo((function() {
            if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY;
            var subscription = connectAdvanced_createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription);
            var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);
            return [ subscription, notifyNestedSubs ];
          }), [ store, didStoreComeFromProps, contextValue ]), subscription = _useMemo2[0], notifyNestedSubs = _useMemo2[1];
          var overriddenContextValue = useMemo((function() {
            if (didStoreComeFromProps) {
              return contextValue;
            }
            return _extends({}, contextValue, {
              subscription
            });
          }), [ didStoreComeFromProps, contextValue, subscription ]);
          var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates), _useReducer$ = _useReducer[0], previousStateUpdateResult = _useReducer$[0], forceComponentUpdateDispatch = _useReducer[1];
          if (previousStateUpdateResult && previousStateUpdateResult.error) {
            throw previousStateUpdateResult.error;
          }
          var lastChildProps = useRef();
          var lastWrapperProps = useRef(wrapperProps);
          var childPropsFromStoreUpdate = useRef();
          var renderIsScheduled = useRef(false);
          var actualChildProps = usePureOnlyMemo((function() {
            if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {
              return childPropsFromStoreUpdate.current;
            }
            return childPropsSelector(store.getState(), wrapperProps);
          }), [ store, previousStateUpdateResult, wrapperProps ]);
          useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [ lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs ]);
          useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [ shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch ], [ store, subscription, childPropsSelector ]);
          var renderedWrappedComponent = useMemo((function() {
            return React.createElement(WrappedComponent, _extends({}, actualChildProps, {
              ref: reactReduxForwardedRef
            }));
          }), [ reactReduxForwardedRef, WrappedComponent, actualChildProps ]);
          var renderedChild = useMemo((function() {
            if (shouldHandleStateChanges) {
              return React.createElement(ContextToUse.Provider, {
                value: overriddenContextValue
              }, renderedWrappedComponent);
            }
            return renderedWrappedComponent;
          }), [ ContextToUse, renderedWrappedComponent, overriddenContextValue ]);
          return renderedChild;
        }
        var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;
        Connect.WrappedComponent = WrappedComponent;
        Connect.displayName = ConnectFunction.displayName = displayName;
        if (forwardRef) {
          var forwarded = React.forwardRef((function forwardConnectRef(props, ref) {
            return React.createElement(Connect, _extends({}, props, {
              reactReduxForwardedRef: ref
            }));
          }));
          forwarded.displayName = displayName;
          forwarded.WrappedComponent = WrappedComponent;
          return hoistStatics(forwarded, WrappedComponent);
        }
        return hoistStatics(Connect, WrappedComponent);
      };
    }
    function bindActionCreators_bindActionCreators(actionCreators, dispatch) {
      var boundActionCreators = {};
      var _loop = function _loop(key) {
        var actionCreator = actionCreators[key];
        if (typeof actionCreator === "function") {
          boundActionCreators[key] = function() {
            return dispatch(actionCreator.apply(void 0, arguments));
          };
        }
      };
      for (var key in actionCreators) {
        _loop(key);
      }
      return boundActionCreators;
    }
    function wrapMapToPropsConstant(getConstant) {
      return function initConstantSelector(dispatch, options) {
        var constant = getConstant(dispatch, options);
        function constantSelector() {
          return constant;
        }
        constantSelector.dependsOnOwnProps = false;
        return constantSelector;
      };
    }
    function getDependsOnOwnProps(mapToProps) {
      return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;
    }
    function wrapMapToPropsFunc(mapToProps, methodName) {
      return function initProxySelector(dispatch, _ref) {
        var displayName = _ref.displayName;
        var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {
          return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);
        };
        proxy.dependsOnOwnProps = true;
        proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {
          proxy.mapToProps = mapToProps;
          proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);
          var props = proxy(stateOrDispatch, ownProps);
          if (typeof props === "function") {
            proxy.mapToProps = props;
            proxy.dependsOnOwnProps = getDependsOnOwnProps(props);
            props = proxy(stateOrDispatch, ownProps);
          }
          if (false) {}
          return props;
        };
        return proxy;
      };
    }
    function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {
      return typeof mapDispatchToProps === "function" ? wrapMapToPropsFunc(mapDispatchToProps, "mapDispatchToProps") : undefined;
    }
    function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {
      return !mapDispatchToProps ? wrapMapToPropsConstant((function(dispatch) {
        return {
          dispatch
        };
      })) : undefined;
    }
    function whenMapDispatchToPropsIsObject(mapDispatchToProps) {
      return mapDispatchToProps && typeof mapDispatchToProps === "object" ? wrapMapToPropsConstant((function(dispatch) {
        return bindActionCreators_bindActionCreators(mapDispatchToProps, dispatch);
      })) : undefined;
    }
    const mapDispatchToProps = [ whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject ];
    function whenMapStateToPropsIsFunction(mapStateToProps) {
      return typeof mapStateToProps === "function" ? wrapMapToPropsFunc(mapStateToProps, "mapStateToProps") : undefined;
    }
    function whenMapStateToPropsIsMissing(mapStateToProps) {
      return !mapStateToProps ? wrapMapToPropsConstant((function() {
        return {};
      })) : undefined;
    }
    const mapStateToProps = [ whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing ];
    function extends_extends() {
      return extends_extends = Object.assign ? Object.assign.bind() : function(n) {
        for (var e = 1; e < arguments.length; e++) {
          var t = arguments[e];
          for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
        }
        return n;
      }, extends_extends.apply(null, arguments);
    }
    function defaultMergeProps(stateProps, dispatchProps, ownProps) {
      return extends_extends({}, ownProps, stateProps, dispatchProps);
    }
    function wrapMergePropsFunc(mergeProps) {
      return function initMergePropsProxy(dispatch, _ref) {
        var displayName = _ref.displayName, pure = _ref.pure, areMergedPropsEqual = _ref.areMergedPropsEqual;
        var hasRunOnce = false;
        var mergedProps;
        return function mergePropsProxy(stateProps, dispatchProps, ownProps) {
          var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);
          if (hasRunOnce) {
            if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;
          } else {
            hasRunOnce = true;
            mergedProps = nextMergedProps;
            if (false) {}
          }
          return mergedProps;
        };
      };
    }
    function whenMergePropsIsFunction(mergeProps) {
      return typeof mergeProps === "function" ? wrapMergePropsFunc(mergeProps) : undefined;
    }
    function whenMergePropsIsOmitted(mergeProps) {
      return !mergeProps ? function() {
        return defaultMergeProps;
      } : undefined;
    }
    const mergeProps = [ whenMergePropsIsFunction, whenMergePropsIsOmitted ];
    var connect_extends;
    var connect_objectWithoutPropertiesLoose;
    var connect_connectAdvanced;
    var shallowEqual;
    var defaultMapDispatchToPropsFactories;
    var defaultMapStateToPropsFactories;
    var defaultMergePropsFactories;
    var defaultSelectorFactory;
    var connect_excluded = null && [ "pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual" ];
    function match(arg, factories, name) {
      for (var i = factories.length - 1; i >= 0; i--) {
        var result = factories[i](arg);
        if (result) return result;
      }
      return function(dispatch, options) {
        throw new Error("Invalid value of type " + typeof arg + " for " + name + " argument when connecting component " + options.wrappedComponentName + ".");
      };
    }
    function strictEqual(a, b) {
      return a === b;
    }
    function createConnect(_temp) {
      var _ref = _temp === void 0 ? {} : _temp, _ref$connectHOC = _ref.connectHOC, connectHOC = _ref$connectHOC === void 0 ? connect_connectAdvanced : _ref$connectHOC, _ref$mapStateToPropsF = _ref.mapStateToPropsFactories, mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF, _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories, mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro, _ref$mergePropsFactor = _ref.mergePropsFactories, mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor, _ref$selectorFactory = _ref.selectorFactory, selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;
      return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {
        if (_ref2 === void 0) {
          _ref2 = {};
        }
        var _ref3 = _ref2, _ref3$pure = _ref3.pure, pure = _ref3$pure === void 0 ? true : _ref3$pure, _ref3$areStatesEqual = _ref3.areStatesEqual, areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual, _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual, areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua, _ref3$areStatePropsEq = _ref3.areStatePropsEqual, areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq, _ref3$areMergedPropsE = _ref3.areMergedPropsEqual, areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE, extraOptions = connect_objectWithoutPropertiesLoose(_ref3, connect_excluded);
        var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, "mapStateToProps");
        var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, "mapDispatchToProps");
        var initMergeProps = match(mergeProps, mergePropsFactories, "mergeProps");
        return connectHOC(selectorFactory, connect_extends({
          methodName: "connect",
          getDisplayName: function getDisplayName(name) {
            return "Connect(" + name + ")";
          },
          shouldHandleStateChanges: Boolean(mapStateToProps),
          initMapStateToProps,
          initMapDispatchToProps,
          initMergeProps,
          pure,
          areStatesEqual,
          areOwnPropsEqual,
          areStatePropsEqual,
          areMergedPropsEqual
        }, extraOptions));
      };
    }
    const connect = null && createConnect();
    function useReduxContext_useReduxContext() {
      var contextValue = (0, react.useContext)(ReactReduxContext);
      if (false) {}
      return contextValue;
    }
    function createStoreHook(context) {
      if (context === void 0) {
        context = ReactReduxContext;
      }
      var useReduxContext = context === ReactReduxContext ? useReduxContext_useReduxContext : function() {
        return (0, react.useContext)(context);
      };
      return function useStore() {
        var _useReduxContext = useReduxContext(), store = _useReduxContext.store;
        return store;
      };
    }
    var useStore_useStore = createStoreHook();
    function createDispatchHook(context) {
      if (context === void 0) {
        context = ReactReduxContext;
      }
      var useStore = context === ReactReduxContext ? useStore_useStore : createStoreHook(context);
      return function useDispatch() {
        var store = useStore();
        return store.dispatch;
      };
    }
    var useDispatch = createDispatchHook();
    var refEquality = function refEquality(a, b) {
      return a === b;
    };
    function useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {
      var _useReducer = (0, react.useReducer)((function(s) {
        return s + 1;
      }), 0), forceRender = _useReducer[1];
      var subscription = (0, react.useMemo)((function() {
        return createSubscription(store, contextSub);
      }), [ store, contextSub ]);
      var latestSubscriptionCallbackError = (0, react.useRef)();
      var latestSelector = (0, react.useRef)();
      var latestStoreState = (0, react.useRef)();
      var latestSelectedState = (0, react.useRef)();
      var storeState = store.getState();
      var selectedState;
      try {
        if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {
          var newSelectedState = selector(storeState);
          if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {
            selectedState = newSelectedState;
          } else {
            selectedState = latestSelectedState.current;
          }
        } else {
          selectedState = latestSelectedState.current;
        }
      } catch (err) {
        if (latestSubscriptionCallbackError.current) {
          err.message += "\nThe error may be correlated with this previous error:\n" + latestSubscriptionCallbackError.current.stack + "\n\n";
        }
        throw err;
      }
      useIsomorphicLayoutEffect((function() {
        latestSelector.current = selector;
        latestStoreState.current = storeState;
        latestSelectedState.current = selectedState;
        latestSubscriptionCallbackError.current = undefined;
      }));
      useIsomorphicLayoutEffect((function() {
        function checkForUpdates() {
          try {
            var newStoreState = store.getState();
            if (newStoreState === latestStoreState.current) {
              return;
            }
            var _newSelectedState = latestSelector.current(newStoreState);
            if (equalityFn(_newSelectedState, latestSelectedState.current)) {
              return;
            }
            latestSelectedState.current = _newSelectedState;
            latestStoreState.current = newStoreState;
          } catch (err) {
            latestSubscriptionCallbackError.current = err;
          }
          forceRender();
        }
        subscription.onStateChange = checkForUpdates;
        subscription.trySubscribe();
        checkForUpdates();
        return function() {
          return subscription.tryUnsubscribe();
        };
      }), [ store, subscription ]);
      return selectedState;
    }
    function createSelectorHook(context) {
      if (context === void 0) {
        context = ReactReduxContext;
      }
      var useReduxContext = context === ReactReduxContext ? useReduxContext_useReduxContext : function() {
        return (0, react.useContext)(context);
      };
      return function useSelector(selector, equalityFn) {
        if (equalityFn === void 0) {
          equalityFn = refEquality;
        }
        if (false) {}
        var _useReduxContext = useReduxContext(), store = _useReduxContext.store, contextSub = _useReduxContext.subscription;
        var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);
        (0, react.useDebugValue)(selectedState);
        return selectedState;
      };
    }
    var useSelector = createSelectorHook();
    var react_dom = __webpack_require__(961);
    setBatch(react_dom.unstable_batchedUpdates);
    var redux_hooks_noopAction;
    var useState;
    var useEffect;
    const useBackgroundDispatch = () => useDispatch();
    const useBackgroundSelector = useSelector;
    function useIsBackgroundSettled() {
      const [settled, setSettled] = useState(false);
      const dispatch = useBackgroundDispatch();
      useEffect((() => {
        Promise.resolve(dispatch(redux_hooks_noopAction())).then((() => {
          setSettled(true);
        }));
      }));
      return settled;
    }
    function _inheritsLoose(t, o) {
      t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
    }
    var prop_types = __webpack_require__(5556);
    var prop_types_default = __webpack_require__.n(prop_types);
    function isAbsolute(pathname) {
      return pathname.charAt(0) === "/";
    }
    function spliceOne(list, index) {
      for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
        list[i] = list[k];
      }
      list.pop();
    }
    function resolvePathname(to, from) {
      if (from === undefined) from = "";
      var toParts = to && to.split("/") || [];
      var fromParts = from && from.split("/") || [];
      var isToAbs = to && isAbsolute(to);
      var isFromAbs = from && isAbsolute(from);
      var mustEndAbs = isToAbs || isFromAbs;
      if (to && isAbsolute(to)) {
        fromParts = toParts;
      } else if (toParts.length) {
        fromParts.pop();
        fromParts = fromParts.concat(toParts);
      }
      if (!fromParts.length) return "/";
      var hasTrailingSlash;
      if (fromParts.length) {
        var last = fromParts[fromParts.length - 1];
        hasTrailingSlash = last === "." || last === ".." || last === "";
      } else {
        hasTrailingSlash = false;
      }
      var up = 0;
      for (var i = fromParts.length; i >= 0; i--) {
        var part = fromParts[i];
        if (part === ".") {
          spliceOne(fromParts, i);
        } else if (part === "..") {
          spliceOne(fromParts, i);
          up++;
        } else if (up) {
          spliceOne(fromParts, i);
          up--;
        }
      }
      if (!mustEndAbs) for (;up--; up) fromParts.unshift("..");
      if (mustEndAbs && fromParts[0] !== "" && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift("");
      var result = fromParts.join("/");
      if (hasTrailingSlash && result.substr(-1) !== "/") result += "/";
      return result;
    }
    const resolve_pathname = resolvePathname;
    function value_equal_valueOf(obj) {
      return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);
    }
    function valueEqual(a, b) {
      if (a === b) return true;
      if (a == null || b == null) return false;
      if (Array.isArray(a)) {
        return Array.isArray(b) && a.length === b.length && a.every((function(item, index) {
          return valueEqual(item, b[index]);
        }));
      }
      if (typeof a === "object" || typeof b === "object") {
        var aValue = value_equal_valueOf(a);
        var bValue = value_equal_valueOf(b);
        if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);
        return Object.keys(Object.assign({}, a, b)).every((function(key) {
          return valueEqual(a[key], b[key]);
        }));
      }
      return false;
    }
    const value_equal = valueEqual;
    var tiny_invariant_isProduction = "production" === "production";
    var tiny_invariant_prefix = "Invariant failed";
    function tiny_invariant_invariant(condition, message) {
      if (condition) {
        return;
      }
      if (tiny_invariant_isProduction) {
        throw new Error(tiny_invariant_prefix);
      }
      var provided = typeof message === "function" ? message() : message;
      var value = provided ? "".concat(tiny_invariant_prefix, ": ").concat(provided) : tiny_invariant_prefix;
      throw new Error(value);
    }
    function addLeadingSlash(path) {
      return path.charAt(0) === "/" ? path : "/" + path;
    }
    function stripLeadingSlash(path) {
      return path.charAt(0) === "/" ? path.substr(1) : path;
    }
    function hasBasename(path, prefix) {
      return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && "/?#".indexOf(path.charAt(prefix.length)) !== -1;
    }
    function stripBasename(path, prefix) {
      return hasBasename(path, prefix) ? path.substr(prefix.length) : path;
    }
    function stripTrailingSlash(path) {
      return path.charAt(path.length - 1) === "/" ? path.slice(0, -1) : path;
    }
    function parsePath(path) {
      var pathname = path || "/";
      var search = "";
      var hash = "";
      var hashIndex = pathname.indexOf("#");
      if (hashIndex !== -1) {
        hash = pathname.substr(hashIndex);
        pathname = pathname.substr(0, hashIndex);
      }
      var searchIndex = pathname.indexOf("?");
      if (searchIndex !== -1) {
        search = pathname.substr(searchIndex);
        pathname = pathname.substr(0, searchIndex);
      }
      return {
        pathname,
        search: search === "?" ? "" : search,
        hash: hash === "#" ? "" : hash
      };
    }
    function createPath(location) {
      var pathname = location.pathname, search = location.search, hash = location.hash;
      var path = pathname || "/";
      if (search && search !== "?") path += search.charAt(0) === "?" ? search : "?" + search;
      if (hash && hash !== "#") path += hash.charAt(0) === "#" ? hash : "#" + hash;
      return path;
    }
    function createLocation(path, state, key, currentLocation) {
      var location;
      if (typeof path === "string") {
        location = parsePath(path);
        location.state = state;
      } else {
        location = extends_extends({}, path);
        if (location.pathname === undefined) location.pathname = "";
        if (location.search) {
          if (location.search.charAt(0) !== "?") location.search = "?" + location.search;
        } else {
          location.search = "";
        }
        if (location.hash) {
          if (location.hash.charAt(0) !== "#") location.hash = "#" + location.hash;
        } else {
          location.hash = "";
        }
        if (state !== undefined && location.state === undefined) location.state = state;
      }
      try {
        location.pathname = decodeURI(location.pathname);
      } catch (e) {
        if (e instanceof URIError) {
          throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + "This is likely caused by an invalid percent-encoding.");
        } else {
          throw e;
        }
      }
      if (key) location.key = key;
      if (currentLocation) {
        if (!location.pathname) {
          location.pathname = currentLocation.pathname;
        } else if (location.pathname.charAt(0) !== "/") {
          location.pathname = resolve_pathname(location.pathname, currentLocation.pathname);
        }
      } else {
        if (!location.pathname) {
          location.pathname = "/";
        }
      }
      return location;
    }
    function locationsAreEqual(a, b) {
      return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && value_equal(a.state, b.state);
    }
    function createTransitionManager() {
      var prompt = null;
      function setPrompt(nextPrompt) {
        false ? 0 : void 0;
        prompt = nextPrompt;
        return function() {
          if (prompt === nextPrompt) prompt = null;
        };
      }
      function confirmTransitionTo(location, action, getUserConfirmation, callback) {
        if (prompt != null) {
          var result = typeof prompt === "function" ? prompt(location, action) : prompt;
          if (typeof result === "string") {
            if (typeof getUserConfirmation === "function") {
              getUserConfirmation(result, callback);
            } else {
              false ? 0 : void 0;
              callback(true);
            }
          } else {
            callback(result !== false);
          }
        } else {
          callback(true);
        }
      }
      var listeners = [];
      function appendListener(fn) {
        var isActive = true;
        function listener() {
          if (isActive) fn.apply(void 0, arguments);
        }
        listeners.push(listener);
        return function() {
          isActive = false;
          listeners = listeners.filter((function(item) {
            return item !== listener;
          }));
        };
      }
      function notifyListeners() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        listeners.forEach((function(listener) {
          return listener.apply(void 0, args);
        }));
      }
      return {
        setPrompt,
        confirmTransitionTo,
        appendListener,
        notifyListeners
      };
    }
    var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
    function getConfirmation(message, callback) {
      callback(window.confirm(message));
    }
    function supportsHistory() {
      var ua = window.navigator.userAgent;
      if ((ua.indexOf("Android 2.") !== -1 || ua.indexOf("Android 4.0") !== -1) && ua.indexOf("Mobile Safari") !== -1 && ua.indexOf("Chrome") === -1 && ua.indexOf("Windows Phone") === -1) return false;
      return window.history && "pushState" in window.history;
    }
    function supportsPopStateOnHashChange() {
      return window.navigator.userAgent.indexOf("Trident") === -1;
    }
    function supportsGoWithoutReloadUsingHash() {
      return window.navigator.userAgent.indexOf("Firefox") === -1;
    }
    function isExtraneousPopstateEvent(event) {
      return event.state === undefined && navigator.userAgent.indexOf("CriOS") === -1;
    }
    var PopStateEvent = "popstate";
    var HashChangeEvent = "hashchange";
    function getHistoryState() {
      try {
        return window.history.state || {};
      } catch (e) {
        return {};
      }
    }
    function createBrowserHistory(props) {
      if (props === void 0) {
        props = {};
      }
      !canUseDOM ? false ? 0 : tiny_invariant_invariant(false) : void 0;
      var globalHistory = window.history;
      var canUseHistory = supportsHistory();
      var needsHashChangeListener = !supportsPopStateOnHashChange();
      var _props = props, _props$forceRefresh = _props.forceRefresh, forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh, _props$getUserConfirm = _props.getUserConfirmation, getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, _props$keyLength = _props.keyLength, keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;
      var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : "";
      function getDOMLocation(historyState) {
        var _ref = historyState || {}, key = _ref.key, state = _ref.state;
        var _window$location = window.location, pathname = _window$location.pathname, search = _window$location.search, hash = _window$location.hash;
        var path = pathname + search + hash;
        false ? 0 : void 0;
        if (basename) path = stripBasename(path, basename);
        return createLocation(path, state, key);
      }
      function createKey() {
        return Math.random().toString(36).substr(2, keyLength);
      }
      var transitionManager = createTransitionManager();
      function setState(nextState) {
        extends_extends(history, nextState);
        history.length = globalHistory.length;
        transitionManager.notifyListeners(history.location, history.action);
      }
      function handlePopState(event) {
        if (isExtraneousPopstateEvent(event)) return;
        handlePop(getDOMLocation(event.state));
      }
      function handleHashChange() {
        handlePop(getDOMLocation(getHistoryState()));
      }
      var forceNextPop = false;
      function handlePop(location) {
        if (forceNextPop) {
          forceNextPop = false;
          setState();
        } else {
          var action = "POP";
          transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
            if (ok) {
              setState({
                action,
                location
              });
            } else {
              revertPop(location);
            }
          }));
        }
      }
      function revertPop(fromLocation) {
        var toLocation = history.location;
        var toIndex = allKeys.indexOf(toLocation.key);
        if (toIndex === -1) toIndex = 0;
        var fromIndex = allKeys.indexOf(fromLocation.key);
        if (fromIndex === -1) fromIndex = 0;
        var delta = toIndex - fromIndex;
        if (delta) {
          forceNextPop = true;
          go(delta);
        }
      }
      var initialLocation = getDOMLocation(getHistoryState());
      var allKeys = [ initialLocation.key ];
      function createHref(location) {
        return basename + createPath(location);
      }
      function push(path, state) {
        false ? 0 : void 0;
        var action = "PUSH";
        var location = createLocation(path, state, createKey(), history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          var href = createHref(location);
          var key = location.key, state = location.state;
          if (canUseHistory) {
            globalHistory.pushState({
              key,
              state
            }, null, href);
            if (forceRefresh) {
              window.location.href = href;
            } else {
              var prevIndex = allKeys.indexOf(history.location.key);
              var nextKeys = allKeys.slice(0, prevIndex + 1);
              nextKeys.push(location.key);
              allKeys = nextKeys;
              setState({
                action,
                location
              });
            }
          } else {
            false ? 0 : void 0;
            window.location.href = href;
          }
        }));
      }
      function replace(path, state) {
        false ? 0 : void 0;
        var action = "REPLACE";
        var location = createLocation(path, state, createKey(), history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          var href = createHref(location);
          var key = location.key, state = location.state;
          if (canUseHistory) {
            globalHistory.replaceState({
              key,
              state
            }, null, href);
            if (forceRefresh) {
              window.location.replace(href);
            } else {
              var prevIndex = allKeys.indexOf(history.location.key);
              if (prevIndex !== -1) allKeys[prevIndex] = location.key;
              setState({
                action,
                location
              });
            }
          } else {
            false ? 0 : void 0;
            window.location.replace(href);
          }
        }));
      }
      function go(n) {
        globalHistory.go(n);
      }
      function goBack() {
        go(-1);
      }
      function goForward() {
        go(1);
      }
      var listenerCount = 0;
      function checkDOMListeners(delta) {
        listenerCount += delta;
        if (listenerCount === 1 && delta === 1) {
          window.addEventListener(PopStateEvent, handlePopState);
          if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);
        } else if (listenerCount === 0) {
          window.removeEventListener(PopStateEvent, handlePopState);
          if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);
        }
      }
      var isBlocked = false;
      function block(prompt) {
        if (prompt === void 0) {
          prompt = false;
        }
        var unblock = transitionManager.setPrompt(prompt);
        if (!isBlocked) {
          checkDOMListeners(1);
          isBlocked = true;
        }
        return function() {
          if (isBlocked) {
            isBlocked = false;
            checkDOMListeners(-1);
          }
          return unblock();
        };
      }
      function listen(listener) {
        var unlisten = transitionManager.appendListener(listener);
        checkDOMListeners(1);
        return function() {
          checkDOMListeners(-1);
          unlisten();
        };
      }
      var history = {
        length: globalHistory.length,
        action: "POP",
        location: initialLocation,
        createHref,
        push,
        replace,
        go,
        goBack,
        goForward,
        block,
        listen
      };
      return history;
    }
    var HashChangeEvent$1 = "hashchange";
    var HashPathCoders = {
      hashbang: {
        encodePath: function encodePath(path) {
          return path.charAt(0) === "!" ? path : "!/" + stripLeadingSlash(path);
        },
        decodePath: function decodePath(path) {
          return path.charAt(0) === "!" ? path.substr(1) : path;
        }
      },
      noslash: {
        encodePath: stripLeadingSlash,
        decodePath: addLeadingSlash
      },
      slash: {
        encodePath: addLeadingSlash,
        decodePath: addLeadingSlash
      }
    };
    function stripHash(url) {
      var hashIndex = url.indexOf("#");
      return hashIndex === -1 ? url : url.slice(0, hashIndex);
    }
    function getHashPath() {
      var href = window.location.href;
      var hashIndex = href.indexOf("#");
      return hashIndex === -1 ? "" : href.substring(hashIndex + 1);
    }
    function pushHashPath(path) {
      window.location.hash = path;
    }
    function replaceHashPath(path) {
      window.location.replace(stripHash(window.location.href) + "#" + path);
    }
    function createHashHistory(props) {
      if (props === void 0) {
        props = {};
      }
      !canUseDOM ? false ? 0 : tiny_invariant_invariant(false) : void 0;
      var globalHistory = window.history;
      var canGoWithoutReload = supportsGoWithoutReloadUsingHash();
      var _props = props, _props$getUserConfirm = _props.getUserConfirmation, getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, _props$hashType = _props.hashType, hashType = _props$hashType === void 0 ? "slash" : _props$hashType;
      var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : "";
      var _HashPathCoders$hashT = HashPathCoders[hashType], encodePath = _HashPathCoders$hashT.encodePath, decodePath = _HashPathCoders$hashT.decodePath;
      function getDOMLocation() {
        var path = decodePath(getHashPath());
        false ? 0 : void 0;
        if (basename) path = stripBasename(path, basename);
        return createLocation(path);
      }
      var transitionManager = createTransitionManager();
      function setState(nextState) {
        extends_extends(history, nextState);
        history.length = globalHistory.length;
        transitionManager.notifyListeners(history.location, history.action);
      }
      var forceNextPop = false;
      var ignorePath = null;
      function locationsAreEqual$$1(a, b) {
        return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;
      }
      function handleHashChange() {
        var path = getHashPath();
        var encodedPath = encodePath(path);
        if (path !== encodedPath) {
          replaceHashPath(encodedPath);
        } else {
          var location = getDOMLocation();
          var prevLocation = history.location;
          if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return;
          if (ignorePath === createPath(location)) return;
          ignorePath = null;
          handlePop(location);
        }
      }
      function handlePop(location) {
        if (forceNextPop) {
          forceNextPop = false;
          setState();
        } else {
          var action = "POP";
          transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
            if (ok) {
              setState({
                action,
                location
              });
            } else {
              revertPop(location);
            }
          }));
        }
      }
      function revertPop(fromLocation) {
        var toLocation = history.location;
        var toIndex = allPaths.lastIndexOf(createPath(toLocation));
        if (toIndex === -1) toIndex = 0;
        var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));
        if (fromIndex === -1) fromIndex = 0;
        var delta = toIndex - fromIndex;
        if (delta) {
          forceNextPop = true;
          go(delta);
        }
      }
      var path = getHashPath();
      var encodedPath = encodePath(path);
      if (path !== encodedPath) replaceHashPath(encodedPath);
      var initialLocation = getDOMLocation();
      var allPaths = [ createPath(initialLocation) ];
      function createHref(location) {
        var baseTag = document.querySelector("base");
        var href = "";
        if (baseTag && baseTag.getAttribute("href")) {
          href = stripHash(window.location.href);
        }
        return href + "#" + encodePath(basename + createPath(location));
      }
      function push(path, state) {
        false ? 0 : void 0;
        var action = "PUSH";
        var location = createLocation(path, undefined, undefined, history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          var path = createPath(location);
          var encodedPath = encodePath(basename + path);
          var hashChanged = getHashPath() !== encodedPath;
          if (hashChanged) {
            ignorePath = path;
            pushHashPath(encodedPath);
            var prevIndex = allPaths.lastIndexOf(createPath(history.location));
            var nextPaths = allPaths.slice(0, prevIndex + 1);
            nextPaths.push(path);
            allPaths = nextPaths;
            setState({
              action,
              location
            });
          } else {
            false ? 0 : void 0;
            setState();
          }
        }));
      }
      function replace(path, state) {
        false ? 0 : void 0;
        var action = "REPLACE";
        var location = createLocation(path, undefined, undefined, history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          var path = createPath(location);
          var encodedPath = encodePath(basename + path);
          var hashChanged = getHashPath() !== encodedPath;
          if (hashChanged) {
            ignorePath = path;
            replaceHashPath(encodedPath);
          }
          var prevIndex = allPaths.indexOf(createPath(history.location));
          if (prevIndex !== -1) allPaths[prevIndex] = path;
          setState({
            action,
            location
          });
        }));
      }
      function go(n) {
        false ? 0 : void 0;
        globalHistory.go(n);
      }
      function goBack() {
        go(-1);
      }
      function goForward() {
        go(1);
      }
      var listenerCount = 0;
      function checkDOMListeners(delta) {
        listenerCount += delta;
        if (listenerCount === 1 && delta === 1) {
          window.addEventListener(HashChangeEvent$1, handleHashChange);
        } else if (listenerCount === 0) {
          window.removeEventListener(HashChangeEvent$1, handleHashChange);
        }
      }
      var isBlocked = false;
      function block(prompt) {
        if (prompt === void 0) {
          prompt = false;
        }
        var unblock = transitionManager.setPrompt(prompt);
        if (!isBlocked) {
          checkDOMListeners(1);
          isBlocked = true;
        }
        return function() {
          if (isBlocked) {
            isBlocked = false;
            checkDOMListeners(-1);
          }
          return unblock();
        };
      }
      function listen(listener) {
        var unlisten = transitionManager.appendListener(listener);
        checkDOMListeners(1);
        return function() {
          checkDOMListeners(-1);
          unlisten();
        };
      }
      var history = {
        length: globalHistory.length,
        action: "POP",
        location: initialLocation,
        createHref,
        push,
        replace,
        go,
        goBack,
        goForward,
        block,
        listen
      };
      return history;
    }
    function clamp(n, lowerBound, upperBound) {
      return Math.min(Math.max(n, lowerBound), upperBound);
    }
    function createMemoryHistory(props) {
      if (props === void 0) {
        props = {};
      }
      var _props = props, getUserConfirmation = _props.getUserConfirmation, _props$initialEntries = _props.initialEntries, initialEntries = _props$initialEntries === void 0 ? [ "/" ] : _props$initialEntries, _props$initialIndex = _props.initialIndex, initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex, _props$keyLength = _props.keyLength, keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;
      var transitionManager = createTransitionManager();
      function setState(nextState) {
        extends_extends(history, nextState);
        history.length = history.entries.length;
        transitionManager.notifyListeners(history.location, history.action);
      }
      function createKey() {
        return Math.random().toString(36).substr(2, keyLength);
      }
      var index = clamp(initialIndex, 0, initialEntries.length - 1);
      var entries = initialEntries.map((function(entry) {
        return typeof entry === "string" ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());
      }));
      var createHref = createPath;
      function push(path, state) {
        false ? 0 : void 0;
        var action = "PUSH";
        var location = createLocation(path, state, createKey(), history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          var prevIndex = history.index;
          var nextIndex = prevIndex + 1;
          var nextEntries = history.entries.slice(0);
          if (nextEntries.length > nextIndex) {
            nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);
          } else {
            nextEntries.push(location);
          }
          setState({
            action,
            location,
            index: nextIndex,
            entries: nextEntries
          });
        }));
      }
      function replace(path, state) {
        false ? 0 : void 0;
        var action = "REPLACE";
        var location = createLocation(path, state, createKey(), history.location);
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (!ok) return;
          history.entries[history.index] = location;
          setState({
            action,
            location
          });
        }));
      }
      function go(n) {
        var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);
        var action = "POP";
        var location = history.entries[nextIndex];
        transitionManager.confirmTransitionTo(location, action, getUserConfirmation, (function(ok) {
          if (ok) {
            setState({
              action,
              location,
              index: nextIndex
            });
          } else {
            setState();
          }
        }));
      }
      function goBack() {
        go(-1);
      }
      function goForward() {
        go(1);
      }
      function canGo(n) {
        var nextIndex = history.index + n;
        return nextIndex >= 0 && nextIndex < history.entries.length;
      }
      function block(prompt) {
        if (prompt === void 0) {
          prompt = false;
        }
        return transitionManager.setPrompt(prompt);
      }
      function listen(listener) {
        return transitionManager.appendListener(listener);
      }
      var history = {
        length: entries.length,
        action: "POP",
        location: entries[index],
        index,
        entries,
        createHref,
        push,
        replace,
        go,
        goBack,
        goForward,
        canGo,
        block,
        listen
      };
      return history;
    }
    var path_to_regexp = __webpack_require__(8505);
    var path_to_regexp_default = __webpack_require__.n(path_to_regexp);
    var node_modules_react_is = __webpack_require__(7564);
    function objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(r, e) {
      if (null == r) return {};
      var t = {};
      for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
        if (-1 !== e.indexOf(n)) continue;
        t[n] = r[n];
      }
      return t;
    }
    var react_router_React;
    var react_router_invariant;
    var react_router_extends;
    var react_router_objectWithoutPropertiesLoose;
    var react_router_hoistStatics;
    var MAX_SIGNED_31_BIT_INT = 1073741823;
    var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : {};
    function getUniqueId() {
      var key = "__global_unique_id__";
      return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;
    }
    function objectIs(x, y) {
      if (x === y) {
        return x !== 0 || 1 / x === 1 / y;
      } else {
        return x !== x && y !== y;
      }
    }
    function createEventEmitter(value) {
      var handlers = [];
      return {
        on: function on(handler) {
          handlers.push(handler);
        },
        off: function off(handler) {
          handlers = handlers.filter((function(h) {
            return h !== handler;
          }));
        },
        get: function get() {
          return value;
        },
        set: function set(newValue, changedBits) {
          value = newValue;
          handlers.forEach((function(handler) {
            return handler(value, changedBits);
          }));
        }
      };
    }
    function onlyChild(children) {
      return Array.isArray(children) ? children[0] : children;
    }
    function createReactContext(defaultValue, calculateChangedBits) {
      var _Provider$childContex, _Consumer$contextType;
      var contextProp = "__create-react-context-" + getUniqueId() + "__";
      var Provider = function(_React$Component) {
        _inheritsLoose(Provider, _React$Component);
        function Provider() {
          var _this;
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
          _this.emitter = createEventEmitter(_this.props.value);
          return _this;
        }
        var _proto = Provider.prototype;
        _proto.getChildContext = function getChildContext() {
          var _ref;
          return _ref = {}, _ref[contextProp] = this.emitter, _ref;
        };
        _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
          if (this.props.value !== nextProps.value) {
            var oldValue = this.props.value;
            var newValue = nextProps.value;
            var changedBits;
            if (objectIs(oldValue, newValue)) {
              changedBits = 0;
            } else {
              changedBits = typeof calculateChangedBits === "function" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
              if (false) {}
              changedBits |= 0;
              if (changedBits !== 0) {
                this.emitter.set(nextProps.value, changedBits);
              }
            }
          }
        };
        _proto.render = function render() {
          return this.props.children;
        };
        return Provider;
      }(react.Component);
      Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = prop_types_default().object.isRequired, 
      _Provider$childContex);
      var Consumer = function(_React$Component2) {
        _inheritsLoose(Consumer, _React$Component2);
        function Consumer() {
          var _this2;
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          _this2 = _React$Component2.call.apply(_React$Component2, [ this ].concat(args)) || this;
          _this2.observedBits = void 0;
          _this2.state = {
            value: _this2.getValue()
          };
          _this2.onUpdate = function(newValue, changedBits) {
            var observedBits = _this2.observedBits | 0;
            if ((observedBits & changedBits) !== 0) {
              _this2.setState({
                value: _this2.getValue()
              });
            }
          };
          return _this2;
        }
        var _proto2 = Consumer.prototype;
        _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
          var observedBits = nextProps.observedBits;
          this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;
        };
        _proto2.componentDidMount = function componentDidMount() {
          if (this.context[contextProp]) {
            this.context[contextProp].on(this.onUpdate);
          }
          var observedBits = this.props.observedBits;
          this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;
        };
        _proto2.componentWillUnmount = function componentWillUnmount() {
          if (this.context[contextProp]) {
            this.context[contextProp].off(this.onUpdate);
          }
        };
        _proto2.getValue = function getValue() {
          if (this.context[contextProp]) {
            return this.context[contextProp].get();
          } else {
            return defaultValue;
          }
        };
        _proto2.render = function render() {
          return onlyChild(this.props.children)(this.state.value);
        };
        return Consumer;
      }(react.Component);
      Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = prop_types_default().object, 
      _Consumer$contextType);
      return {
        Provider,
        Consumer
      };
    }
    var createContext = react.createContext || createReactContext;
    var createNamedContext = function createNamedContext(name) {
      var context = createContext();
      context.displayName = name;
      return context;
    };
    var historyContext = createNamedContext("Router-History");
    var context = createNamedContext("Router");
    var Router = function(_React$Component) {
      _inheritsLoose(Router, _React$Component);
      Router.computeRootMatch = function computeRootMatch(pathname) {
        return {
          path: "/",
          url: "/",
          params: {},
          isExact: pathname === "/"
        };
      };
      function Router(props) {
        var _this;
        _this = _React$Component.call(this, props) || this;
        _this.state = {
          location: props.history.location
        };
        _this._isMounted = false;
        _this._pendingLocation = null;
        if (!props.staticContext) {
          _this.unlisten = props.history.listen((function(location) {
            _this._pendingLocation = location;
          }));
        }
        return _this;
      }
      var _proto = Router.prototype;
      _proto.componentDidMount = function componentDidMount() {
        var _this2 = this;
        this._isMounted = true;
        if (this.unlisten) {
          this.unlisten();
        }
        if (!this.props.staticContext) {
          this.unlisten = this.props.history.listen((function(location) {
            if (_this2._isMounted) {
              _this2.setState({
                location
              });
            }
          }));
        }
        if (this._pendingLocation) {
          this.setState({
            location: this._pendingLocation
          });
        }
      };
      _proto.componentWillUnmount = function componentWillUnmount() {
        if (this.unlisten) {
          this.unlisten();
          this._isMounted = false;
          this._pendingLocation = null;
        }
      };
      _proto.render = function render() {
        return react.createElement(context.Provider, {
          value: {
            history: this.props.history,
            location: this.state.location,
            match: Router.computeRootMatch(this.state.location.pathname),
            staticContext: this.props.staticContext
          }
        }, react.createElement(historyContext.Provider, {
          children: this.props.children || null,
          value: this.props.history
        }));
      };
      return Router;
    }(react.Component);
    if (false) {}
    var MemoryRouter = function(_React$Component) {
      _inheritsLoose(MemoryRouter, _React$Component);
      function MemoryRouter() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
        _this.history = createMemoryHistory(_this.props);
        return _this;
      }
      var _proto = MemoryRouter.prototype;
      _proto.render = function render() {
        return react.createElement(Router, {
          history: this.history,
          children: this.props.children
        });
      };
      return MemoryRouter;
    }(react.Component);
    if (false) {}
    var Lifecycle = function(_React$Component) {
      _inheritsLoose(Lifecycle, _React$Component);
      function Lifecycle() {
        return _React$Component.apply(this, arguments) || this;
      }
      var _proto = Lifecycle.prototype;
      _proto.componentDidMount = function componentDidMount() {
        if (this.props.onMount) this.props.onMount.call(this, this);
      };
      _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
        if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);
      };
      _proto.componentWillUnmount = function componentWillUnmount() {
        if (this.props.onUnmount) this.props.onUnmount.call(this, this);
      };
      _proto.render = function render() {
        return null;
      };
      return Lifecycle;
    }(react.Component);
    function Prompt(_ref) {
      var message = _ref.message, _ref$when = _ref.when, when = _ref$when === void 0 ? true : _ref$when;
      return react_router_React.createElement(context.Consumer, null, (function(context) {
        !context ? false ? 0 : react_router_invariant(false) : void 0;
        if (!when || context.staticContext) return null;
        var method = context.history.block;
        return react_router_React.createElement(Lifecycle, {
          onMount: function onMount(self) {
            self.release = method(message);
          },
          onUpdate: function onUpdate(self, prevProps) {
            if (prevProps.message !== message) {
              self.release();
              self.release = method(message);
            }
          },
          onUnmount: function onUnmount(self) {
            self.release();
          },
          message
        });
      }));
    }
    if (false) {
      var messageType;
    }
    var cache = {};
    var cacheLimit = 1e4;
    var cacheCount = 0;
    function compilePath(path) {
      if (cache[path]) return cache[path];
      var generator = path_to_regexp_default().compile(path);
      if (cacheCount < cacheLimit) {
        cache[path] = generator;
        cacheCount++;
      }
      return generator;
    }
    function generatePath(path, params) {
      if (path === void 0) {
        path = "/";
      }
      if (params === void 0) {
        params = {};
      }
      return path === "/" ? path : compilePath(path)(params, {
        pretty: true
      });
    }
    function Redirect(_ref) {
      var computedMatch = _ref.computedMatch, to = _ref.to, _ref$push = _ref.push, push = _ref$push === void 0 ? false : _ref$push;
      return react.createElement(context.Consumer, null, (function(context) {
        !context ? false ? 0 : tiny_invariant_invariant(false) : void 0;
        var history = context.history, staticContext = context.staticContext;
        var method = push ? history.push : history.replace;
        var location = createLocation(computedMatch ? typeof to === "string" ? generatePath(to, computedMatch.params) : extends_extends({}, to, {
          pathname: generatePath(to.pathname, computedMatch.params)
        }) : to);
        if (staticContext) {
          method(location);
          return null;
        }
        return react.createElement(Lifecycle, {
          onMount: function onMount() {
            method(location);
          },
          onUpdate: function onUpdate(self, prevProps) {
            var prevLocation = createLocation(prevProps.to);
            if (!locationsAreEqual(prevLocation, extends_extends({}, location, {
              key: prevLocation.key
            }))) {
              method(location);
            }
          },
          to
        });
      }));
    }
    if (false) {}
    var cache$1 = {};
    var cacheLimit$1 = 1e4;
    var cacheCount$1 = 0;
    function compilePath$1(path, options) {
      var cacheKey = "" + options.end + options.strict + options.sensitive;
      var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});
      if (pathCache[path]) return pathCache[path];
      var keys = [];
      var regexp = path_to_regexp_default()(path, keys, options);
      var result = {
        regexp,
        keys
      };
      if (cacheCount$1 < cacheLimit$1) {
        pathCache[path] = result;
        cacheCount$1++;
      }
      return result;
    }
    function matchPath(pathname, options) {
      if (options === void 0) {
        options = {};
      }
      if (typeof options === "string" || Array.isArray(options)) {
        options = {
          path: options
        };
      }
      var _options = options, path = _options.path, _options$exact = _options.exact, exact = _options$exact === void 0 ? false : _options$exact, _options$strict = _options.strict, strict = _options$strict === void 0 ? false : _options$strict, _options$sensitive = _options.sensitive, sensitive = _options$sensitive === void 0 ? false : _options$sensitive;
      var paths = [].concat(path);
      return paths.reduce((function(matched, path) {
        if (!path && path !== "") return null;
        if (matched) return matched;
        var _compilePath = compilePath$1(path, {
          end: exact,
          strict,
          sensitive
        }), regexp = _compilePath.regexp, keys = _compilePath.keys;
        var match = regexp.exec(pathname);
        if (!match) return null;
        var url = match[0], values = match.slice(1);
        var isExact = pathname === url;
        if (exact && !isExact) return null;
        return {
          path,
          url: path === "/" && url === "" ? "/" : url,
          isExact,
          params: keys.reduce((function(memo, key, index) {
            memo[key.name] = values[index];
            return memo;
          }), {})
        };
      }), null);
    }
    function isEmptyChildren(children) {
      return react.Children.count(children) === 0;
    }
    function evalChildrenDev(children, props, path) {
      var value = children(props);
      false ? 0 : void 0;
      return value || null;
    }
    var Route = function(_React$Component) {
      _inheritsLoose(Route, _React$Component);
      function Route() {
        return _React$Component.apply(this, arguments) || this;
      }
      var _proto = Route.prototype;
      _proto.render = function render() {
        var _this = this;
        return react.createElement(context.Consumer, null, (function(context$1) {
          !context$1 ? false ? 0 : tiny_invariant_invariant(false) : void 0;
          var location = _this.props.location || context$1.location;
          var match = _this.props.computedMatch ? _this.props.computedMatch : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;
          var props = extends_extends({}, context$1, {
            location,
            match
          });
          var _this$props = _this.props, children = _this$props.children, component = _this$props.component, render = _this$props.render;
          if (Array.isArray(children) && isEmptyChildren(children)) {
            children = null;
          }
          return react.createElement(context.Provider, {
            value: props
          }, props.match ? children ? typeof children === "function" ? false ? 0 : children(props) : children : component ? react.createElement(component, props) : render ? render(props) : null : typeof children === "function" ? false ? 0 : children(props) : null);
        }));
      };
      return Route;
    }(react.Component);
    if (false) {}
    function react_router_addLeadingSlash(path) {
      return path.charAt(0) === "/" ? path : "/" + path;
    }
    function addBasename(basename, location) {
      if (!basename) return location;
      return extends_extends({}, location, {
        pathname: react_router_addLeadingSlash(basename) + location.pathname
      });
    }
    function react_router_stripBasename(basename, location) {
      if (!basename) return location;
      var base = react_router_addLeadingSlash(basename);
      if (location.pathname.indexOf(base) !== 0) return location;
      return extends_extends({}, location, {
        pathname: location.pathname.substr(base.length)
      });
    }
    function createURL(location) {
      return typeof location === "string" ? location : createPath(location);
    }
    function staticHandler(methodName) {
      return function() {
        false ? 0 : tiny_invariant_invariant(false);
      };
    }
    function react_router_noop() {}
    var StaticRouter = function(_React$Component) {
      _inheritsLoose(StaticRouter, _React$Component);
      function StaticRouter() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
        _this.handlePush = function(location) {
          return _this.navigateTo(location, "PUSH");
        };
        _this.handleReplace = function(location) {
          return _this.navigateTo(location, "REPLACE");
        };
        _this.handleListen = function() {
          return react_router_noop;
        };
        _this.handleBlock = function() {
          return react_router_noop;
        };
        return _this;
      }
      var _proto = StaticRouter.prototype;
      _proto.navigateTo = function navigateTo(location, action) {
        var _this$props = this.props, _this$props$basename = _this$props.basename, basename = _this$props$basename === void 0 ? "" : _this$props$basename, _this$props$context = _this$props.context, context = _this$props$context === void 0 ? {} : _this$props$context;
        context.action = action;
        context.location = addBasename(basename, createLocation(location));
        context.url = createURL(context.location);
      };
      _proto.render = function render() {
        var _this$props2 = this.props, _this$props2$basename = _this$props2.basename, basename = _this$props2$basename === void 0 ? "" : _this$props2$basename, _this$props2$context = _this$props2.context, context = _this$props2$context === void 0 ? {} : _this$props2$context, _this$props2$location = _this$props2.location, location = _this$props2$location === void 0 ? "/" : _this$props2$location, rest = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_this$props2, [ "basename", "context", "location" ]);
        var history = {
          createHref: function createHref(path) {
            return react_router_addLeadingSlash(basename + createURL(path));
          },
          action: "POP",
          location: react_router_stripBasename(basename, createLocation(location)),
          push: this.handlePush,
          replace: this.handleReplace,
          go: staticHandler("go"),
          goBack: staticHandler("goBack"),
          goForward: staticHandler("goForward"),
          listen: this.handleListen,
          block: this.handleBlock
        };
        return react.createElement(Router, extends_extends({}, rest, {
          history,
          staticContext: context
        }));
      };
      return StaticRouter;
    }(react.Component);
    if (false) {}
    var Switch = function(_React$Component) {
      _inheritsLoose(Switch, _React$Component);
      function Switch() {
        return _React$Component.apply(this, arguments) || this;
      }
      var _proto = Switch.prototype;
      _proto.render = function render() {
        var _this = this;
        return react.createElement(context.Consumer, null, (function(context) {
          !context ? false ? 0 : tiny_invariant_invariant(false) : void 0;
          var location = _this.props.location || context.location;
          var element, match;
          react.Children.forEach(_this.props.children, (function(child) {
            if (match == null && react.isValidElement(child)) {
              element = child;
              var path = child.props.path || child.props.from;
              match = path ? matchPath(location.pathname, extends_extends({}, child.props, {
                path
              })) : context.match;
            }
          }));
          return match ? react.cloneElement(element, {
            location,
            computedMatch: match
          }) : null;
        }));
      };
      return Switch;
    }(react.Component);
    if (false) {}
    function withRouter(Component) {
      var displayName = "withRouter(" + (Component.displayName || Component.name) + ")";
      var C = function C(props) {
        var wrappedComponentRef = props.wrappedComponentRef, remainingProps = react_router_objectWithoutPropertiesLoose(props, [ "wrappedComponentRef" ]);
        return react_router_React.createElement(context.Consumer, null, (function(context) {
          !context ? false ? 0 : react_router_invariant(false) : void 0;
          return react_router_React.createElement(Component, react_router_extends({}, remainingProps, context, {
            ref: wrappedComponentRef
          }));
        }));
      };
      C.displayName = displayName;
      C.WrappedComponent = Component;
      if (false) {}
      return react_router_hoistStatics(C, Component);
    }
    var react_router_useContext = react.useContext;
    function useHistory() {
      if (false) {}
      return react_router_useContext(historyContext);
    }
    function useLocation() {
      if (false) {}
      return react_router_useContext(context).location;
    }
    function useParams() {
      if (false) {}
      var match = react_router_useContext(context).match;
      return match ? match.params : {};
    }
    function useRouteMatch(path) {
      if (false) {}
      var location = useLocation();
      var match = react_router_useContext(context).match;
      return path ? matchPath(location.pathname, path) : match;
    }
    if (false) {
      var secondaryBuildName, initialBuildName, buildNames, key, global$1;
    }
    var react_hooks_useRef;
    var react_hooks_useEffect;
    function useIsMounted() {
      const mountedRef = (0, react.useRef)(false);
      (0, react.useEffect)((() => {
        mountedRef.current = true;
        return () => {
          mountedRef.current = false;
        };
      }), []);
      return mountedRef;
    }
    function useNavigateTo() {
      const history = useHistory();
      return (0, react.useCallback)((path => {
        if (history.location.pathname !== path) {
          history.push(path);
        }
      }), [ history ]);
    }
    function useInterval(callback, delay) {
      const callbackRef = react_hooks_useRef(callback);
      callbackRef.current = callback;
      react_hooks_useEffect((() => {
        const timerId = setInterval((() => callbackRef.current()), delay);
        return () => {
          clearInterval(timerId);
        };
      }), [ delay ]);
    }
    function useValueRef(value) {
      const valueRef = react_hooks_useRef(value);
      valueRef.current = value;
      return valueRef;
    }
    function useOnMount(callback) {
      const callbackRef = (0, react.useRef)(callback);
      (0, react.useEffect)((() => {
        const result = callbackRef.current();
        return () => {
          if (typeof result === "function") {
            result();
          }
        };
      }), []);
    }
    function usePrevious(value) {
      const valueRef = react_hooks_useRef(value);
      react_hooks_useEffect((() => {
        valueRef.current = value;
      }), [ value ]);
      return valueRef.current;
    }
    function useSetState(state) {
      const [value, setValue] = (0, react.useState)(state);
      const setter = (0, react.useCallback)((newValue => setValue((prevState => {
        if (typeof newValue === "function") {
          return newValue(prevState);
        }
        return {
          ...prevState,
          ...newValue
        };
      }))), []);
      return [ value, setter ];
    }
    function useRunOnFirstRender(func) {
      const isFirst = (0, react.useRef)(true);
      if (isFirst.current) {
        isFirst.current = false;
        func();
      }
    }
    function useSkipFirstRenderEffect(func, deps = []) {
      const didMount = react_hooks_useRef(false);
      react_hooks_useEffect((() => {
        if (didMount.current) func(); else didMount.current = true;
      }), deps);
    }
    const useValidateSession = () => {
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        const checkSession = async () => {
          try {
            const {isValid} = await dispatch(validateSession());
            if (!isValid) {
              await dispatch(lockInternalSigners());
            }
          } catch (error) {
            await dispatch(lockInternalSigners());
          }
        };
        checkSession();
      }), [ dispatch ]);
    };
    const useAreInternalSignersUnlocked = redirectIfNot => {
      const lockStatus = useBackgroundSelector(selectInternalSignerStatus);
      const history = useHistory();
      let redirectTarget;
      if (lockStatus === "uninitialized") {
        redirectTarget = "/internal-signer/set-password";
      } else if (lockStatus === "locked") {
        redirectTarget = "/internal-signer/unlock";
      }
      (0, react.useEffect)((() => {
        if (redirectIfNot && typeof redirectTarget !== "undefined" && history.location.pathname !== redirectTarget) {
          history.push(redirectTarget);
        }
      }));
      return lockStatus === "unlocked";
    };
    const useLockWallet = () => {
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        const lockWallet = async () => {
          await dispatch(lockInternalSigners());
          dispatch(clearSnackbarMessage());
        };
        lockWallet();
      }), [ dispatch ]);
    };
    const useOnClickOutside = (ref, handler) => {
      (0, react.useEffect)((() => {
        const listener = event => {
          const el = ref?.current;
          if (!el || el.contains(event?.target || null)) {
            return;
          }
          handler(event);
        };
        document.addEventListener("mousedown", listener);
        document.addEventListener("touchstart", listener);
        return () => {
          document.removeEventListener("mousedown", listener);
          document.removeEventListener("touchstart", listener);
        };
      }), [ ref, handler ]);
    };
    function useDelayContentChange(storedContent, delayCondition, delayMs) {
      const [delayedContent, setDelayedContent] = (0, react.useState)(storedContent);
      const delayedContentUpdateTimeout = (0, react.useRef)(undefined);
      (0, react.useEffect)((() => {
        if (typeof delayedContentUpdateTimeout.current !== "undefined") {
          clearTimeout(delayedContentUpdateTimeout.current);
        }
        if (delayCondition) {
          delayedContentUpdateTimeout.current = window.setTimeout((() => {
            setDelayedContent(storedContent);
            delayedContentUpdateTimeout.current = undefined;
          }), delayMs);
        } else {
          setDelayedContent(storedContent);
        }
      }), [ delayCondition, delayMs, storedContent ]);
      if (!delayCondition) {
        return storedContent;
      }
      return delayedContent;
    }
    function debounce(setStateFn, ms) {
      let timeout;
      return value => {
        clearTimeout(timeout);
        timeout = setTimeout((() => {
          setStateFn(value);
        }), ms);
      };
    }
    const useDebounce = (initial, wait = 300) => {
      const [state, setState] = (0, react.useState)(initial);
      const debounceCallback = (0, react.useCallback)(debounce((prop => setState(prop)), wait), [ debounce, wait ]);
      const setDebouncedState = debounced => {
        debounceCallback(debounced);
      };
      return [ state, setDebouncedState ];
    };
    const setLocalStorageItem = (key, value) => localStorage.setItem(key, value);
    const getLocalStorageItem = (key, defaultValue) => localStorage.getItem(key) || defaultValue;
    function useLocalStorage(key, initialValue) {
      const [value, setValue] = (0, react.useState)((() => getLocalStorageItem(key, initialValue)));
      const [cachedKey, setCachedKey] = (0, react.useState)(key);
      (0, react.useEffect)((() => {
        if (key !== cachedKey) {
          setValue(getLocalStorageItem(key, initialValue));
          setCachedKey(key);
        }
      }), [ key, cachedKey, initialValue ]);
      (0, react.useEffect)((() => {
        setLocalStorageItem(cachedKey, value);
      }), [ cachedKey, value ]);
      return [ value, setValue ];
    }
    function useIntersectionObserver(callback, options) {
      const ref = (0, react.useRef)(null);
      const observer = (0, react.useMemo)((() => new IntersectionObserver(callback, options)), [ callback, options ]);
      (0, react.useEffect)((() => {
        const element = ref.current;
        if (element) {
          observer.observe(ref.current);
        }
        return () => {
          if (element) observer.unobserve(element);
        };
      }), [ observer ]);
      return ref;
    }
    const useParsedValidation = (onValidChange, parser, additionalValidator) => {
      const [errorMessage, setErrorMessage] = (0, react.useState)();
      const [rawValue, setRawValue] = (0, react.useState)("");
      const handleInputChange = newValue => {
        setRawValue(newValue);
        const trimmed = newValue.trim();
        setErrorMessage(undefined);
        if (trimmed === "") {
          onValidChange(undefined);
        } else {
          try {
            const parseResult = parser(trimmed);
            if ("error" in parseResult) {
              setErrorMessage(parseResult.error);
            } else {
              const additionalValidation = additionalValidator?.(parseResult.parsed);
              if (additionalValidation !== undefined) {
                setErrorMessage(additionalValidation.error);
              } else {
                onValidChange(parseResult.parsed);
              }
            }
          } catch (e) {
            setErrorMessage("Must be a number");
          }
        }
      };
      return {
        rawValue,
        errorMessage,
        handleInputChange
      };
    };
    const useAddressOrNameValidation = onValidChange => {
      const [errorMessage, setErrorMessage] = (0, react.useState)();
      const [rawValue, setRawValue] = (0, react.useState)("");
      const [isValidating, setIsValidating] = (0, react.useState)(false);
      const validatingValue = (0, react.useRef)(undefined);
      const dispatch = useBackgroundDispatch();
      const {network} = useBackgroundSelector(selectCurrentAccount);
      const handleInputChange = (0, react.useCallback)((async newValue => {
        setRawValue(newValue);
        const trimmed = newValue.trim();
        setErrorMessage(undefined);
        if (trimmed === "") {
          onValidChange(undefined);
        } else if (isProbablyQEVMAddress(trimmed)) {
          onValidChange({
            address: normalizeQEVMAddress(trimmed)
          });
        } else {
          setIsValidating(true);
          validatingValue.current = trimmed;
          const resolved = await dispatch(resolveNameOnNetwork({
            name: trimmed,
            network
          }));
          if (validatingValue.current === trimmed) {
            if (resolved === undefined) {
              onValidChange(undefined);
              setErrorMessage("Address could not be found");
            } else {
              onValidChange({
                name: trimmed,
                address: resolved.address
              });
            }
            setIsValidating(false);
            validatingValue.current = undefined;
          }
        }
      }), [ dispatch, network, onValidChange ]);
      return {
        rawValue,
        errorMessage,
        isValidating,
        handleInputChange
      };
    };
    const useTotalNFTsFloorPrice = () => {
      const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol);
      const totalFloorPrice = useBackgroundSelector(selectFilteredTotalFloorPrice);
      const allPrices = useBackgroundSelector(getPricesState);
      const QEVMPricePoint = selectAssetPricePoint(allPrices, currencies_QEVM, mainCurrencySymbol);
      const mainCurrencyTotalPrice = Object.entries(totalFloorPrice).reduce(((acc, [symbol, price]) => {
        const baseAsset = BUILT_IN_NETWORK_BASE_ASSETS.find((asset => asset.symbol === symbol));
        if (!baseAsset) return acc;
        const pricePoint = selectAssetPricePoint(allPrices, baseAsset, mainCurrencySymbol);
        const enrichedPrice = enrichAssetAmountWithMainCurrencyValues({
          asset: baseAsset,
          amount: BigInt(Math.round(price * 10 ** baseAsset.decimals))
        }, pricePoint, 2);
        return acc + (enrichedPrice.mainCurrencyAmount ?? 0);
      }), 0);
      const totalFloorPriceInUSD = formatCurrencyAmount(mainCurrencySymbol, mainCurrencyTotalPrice, 2);
      const floorPriceConvertedToETH = QEVMPricePoint && convertAssetAmountViaPricePoint({
        asset: USD,
        amount: BigInt(Math.round(mainCurrencyTotalPrice * 10 ** USD.decimals))
      }, flipPricePoint(QEVMPricePoint));
      const totalFloorPriceInETH = (floorPriceConvertedToETH && assetAmountToDesiredDecimals(floorPriceConvertedToETH, 4)) ?? 0;
      return {
        totalFloorPriceInETH: totalFloorPriceInETH?.toLocaleString(),
        totalFloorPriceInUSD
      };
    };
    const useNFTsReload = () => {
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        dispatch(refetchCollections());
        return () => {
          dispatch(cleanCachedNFTs());
        };
      }), [ dispatch ]);
    };
    function useIsDappPopup() {
      const [isDappPopup, setIsDappPopup] = (0, react.useState)(false);
      (0, react.useEffect)((() => {
        const params = new URLSearchParams(window.location.search);
        const maybePage = params.get("page");
        if (isAllowedQueryParamPage(maybePage)) {
          setIsDappPopup(true);
        } else {
          setIsDappPopup(false);
        }
      }), []);
      return isDappPopup;
    }
    function useSwitchablePanels(panels) {
      const [panelNumber, setPanelNumber] = (0, react.useState)(0);
      return react.createElement(react.Fragment, null, SharedPanelSwitcher({
        setPanelNumber,
        panelNumber,
        panelNames: panels.map((({name}) => name))
      }), panels[panelNumber].panelElement());
    }
    function useIsOnboarding() {
      return useBackgroundSelector(accountsSelectors_getAllAddresses).length < 1;
    }
    var i18n;
    const LANGUAGE_KEY = "lang";
    const DEFAULT_LANGUAGE = "en";
    i18next.use(initReactI18next).init({
      resources,
      lng: getLocalStorageItem(LANGUAGE_KEY, DEFAULT_LANGUAGE),
      fallbackLng: DEFAULT_LANGUAGE,
      debug: false,
      interpolation: {
        escapeValue: false
      },
      react: {
        bindI18n: "languageChanged"
      }
    });
    const getLanguage = () => i18next.language;
    const setLanguage = lang => {
      i18next.changeLanguage(lang).then((() => lang && setLocalStorageItem(LANGUAGE_KEY, lang)));
    };
    const _locales_i18n = null && i18n;
    var react_error_boundary_umd = __webpack_require__(4740);
    const TransitionGroupContext = react.createContext(null);
    function getChildMapping(children, mapFn) {
      var mapper = function mapper(child) {
        return mapFn && (0, react.isValidElement)(child) ? mapFn(child) : child;
      };
      var result = Object.create(null);
      if (children) react.Children.map(children, (function(c) {
        return c;
      })).forEach((function(child) {
        result[child.key] = mapper(child);
      }));
      return result;
    }
    function mergeChildMappings(prev, next) {
      prev = prev || {};
      next = next || {};
      function getValueForKey(key) {
        return key in next ? next[key] : prev[key];
      }
      var nextKeysPending = Object.create(null);
      var pendingKeys = [];
      for (var prevKey in prev) {
        if (prevKey in next) {
          if (pendingKeys.length) {
            nextKeysPending[prevKey] = pendingKeys;
            pendingKeys = [];
          }
        } else {
          pendingKeys.push(prevKey);
        }
      }
      var i;
      var childMapping = {};
      for (var nextKey in next) {
        if (nextKeysPending[nextKey]) {
          for (i = 0; i < nextKeysPending[nextKey].length; i++) {
            var pendingNextKey = nextKeysPending[nextKey][i];
            childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);
          }
        }
        childMapping[nextKey] = getValueForKey(nextKey);
      }
      for (i = 0; i < pendingKeys.length; i++) {
        childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);
      }
      return childMapping;
    }
    function getProp(child, prop, props) {
      return props[prop] != null ? props[prop] : child.props[prop];
    }
    function getInitialChildMapping(props, onExited) {
      return getChildMapping(props.children, (function(child) {
        return (0, react.cloneElement)(child, {
          onExited: onExited.bind(null, child),
          in: true,
          appear: getProp(child, "appear", props),
          enter: getProp(child, "enter", props),
          exit: getProp(child, "exit", props)
        });
      }));
    }
    function getNextChildMapping(nextProps, prevChildMapping, onExited) {
      var nextChildMapping = getChildMapping(nextProps.children);
      var children = mergeChildMappings(prevChildMapping, nextChildMapping);
      Object.keys(children).forEach((function(key) {
        var child = children[key];
        if (!(0, react.isValidElement)(child)) return;
        var hasPrev = key in prevChildMapping;
        var hasNext = key in nextChildMapping;
        var prevChild = prevChildMapping[key];
        var isLeaving = (0, react.isValidElement)(prevChild) && !prevChild.props.in;
        if (hasNext && (!hasPrev || isLeaving)) {
          children[key] = (0, react.cloneElement)(child, {
            onExited: onExited.bind(null, child),
            in: true,
            exit: getProp(child, "exit", nextProps),
            enter: getProp(child, "enter", nextProps)
          });
        } else if (!hasNext && hasPrev && !isLeaving) {
          children[key] = (0, react.cloneElement)(child, {
            in: false
          });
        } else if (hasNext && hasPrev && (0, react.isValidElement)(prevChild)) {
          children[key] = (0, react.cloneElement)(child, {
            onExited: onExited.bind(null, child),
            in: prevChild.props.in,
            exit: getProp(child, "exit", nextProps),
            enter: getProp(child, "enter", nextProps)
          });
        }
      }));
      return children;
    }
    var values = Object.values || function(obj) {
      return Object.keys(obj).map((function(k) {
        return obj[k];
      }));
    };
    var defaultProps = {
      component: "div",
      childFactory: function childFactory(child) {
        return child;
      }
    };
    var TransitionGroup = function(_React$Component) {
      _inheritsLoose(TransitionGroup, _React$Component);
      function TransitionGroup(props, context) {
        var _this;
        _this = _React$Component.call(this, props, context) || this;
        var handleExited = _this.handleExited.bind(_assertThisInitialized(_this));
        _this.state = {
          contextValue: {
            isMounting: true
          },
          handleExited,
          firstRender: true
        };
        return _this;
      }
      var _proto = TransitionGroup.prototype;
      _proto.componentDidMount = function componentDidMount() {
        this.mounted = true;
        this.setState({
          contextValue: {
            isMounting: false
          }
        });
      };
      _proto.componentWillUnmount = function componentWillUnmount() {
        this.mounted = false;
      };
      TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {
        var prevChildMapping = _ref.children, handleExited = _ref.handleExited, firstRender = _ref.firstRender;
        return {
          children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),
          firstRender: false
        };
      };
      _proto.handleExited = function handleExited(child, node) {
        var currentChildMapping = getChildMapping(this.props.children);
        if (child.key in currentChildMapping) return;
        if (child.props.onExited) {
          child.props.onExited(node);
        }
        if (this.mounted) {
          this.setState((function(state) {
            var children = extends_extends({}, state.children);
            delete children[child.key];
            return {
              children
            };
          }));
        }
      };
      _proto.render = function render() {
        var _this$props = this.props, Component = _this$props.component, childFactory = _this$props.childFactory, props = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_this$props, [ "component", "childFactory" ]);
        var contextValue = this.state.contextValue;
        var children = values(this.state.children).map(childFactory);
        delete props.appear;
        delete props.enter;
        delete props.exit;
        if (Component === null) {
          return react.createElement(TransitionGroupContext.Provider, {
            value: contextValue
          }, children);
        }
        return react.createElement(TransitionGroupContext.Provider, {
          value: contextValue
        }, react.createElement(Component, props, children));
      };
      return TransitionGroup;
    }(react.Component);
    TransitionGroup.propTypes = false ? 0 : {};
    TransitionGroup.defaultProps = defaultProps;
    const esm_TransitionGroup = TransitionGroup;
    function hasClass(element, className) {
      if (element.classList) return !!className && element.classList.contains(className);
      return (" " + (element.className.baseVal || element.className) + " ").indexOf(" " + className + " ") !== -1;
    }
    function addClass_addClass(element, className) {
      if (element.classList) element.classList.add(className); else if (!hasClass(element, className)) if (typeof element.className === "string") element.className = element.className + " " + className; else element.setAttribute("class", (element.className && element.className.baseVal || "") + " " + className);
    }
    function replaceClassName(origClass, classToRemove) {
      return origClass.replace(new RegExp("(^|\\s)" + classToRemove + "(?:\\s|$)", "g"), "$1").replace(/\s+/g, " ").replace(/^\s*|\s*$/g, "");
    }
    function removeClass_removeClass(element, className) {
      if (element.classList) {
        element.classList.remove(className);
      } else if (typeof element.className === "string") {
        element.className = replaceClassName(element.className, className);
      } else {
        element.setAttribute("class", replaceClassName(element.className && element.className.baseVal || "", className));
      }
    }
    const config = {
      disabled: false
    };
    var forceReflow = function forceReflow(node) {
      return node.scrollTop;
    };
    var UNMOUNTED = "unmounted";
    var EXITED = "exited";
    var ENTERING = "entering";
    var ENTERED = "entered";
    var EXITING = "exiting";
    var Transition = function(_React$Component) {
      _inheritsLoose(Transition, _React$Component);
      function Transition(props, context) {
        var _this;
        _this = _React$Component.call(this, props, context) || this;
        var parentGroup = context;
        var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;
        var initialStatus;
        _this.appearStatus = null;
        if (props.in) {
          if (appear) {
            initialStatus = EXITED;
            _this.appearStatus = ENTERING;
          } else {
            initialStatus = ENTERED;
          }
        } else {
          if (props.unmountOnExit || props.mountOnEnter) {
            initialStatus = UNMOUNTED;
          } else {
            initialStatus = EXITED;
          }
        }
        _this.state = {
          status: initialStatus
        };
        _this.nextCallback = null;
        return _this;
      }
      Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {
        var nextIn = _ref.in;
        if (nextIn && prevState.status === UNMOUNTED) {
          return {
            status: EXITED
          };
        }
        return null;
      };
      var _proto = Transition.prototype;
      _proto.componentDidMount = function componentDidMount() {
        this.updateStatus(true, this.appearStatus);
      };
      _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
        var nextStatus = null;
        if (prevProps !== this.props) {
          var status = this.state.status;
          if (this.props.in) {
            if (status !== ENTERING && status !== ENTERED) {
              nextStatus = ENTERING;
            }
          } else {
            if (status === ENTERING || status === ENTERED) {
              nextStatus = EXITING;
            }
          }
        }
        this.updateStatus(false, nextStatus);
      };
      _proto.componentWillUnmount = function componentWillUnmount() {
        this.cancelNextCallback();
      };
      _proto.getTimeouts = function getTimeouts() {
        var timeout = this.props.timeout;
        var exit, enter, appear;
        exit = enter = appear = timeout;
        if (timeout != null && typeof timeout !== "number") {
          exit = timeout.exit;
          enter = timeout.enter;
          appear = timeout.appear !== undefined ? timeout.appear : enter;
        }
        return {
          exit,
          enter,
          appear
        };
      };
      _proto.updateStatus = function updateStatus(mounting, nextStatus) {
        if (mounting === void 0) {
          mounting = false;
        }
        if (nextStatus !== null) {
          this.cancelNextCallback();
          if (nextStatus === ENTERING) {
            if (this.props.unmountOnExit || this.props.mountOnEnter) {
              var node = this.props.nodeRef ? this.props.nodeRef.current : react_dom.findDOMNode(this);
              if (node) forceReflow(node);
            }
            this.performEnter(mounting);
          } else {
            this.performExit();
          }
        } else if (this.props.unmountOnExit && this.state.status === EXITED) {
          this.setState({
            status: UNMOUNTED
          });
        }
      };
      _proto.performEnter = function performEnter(mounting) {
        var _this2 = this;
        var enter = this.props.enter;
        var appearing = this.context ? this.context.isMounting : mounting;
        var _ref2 = this.props.nodeRef ? [ appearing ] : [ react_dom.findDOMNode(this), appearing ], maybeNode = _ref2[0], maybeAppearing = _ref2[1];
        var timeouts = this.getTimeouts();
        var enterTimeout = appearing ? timeouts.appear : timeouts.enter;
        if (!mounting && !enter || config.disabled) {
          this.safeSetState({
            status: ENTERED
          }, (function() {
            _this2.props.onEntered(maybeNode);
          }));
          return;
        }
        this.props.onEnter(maybeNode, maybeAppearing);
        this.safeSetState({
          status: ENTERING
        }, (function() {
          _this2.props.onEntering(maybeNode, maybeAppearing);
          _this2.onTransitionEnd(enterTimeout, (function() {
            _this2.safeSetState({
              status: ENTERED
            }, (function() {
              _this2.props.onEntered(maybeNode, maybeAppearing);
            }));
          }));
        }));
      };
      _proto.performExit = function performExit() {
        var _this3 = this;
        var exit = this.props.exit;
        var timeouts = this.getTimeouts();
        var maybeNode = this.props.nodeRef ? undefined : react_dom.findDOMNode(this);
        if (!exit || config.disabled) {
          this.safeSetState({
            status: EXITED
          }, (function() {
            _this3.props.onExited(maybeNode);
          }));
          return;
        }
        this.props.onExit(maybeNode);
        this.safeSetState({
          status: EXITING
        }, (function() {
          _this3.props.onExiting(maybeNode);
          _this3.onTransitionEnd(timeouts.exit, (function() {
            _this3.safeSetState({
              status: EXITED
            }, (function() {
              _this3.props.onExited(maybeNode);
            }));
          }));
        }));
      };
      _proto.cancelNextCallback = function cancelNextCallback() {
        if (this.nextCallback !== null) {
          this.nextCallback.cancel();
          this.nextCallback = null;
        }
      };
      _proto.safeSetState = function safeSetState(nextState, callback) {
        callback = this.setNextCallback(callback);
        this.setState(nextState, callback);
      };
      _proto.setNextCallback = function setNextCallback(callback) {
        var _this4 = this;
        var active = true;
        this.nextCallback = function(event) {
          if (active) {
            active = false;
            _this4.nextCallback = null;
            callback(event);
          }
        };
        this.nextCallback.cancel = function() {
          active = false;
        };
        return this.nextCallback;
      };
      _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {
        this.setNextCallback(handler);
        var node = this.props.nodeRef ? this.props.nodeRef.current : react_dom.findDOMNode(this);
        var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;
        if (!node || doesNotHaveTimeoutOrListener) {
          setTimeout(this.nextCallback, 0);
          return;
        }
        if (this.props.addEndListener) {
          var _ref3 = this.props.nodeRef ? [ this.nextCallback ] : [ node, this.nextCallback ], maybeNode = _ref3[0], maybeNextCallback = _ref3[1];
          this.props.addEndListener(maybeNode, maybeNextCallback);
        }
        if (timeout != null) {
          setTimeout(this.nextCallback, timeout);
        }
      };
      _proto.render = function render() {
        var status = this.state.status;
        if (status === UNMOUNTED) {
          return null;
        }
        var _this$props = this.props, children = _this$props.children, _in = _this$props.in, _mountOnEnter = _this$props.mountOnEnter, _unmountOnExit = _this$props.unmountOnExit, _appear = _this$props.appear, _enter = _this$props.enter, _exit = _this$props.exit, _timeout = _this$props.timeout, _addEndListener = _this$props.addEndListener, _onEnter = _this$props.onEnter, _onEntering = _this$props.onEntering, _onEntered = _this$props.onEntered, _onExit = _this$props.onExit, _onExiting = _this$props.onExiting, _onExited = _this$props.onExited, _nodeRef = _this$props.nodeRef, childProps = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_this$props, [ "children", "in", "mountOnEnter", "unmountOnExit", "appear", "enter", "exit", "timeout", "addEndListener", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "nodeRef" ]);
        return react.createElement(TransitionGroupContext.Provider, {
          value: null
        }, typeof children === "function" ? children(status, childProps) : react.cloneElement(react.Children.only(children), childProps));
      };
      return Transition;
    }(react.Component);
    Transition.contextType = TransitionGroupContext;
    Transition.propTypes = false ? 0 : {};
    function Transition_noop() {}
    Transition.defaultProps = {
      in: false,
      mountOnEnter: false,
      unmountOnExit: false,
      appear: false,
      enter: true,
      exit: true,
      onEnter: Transition_noop,
      onEntering: Transition_noop,
      onEntered: Transition_noop,
      onExit: Transition_noop,
      onExiting: Transition_noop,
      onExited: Transition_noop
    };
    Transition.UNMOUNTED = UNMOUNTED;
    Transition.EXITED = EXITED;
    Transition.ENTERING = ENTERING;
    Transition.ENTERED = ENTERED;
    Transition.EXITING = EXITING;
    const esm_Transition = Transition;
    var _addClass = function addClass(node, classes) {
      return node && classes && classes.split(" ").forEach((function(c) {
        return addClass_addClass(node, c);
      }));
    };
    var removeClass = function removeClass(node, classes) {
      return node && classes && classes.split(" ").forEach((function(c) {
        return removeClass_removeClass(node, c);
      }));
    };
    var CSSTransition = function(_React$Component) {
      _inheritsLoose(CSSTransition, _React$Component);
      function CSSTransition() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
        _this.appliedClasses = {
          appear: {},
          enter: {},
          exit: {}
        };
        _this.onEnter = function(maybeNode, maybeAppearing) {
          var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument[0], appearing = _this$resolveArgument[1];
          _this.removeClasses(node, "exit");
          _this.addClass(node, appearing ? "appear" : "enter", "base");
          if (_this.props.onEnter) {
            _this.props.onEnter(maybeNode, maybeAppearing);
          }
        };
        _this.onEntering = function(maybeNode, maybeAppearing) {
          var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument2[0], appearing = _this$resolveArgument2[1];
          var type = appearing ? "appear" : "enter";
          _this.addClass(node, type, "active");
          if (_this.props.onEntering) {
            _this.props.onEntering(maybeNode, maybeAppearing);
          }
        };
        _this.onEntered = function(maybeNode, maybeAppearing) {
          var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument3[0], appearing = _this$resolveArgument3[1];
          var type = appearing ? "appear" : "enter";
          _this.removeClasses(node, type);
          _this.addClass(node, type, "done");
          if (_this.props.onEntered) {
            _this.props.onEntered(maybeNode, maybeAppearing);
          }
        };
        _this.onExit = function(maybeNode) {
          var _this$resolveArgument4 = _this.resolveArguments(maybeNode), node = _this$resolveArgument4[0];
          _this.removeClasses(node, "appear");
          _this.removeClasses(node, "enter");
          _this.addClass(node, "exit", "base");
          if (_this.props.onExit) {
            _this.props.onExit(maybeNode);
          }
        };
        _this.onExiting = function(maybeNode) {
          var _this$resolveArgument5 = _this.resolveArguments(maybeNode), node = _this$resolveArgument5[0];
          _this.addClass(node, "exit", "active");
          if (_this.props.onExiting) {
            _this.props.onExiting(maybeNode);
          }
        };
        _this.onExited = function(maybeNode) {
          var _this$resolveArgument6 = _this.resolveArguments(maybeNode), node = _this$resolveArgument6[0];
          _this.removeClasses(node, "exit");
          _this.addClass(node, "exit", "done");
          if (_this.props.onExited) {
            _this.props.onExited(maybeNode);
          }
        };
        _this.resolveArguments = function(maybeNode, maybeAppearing) {
          return _this.props.nodeRef ? [ _this.props.nodeRef.current, maybeNode ] : [ maybeNode, maybeAppearing ];
        };
        _this.getClassNames = function(type) {
          var classNames = _this.props.classNames;
          var isStringClassNames = typeof classNames === "string";
          var prefix = isStringClassNames && classNames ? classNames + "-" : "";
          var baseClassName = isStringClassNames ? "" + prefix + type : classNames[type];
          var activeClassName = isStringClassNames ? baseClassName + "-active" : classNames[type + "Active"];
          var doneClassName = isStringClassNames ? baseClassName + "-done" : classNames[type + "Done"];
          return {
            baseClassName,
            activeClassName,
            doneClassName
          };
        };
        return _this;
      }
      var _proto = CSSTransition.prototype;
      _proto.addClass = function addClass(node, type, phase) {
        var className = this.getClassNames(type)[phase + "ClassName"];
        var _this$getClassNames = this.getClassNames("enter"), doneClassName = _this$getClassNames.doneClassName;
        if (type === "appear" && phase === "done" && doneClassName) {
          className += " " + doneClassName;
        }
        if (phase === "active") {
          if (node) forceReflow(node);
        }
        if (className) {
          this.appliedClasses[type][phase] = className;
          _addClass(node, className);
        }
      };
      _proto.removeClasses = function removeClasses(node, type) {
        var _this$appliedClasses$ = this.appliedClasses[type], baseClassName = _this$appliedClasses$.base, activeClassName = _this$appliedClasses$.active, doneClassName = _this$appliedClasses$.done;
        this.appliedClasses[type] = {};
        if (baseClassName) {
          removeClass(node, baseClassName);
        }
        if (activeClassName) {
          removeClass(node, activeClassName);
        }
        if (doneClassName) {
          removeClass(node, doneClassName);
        }
      };
      _proto.render = function render() {
        var _this$props = this.props, _ = _this$props.classNames, props = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_this$props, [ "classNames" ]);
        return react.createElement(esm_Transition, extends_extends({}, props, {
          onEnter: this.onEnter,
          onEntered: this.onEntered,
          onEntering: this.onEntering,
          onExit: this.onExit,
          onExiting: this.onExiting,
          onExited: this.onExited
        }));
      };
      return CSSTransition;
    }(react.Component);
    CSSTransition.defaultProps = {
      classNames: ""
    };
    CSSTransition.propTypes = false ? 0 : {};
    const esm_CSSTransition = CSSTransition;
    const allTabs = [ {
      path: "/wallet",
      title: "tabs.wallet",
      icon: "wallet"
    }, {
      path: "/nfts",
      title: "tabs.nfts",
      icon: "nfts",
      visible: false
    }, {
      path: "/portfolio",
      title: "tabs.portfolio",
      icon: "portfolio",
      visible: false
    }, {
      path: "/settings",
      title: "tabs.settings",
      icon: "settings"
    } ];
    const tabs = allTabs.map((({visible = true, ...tab}) => visible ? tab : null)).filter((tab => tab !== null));
    const defaultTab = tabs[0];
    const utils_tabs = tabs;
    function setAnimationConditions(routeProps, setIsDirectionRight) {
      const {entries} = routeProps.history;
      const locationName = routeProps.location.pathname.split("/")[1];
      const prevLocationName = entries && entries[entries.length - 2] && entries[entries.length - 2].pathname.split("/")[1] || "";
      const tabRoutes = utils_tabs.map((tab => tab.path));
      const isGoingBetweenTabs = tabRoutes.includes(locationName) && tabRoutes.includes(prevLocationName);
      const isGoingToATabLeftOfTab = tabRoutes.includes(locationName) && tabRoutes.indexOf(locationName) < tabRoutes.indexOf(prevLocationName);
      const isGoingBack = entries && entries[entries.length - 1] && entries[entries.length - 1]?.state?.isBack === true;
      if (isGoingBack) {
        setIsDirectionRight(true);
      } else if (isGoingBetweenTabs) {
        if (isGoingToATabLeftOfTab) {
          setIsDirectionRight(true);
        } else if (!isGoingToATabLeftOfTab) {
          setIsDirectionRight(false);
        }
      } else {
        setIsDirectionRight(false);
      }
    }
    function animationStyles(isDirectionRight) {
      return `\n      .page-transition-enter > section > main {\n        opacity: 0.3;\n        transform: ${isDirectionRight ? "translateX(-7px)" : "translateX(7px)"};\n      }\n      .page-transition-enter-active > section > main {\n        opacity: 1;\n        transform: translateX(0px);\n        transition: transform cubic-bezier(0.25, 0.4, 0.55, 1.4) 250ms,\n          opacity 250ms;\n      }\n      .page-transition-exit {\n        opacity: 1;\n      }\n      .page-transition-exit-active {\n        opacity: 0;\n      }\n      `;
    }
    var classnames = __webpack_require__(6942);
    var classnames_default = __webpack_require__.n(classnames);
    const DISMISS_MS = 2500;
    const DISMISS_ANIMATION_MS = 300;
    function Snackbar({isTabbedOnboarding = false}) {
      const dispatch = useDispatch();
      const [isOnboarding] = (0, react.useState)(useIsOnboarding());
      const showInRightContainer = isTabbedOnboarding ? isOnboarding : false;
      const snackbarMessage = useBackgroundSelector(selectSnackbarMessage);
      const shouldHide = snackbarMessage.trim() === "";
      const displayMessage = useDelayContentChange(snackbarMessage, shouldHide, DISMISS_ANIMATION_MS);
      const snackbarTimeout = (0, react.useRef)();
      const clearSnackbarTimeout = (0, react.useCallback)((() => {
        if (typeof snackbarTimeout.current !== "undefined") {
          clearTimeout(snackbarTimeout.current);
          snackbarTimeout.current = undefined;
        }
      }), []);
      (0, react.useEffect)((() => {
        clearSnackbarTimeout();
        snackbarTimeout.current = window.setTimeout((() => {
          dispatch(clearSnackbarMessage());
        }), DISMISS_MS);
      }), [ snackbarMessage, clearSnackbarTimeout, dispatch ]);
      (0, react.useEffect)((() => {
        window.onblur = () => {
          clearSnackbarTimeout();
          dispatch(clearSnackbarMessage());
        };
      }), [ clearSnackbarTimeout, dispatch ]);
      return react.createElement("div", {
        className: "jsx-2840525518" + " " + (classnames_default()("snackbar_container", {
          hidden: shouldHide,
          right_container: showInRightContainer
        }) || "")
      }, react.createElement("div", {
        className: "jsx-2840525518" + " " + "snackbar_wrap"
      }, displayMessage), react.createElement(style_default(), {
        id: "2840525518"
      }, `.snackbar_container.jsx-2840525518{position:fixed;z-index:999999999;bottom:72px;left:0;right:0;}.snackbar_wrap.jsx-2840525518{max-width:352px;margin:0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;height:40px;padding:0 16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:16px;font-weight:500;background:var(--c-text);color:var(--c-text-inverse);box-shadow: 0px 8px 24px rgba(0,0,0,0.12), 0px 4px 8px rgba(0,0,0,0.08);border-radius:8px;-webkit-transition:all ${DISMISS_ANIMATION_MS}ms ease;transition:all ${DISMISS_ANIMATION_MS}ms ease;opacity:1;-webkit-transform:translateY(0px);-ms-transform:translateY(0px);transform:translateY(0px);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.snackbar_container.hidden.jsx-2840525518{pointer-events:none;opacity:0;}.snackbar_container.hidden.jsx-2840525518 .snackbar_wrap.jsx-2840525518{padding:0;-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px);}@media (min-width:980px){.right_container.jsx-2840525518{right:-50%;}}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Snackbar/Snackbar.tsx */`));
    }
    function _iterableToArrayLimit(r, l) {
      var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
      if (null != t) {
        var e, n, i, u, a = [], f = !0, o = !1;
        try {
          if (i = (t = t.call(r)).next, 0 === l) {
            if (Object(t) !== t) return;
            f = !1;
          } else for (;!(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) ;
        } catch (r) {
          o = !0, n = r;
        } finally {
          try {
            if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
          } finally {
            if (o) throw n;
          }
        }
        return a;
      }
    }
    function _slicedToArray(r, e) {
      return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
    }
    function warn() {
      if (console && console.warn) {
        var _console;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        if (typeof args[0] === "string") args[0] = "react-i18next:: ".concat(args[0]);
        (_console = console).warn.apply(_console, args);
      }
    }
    var alreadyWarned = {};
    function warnOnce() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      if (typeof args[0] === "string" && alreadyWarned[args[0]]) return;
      if (typeof args[0] === "string") alreadyWarned[args[0]] = new Date;
      warn.apply(void 0, args);
    }
    function utils_loadNamespaces(i18n, ns, cb) {
      i18n.loadNamespaces(ns, (function() {
        if (i18n.isInitialized) {
          cb();
        } else {
          var initialized = function initialized() {
            setTimeout((function() {
              i18n.off("initialized", initialized);
            }), 0);
            cb();
          };
          i18n.on("initialized", initialized);
        }
      }));
    }
    function oldI18nextHasLoadedNamespace(ns, i18n) {
      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
      var lng = i18n.languages[0];
      var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
      var lastLng = i18n.languages[i18n.languages.length - 1];
      if (lng.toLowerCase() === "cimode") return true;
      var loadNotPending = function loadNotPending(l, n) {
        var loadState = i18n.services.backendConnector.state["".concat(l, "|").concat(n)];
        return loadState === -1 || loadState === 2;
      };
      if (options.bindI18n && options.bindI18n.indexOf("languageChanging") > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
      if (i18n.hasResourceBundle(lng, ns)) return true;
      if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
      return false;
    }
    function utils_hasLoadedNamespace(ns, i18n) {
      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
      if (!i18n.languages || !i18n.languages.length) {
        warnOnce("i18n.languages were undefined or empty", i18n.languages);
        return true;
      }
      var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
      if (!isNewerI18next) {
        return oldI18nextHasLoadedNamespace(ns, i18n, options);
      }
      return i18n.hasLoadedNamespace(ns, {
        precheck: function precheck(i18nInstance, loadNotPending) {
          if (options.bindI18n && options.bindI18n.indexOf("languageChanging") > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
        }
      });
    }
    function getDisplayName(Component) {
      return Component.displayName || Component.name || (typeof Component === "string" && Component.length > 0 ? Component : "Unknown");
    }
    function useTranslation_ownKeys(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function useTranslation_objectSpread(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          useTranslation_ownKeys(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          useTranslation_ownKeys(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    var useTranslation_usePrevious = function usePrevious(value, ignore) {
      var ref = (0, react.useRef)();
      (0, react.useEffect)((function() {
        ref.current = ignore ? ref.current : value;
      }), [ value, ignore ]);
      return ref.current;
    };
    function useTranslation(ns) {
      var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
      var i18nFromProps = props.i18n;
      var _ref = (0, react.useContext)(I18nContext) || {}, i18nFromContext = _ref.i18n, defaultNSFromContext = _ref.defaultNS;
      var i18n = i18nFromProps || i18nFromContext || getI18n();
      if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces;
      if (!i18n) {
        warnOnce("You will need to pass in an i18next instance by using initReactI18next");
        var notReadyT = function notReadyT(k) {
          return Array.isArray(k) ? k[k.length - 1] : k;
        };
        var retNotReady = [ notReadyT, {}, false ];
        retNotReady.t = notReadyT;
        retNotReady.i18n = {};
        retNotReady.ready = false;
        return retNotReady;
      }
      if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");
      var i18nOptions = useTranslation_objectSpread(useTranslation_objectSpread(useTranslation_objectSpread({}, getDefaults()), i18n.options.react), props);
      var useSuspense = i18nOptions.useSuspense, keyPrefix = i18nOptions.keyPrefix;
      var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
      namespaces = typeof namespaces === "string" ? [ namespaces ] : namespaces || [ "translation" ];
      if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
      var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every((function(n) {
        return utils_hasLoadedNamespace(n, i18n, i18nOptions);
      }));
      function getT() {
        return i18n.getFixedT(null, i18nOptions.nsMode === "fallback" ? namespaces : namespaces[0], keyPrefix);
      }
      var _useState = (0, react.useState)(getT), _useState2 = _slicedToArray(_useState, 2), t = _useState2[0], setT = _useState2[1];
      var joinedNS = namespaces.join();
      var previousJoinedNS = useTranslation_usePrevious(joinedNS);
      var isMounted = (0, react.useRef)(true);
      (0, react.useEffect)((function() {
        var bindI18n = i18nOptions.bindI18n, bindI18nStore = i18nOptions.bindI18nStore;
        isMounted.current = true;
        if (!ready && !useSuspense) {
          utils_loadNamespaces(i18n, namespaces, (function() {
            if (isMounted.current) setT(getT);
          }));
        }
        if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
          setT(getT);
        }
        function boundReset() {
          if (isMounted.current) setT(getT);
        }
        if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
        if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
        return function() {
          isMounted.current = false;
          if (bindI18n && i18n) bindI18n.split(" ").forEach((function(e) {
            return i18n.off(e, boundReset);
          }));
          if (bindI18nStore && i18n) bindI18nStore.split(" ").forEach((function(e) {
            return i18n.store.off(e, boundReset);
          }));
        };
      }), [ i18n, joinedNS ]);
      var isInitial = (0, react.useRef)(true);
      (0, react.useEffect)((function() {
        if (isMounted.current && !isInitial.current) {
          setT(getT);
        }
        isInitial.current = false;
      }), [ i18n, keyPrefix ]);
      var ret = [ t, i18n, ready ];
      ret.t = t;
      ret.i18n = i18n;
      ret.ready = ready;
      if (ready) return ret;
      if (!ready && !useSuspense) return ret;
      throw new Promise((function(resolve) {
        utils_loadNamespaces(i18n, namespaces, (function() {
          resolve();
        }));
      }));
    }
    function TabBarIconButton(props) {
      const {icon, title, isActive, showNotifications = false, onClick} = props;
      return react.createElement("button", {
        type: "button",
        role: "link",
        onClick,
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ])
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ]) + " " + (classnames_default()("tab_bar_icon_wrap", {
          active: isActive
        }) || "")
      }, showNotifications && react.createElement("div", {
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ]) + " " + "notifications"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ]) + " " + "dot"
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ]) + " " + (classnames_default()("icon") || "")
      }), react.createElement("span", {
        className: style_default().dynamic([ [ "3271327747", [ icon ] ] ])
      }, title)), react.createElement(style_default(), {
        id: "3271327747",
        dynamic: [ icon ]
      }, `.tab_bar_icon_wrap.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:6px 14px;border-radius:14px;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);position:relative;}.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/${icon}.svg");mask-image:url("./images/${icon}.svg");-webkit-mask-size:cover;mask-size:cover;width:24px;height:24px;cursor:pointer;background-color:var(--c-text-muted);-webkit-transition:all 0.2s ease;transition:all 0.2s ease;}span.__jsx-style-dynamic-selector{color:var(--c-text-muted);font-size:10px;font-weight:600;text-transform:capitalize;font-family:"Segment",sans-serif;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;}.active.__jsx-style-dynamic-selector{background:var(--c-accent-a12);}.active.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector{background-color:var(--c-accent);}.active.__jsx-style-dynamic-selector span.__jsx-style-dynamic-selector{color:var(--c-accent-dark);font-weight:700;}.tab_bar_icon_wrap.__jsx-style-dynamic-selector:hover.__jsx-style-dynamic-selector:not(.active){background:var(--c-accent-a8);}.tab_bar_icon_wrap.__jsx-style-dynamic-selector:hover.__jsx-style-dynamic-selector:not(.active) .icon.__jsx-style-dynamic-selector{background-color:var(--c-accent-light);}.tab_bar_icon_wrap.__jsx-style-dynamic-selector:hover.__jsx-style-dynamic-selector:not(.active) span.__jsx-style-dynamic-selector{color:var(--c-text-secondary);}.notifications.__jsx-style-dynamic-selector{width:8px;height:8px;right:8px;top:4px;position:absolute;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.dot.__jsx-style-dynamic-selector{width:8px;height:8px;border-radius:50%;background:var(--c-accent);border:2px solid var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TabBar/TabBarIconButton.tsx */`));
    }
    const isTabSupportedByNetwork = (tab, network) => {
      switch (tab.path) {
       default:
        return true;
      }
    };
    function TabBar() {
      const location = useLocation();
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const history = useHistory();
      const {t} = useTranslation();
      const noActiveTab = [ "abilities" ].some((pathName => location.pathname.includes(pathName)));
      const activeTab = utils_tabs.find((({path}) => matchPath(location.pathname, {
        path,
        exact: false
      }))) ?? defaultTab;
      const hasNotifications = (0, react.useCallback)((path => {
        switch (path) {
         case "/portfolio":
          return false;

         default:
          return false;
        }
      }), []);
      return react.createElement("nav", {
        "aria-label": "Main",
        className: "jsx-670799892"
      }, utils_tabs.filter((tab => isTabSupportedByNetwork(tab, selectedNetwork))).map((({path, title, icon}) => react.createElement(TabBarIconButton, {
        key: path,
        icon,
        title: t(title),
        onClick: () => history.push(path),
        isActive: noActiveTab ? false : activeTab.path === path,
        showNotifications: hasNotifications(path)
      }))), react.createElement(style_default(), {
        id: "670799892"
      }, "nav.jsx-670799892{width:100%;height:64px;background:var(--c-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--c-border-accent);box-shadow:var(--shadow-sm);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;box-sizing:border-box;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:10;padding:0 8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9UYWJCYXIvVGFiQmFyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRVMsQUFHd0IsV0FDQyxZQUNXLHVCQUNJLDhEQUNpQiw0Q0FDaEIsNEJBQ2YsMEVBQ2dCLDJIQUNQLHNCQUNILDZGQUNMLHdEQUNILFdBQ0csY0FDaEIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1RhYkJhci9UYWJCYXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgeyBtYXRjaFBhdGgsIHVzZUhpc3RvcnksIHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IHsgc2VsZWN0Q3VycmVudE5ldHdvcmsgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IHsgUUVWTU5ldHdvcmsgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL25ldHdvcmtzXCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IFRhYkJhckljb25CdXR0b24gZnJvbSBcIi4vVGFiQmFySWNvbkJ1dHRvblwiXG5pbXBvcnQgdGFicywgeyBkZWZhdWx0VGFiLCBUYWJJbmZvIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RhYnNcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuY29uc3QgaXNUYWJTdXBwb3J0ZWRCeU5ldHdvcmsgPSAodGFiOiBUYWJJbmZvLCBuZXR3b3JrOiBRRVZNTmV0d29yaykgPT4ge1xuICBzd2l0Y2ggKHRhYi5wYXRoKSB7XG4gICAgLy8gY2FzZSBcIi9zd2FwXCI6XG4gICAgLy8gICByZXR1cm4gTkVUV09SS1NfU1VQUE9SVElOR19TV0FQUy5oYXMobmV0d29yay5jaGFpbklEKVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRhYkJhcigpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKClcbiAgY29uc3Qgc2VsZWN0ZWROZXR3b3JrID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEN1cnJlbnROZXR3b3JrKVxuICAvLyBjb25zdCBhYmlsaXR5Q291bnQgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0T3BlbkFiaWxpdHlDb3VudClcblxuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IG5vQWN0aXZlVGFiID0gW1wiYWJpbGl0aWVzXCJdLnNvbWUoKHBhdGhOYW1lKSA9PlxuICAgIGxvY2F0aW9uLnBhdGhuYW1lLmluY2x1ZGVzKHBhdGhOYW1lKSxcbiAgKVxuXG4gIGNvbnN0IGFjdGl2ZVRhYiA9XG4gICAgdGFicy5maW5kKCh7IHBhdGggfSkgPT5cbiAgICAgIG1hdGNoUGF0aChsb2NhdGlvbi5wYXRobmFtZSwgeyBwYXRoLCBleGFjdDogZmFsc2UgfSksXG4gICAgKSA/PyBkZWZhdWx0VGFiXG5cbiAgY29uc3QgaGFzTm90aWZpY2F0aW9ucyA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICAgIHN3aXRjaCAocGF0aCkge1xuICAgICAgICBjYXNlIFwiL3BvcnRmb2xpb1wiOlxuICAgICAgICAgIHJldHVybiBmYWxzZSAvLyBhYmlsaXR5Q291bnQgPiAwXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICAvKiBhYmlsaXR5Q291bnQgKi9cbiAgICBdLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGFyaWEtbGFiZWw9XCJNYWluXCI+XG4gICAgICB7dGFic1xuICAgICAgICAuZmlsdGVyKCh0YWIpID0+IGlzVGFiU3VwcG9ydGVkQnlOZXR3b3JrKHRhYiwgc2VsZWN0ZWROZXR3b3JrKSlcbiAgICAgICAgLm1hcCgoeyBwYXRoLCB0aXRsZSwgaWNvbiB9KSA9PiAoXG4gICAgICAgICAgPFRhYkJhckljb25CdXR0b25cbiAgICAgICAgICAgIGtleT17cGF0aH1cbiAgICAgICAgICAgIGljb249e2ljb259XG4gICAgICAgICAgICB0aXRsZT17dCh0aXRsZSl9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoaXN0b3J5LnB1c2gocGF0aCl9XG4gICAgICAgICAgICBpc0FjdGl2ZT17bm9BY3RpdmVUYWIgPyBmYWxzZSA6IGFjdGl2ZVRhYi5wYXRoID09PSBwYXRofVxuICAgICAgICAgICAgc2hvd05vdGlmaWNhdGlvbnM9e2hhc05vdGlmaWNhdGlvbnMocGF0aCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIG5hdiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWMtYmcpO1xuICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyLWFjY2VudCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICAgICAgcGFkZGluZzogMCA4cHg7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L25hdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TabBar/TabBar.tsx */"));
    }
    const BuildTimeFlag = {
      SWITCH_RUNTIME_FLAGS: "MISSING_ENV_VAR".SWITCH_RUNTIME_FLAGS === "true"
    };
    const RuntimeFlag = {
      SHOW_IMPORT_DERIVATION_PATH: "false" === "true",
      SUPPORT_MULTIPLE_LANGUAGES: "false" === "true",
      SHOW_TOKEN_FEATURES: "false" === "true",
      SUPPORT_ACHIEVEMENTS_BANNER: "false" === "true",
      SUPPORT_NFT_SEND: "false" === "true",
      SUPPORT_WALLET_CONNECT: "false" === "true",
      SUPPORT_CUSTOM_NETWORKS: "MISSING_ENV_VAR".SUPPORT_CUSTOM_NETWORKS === "true"
    };
    const FeatureFlags = Object.keys({
      ...BuildTimeFlag,
      ...RuntimeFlag
    }).reduce(((types, flagName) => ({
      ...types,
      [flagName]: flagName
    })), {});
    function isEnabled(flagName, checkBrowserStorage = BuildTimeFlag.SWITCH_RUNTIME_FLAGS) {
      const isBuildTimeFlag = flag => flag in BuildTimeFlag;
      if (isBuildTimeFlag(flagName)) {
        return BuildTimeFlag[flagName];
      }
      if (checkBrowserStorage) {
        const state = "";
        return state !== null ? state === "true" : RuntimeFlag[flagName];
      }
      return RuntimeFlag[flagName];
    }
    function isDisabled(flagName, checkBrowserStorage = BuildTimeFlag.SWITCH_RUNTIME_FLAGS) {
      return !isEnabled(flagName, checkBrowserStorage);
    }
    function wrapIfEnabled(flag, valueToWrap) {
      return isEnabled(flag) ? [ valueToWrap ] : [];
    }
    function wrapIfDisabled(flag, valueToWrap) {
      return isDisabled(flag) ? [ valueToWrap ] : [];
    }
    const doggoTokenDecimalDigits = 18;
    const blockExplorer = {
      [ZEUS.chainID]: {
        title: "Block explorer",
        url: "https://explorer.quantumevm.com" ?? 0
      },
      [POSEIDON.chainID]: {
        title: "Block explorer",
        url: "https://explorer.quantumevm.com" ?? 0
      }
    };
    const ESTIMATED_SPEED_IN_READABLE_FORMAT_RELATIVE_TO_CONFIDENCE_LEVEL = {
      0: i18next.t("networkFees.speeds.0"),
      70: i18next.t("networkFees.speeds.70"),
      95: i18next.t("networkFees.speeds.95"),
      99: i18next.t("networkFees.speeds.99")
    };
    const NETWORK_FEE_CHOSEN_TYPE_TO_HUMAN_READABLE_TYPE = {
      [NetworkFeeTypeChosen.Regular]: i18next.t("networkFees.types.regular"),
      [NetworkFeeTypeChosen.Express]: i18next.t("networkFees.types.express"),
      [NetworkFeeTypeChosen.Instant]: i18next.t("networkFees.types.instant"),
      [NetworkFeeTypeChosen.Custom]: i18next.t("networkFees.types.custom")
    };
    const FALLBACK_ICONS_BY_CHAINID = {};
    const NETWORK_COLORS_FALLBACK = [ "#CC3C3C", "#B64396", "#D1517F", "#5184D1", "#404BB2", "#43B69A", "#43B671", "#9FB643", "#CDA928", "#EAC130", "#EA7E30" ];
    function getNetworkIconFallbackColor(network) {
      return NETWORK_COLORS_FALLBACK[Number.parseInt(network.chainID, 10) % NETWORK_COLORS_FALLBACK.length];
    }
    function getNetworkIconName(network) {
      return network.name.replaceAll(" ", "").toLowerCase();
    }
    const getNetworkIconSquared = network => {
      if (isBuiltInNetwork(network)) {
        const iconName = getNetworkIconName(network);
        return `./images/networks/${iconName}-square@2x.png`;
      }
      return "";
    };
    const getNetworkIcon = network => {
      if (isBuiltInNetwork(network)) {
        const iconName = getNetworkIconName(network);
        return `./images/networks/${iconName}@2x.png`;
      }
      return FALLBACK_ICONS_BY_CHAINID[network.chainID] ?? "";
    };
    const getBlockExplorerURL = network => DEFAULT_NETWORKS_BY_CHAIN_ID.has(network.chainID) ? blockExplorer[network.chainID].url : network.blockExplorerURL;
    function SharedNetworkIcon(props) {
      const {network, size, hasBackground = false, backgroundOpacity = 1, padding = 0, squared} = props;
      const [currentSource, setCurrentSource] = (0, react.useState)(0);
      const sources = [ squared && getNetworkIconSquared(network), getNetworkIcon(network) ].filter((source => Boolean(source)));
      const hasIconAvailable = currentSource < sources.length;
      (0, react.useEffect)((() => {
        if (sources.length < 1 || !hasIconAvailable) return;
        const img = new Image;
        img.onerror = () => {
          setCurrentSource(currentSource + 1);
        };
        img.src = sources[currentSource];
      }), [ currentSource, sources, hasIconAvailable ]);
      return react.createElement("div", {
        className: style_default().dynamic([ [ "677310023", [ size, size, hasBackground ? "var(--c-bg)" : "transparent", backgroundOpacity, getNetworkIconFallbackColor(network), sources[currentSource], size - padding, size - padding ] ] ]) + " " + "icon_network_wrapper"
      }, hasBackground && hasIconAvailable && react.createElement("div", {
        className: style_default().dynamic([ [ "677310023", [ size, size, hasBackground ? "var(--c-bg)" : "transparent", backgroundOpacity, getNetworkIconFallbackColor(network), sources[currentSource], size - padding, size - padding ] ] ]) + " " + "icon_network_background"
      }), hasIconAvailable ? react.createElement("div", {
        className: style_default().dynamic([ [ "677310023", [ size, size, hasBackground ? "var(--c-bg)" : "transparent", backgroundOpacity, getNetworkIconFallbackColor(network), sources[currentSource], size - padding, size - padding ] ] ]) + " " + "icon_network"
      }) : react.createElement("div", {
        className: style_default().dynamic([ [ "677310023", [ size, size, hasBackground ? "var(--c-bg)" : "transparent", backgroundOpacity, getNetworkIconFallbackColor(network), sources[currentSource], size - padding, size - padding ] ] ]) + " " + "icon_fallback"
      }, network.name[0].toUpperCase() ?? network.chainID), react.createElement(style_default(), {
        id: "677310023",
        dynamic: [ size, size, hasBackground ? "var(--c-bg)" : "transparent", backgroundOpacity, getNetworkIconFallbackColor(network), sources[currentSource], size - padding, size - padding ]
      }, `.icon_network_wrapper.__jsx-style-dynamic-selector{position:relative;width:${size}px;height:${size}px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.icon_network_background.__jsx-style-dynamic-selector{position:absolute;width:100%;height:100%;border-radius:6px;background-color:${hasBackground ? "var(--c-bg)" : "transparent"};opacity:${backgroundOpacity};}.icon_fallback.__jsx-style-dynamic-selector{background:${getNetworkIconFallbackColor(network)};width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--c-text);border-radius:2px;}.icon_network.__jsx-style-dynamic-selector{background:url("${sources[currentSource]}");background-size:cover;height:${size - padding}px;width:${size - padding}px;border-radius:4px;z-index:1;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedNetworkIcon.tsx */`));
    }
    function TopMenuProtocolSwitcher({onClick}) {
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      return react.createElement("button", {
        type: "button",
        onClick: () => onClick?.(),
        "data-testid": "top_menu_network_switcher",
        className: "jsx-1063795588"
      }, react.createElement("div", {
        className: "jsx-1063795588" + " " + "icon_wrap"
      }, react.createElement(SharedNetworkIcon, {
        key: currentNetwork.chainID,
        size: 18,
        network: currentNetwork
      })), react.createElement("div", {
        title: currentNetwork.name,
        className: "jsx-1063795588" + " " + "ellipsis"
      }, currentNetwork.name), react.createElement("span", {
        className: "jsx-1063795588" + " " + "icon_chevron_down"
      }), react.createElement(style_default(), {
        id: "1063795588"
      }, 'button.jsx-1063795588{color:var(--c-text);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;max-width:60%;font-family:"Segment",sans-serif;font-size:13px;font-weight:600;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);padding:6px 10px;border-radius:10px;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);}button.jsx-1063795588:hover{color:var(--c-text);background:var(--c-bg-inset);border-color:var(--c-accent-a40);-webkit-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px);box-shadow:var(--shadow-glow-sm);}.icon_chevron_down.jsx-1063795588{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-mask-image:url("./images/chevron_down.svg");mask-image:url("./images/chevron_down.svg");-webkit-mask-size:12px 7px;mask-size:12px 7px;width:12px;height:7px;margin-left:6px;margin-top:1px;background-color:var(--c-text-secondary);-webkit-transition:all 0.2s ease;transition:all 0.2s ease;}button.jsx-1063795588:hover .icon_chevron_down.jsx-1063795588{background-color:var(--c-text);}.icon_wrap.jsx-1063795588{width:20px;height:20px;border-radius:6px;background-color:var(--c-accent-a15);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;}button.jsx-1063795588:hover .icon_wrap.jsx-1063795588{background-color:var(--c-accent-a25);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProtocolSwitcher.tsx */'));
    }
    function SharedIcon(props) {
      const {id, icon, width, height = width, color = "transparent", style, transitionHoverTime = "0"} = props;
      if ("onClick" in props) {
        const {hoverColor = color, ariaLabel, onClick, disabled = false} = props;
        return react.createElement("button", {
          id,
          type: "button",
          onClick,
          disabled,
          title: ariaLabel,
          "aria-label": ariaLabel,
          style,
          className: style_default().dynamic([ [ "3994663359", [ icon, width, height, color, transitionHoverTime, hoverColor ] ] ]) + " " + "icon"
        }, react.createElement(style_default(), {
          id: "3994663359",
          dynamic: [ icon, width, height, color, transitionHoverTime, hoverColor ]
        }, `.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/${icon}");mask-image:url("./images/${icon}");-webkit-mask-size:cover;mask-size:cover;width:${width}px;height:${height}px;background-color:${color};-webkit-transition:background-color ${transitionHoverTime};transition:background-color ${transitionHoverTime};}.icon.__jsx-style-dynamic-selector:disabled{cursor:unset;background-color:var(--c-border);}.icon.__jsx-style-dynamic-selector:enabled.__jsx-style-dynamic-selector:hover{cursor:pointer;background-color:${hoverColor};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkSWNvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNvQixBQUdxRSxBQVMzQyxBQUtFLGFBSmtCLEVBS2EsK0JBSmhELGVBS0EsMkRBZmtCLHdDQUNxQixxQ0FDQyxzQ0FDUSw4Q0FDVywwSEFDM0QiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDU1NQcm9wZXJ0aWVzLCBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuXG50eXBlIFByb3BzID0ge1xuICBpZD86IHN0cmluZ1xuICBpY29uOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXJcbiAgY29sb3I/OiBzdHJpbmdcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzXG4gIGhvdmVyQ29sb3I/OiBzdHJpbmdcbiAgdHJhbnNpdGlvbkhvdmVyVGltZT86IHN0cmluZ1xuICBhcmlhTGFiZWw/OiBzdHJpbmdcbiAgb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZFxuICBkaXNhYmxlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVkSWNvbihwcm9wczogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgaWNvbixcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQgPSB3aWR0aCxcbiAgICBjb2xvciA9IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdHlsZSxcbiAgICB0cmFuc2l0aW9uSG92ZXJUaW1lID0gXCIwXCIsXG4gIH0gPSBwcm9wc1xuXG4gIGlmIChcIm9uQ2xpY2tcIiBpbiBwcm9wcykge1xuICAgIGNvbnN0IHsgaG92ZXJDb2xvciA9IGNvbG9yLCBhcmlhTGFiZWwsIG9uQ2xpY2ssIGRpc2FibGVkID0gZmFsc2UgfSA9IHByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICBpZD17aWR9XG4gICAgICAgIGNsYXNzTmFtZT1cImljb25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICB0aXRsZT17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzLyR7aWNvbn1cIik7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgd2lkdGg6ICR7d2lkdGh9cHg7XG4gICAgICAgICAgICBoZWlnaHQ6ICR7aGVpZ2h0fXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcn07XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR7dHJhbnNpdGlvbkhvdmVyVGltZX07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmljb246ZGlzYWJsZWQge1xuICAgICAgICAgICAgY3Vyc29yOiB1bnNldDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYm9yZGVyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuaWNvbjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aG92ZXJDb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICBgfTwvc3R5bGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxpIGlkPXtpZH0gY2xhc3NOYW1lPVwiaWNvblwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvJHtpY29ufVwiKTtcbiAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgICAgIGhlaWdodDogJHtoZWlnaHR9cHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcn07XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2k+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedIcon.tsx */`));
      }
      return react.createElement("i", {
        id,
        style,
        className: style_default().dynamic([ [ "3076955109", [ icon, width, height, color ] ] ]) + " " + "icon"
      }, react.createElement(style_default(), {
        id: "3076955109",
        dynamic: [ icon, width, height, color ]
      }, `.icon.__jsx-style-dynamic-selector{display:inline-block;-webkit-mask-image:url("./images/${icon}");mask-image:url("./images/${icon}");-webkit-mask-size:cover;mask-size:cover;width:${width}px;height:${height}px;background-color:${color};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkSWNvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUVrQixBQUdnQyxxQkFDbUMsd0hBQ3hDLHdDQUNxQixxQ0FDQyxzQ0FDUSw4Q0FDaEQiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDU1NQcm9wZXJ0aWVzLCBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuXG50eXBlIFByb3BzID0ge1xuICBpZD86IHN0cmluZ1xuICBpY29uOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXJcbiAgY29sb3I/OiBzdHJpbmdcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzXG4gIGhvdmVyQ29sb3I/OiBzdHJpbmdcbiAgdHJhbnNpdGlvbkhvdmVyVGltZT86IHN0cmluZ1xuICBhcmlhTGFiZWw/OiBzdHJpbmdcbiAgb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZFxuICBkaXNhYmxlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVkSWNvbihwcm9wczogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgaWNvbixcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQgPSB3aWR0aCxcbiAgICBjb2xvciA9IFwidHJhbnNwYXJlbnRcIixcbiAgICBzdHlsZSxcbiAgICB0cmFuc2l0aW9uSG92ZXJUaW1lID0gXCIwXCIsXG4gIH0gPSBwcm9wc1xuXG4gIGlmIChcIm9uQ2xpY2tcIiBpbiBwcm9wcykge1xuICAgIGNvbnN0IHsgaG92ZXJDb2xvciA9IGNvbG9yLCBhcmlhTGFiZWwsIG9uQ2xpY2ssIGRpc2FibGVkID0gZmFsc2UgfSA9IHByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICBpZD17aWR9XG4gICAgICAgIGNsYXNzTmFtZT1cImljb25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICB0aXRsZT17YXJpYUxhYmVsfVxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzLyR7aWNvbn1cIik7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgd2lkdGg6ICR7d2lkdGh9cHg7XG4gICAgICAgICAgICBoZWlnaHQ6ICR7aGVpZ2h0fXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcn07XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR7dHJhbnNpdGlvbkhvdmVyVGltZX07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmljb246ZGlzYWJsZWQge1xuICAgICAgICAgICAgY3Vyc29yOiB1bnNldDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYm9yZGVyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuaWNvbjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aG92ZXJDb2xvcn07XG4gICAgICAgICAgfVxuICAgICAgICBgfTwvc3R5bGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxpIGlkPXtpZH0gY2xhc3NOYW1lPVwiaWNvblwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvJHtpY29ufVwiKTtcbiAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgICAgIGhlaWdodDogJHtoZWlnaHR9cHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcn07XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2k+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedIcon.tsx */`));
    }
    async function getAvatarType(url) {
      if (!url) return null;
      try {
        const fileTypeFetch = await fetch(url, {
          method: "HEAD"
        });
        const fileType = fileTypeFetch.headers.get("Content-Type");
        return fileType;
      } catch {
        return null;
      }
    }
    function SharedAvatar({width, background = "var(--c-text-tertiary)", borderRadius = "12px", avatarURL, backupAvatar, style}) {
      const [avatarType, setAvatarType] = (0, react.useState)(null);
      (0, react.useEffect)((() => {
        const fetchAvatarType = async () => {
          const type = await getAvatarType(avatarURL);
          setAvatarType(type);
        };
        fetchAvatarType();
      }), [ avatarURL ]);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        style,
        className: style_default().dynamic([ [ "3784858261", [ width, width, borderRadius, background, borderRadius, avatarURL ?? backupAvatar, borderRadius ] ] ]) + " " + "avatar_container"
      }, avatarType === "video/mp4" ? react.createElement("div", {
        className: style_default().dynamic([ [ "3784858261", [ width, width, borderRadius, background, borderRadius, avatarURL ?? backupAvatar, borderRadius ] ] ]) + " " + "video"
      }, react.createElement("video", {
        src: avatarURL,
        autoPlay: true,
        muted: true,
        loop: true,
        className: style_default().dynamic([ [ "3784858261", [ width, width, borderRadius, background, borderRadius, avatarURL ?? backupAvatar, borderRadius ] ] ])
      })) : react.createElement("div", {
        className: style_default().dynamic([ [ "3784858261", [ width, width, borderRadius, background, borderRadius, avatarURL ?? backupAvatar, borderRadius ] ] ]) + " " + "avatar"
      })), react.createElement(style_default(), {
        id: "3784858261",
        dynamic: [ width, width, borderRadius, background, borderRadius, avatarURL ?? backupAvatar, borderRadius ]
      }, `.avatar_container.__jsx-style-dynamic-selector{width:${width};height:${width};border-radius:${borderRadius};background-color:${background};-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.avatar.__jsx-style-dynamic-selector{width:100%;height:100%;border-radius:${borderRadius};-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;background:url("${avatarURL ?? backupAvatar}");background-size:cover;background-position:center;background-repeat:no-repeat;}.video.__jsx-style-dynamic-selector{width:100%;height:100%;border-radius:${borderRadius};overflow:hidden;}.video.__jsx-style-dynamic-selector>video.__jsx-style-dynamic-selector{width:100%;height:100%;object-fit:cover;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQXZhdGFyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzRGtCLEFBRzhDLEFBT3hCLEFBVUEsQUFNQSxXQWZDLEFBVUEsQUFNQSxZQWYrQixBQVVBLEFBTTFCLFlBeEJtQixLQXlCdEMsMEJBaEJnQixBQVVFLEtBbEIyQixXQW1CN0MsZ0NBbEJnRCxRQVFDLHNDQVBqQyxTQVFRLHNCQUNLLHlCQVI3QixFQVM4Qiw0QkFDOUIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRBdmF0YXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENTU1Byb3BlcnRpZXMsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuXG50eXBlIFNoYXJlZEF2YXRhclByb3BzID0ge1xuICB3aWR0aDogc3RyaW5nXG4gIGJhY2tncm91bmQ/OiBzdHJpbmdcbiAgYm9yZGVyUmFkaXVzPzogc3RyaW5nXG4gIGF2YXRhclVSTD86IHN0cmluZ1xuICBiYWNrdXBBdmF0YXI6IHN0cmluZ1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXNcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXZhdGFyVHlwZSh1cmw/OiBzdHJpbmcpIHtcbiAgaWYgKCF1cmwpIHJldHVybiBudWxsXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlVHlwZUZldGNoID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogXCJIRUFEXCIgfSlcbiAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGVUeXBlRmV0Y2guaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIilcblxuICAgIHJldHVybiBmaWxlVHlwZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEF2YXRhcih7XG4gIHdpZHRoLFxuICBiYWNrZ3JvdW5kID0gXCJ2YXIoLS1jLXRleHQtdGVydGlhcnkpXCIsXG4gIGJvcmRlclJhZGl1cyA9IFwiMTJweFwiLFxuICBhdmF0YXJVUkwsXG4gIGJhY2t1cEF2YXRhcixcbiAgc3R5bGUsXG59OiBTaGFyZWRBdmF0YXJQcm9wcykge1xuICBjb25zdCBbYXZhdGFyVHlwZSwgc2V0QXZhdGFyVHlwZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hBdmF0YXJUeXBlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGF3YWl0IGdldEF2YXRhclR5cGUoYXZhdGFyVVJMKVxuICAgICAgc2V0QXZhdGFyVHlwZSh0eXBlKVxuICAgIH1cblxuICAgIGZldGNoQXZhdGFyVHlwZSgpXG4gIH0sIFthdmF0YXJVUkxdKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXZhdGFyX2NvbnRhaW5lclwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIHthdmF0YXJUeXBlID09PSBcInZpZGVvL21wNFwiID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmlkZW9cIj5cbiAgICAgICAgICAgIDx2aWRlbyBzcmM9e2F2YXRhclVSTH0gYXV0b1BsYXkgbXV0ZWQgbG9vcCAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXZhdGFyXCIgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuYXZhdGFyX2NvbnRhaW5lciB7XG4gICAgICAgICAgd2lkdGg6ICR7d2lkdGh9O1xuICAgICAgICAgIGhlaWdodDogJHt3aWR0aH07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXJSYWRpdXN9O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZH07XG4gICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyUmFkaXVzfTtcbiAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIke2F2YXRhclVSTCA/PyBiYWNrdXBBdmF0YXJ9XCIpO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIH1cbiAgICAgICAgLnZpZGVvIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXJSYWRpdXN9O1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cbiAgICAgICAgLnZpZGVvID4gdmlkZW8ge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAvatar.tsx */`));
    }
    function SharedCurrentAccountInformation({address, shortenedAddress, name, avatarURL, showHoverStyle = false, showLockStatus}) {
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const icon = areInternalSignersUnlocked ? "unlock" : "lock";
      return react.createElement("div", {
        className: "jsx-1273634354" + " " + (classnames_default()("account_info_wrap", {
          hover: showHoverStyle
        }) || "")
      }, react.createElement("span", {
        title: address,
        className: "jsx-1273634354" + " " + "account_info_label ellipsis"
      }, name ?? shortenedAddress), react.createElement(SharedAvatar, {
        avatarURL,
        backupAvatar: "./images/portrait.png",
        width: "32px",
        style: {
          marginLeft: 8
        }
      }), showLockStatus && react.createElement("div", {
        "data-testid": "lock",
        className: "jsx-1273634354" + " " + "lock_icon_wrap"
      }, react.createElement(SharedIcon, {
        icon: `icons/s/${icon}-bold.svg`,
        width: 16,
        color: `var(--${areInternalSignersUnlocked ? "success" : "error"})`,
        ariaLabel: icon
      })), react.createElement(style_default(), {
        id: "1273634354"
      }, ".account_info_wrap.jsx-1273634354{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;position:relative;min-width:0;}.hover.jsx-1273634354:hover .account_info_label.jsx-1273634354{color:var(--c-accent);}.lock_icon_wrap.jsx-1273634354{background-color:var(--c-bg);padding:2px 6px 4px 2px;border-radius:8px;position:absolute;right:-12px;top:-10px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQ3VycmVudEFjY291bnRJbmZvcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NTLEFBRzBCLEFBT1MsQUFHTyxzQkFGL0IsT0FHMEIsd0JBQ04sa0JBQ0EsR0FaQyxlQWFQLFlBQ0YsVUFDWix3REFka0IsZ0JBQ0Usa0JBQ04sWUFDZCIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZEN1cnJlbnRBY2NvdW50SW5mb3JtYXRpb24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi9TaGFyZWRJY29uXCJcbmltcG9ydCB7IHVzZUFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3NpZ25pbmctaG9va3NcIlxuaW1wb3J0IFNoYXJlZEF2YXRhciBmcm9tIFwiLi9TaGFyZWRBdmF0YXJcIlxuXG50eXBlIFByb3BzID0ge1xuICBhZGRyZXNzOiBzdHJpbmdcbiAgc2hvcnRlbmVkQWRkcmVzczogc3RyaW5nXG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBhdmF0YXJVUkw6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBzaG93SG92ZXJTdHlsZT86IGJvb2xlYW5cbiAgc2hvd0xvY2tTdGF0dXM/OiBib29sZWFuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEN1cnJlbnRBY2NvdW50SW5mb3JtYXRpb24oe1xuICBhZGRyZXNzLFxuICBzaG9ydGVuZWRBZGRyZXNzLFxuICBuYW1lLFxuICBhdmF0YXJVUkwsXG4gIHNob3dIb3ZlclN0eWxlID0gZmFsc2UsXG4gIHNob3dMb2NrU3RhdHVzLFxufTogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBhcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZCA9IHVzZUFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkKGZhbHNlKVxuICBjb25zdCBpY29uID0gYXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQgPyBcInVubG9ja1wiIDogXCJsb2NrXCJcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFjY291bnRfaW5mb193cmFwXCIsIHsgaG92ZXI6IHNob3dIb3ZlclN0eWxlIH0pfT5cbiAgICAgIDxzcGFuIHRpdGxlPXthZGRyZXNzfSBjbGFzc05hbWU9XCJhY2NvdW50X2luZm9fbGFiZWwgZWxsaXBzaXNcIj5cbiAgICAgICAge25hbWUgPz8gc2hvcnRlbmVkQWRkcmVzc31cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxTaGFyZWRBdmF0YXJcbiAgICAgICAgYXZhdGFyVVJMPXthdmF0YXJVUkx9XG4gICAgICAgIGJhY2t1cEF2YXRhcj1cIi4vaW1hZ2VzL3BvcnRyYWl0LnBuZ1wiXG4gICAgICAgIHdpZHRoPVwiMzJweFwiXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDggfX1cbiAgICAgIC8+XG4gICAgICB7c2hvd0xvY2tTdGF0dXMgJiYgKFxuICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwibG9ja1wiIGNsYXNzTmFtZT1cImxvY2tfaWNvbl93cmFwXCI+XG4gICAgICAgICAgPFNoYXJlZEljb25cbiAgICAgICAgICAgIGljb249e2BpY29ucy9zLyR7aWNvbn0tYm9sZC5zdmdgfVxuICAgICAgICAgICAgd2lkdGg9ezE2fVxuICAgICAgICAgICAgY29sb3I9e2B2YXIoLS0ke2FyZUludGVybmFsU2lnbmVyc1VubG9ja2VkID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCJ9KWB9XG4gICAgICAgICAgICBhcmlhTGFiZWw9e2ljb259XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuYWNjb3VudF9pbmZvX3dyYXAge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBBbGxvdyB0aGUgYWNjb3VudCBhZGRyZXNzL25hbWUgdG8gY29sbGFwc2UgdG8gYW4gZWxsaXBzaXMuXG4gICAgICAgICAgfVxuICAgICAgICAgIC5ob3Zlcjpob3ZlciAuYWNjb3VudF9pbmZvX2xhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5sb2NrX2ljb25fd3JhcCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCA2cHggNHB4IDJweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAtMTJweDtcbiAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedCurrentAccountInformation.tsx */"));
    }
    function getHorizontalPosition(horizontal, width, horizontalShift) {
      switch (horizontal) {
       case "center":
        return `right: -${width / 2 + 4 - horizontalShift}px;`;

       case "right":
        return `right: -${width + 8 - horizontalShift}px;`;

       case "left":
        return `left: -${width + 8 - horizontalShift}px;`;

       default:
        return "";
      }
    }
    function getVerticalPosition(vertical, height, verticalShift) {
      switch (vertical) {
       case "bottom":
        return `top: ${height - verticalShift}px; margin-top: 5px;`;

       case "top":
        return `bottom: ${height - verticalShift}px; margin-bottom: 5px;`;

       default:
        return "";
      }
    }
    function SharedTooltip(props) {
      const {children, verticalPosition = "bottom", horizontalPosition = "center", horizontalShift = 0, verticalShift = 0, width, height = 20, type = "default", isOpen = false, disabled = false, IconComponent, style} = props;
      const [isShowingTooltip, setIsShowingTooltip] = (0, react.useState)(isOpen);
      (0, react.useEffect)((() => {
        setIsShowingTooltip(isOpen);
      }), [ isOpen ]);
      return react.createElement("div", {
        "data-testid": "tooltip_wrap",
        onMouseEnter: () => {
          setIsShowingTooltip(true);
        },
        onMouseLeave: () => {
          setIsShowingTooltip(false);
        },
        style,
        className: style_default().dynamic([ [ "2411844428", [ width !== undefined ? `${width}px` : "auto", getVerticalPosition(verticalPosition, height, verticalShift), width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : "" ] ] ]) + " " + "tooltip_wrap"
      }, IconComponent ? react.createElement(IconComponent, {
        isShowingTooltip,
        className: style_default().dynamic([ [ "2411844428", [ width !== undefined ? `${width}px` : "auto", getVerticalPosition(verticalPosition, height, verticalShift), width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : "" ] ] ])
      }) : react.createElement("div", {
        className: style_default().dynamic([ [ "2411844428", [ width !== undefined ? `${width}px` : "auto", getVerticalPosition(verticalPosition, height, verticalShift), width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : "" ] ] ]) + " " + "info_icon"
      }), !disabled && isShowingTooltip ? react.createElement("div", {
        className: style_default().dynamic([ [ "2411844428", [ width !== undefined ? `${width}px` : "auto", getVerticalPosition(verticalPosition, height, verticalShift), width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : "" ] ] ]) + " " + (classnames_default()("tooltip", {
          dark: type === "dark"
        }) || "")
      }, children) : null, react.createElement(style_default(), {
        id: "2411844428",
        dynamic: [ width !== undefined ? `${width}px` : "auto", getVerticalPosition(verticalPosition, height, verticalShift), width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : "" ]
      }, `.tooltip_wrap.__jsx-style-dynamic-selector{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block;position:relative;padding:5px 0;margin:-5px 0 -5px 8px;}.info_icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/icons/m/info.svg");mask-image:url("./images/icons/m/info.svg");-webkit-mask-size:cover;mask-size:cover;background-color:var(--tooltip-icon-color,var(--c-text-tertiary));width:16px;height:16px;display:block;}.tooltip.__jsx-style-dynamic-selector{width:${width !== undefined ? `${width}px` : "auto"};position:absolute;box-shadow: 0 2px 8px rgba(0,0,0,0.12), 0 6px 16px rgba(0,0,0,0.08);background-color:var(--c-text);color:var(--c-text-inverse);font-size:14px;font-weight:500;line-height:20px;border-radius:3px;padding:12px;z-index:20;${getVerticalPosition(verticalPosition, height, verticalShift)} ${width !== undefined ? getHorizontalPosition(horizontalPosition, width, horizontalShift) : ""};}.dark.__jsx-style-dynamic-selector{background:var(--c-bg-alt);color:var(--c-text-secondary);border-radius:4px;font-size:14px;font-weight:500;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;line-height:16px;text-align:center;padding:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedTooltip.tsx */`));
    }
    function textUtils_capitalize(s) {
      return s[0].toUpperCase() + s.slice(1);
    }
    function trimWithEllipsis(text, maxLength) {
      return text && text.length > maxLength ? `${text.slice(0, maxLength).trim()}...` : text;
    }
    function SharedAddress({id, name, address, elide = false, nameResolverSystem, alwaysShowAddress = false, showCopyIcon}) {
      const dispatch = useBackgroundDispatch();
      const primaryText = name ?? truncateAddress(address);
      const copyAddress = (0, react.useCallback)((() => {
        navigator.clipboard.writeText(address);
        dispatch(setSnackbarMessage("Address copied to clipboard"));
      }), [ address, dispatch ]);
      return react.createElement("button", {
        id,
        type: "button",
        onClick: copyAddress,
        title: `Copy to clipboard:\n${address}`,
        className: "jsx-3316651976" + " " + (classnames_default()({
          ellipsis: elide
        }) || "")
      }, react.createElement("p", {
        className: "jsx-3316651976" + " " + (classnames_default()({
          ellipsis: elide
        }) || "")
      }, trimWithEllipsis(primaryText, 15), name !== undefined && nameResolverSystem !== undefined && react.createElement(react.Fragment, null, react.createElement(SharedTooltip, {
        width: 130
      }, react.createElement("p", {
        className: "jsx-3316651976" + " " + "name_source_tooltip"
      }, "Resolved using ", nameResolverSystem)), " ")), alwaysShowAddress && name !== undefined && react.createElement("p", {
        className: "jsx-3316651976" + " " + "detail"
      }, truncateAddress(address)), showCopyIcon === true && react.createElement("span", {
        className: "jsx-3316651976" + " " + "copy_icon"
      }), react.createElement(style_default(), {
        id: "3316651976"
      }, 'button.jsx-3316651976{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;white-space:nowrap;-webkit-transition:300ms color;transition:300ms color;max-width:100%;}button.jsx-3316651976:last-child{top:3px;}button.jsx-3316651976:hover{color:var(--c-accent-light);}.copy_icon.jsx-3316651976{-webkit-mask-image:url("./images/copy@2x.png");mask-image:url("./images/copy@2x.png");-webkit-mask-size:cover;mask-size:cover;width:24px;height:24px;margin-left:10px;display:inline-block;background-color:var(--c-text);}button.jsx-3316651976:hover .copy_icon.jsx-3316651976{background-color:var(--c-accent);}.name_source_tooltip.jsx-3316651976{margin:0;text-align:center;}p.jsx-3316651976{font-size:16px;line-height:24px;margin:0;}p.detail.jsx-3316651976{font-size:14px;line-height:16px;color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAddress.tsx */'));
    }
    function TopMenuProfileTooltip(props) {
      const {t} = useTranslation();
      const {address} = props;
      return react.createElement("div", {
        className: "jsx-4237611122" + " " + "tooltip"
      }, react.createElement(SharedAddress, {
        address,
        name: t("topMenu.copyAddressTooltip"),
        showCopyIcon: true
      }), react.createElement(style_default(), {
        id: "4237611122"
      }, ".tooltip.jsx-4237611122{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;z-index:999999999;cursor:pointer;bottom:-30px;right:0;background-color:var(--c-bg-alt);padding:8px 10px 8px;border-radius:8px;color:var(--c-text);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ub3BNZW51L1RvcE1lbnVQcm9maWxlVG9vbHRpcC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJrQixBQUd3QiwwRUFDTSw2RkFDRCxrQkFDQSxrQkFDSCxlQUNGLGFBQ0wsUUFDeUIsaUNBQ1oscUJBQ0gsa0JBQ0Usb0JBQ3RCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ub3BNZW51L1RvcE1lbnVQcm9maWxlVG9vbHRpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IFNoYXJlZEFkZHJlc3MgZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRBZGRyZXNzXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVG9wTWVudVByb2ZpbGVUb29sdGlwKHByb3BzOiB7XG4gIGFkZHJlc3M6IHN0cmluZ1xufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGFkZHJlc3MgfSA9IHByb3BzXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2x0aXBcIj5cbiAgICAgIDxTaGFyZWRBZGRyZXNzXG4gICAgICAgIGFkZHJlc3M9e2FkZHJlc3N9XG4gICAgICAgIG5hbWU9e3QoXCJ0b3BNZW51LmNvcHlBZGRyZXNzVG9vbHRpcFwiKX1cbiAgICAgICAgc2hvd0NvcHlJY29uXG4gICAgICAvPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAudG9vbHRpcCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB6LWluZGV4OiA5OTk5OTk5OTk7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIGJvdHRvbTogLTMwcHg7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgIHBhZGRpbmc6IDhweCAxMHB4IDhweDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProfileTooltip.tsx */"));
    }
    const isAccountWithSecrets = accountType => accountType === AccountType.Imported || accountType === AccountType.Internal || accountType === AccountType.keyPair;
    const isAccountWithMnemonic = accountType => accountType === AccountType.Imported || accountType === AccountType.Internal;
    const isAccountSingular = accountType => accountType === AccountType.keyPair || accountType === AccountType.ReadOnly;
    const isSignerWithSecrets = accountSigner => accountSigner.type === "keyPair";
    const TOOLTIP_DELAY = 500;
    function TopMenuProfileButton(props) {
      const {name, avatarURL, address, accountType} = useBackgroundSelector(selectCurrentAccountTotal) ?? {};
      const {truncatedAddress} = useBackgroundSelector(selectCurrentAccount) ?? {};
      const [shouldDisplayTooltip, setShouldDisplayTooltip] = (0, react.useState)(false);
      const timerRef = (0, react.useRef)(undefined);
      const {onClick} = props;
      const showTooltip = () => {
        timerRef.current = window.setTimeout((() => setShouldDisplayTooltip(true)), TOOLTIP_DELAY);
      };
      const hideTooltip = () => {
        clearTimeout(timerRef.current ?? 0);
        setShouldDisplayTooltip(false);
      };
      const handleClick = () => {
        hideTooltip();
        onClick?.();
      };
      return react.createElement("div", {
        onMouseLeave: hideTooltip,
        "data-testid": "top_menu_profile_button",
        className: "jsx-2538477847" + " " + "profile_wrapper"
      }, react.createElement("button", {
        type: "button",
        onClick: handleClick,
        onMouseEnter: showTooltip,
        className: "jsx-2538477847" + " " + "profile_button"
      }, truncatedAddress !== undefined && react.createElement(SharedCurrentAccountInformation, {
        address: address ?? "",
        shortenedAddress: truncatedAddress,
        name,
        avatarURL,
        showHoverStyle: true,
        showLockStatus: accountType && isAccountWithSecrets(accountType)
      })), shouldDisplayTooltip && address && react.createElement(TopMenuProfileTooltip, {
        address
      }), react.createElement(style_default(), {
        id: "2538477847"
      }, ".profile_wrapper.jsx-2538477847{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;}.profile_button.jsx-2538477847{height:64px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ub3BNZW51L1RvcE1lbnVQcm9maWxlQnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtRVMsQUFHK0IsQUFPTixZQUNDLE1BTEEsb0VBTU0sTUFMUCxZQUNkLDJFQUttQixxRkFDTCxZQUNkIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ub3BNZW51L1RvcE1lbnVQcm9maWxlQnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHNlbGVjdEN1cnJlbnRBY2NvdW50LFxuICBzZWxlY3RDdXJyZW50QWNjb3VudFRvdGFsLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VCYWNrZ3JvdW5kU2VsZWN0b3IgfSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuaW1wb3J0IFNoYXJlZEN1cnJlbnRBY2NvdW50SW5mb3JtYXRpb24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRDdXJyZW50QWNjb3VudEluZm9ybWF0aW9uXCJcbmltcG9ydCBUb3BNZW51UHJvZmlsZVRvb2x0aXAgZnJvbSBcIi4vVG9wTWVudVByb2ZpbGVUb29sdGlwXCJcbmltcG9ydCB7IGlzQWNjb3VudFdpdGhTZWNyZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2FjY291bnRzXCJcblxuY29uc3QgVE9PTFRJUF9ERUxBWSA9IDUwMFxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUb3BNZW51UHJvZmlsZUJ1dHRvbihwcm9wczoge1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZFxufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgbmFtZSwgYXZhdGFyVVJMLCBhZGRyZXNzLCBhY2NvdW50VHlwZSB9ID1cbiAgICB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0Q3VycmVudEFjY291bnRUb3RhbCkgPz8ge31cblxuICBjb25zdCB7IHRydW5jYXRlZEFkZHJlc3MgfSA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihzZWxlY3RDdXJyZW50QWNjb3VudCkgPz8ge31cblxuICBjb25zdCBbc2hvdWxkRGlzcGxheVRvb2x0aXAsIHNldFNob3VsZERpc3BsYXlUb29sdGlwXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0aW1lclJlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBjb25zdCB7IG9uQ2xpY2sgfSA9IHByb3BzXG5cbiAgY29uc3Qgc2hvd1Rvb2x0aXAgPSAoKSA9PiB7XG4gICAgdGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gc2V0U2hvdWxkRGlzcGxheVRvb2x0aXAodHJ1ZSksXG4gICAgICBUT09MVElQX0RFTEFZLFxuICAgIClcbiAgfVxuICBjb25zdCBoaWRlVG9vbHRpcCA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCA/PyAwKVxuICAgIHNldFNob3VsZERpc3BsYXlUb29sdGlwKGZhbHNlKVxuICB9XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGhpZGVUb29sdGlwKClcbiAgICBvbkNsaWNrPy4oKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJwcm9maWxlX3dyYXBwZXJcIlxuICAgICAgb25Nb3VzZUxlYXZlPXtoaWRlVG9vbHRpcH1cbiAgICAgIGRhdGEtdGVzdGlkPVwidG9wX21lbnVfcHJvZmlsZV9idXR0b25cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3NOYW1lPVwicHJvZmlsZV9idXR0b25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uTW91c2VFbnRlcj17c2hvd1Rvb2x0aXB9XG4gICAgICA+XG4gICAgICAgIHt0cnVuY2F0ZWRBZGRyZXNzICE9PSB1bmRlZmluZWQgJiYgKFxuICAgICAgICAgIDxTaGFyZWRDdXJyZW50QWNjb3VudEluZm9ybWF0aW9uXG4gICAgICAgICAgICBhZGRyZXNzPXthZGRyZXNzID8/IFwiXCJ9XG4gICAgICAgICAgICBzaG9ydGVuZWRBZGRyZXNzPXt0cnVuY2F0ZWRBZGRyZXNzfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGF2YXRhclVSTD17YXZhdGFyVVJMfVxuICAgICAgICAgICAgc2hvd0hvdmVyU3R5bGVcbiAgICAgICAgICAgIHNob3dMb2NrU3RhdHVzPXthY2NvdW50VHlwZSAmJiBpc0FjY291bnRXaXRoU2VjcmV0cyhhY2NvdW50VHlwZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge3Nob3VsZERpc3BsYXlUb29sdGlwICYmIGFkZHJlc3MgJiYgKFxuICAgICAgICA8VG9wTWVudVByb2ZpbGVUb29sdGlwIGFkZHJlc3M9e2FkZHJlc3N9IC8+XG4gICAgICApfVxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAucHJvZmlsZV93cmFwcGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgLy8gQWxsb3cgdGhlIGFjY291bnQgYWRkcmVzcy9uYW1lIHRvIGNvbGxhcHNlIHRvIGFuIGVsbGlwc2lzLlxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnByb2ZpbGVfYnV0dG9uIHtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7IC8vIEFsbG93IHRoZSBhY2NvdW50IGFkZHJlc3MvbmFtZSB0byBjb2xsYXBzZSB0byBhbiBlbGxpcHNpcy5cbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProfileButton.tsx */"));
    }
    function SharedSlideUpMenuPanel({header, icon, style, children, type = "normal"}) {
      return react.createElement("div", {
        className: "jsx-2880019763"
      }, react.createElement("div", {
        className: "jsx-2880019763" + " " + (classnames_default()("header_wrap", {
          small: type === "small"
        }) || "")
      }, icon && react.createElement(SharedIcon, {
        width: 16,
        height: 16,
        icon,
        style: {
          marginRight: 5
        },
        color: "var(--c-text)"
      }), react.createElement("h3", {
        style,
        className: "jsx-2880019763"
      }, header)), children, react.createElement(style_default(), {
        id: "2880019763"
      }, "h3.jsx-2880019763{margin:0;}.header_wrap.jsx-2880019763{position:-webkit-sticky;position:sticky;margin-top:-6px;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:24px;padding-bottom:16px;}.header_wrap.small.jsx-2880019763 h3.jsx-2880019763{font-size:16px;line-height:24px;font-weight:500;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkU2xpZGVVcE1lbnVQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0NrQixBQUdvQixBQUdPLEFBVUQsU0FaakIsTUFhbUIsaUJBQ0QsUUFYQSxRQVlsQixRQVhZLFVBRUcsMEVBQ00sNkZBQ0Qsa0JBQ0Usb0JBQ3RCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkU2xpZGVVcE1lbnVQYW5lbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgUmVhY3QsIHsgQ1NTUHJvcGVydGllcywgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEljb24gZnJvbSBcIi4vU2hhcmVkSWNvblwiXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGhlYWRlcjogc3RyaW5nXG4gIGljb24/OiBzdHJpbmdcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlXG4gIHR5cGU/OiBcIm5vcm1hbFwiIHwgXCJzbWFsbFwiXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZFNsaWRlVXBNZW51UGFuZWwoe1xuICBoZWFkZXIsXG4gIGljb24sXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdHlwZSA9IFwibm9ybWFsXCIsXG59OiBQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwiaGVhZGVyX3dyYXBcIiwge1xuICAgICAgICAgIHNtYWxsOiB0eXBlID09PSBcInNtYWxsXCIsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICB7aWNvbiAmJiAoXG4gICAgICAgICAgPFNoYXJlZEljb25cbiAgICAgICAgICAgIHdpZHRoPXsxNn1cbiAgICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgICBpY29uPXtpY29ufVxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDUgfX1cbiAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tYy10ZXh0KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPGgzIHN0eWxlPXtzdHlsZX0+e2hlYWRlcn08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIGgzIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlcl93cmFwIHtcbiAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgIG1hcmdpbi10b3A6IC02cHg7XG4gICAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlcl93cmFwLnNtYWxsIGgzIHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSlideUpMenuPanel.tsx */"));
    }
    function getVariantStyles(variant) {
      let styles;
      switch (variant) {
       case "hunter-green":
        styles = [ "var(--c-bg-alt)", "var(--c-accent)" ];
        break;

       case "dark-green":
        styles = [ "var(--c-bg-inset)", "var(--c-accent)" ];
        break;

       case "transparent":
        styles = [ "var(--c-text-secondary)", "transparent" ];
        break;

       default:
        assertUnreachable(variant);
      }
      return styles;
    }
    function SharedLoadingSpinner({size = "medium", variant = "dark-green"}) {
      const [color, accent] = (0, react.useMemo)((() => getVariantStyles(variant)), [ variant ]);
      return react.createElement("div", {
        className: style_default().dynamic([ [ "3532440236", [ color, accent ] ] ]) + " " + (classnames_default()("spinner", size) || "")
      }, react.createElement(style_default(), {
        id: "3532440236",
        dynamic: [ color, accent ]
      }, `.spinner.__jsx-style-dynamic-selector{width:28px;height:28px;border-radius:50%;border:2px solid ${color};border-top-color:${accent};box-sizing:border-box;-webkit-animation:spinner-__jsx-style-dynamic-selector 1s linear infinite;animation:spinner-__jsx-style-dynamic-selector 1s linear infinite;}@-webkit-keyframes spinner-__jsx-style-dynamic-selector{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes spinner-__jsx-style-dynamic-selector{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}.small.__jsx-style-dynamic-selector{width:14px;height:14px;-webkit-animation:spinner-__jsx-style-dynamic-selector 0.8s linear infinite;animation:spinner-__jsx-style-dynamic-selector 0.8s linear infinite;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkTG9hZGluZ1NwaW5uZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBDUyxBQUd3QixBQVVnQixBQUloQixXQWJDLEFBY0EsWUFiTSxBQWNxQixrQkFiTyw4Q0FDQSxBQU85Qyw4Q0FOc0Isc0JBQ2UsWUFXdkMsZ0lBVkEiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRMb2FkaW5nU3Bpbm5lci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB7IGFzc2VydFVucmVhY2hhYmxlIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9saWIvdXRpbHMvdHlwZS1ndWFyZHNcIlxuXG50eXBlIFNoYXJlZExvYWRpbmdTcGlubmVyUHJvcHMgPSB7XG4gIHNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiXG4gIHZhcmlhbnQ/OiBcImh1bnRlci1ncmVlblwiIHwgXCJkYXJrLWdyZWVuXCIgfCBcInRyYW5zcGFyZW50XCJcbn1cblxuZnVuY3Rpb24gZ2V0VmFyaWFudFN0eWxlcyhcbiAgdmFyaWFudDogRXhjbHVkZTxTaGFyZWRMb2FkaW5nU3Bpbm5lclByb3BzW1widmFyaWFudFwiXSwgdW5kZWZpbmVkPixcbikge1xuICBsZXQgc3R5bGVzOiBbc3RyaW5nLCBzdHJpbmddXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIC8vIHVzZSBmb3IgdGhlIHByaW1hcnkgYnV0dG9uXG4gICAgY2FzZSBcImh1bnRlci1ncmVlblwiOlxuICAgICAgc3R5bGVzID0gW1widmFyKC0tYy1iZy1hbHQpXCIsIFwidmFyKC0tYy1hY2NlbnQpXCJdXG4gICAgICBicmVha1xuICAgIC8vIHVzZSBmb3IgdGhlIHNlY29uZGFyeSBidXR0b25cbiAgICBjYXNlIFwiZGFyay1ncmVlblwiOlxuICAgICAgc3R5bGVzID0gW1widmFyKC0tYy1iZy1pbnNldClcIiwgXCJ2YXIoLS1jLWFjY2VudClcIl1cbiAgICAgIGJyZWFrXG4gICAgLy8gdXNlIGZvciB0aGUgZGlzYWJsZWQgYnV0dG9uXG4gICAgY2FzZSBcInRyYW5zcGFyZW50XCI6XG4gICAgICBzdHlsZXMgPSBbXCJ2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KVwiLCBcInRyYW5zcGFyZW50XCJdXG4gICAgICBicmVha1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZhcmlhbnQpXG4gIH1cblxuICByZXR1cm4gc3R5bGVzXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZExvYWRpbmdTcGlubmVyKHtcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIHZhcmlhbnQgPSBcImRhcmstZ3JlZW5cIixcbn06IFNoYXJlZExvYWRpbmdTcGlubmVyUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbY29sb3IsIGFjY2VudF0gPSB1c2VNZW1vKCgpID0+IGdldFZhcmlhbnRTdHlsZXModmFyaWFudCksIFt2YXJpYW50XSlcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcInNwaW5uZXJcIiwgc2l6ZSl9PlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuc3Bpbm5lciB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICR7Y29sb3J9O1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHthY2NlbnR9O1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbm5lciAxcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBrZXlmcmFtZXMgc3Bpbm5lciB7XG4gICAgICAgICAgICB0byB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5zbWFsbCB7XG4gICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbm5lciAwLjhzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedLoadingSpinner.tsx */`));
    }
    function SharedButton(props) {
      const {id, children, type, size, onClick, isDisabled = false, hideEvents = true, iconSmall, iconMedium, iconPosition = "right", linkTo = null, showLoadingOnClick = false, isLoading = false, isFormSubmit = false, style, center = false} = props;
      const [navigateTo, setNavigateTo] = react.useState(null);
      const [isClicked, setIsClicked] = (0, react.useState)(false);
      (0, react.useEffect)((() => {
        setIsClicked(false);
      }), [ showLoadingOnClick ]);
      if (navigateTo && navigateTo === linkTo) {
        return react.createElement(Redirect, {
          push: true,
          to: linkTo
        });
      }
      async function handleClick(e) {
        setIsClicked(true);
        onClick?.(e);
        if (linkTo) {
          setNavigateTo(linkTo);
        }
      }
      const isShowingLoadingSpinner = isLoading || isClicked && showLoadingOnClick;
      const spinnerVariant = type === "secondary" ? "dark-green" : "hunter-green";
      return react.createElement("button", {
        id,
        type: isFormSubmit ? "submit" : "button",
        onClick: handleClick,
        style,
        className: style_default().dynamic([ [ "1532748781", [ iconSmall, iconMedium ] ] ]) + " " + (classnames_default()(type !== "unstyled" && "button", {
          large: size === "large"
        }, {
          small: size === "small"
        }, {
          secondary: type === "secondary"
        }, {
          primaryGreen: type === "primaryGreen"
        }, {
          disabled: isDisabled
        }, {
          hidden_events: isDisabled && hideEvents
        }, {
          tertiary: type === "tertiary"
        }, {
          "tertiary white": type === "tertiaryWhite"
        }, {
          "tertiary gray": type === "tertiaryGray"
        }, {
          "tertiary error": type === "tertiaryError"
        }, {
          deemphasized_white: type === "deemphasizedWhite"
        }, {
          warning: type === "warning"
        }, {
          twitter: type === "twitter"
        }, {
          center
        }) || "")
      }, isShowingLoadingSpinner && react.createElement("div", {
        className: style_default().dynamic([ [ "1532748781", [ iconSmall, iconMedium ] ] ]) + " " + "spinner_wrap"
      }, react.createElement(SharedLoadingSpinner, {
        variant: isDisabled ? "transparent" : spinnerVariant
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "1532748781", [ iconSmall, iconMedium ] ] ]) + " " + (classnames_default()("button_content", {
          hide_me: isShowingLoadingSpinner,
          icon_left: iconPosition === "left"
        }) || "")
      }, children, iconMedium || iconSmall || type === "twitter" ? react.createElement("span", {
        className: style_default().dynamic([ [ "1532748781", [ iconSmall, iconMedium ] ] ]) + " " + (classnames_default()({
          icon_button: true
        }, {
          icon_medium: iconMedium
        }) || "")
      }) : null), react.createElement(style_default(), {
        id: "1532748781",
        dynamic: [ iconSmall, iconMedium ]
      }, `.button.__jsx-style-dynamic-selector{height:40px;border-radius:12px;background-color:var(--c-accent);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;color:var(--c-text-on-accent);font-size:16px;font-weight:600;-webkit-letter-spacing:0.48px;-moz-letter-spacing:0.48px;-ms-letter-spacing:0.48px;letter-spacing:0.48px;line-height:24px;text-align:center;padding:0 17px;-webkit-transition: background-color 0.2s, color 0.2s;transition: background-color 0.2s, color 0.2s;}.button.__jsx-style-dynamic-selector:hover{background-color:var(--c-accent-light);color:var(--c-text-on-accent);}.button.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-on-accent);}.button.__jsx-style-dynamic-selector:active{background-color:var(--c-accent);color:var(--c-text-on-accent);}.button.__jsx-style-dynamic-selector:active .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-on-accent);}.button_content.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.center.__jsx-style-dynamic-selector .button_content.__jsx-style-dynamic-selector{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:100%;}.icon_button.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/icons/s/${iconSmall}.svg");mask-image:url("./images/icons/s/${iconSmall}.svg");-webkit-mask-size:cover;mask-size:cover;width:16px;height:16px;margin-left:9px;background-color:var(--c-text-on-accent);display:inline-block;margin-top:-1px;}.large.__jsx-style-dynamic-selector{height:48px;padding:0 24px;}.icon_secondary_medium.__jsx-style-dynamic-selector{width:16px;height:16px;margin-left:4px;}.icon_medium.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/icons/m/${iconMedium}.svg");mask-image:url("./images/icons/m/${iconMedium}.svg");-webkit-mask-size:cover;mask-size:cover;width:24px;height:24px;margin-left:10px;}.secondary.__jsx-style-dynamic-selector{background-color:transparent;border:2px solid var(--c-accent);color:var(--c-accent);box-sizing:border-box;}.secondary.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-accent);}.secondary.__jsx-style-dynamic-selector:hover{border-color:var(--c-accent-light);}.secondary.__jsx-style-dynamic-selector:active{border-color:var(--c-accent);}.primaryGreen.__jsx-style-dynamic-selector{color:var(--c-text-on-accent);background-color:var(--c-accent);}.disabled.__jsx-style-dynamic-selector{background-color:var(--c-bg-deep);border-color:var(--c-bg-deep);color:var(--c-text-muted);}.disabled.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-muted);}.disabled.__jsx-style-dynamic-selector:hover{background-color:var(--c-bg-deep);color:var(--c-text-muted);}.disabled.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-muted);}.disabled.__jsx-style-dynamic-selector:active{background-color:var(--c-bg-deep);color:var(--c-text-muted);}.disabled.__jsx-style-dynamic-selector:active .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-muted);}.hidden_events.__jsx-style-dynamic-selector{pointer-events:none;}.tertiary.__jsx-style-dynamic-selector{color:var(--c-accent);background:unset;border:unset;padding:unset;font-size:18px;}.tertiary.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-accent);}.tertiary.__jsx-style-dynamic-selector:hover{background-color:unset;color:var(--c-accent-wash);}.tertiary.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-accent-wash);}.tertiary.__jsx-style-dynamic-selector:active{background-color:unset;color:var(--c-accent-light);}.tertiary.__jsx-style-dynamic-selector:active .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-accent-light);}.twitter.__jsx-style-dynamic-selector{background-color:var(--c-twitter);color:var(--c-text-inverse);}.twitter.__jsx-style-dynamic-selector:hover{color:var(--c-text-inverse);background-color:var(--c-twitter-hover);}.twitter.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector,.twitter.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/twitter.svg");mask-image:url("./images/twitter.svg");background-color:var(--c-text-inverse);}.white.__jsx-style-dynamic-selector{color:var(--c-text-inverse);font-weight:500;}.white.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-inverse);}.gray.__jsx-style-dynamic-selector{color:var(--c-text-secondary);}.gray.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-secondary);}.gray.__jsx-style-dynamic-selector:hover{color:var(--c-text-secondary);}.gray.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-secondary);}.error.__jsx-style-dynamic-selector{color:var(--c-error);}.error.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-error);}.error.__jsx-style-dynamic-selector:hover{color:var(--c-error-strong);}.error.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-error-strong);}.tertiary.disabled.__jsx-style-dynamic-selector{color:var(--c-border);}.tertiary.disabled.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-border);}.deemphasized_white.__jsx-style-dynamic-selector{color:var(--c-text);background-color:var(--c-success-bg);border:1px solid var(--c-border-accent);}.deemphasized_white.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text);}.deemphasized_white.__jsx-style-dynamic-selector:hover{background-color:var(--c-bg-inset);color:var(--c-text);}.deemphasized_white.__jsx-style-dynamic-selector:hover .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text);}.small.__jsx-style-dynamic-selector{padding:0 12px;height:32px;font-size:16px;}.warning.__jsx-style-dynamic-selector{background-color:var(--c-warning);}.warning.__jsx-style-dynamic-selector{color:var(--c-text-on-accent);}.warning.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{background-color:var(--c-text-on-accent);}.icon_left.__jsx-style-dynamic-selector{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}.icon_left.__jsx-style-dynamic-selector .icon_button.__jsx-style-dynamic-selector{margin-left:0px;margin-right:9px;}.hide_me.__jsx-style-dynamic-selector{opacity:0;position:absolute;}.unstyled.__jsx-style-dynamic-selector{unset:all;}.spinner_wrap.__jsx-style-dynamic-selector{width:100%;height:100%;display:grid;place-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedButton.tsx */`));
    }
    function Avatar({avatarURL}) {
      return react.createElement(SharedAvatar, {
        avatarURL,
        width: "48px",
        backupAvatar: "./images/avatar@2x.png"
      });
    }
    function SharedAccountItemSummary({isSelected = false, accountTotal, children, style}) {
      const {t} = useTranslation();
      const {address, shortenedAddress, name, avatarURL, localizedTotalMainCurrencyAmount} = accountTotal;
      return react.createElement("div", {
        "data-testid": "wallet_address_item",
        style,
        className: "jsx-2764022861" + " " + "item-summary standard_width"
      }, react.createElement("div", {
        className: "jsx-2764022861" + " " + "summary"
      }, react.createElement("div", {
        className: "jsx-2764022861" + " " + "left"
      }, isSelected ? react.createElement("div", {
        className: "jsx-2764022861" + " " + "avatar_selected_outline"
      }, react.createElement(Avatar, {
        avatarURL
      })) : react.createElement(Avatar, {
        avatarURL
      }), react.createElement("div", {
        className: "jsx-2764022861" + " " + "info"
      }, react.createElement("div", {
        title: typeof name === "undefined" ? address : name,
        className: "jsx-2764022861" + " " + "address_name"
      }, typeof name === "undefined" ? shortenedAddress : name, " "), react.createElement("div", {
        title: typeof name === "undefined" ? "" : address,
        className: "jsx-2764022861" + " " + "address"
      }, typeof name !== "undefined" ? shortenedAddress : ""))), react.createElement("div", {
        className: "jsx-2764022861" + " " + "right"
      }, react.createElement("div", {
        className: "jsx-2764022861" + " " + "balance_status"
      }, typeof localizedTotalMainCurrencyAmount === "undefined" ? react.createElement(SharedLoadingSpinner, {
        size: "small"
      }) : react.createElement("div", {
        className: "jsx-2764022861" + " " + "balance"
      }, "$", localizedTotalMainCurrencyAmount), isSelected ? react.createElement("div", {
        className: "jsx-2764022861" + " " + "connected_status"
      }, t("shared.accountItemSummary.connectedStatus")) : null))), children, react.createElement(style_default(), {
        id: "2764022861"
      }, ".item-summary.jsx-2764022861{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;height:52px;min-width:0;}.summary.jsx-2764022861{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;-webkit-box-flex:2;-webkit-flex-grow:2;-ms-flex-positive:2;flex-grow:2;height:52px;padding:5px 0;overflow:hidden;}.avatar_selected_outline.jsx-2764022861{width:52px;height:52px;border-radius:16px;border:2px solid var(--c-accent);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:-4px;margin-right:-4px;}.left.jsx-2764022861{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:4px;overflow:hidden;}.address_name.jsx-2764022861{color:var(--c-text);font-size:18px;font-weight:600;overflow:hidden;text-overflow:ellipsis;}.address.jsx-2764022861{color:var(--c-text-tertiary);font-size:16px;}.balance.jsx-2764022861{text-align:right;color:var(--c-text-tertiary);font-size:16px;}.connected_status.jsx-2764022861{color:var(--c-accent);font-size:18px;font-weight:600;line-height:24px;text-align:right;}.info.jsx-2764022861{margin:0 5px 0 16px;overflow:hidden;}.right.jsx-2764022861{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:4px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAccountItemSummary.tsx */"));
    }
    function AccountitemOptionLabel({hoverable = false, label, icon, color, hoverColor}) {
      return react.createElement("div", {
        className: style_default().dynamic([ [ "3155440457", [ icon, color || "var(--c-text-secondary)", color || "var(--c-text-secondary)", hoverColor || "var(--c-text)", hoverColor || "var(--c-text)" ] ] ]) + " " + (classnames_default()("option_label", {
          hover: hoverable
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3155440457", [ icon, color || "var(--c-text-secondary)", color || "var(--c-text-secondary)", hoverColor || "var(--c-text)", hoverColor || "var(--c-text)" ] ] ]) + " " + "icon"
      }), react.createElement("span", {
        className: style_default().dynamic([ [ "3155440457", [ icon, color || "var(--c-text-secondary)", color || "var(--c-text-secondary)", hoverColor || "var(--c-text)", hoverColor || "var(--c-text)" ] ] ])
      }, label), react.createElement(style_default(), {
        id: "3155440457",
        dynamic: [ icon, color || "var(--c-text-secondary)", color || "var(--c-text-secondary)", hoverColor || "var(--c-text)", hoverColor || "var(--c-text)" ]
      }, `.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/${icon}");mask-image:url("./images/${icon}");-webkit-mask-size:cover;mask-size:cover;background-color:${color || "var(--c-text-secondary)"};width:16px;margin-right:5px;height:16px;}.option_label.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:${color || "var(--c-text-secondary)"};-webkit-flexDirection:row;-ms-flexDirection:row;flexDirection:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:16px;height:100%;line-height:24px;font-weight:500;width:100%;}.hover.__jsx-style-dynamic-selector:hover{color:${hoverColor || "var(--c-text)"};}.hover.__jsx-style-dynamic-selector:hover .icon.__jsx-style-dynamic-selector{background-color:${hoverColor || "var(--c-text)"};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50SXRlbS9BY2NvdW50SXRlbU9wdGlvbkxhYmVsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQmtCLEFBR3FFLEFBUTNDLEFBV3NCLEFBR1csbUNBRmhELFdBR0EsNEJBZHFDLG1DQUNqQixXQVRGLHdDQUM4QixlQVMzQiwrQkFSUixXQUNNLGlCQUNMLFlBQ2Qsc0JBTWlCLGVBQ0gsWUFDSSxpQkFDQSxnQkFDTCxXQUNiIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50SXRlbS9BY2NvdW50SXRlbU9wdGlvbkxhYmVsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuXG5pbnRlcmZhY2UgQWNjb3VudGl0ZW1PcHRpb25MYWJlbFByb3BzIHtcbiAgaG92ZXJhYmxlPzogYm9vbGVhblxuICBsYWJlbDogc3RyaW5nXG4gIGljb246IHN0cmluZ1xuICBjb2xvcj86IHN0cmluZ1xuICBob3ZlckNvbG9yPzogc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFjY291bnRpdGVtT3B0aW9uTGFiZWwoe1xuICBob3ZlcmFibGUgPSBmYWxzZSxcbiAgbGFiZWwsXG4gIGljb24sXG4gIGNvbG9yLFxuICBob3ZlckNvbG9yLFxufTogQWNjb3VudGl0ZW1PcHRpb25MYWJlbFByb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcIm9wdGlvbl9sYWJlbFwiLCB7IGhvdmVyOiBob3ZlcmFibGUgfSl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uXCIgLz5cbiAgICAgIDxzcGFuPntsYWJlbH08L3NwYW4+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvJHtpY29ufVwiKTtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9yIHx8IFwidmFyKC0tYy10ZXh0LXNlY29uZGFyeSlcIn07XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAub3B0aW9uX2xhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBjb2xvcjogJHtjb2xvciB8fCBcInZhcigtLWMtdGV4dC1zZWNvbmRhcnkpXCJ9O1xuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0IDI0cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5ob3Zlcjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJHtob3ZlckNvbG9yIHx8IFwidmFyKC0tYy10ZXh0KVwifTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmhvdmVyOmhvdmVyIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7aG92ZXJDb2xvciB8fCBcInZhcigtLWMtdGV4dClcIn07XG4gICAgICAgICAgfVxuICAgICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountItem/AccountItemOptionLabel.tsx */`));
    }
    const DropdownContext = react.createContext(null);
    const useDropdownContext = () => {
      const value = react.useContext(DropdownContext);
      if (!value) {
        throw new Error("Dropdown context is only available inside a Dropdown container");
      }
      return value;
    };
    function DropdownContainer({children}) {
      const [isOpen, setIsOpen] = (0, react.useState)(false);
      const dropdownToggle = (0, react.useCallback)((value => setIsOpen(value ?? (existingValue => !existingValue))), [ setIsOpen ]);
      const contextValue = (0, react.useMemo)((() => ({
        isOpen,
        toggle: dropdownToggle
      })), [ isOpen, dropdownToggle ]);
      return react.createElement(DropdownContext.Provider, {
        value: contextValue
      }, react.createElement("div", {
        style: {
          position: "relative"
        },
        role: "presentation",
        onClick: e => e.stopPropagation()
      }, children));
    }
    function DropdownToggler({children}) {
      const {toggle} = useDropdownContext();
      return react.createElement("div", {
        role: "presentation"
      }, children(toggle));
    }
    function FadeIn({isOpen, children}) {
      const [shouldRender, setShouldRender] = (0, react.useState)(isOpen);
      if (isOpen && !shouldRender) {
        setShouldRender(true);
      }
      const styles = {
        transition: "ease-in .1s",
        opacity: isOpen ? 1 : 0
      };
      return react.createElement("div", {
        style: styles,
        onTransitionEnd: () => {
          if (!isOpen) {
            setShouldRender(false);
          }
        }
      }, shouldRender && children);
    }
    function DropdownContent({children}) {
      const {isOpen, toggle} = useDropdownContext();
      const wrapperRef = (0, react.useRef)(null);
      useOnClickOutside(wrapperRef, (() => toggle(false)));
      return react.createElement(FadeIn, {
        isOpen
      }, react.createElement("div", {
        role: "presentation",
        onClick: e => e.stopPropagation(),
        className: "jsx-909863555"
      }, react.createElement("dialog", {
        ref: wrapperRef,
        open: isOpen,
        className: "jsx-909863555" + " " + "dropdown-left"
      }, typeof children === "function" ? children({
        toggle
      }) : children)), react.createElement(style_default(), {
        id: "909863555"
      }, ".dropdown-left.jsx-909863555{position:absolute;top:0;left:100%;-webkit-transform:translateX(calc(-100%));-ms-transform:translateX(calc(-100%));transform:translateX(calc(-100%));width:-webkit-max-content;width:-moz-max-content;width:max-content;z-index:10;padding:0;background:none;border:none;display:block;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedDropDown.tsx */"));
    }
    function SharedDropdown({options, toggler}) {
      const {t} = useTranslation();
      return react.createElement(DropdownContainer, null, react.createElement(DropdownToggler, null, toggler), react.createElement(DropdownContent, null, (({toggle}) => react.createElement("div", {
        style: {
          position: "relative"
        }
      }, react.createElement("div", {
        className: "jsx-2175983974" + " " + "options"
      }, react.createElement(SharedIcon, {
        ariaLabel: t("shared.close"),
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-text-secondary)",
        style: {
          position: "absolute",
          top: 16,
          right: 12,
          cursor: "pointer"
        },
        width: 12,
        onClick: () => toggle(),
        icon: "close.svg"
      }), react.createElement("ul", {
        className: "jsx-2175983974" + " " + "options"
      }, options.filter((option => typeof option !== "undefined")).map((({key, onClick, icon, label, color, hoverColor}) => react.createElement("li", {
        key,
        className: "jsx-2175983974" + " " + "option"
      }, react.createElement("button", {
        type: "button",
        onClick: e => {
          onClick?.(e);
          toggle(false);
        },
        className: "jsx-2175983974"
      }, react.createElement(AccountitemOptionLabel, {
        icon,
        label,
        hoverable: true,
        color,
        hoverColor
      })))))), react.createElement(style_default(), {
        id: "2175983974"
      }, '.icon_settings.jsx-2175983974{-webkit-mask-image:url("./images/more_dots@2x.png");mask-image:url("./images/more_dots@2x.png");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:var(--c-border);-webkit-mask-size:20%;mask-size:20%;width:4px;height:20px;border:10px solid transparent;}.icon_settings.jsx-2175983974:hover{background-color:var(--c-text-tertiary);}div.options.jsx-2175983974{display:block;margin:0;padding:0;cursor:default;background-color:var(--c-bg-alt);width:212px;border-radius:4px;z-index:1;box-shadow: 0px 2px 4px rgba(0,0,0,0.08), 0px 6px 8px rgba(0,0,0,0.06), 0px 16px 16px rgba(0,0,0,0.04);}ul.options.jsx-2175983974{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:7px 0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.option.jsx-2175983974{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;line-height:24px;padding:7px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;width:90%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;cursor:default;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedDropDown.tsx */'))))));
    }
    const SLIDE_TRANSITION_MS = 445;
    const menuHeights = {
      auto: "auto",
      small: "268px",
      medium: "536px",
      large: "600px",
      custom: null
    };
    function SharedSlideUpMenu(props) {
      const {isOpen, close, size = "medium", children, customSize, isFullScreen = false, isDark, isScrollable, allowOverflow, opaqueOverlay, alwaysRenderChildren, testid = "slide_up_menu", style} = props;
      const slideUpMenuRef = (0, react.useRef)(null);
      useOnClickOutside(slideUpMenuRef, close);
      const visibleChildren = (isOpen || alwaysRenderChildren) && children;
      const displayChildren = useDelayContentChange(visibleChildren, !isOpen, SLIDE_TRANSITION_MS);
      const menuHeight = menuHeights[size] ?? customSize ?? menuHeights.medium;
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: style_default().dynamic([ [ "3894579843", [ isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, isFullScreen ? "0" : "24px", isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, SLIDE_TRANSITION_MS ] ] ]) + " " + (classnames_default()("overlay", {
          closed: !isOpen,
          opaque: opaqueOverlay
        }) || "")
      }), react.createElement("div", {
        "data-testid": testid,
        style: {
          "--menu-height": menuHeight,
          ...style
        },
        ref: isOpen ? slideUpMenuRef : null,
        className: style_default().dynamic([ [ "3894579843", [ isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, isFullScreen ? "0" : "24px", isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, SLIDE_TRANSITION_MS ] ] ]) + " " + (classnames_default()("slide_up_menu", {
          dark: isDark,
          closed: !isOpen,
          scrollable: isScrollable,
          with_overflow: allowOverflow
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3894579843", [ isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, isFullScreen ? "0" : "24px", isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, SLIDE_TRANSITION_MS ] ] ]) + " " + (classnames_default()("slide_up_close", {
          hover_content: isFullScreen
        }) || "")
      }, react.createElement(SharedIcon, {
        icon: "close.svg",
        width: 12,
        color: "var(--c-text-secondary)",
        hoverColor: "var(--c-text)",
        ariaLabel: "Close menu",
        onClick: e => {
          close(e);
        }
      })), displayChildren), react.createElement(style_default(), {
        id: "3894579843",
        dynamic: [ isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, isFullScreen ? "0" : "24px", isFullScreen ? "0" : "20px 20px 0 0", SLIDE_TRANSITION_MS, SLIDE_TRANSITION_MS ]
      }, `.slide_up_menu.__jsx-style-dynamic-selector{width:100%;height:var(--menu-height);overflow-x:hidden;overflow-y:hidden;border-radius:${isFullScreen ? "0" : "20px 20px 0 0"};background-color:var(--c-bg);box-shadow:var(--shadow-md);position:fixed;left:0px;right:0px;bottom:0px;z-index:999;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);opacity:1;-webkit-transition:-webkit-transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms;-webkit-transition:transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms;transition:transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms;padding-top:${isFullScreen ? "0" : "24px"};box-sizing:border-box;}.slide_up_menu.scrollable.__jsx-style-dynamic-selector{overflow-y:auto;}.slide_up_menu.with_overflow.__jsx-style-dynamic-selector{overflow-y:visible;overflow-x:visible;}.overlay.__jsx-style-dynamic-selector{position:fixed;left:0;right:0;bottom:0;top:0;cursor:pointer;z-index:998;border-radius:${isFullScreen ? "0" : "20px 20px 0 0"};background:var(--c-black-a45);opacity:1;-webkit-transition: opacity cubic-bezier(0.19,1,0.22,1) 0.445s, visiblity 0.445s;transition: opacity cubic-bezier(0.19,1,0.22,1) 0.445s, visiblity 0.445s;}.overlay.opaque.__jsx-style-dynamic-selector{background:rgba(0,0,0,0.7);}.overlay.closed.__jsx-style-dynamic-selector{opacity:0;visiblity:hidden;pointer-events:none;}.dark.__jsx-style-dynamic-selector{background-color:var(--c-bg-alt);}.slide_up_menu.closed.__jsx-style-dynamic-selector{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-transition: -webkit-transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms,  opacity 0ms ${SLIDE_TRANSITION_MS}ms;-webkit-transition: transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms,  opacity 0ms ${SLIDE_TRANSITION_MS}ms;transition: transform cubic-bezier(0.19,1,0.22,1) ${SLIDE_TRANSITION_MS}ms,  opacity 0ms ${SLIDE_TRANSITION_MS}ms;opacity:0;pointer-events:none;}.slide_up_close.__jsx-style-dynamic-selector{position:absolute;z-index:2;top:24px;right:24px;}.slide_up_close.hover_content.__jsx-style-dynamic-selector{position:absolute;top:16px;right:16px;background:var(--c-black-a50);padding:8px;border-radius:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSlideUpMenu.tsx */`));
    }
    function AccountItemActionHeader({label, icon, color}) {
      return react.createElement("div", {
        className: style_default().dynamic([ [ "676462892", [ icon, color || "var(--c-text)", color || "var(--c-text)" ] ] ]) + " " + "action_header"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "676462892", [ icon, color || "var(--c-text)", color || "var(--c-text)" ] ] ]) + " " + "icon"
      }), react.createElement("span", {
        className: style_default().dynamic([ [ "676462892", [ icon, color || "var(--c-text)", color || "var(--c-text)" ] ] ])
      }, label), react.createElement(style_default(), {
        id: "676462892",
        dynamic: [ icon, color || "var(--c-text)", color || "var(--c-text)" ]
      }, `.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/${icon}");mask-image:url("./images/${icon}");-webkit-mask-size:cover;mask-size:cover;background-color:${color || "var(--c-text)"};width:16px;margin-right:5px;height:16px;}.action_header.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:${color || "var(--c-text)"};-webkit-flexDirection:row;-ms-flexDirection:row;flexDirection:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;font-weight:600;height:100%;line-height:24px;width:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50SXRlbS9BY2NvdW50SXRlbUFjdGlvbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJrQixBQUdxRSxBQVEzQywwRUFDc0IsbUNBQ2pCLFdBVEYsd0NBQzhCLGVBUzNCLCtCQVJSLFdBQ00saUJBQ0wsWUFDZCxzQkFNaUIsZUFDQyxnQkFDSixZQUNJLGlCQUNMLFdBQ2IiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0FjY291bnRJdGVtL0FjY291bnRJdGVtQWN0aW9uSGVhZGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuXG5pbnRlcmZhY2UgQWNjb3VudEl0ZW1BY3Rpb25IZWFkZXJQcm9wcyB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgaWNvbjogc3RyaW5nXG4gIGNvbG9yPzogc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFjY291bnRJdGVtQWN0aW9uSGVhZGVyKHtcbiAgbGFiZWwsXG4gIGljb24sXG4gIGNvbG9yLFxufTogQWNjb3VudEl0ZW1BY3Rpb25IZWFkZXJQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJhY3Rpb25faGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25cIiAvPlxuICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIuL2ltYWdlcy8ke2ljb259XCIpO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3IgfHwgXCJ2YXIoLS1jLXRleHQpXCJ9O1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmFjdGlvbl9oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGNvbG9yOiAke2NvbG9yIHx8IFwidmFyKC0tYy10ZXh0KVwifTtcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQgMjRweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountItem/AccountItemActionHeader.tsx */`));
    }
    function SharedTypedInput(props) {
      const {id, label, placeholder, maxLength, focusedLabelBackgroundColor = "var(--c-bg-alt)", type = "text", name, onChange, onFocus, onKeyDown, value: currentValue, errorMessage, warningMessage, step = undefined, autoFocus = false, autoSelect = false, parseAndValidate, isEmpty = false, isSmall = false} = props;
      const inputRef = (0, react.useRef)(null);
      (0, react.useEffect)((() => {
        if (autoFocus) inputRef.current?.focus({
          preventScroll: true
        });
      }), [ autoFocus ]);
      (0, react.useEffect)((() => {
        if (autoSelect) inputRef.current?.select();
      }), [ autoSelect ]);
      const {rawValue: inputValue, errorMessage: parserError, handleInputChange} = useParsedValidation(onChange ?? (() => {}), parseAndValidate);
      useRunOnFirstRender((() => {
        if (currentValue && currentValue.trim() !== inputValue) {
          handleInputChange(currentValue);
        }
      }));
      return react.createElement(react.Fragment, null, react.createElement("input", {
        id,
        type,
        name,
        placeholder: typeof placeholder === "undefined" || placeholder === "" ? " " : placeholder,
        value: isEmpty ? "" : inputValue,
        spellCheck: false,
        onInput: event => handleInputChange(event.target.value),
        onFocus,
        onKeyDown,
        "data-empty": inputValue.trim().length < 1,
        step,
        ref: inputRef,
        maxLength,
        className: style_default().dynamic([ [ "3409305932", [ label ? "3px" : "53px", focusedLabelBackgroundColor ] ] ]) + " " + (classnames_default()({
          error: !isEmpty && (errorMessage ?? parserError !== undefined),
          small: isSmall
        }) || "")
      }), react.createElement("label", {
        htmlFor: id,
        className: style_default().dynamic([ [ "3409305932", [ label ? "3px" : "53px", focusedLabelBackgroundColor ] ] ])
      }, label), !isEmpty && errorMessage && react.createElement("div", {
        className: style_default().dynamic([ [ "3409305932", [ label ? "3px" : "53px", focusedLabelBackgroundColor ] ] ]) + " " + "validation_message"
      }, errorMessage), !isEmpty && warningMessage && react.createElement("div", {
        className: style_default().dynamic([ [ "3409305932", [ label ? "3px" : "53px", focusedLabelBackgroundColor ] ] ]) + " " + "validation_message warning"
      }, warningMessage), !isEmpty && parserError && react.createElement("div", {
        className: style_default().dynamic([ [ "3409305932", [ label ? "3px" : "53px", focusedLabelBackgroundColor ] ] ]) + " " + "validation_message"
      }, parserError), react.createElement(style_default(), {
        id: "3409305932",
        dynamic: [ label ? "3px" : "53px", focusedLabelBackgroundColor ]
      }, `input.__jsx-style-dynamic-selector{width:100%;height:48px;border-radius:12px;border:2px solid var(--c-border);padding:var(--input-padding,0px 16px);box-sizing:border-box;text-align:left;}input.__jsx-style-dynamic-selector::-webkit-input-placeholder{color:var(--c-text-tertiary);}input.__jsx-style-dynamic-selector::-moz-placeholder{color:var(--c-text-tertiary);}input.__jsx-style-dynamic-selector:-ms-input-placeholder{color:var(--c-text-tertiary);}input.__jsx-style-dynamic-selector::placeholder{color:var(--c-text-tertiary);}input.__jsx-style-dynamic-selector:focus{border:2px solid var(--c-text-tertiary);}input[type="number"].__jsx-style-dynamic-selector{-moz-appearance:textfield;}.error.__jsx-style-dynamic-selector{border-color:var(--c-error);}.validation_message.__jsx-style-dynamic-selector{color:var(--c-error);position:absolute;font-weight:500;font-size:14px;line-height:20px;margin-top:${label ? "3px" : "53px"};margin-left:5px;}.warning.__jsx-style-dynamic-selector{color:var(--c-accent);}label.__jsx-style-dynamic-selector{position:absolute;pointer-events:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin-left:16px;-webkit-transform:translateY(-32px);-ms-transform:translateY(-32px);transform:translateY(-32px);border-radius:5px;box-sizing:border-box;color:var(--c-text-tertiary);-webkit-transition: font-size 0.2s ease, -webkit-transform 0.2s ease, font-weight 0.2s ease, padding 0.2s ease;-webkit-transition: font-size 0.2s ease, transform 0.2s ease, font-weight 0.2s ease, padding 0.2s ease;transition: font-size 0.2s ease, transform 0.2s ease, font-weight 0.2s ease, padding 0.2s ease;}input.__jsx-style-dynamic-selector:disabled{color:var(--c-text-tertiary);background-color:var(--c-bg-inset);}input.__jsx-style-dynamic-selector:disabled~label.__jsx-style-dynamic-selector{color:var(--c-border);}input.__jsx-style-dynamic-selector:focus{border-color:var(--c-accent);}input.__jsx-style-dynamic-selector:focus~label.__jsx-style-dynamic-selector{color:var(--c-accent);}input.__jsx-style-dynamic-selector:focus~label.__jsx-style-dynamic-selector,input.__jsx-style-dynamic-selector:not(:placeholder-shown)~label.__jsx-style-dynamic-selector,input.__jsx-style-dynamic-selector:not([placeholder=" "])~label.__jsx-style-dynamic-selector{-webkit-transform:translateY(-57px) translateX(-5px);-ms-transform:translateY(-57px) translateX(-5px);transform:translateY(-57px) translateX(-5px);font-size:12px;font-weight:500;padding:0px 6px;background-color:${focusedLabelBackgroundColor};}.error.__jsx-style-dynamic-selector~label.__jsx-style-dynamic-selector,input.error.__jsx-style-dynamic-selector:focus~label.__jsx-style-dynamic-selector{color:var(--c-error);}.small.__jsx-style-dynamic-selector{width:48px;height:32px;padding:6px;box-sizing:border-box;border-width:1px;text-align:right;}.small.__jsx-style-dynamic-selector::-webkit-outer-spin-button,.small.__jsx-style-dynamic-selector::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedInput.tsx */`));
    }
    function SharedInput(props) {
      const onChangeWrapper = newValue => {
        props.onChange?.(newValue ?? "");
      };
      return SharedTypedInput({
        parseAndValidate: v => ({
          parsed: v
        }),
        ...props,
        onChange: onChangeWrapper
      });
    }
    function AccountItemEditName({account, addressOnNetwork, close}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem"
      });
      const dispatch = useDispatch();
      const [newName, setNewName] = (0, react.useState)("");
      const [error, setError] = (0, react.useState)("");
      const [touched, setTouched] = (0, react.useState)(false);
      (0, react.useEffect)((() => {
        if (touched && newName.trim() === "") {
          setError(t("noNameError"));
        } else {
          setError("");
        }
      }), [ newName, error, touched, t ]);
      const onSubmit = (0, react.useCallback)((event => {
        event.preventDefault();
        if (!newName) {
          setTouched(true);
          setError(t("noNameError"));
          return;
        }
        if (error) {
          return;
        }
        dispatch(addOrEditAddressName({
          ...addressOnNetwork,
          name: newName
        }));
        close();
      }), [ addressOnNetwork, close, dispatch, error, newName, t ]);
      return react.createElement("div", {
        className: "jsx-3011403788" + " " + "edit_address_name"
      }, react.createElement("div", {
        className: "jsx-3011403788" + " " + "header"
      }, react.createElement(AccountItemActionHeader, {
        label: t("editName"),
        icon: "icons/s/edit.svg",
        color: "var(--c-text)"
      })), react.createElement("div", {
        className: "jsx-3011403788" + " " + "account_container standard_width"
      }, react.createElement(SharedAccountItemSummary, {
        accountTotal: account,
        isSelected: false
      })), react.createElement("div", {
        role: "presentation",
        onKeyDown: e => e.stopPropagation(),
        className: "jsx-3011403788" + " " + "details"
      }, react.createElement("form", {
        onSubmit,
        className: "jsx-3011403788"
      }, react.createElement(SharedInput, {
        label: "",
        placeholder: t("typeNewName"),
        errorMessage: error,
        autoFocus: true,
        onChange: value => {
          if (!touched) {
            setTouched(true);
          }
          setNewName(value);
        }
      }))), react.createElement("div", {
        className: "jsx-3011403788" + " " + "button_container"
      }, react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        onClick: e => {
          e.stopPropagation();
          close();
        }
      }, t("cancel")), react.createElement(SharedButton, {
        type: "primaryGreen",
        size: "medium",
        onClick: onSubmit
      }, t("saveName"))), react.createElement(style_default(), {
        id: "3011403788"
      }, ".header.jsx-3011403788{height:24px;}.edit_address_name.jsx-3011403788{margin-left:20px;margin-right:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:95%;}form.jsx-3011403788{margin-top:0px;}.details.jsx-3011403788{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:24px;font-size:16px;margin-top:21px;}.button_container.jsx-3011403788{margin-top:52px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.account_container.jsx-3011403788{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;width:336px;height:52px;margin-top:15px;background-color:var(--c-bg-alt);padding:5px;border-radius:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountItem/AccountItemEditName.tsx */"));
    }
    function RegularWarning() {
      const {t} = useTranslation();
      return react.createElement("span", null, t("accounts.accountItem.regularWarning"));
    }
    function LoudWarning() {
      const {t} = useTranslation();
      return react.createElement("span", null, react.createElement("h3", null, t("accounts.accountItem.loudWarningTitle")), t("accounts.accountItem.loudWarningBody"));
    }
    function LastAccountWarning() {
      const {t} = useTranslation();
      return react.createElement("span", null, react.createElement("h3", null, t("accounts.accountItem.lastAccountWarningTitle")), t("accounts.accountItem.lastAccountWarningBody"));
    }
    function RemoveAccountWarning({lastAccountInQwalWallet, isReadOnlyAccount}) {
      if (lastAccountInQwalWallet) {
        return react.createElement(LastAccountWarning, null);
      }
      if (isReadOnlyAccount) {
        return react.createElement(LoudWarning, null);
      }
      return react.createElement(RegularWarning, null);
    }
    const ONBOARDING_ROOT = "/tab.html#onboarding";
    const OnboardingRoutes = {
      ONBOARDING_START: "/onboarding",
      ADD_WALLET: "/onboarding/add-wallet",
      SET_PASSWORD: "/onboarding/set-password",
      IMPORT_SEED: "/onboarding/import-seed",
      IMPORT_MNEMONICS: "/onboarding/import-private-key",
      NEW_SEED: "/onboarding/new-seed",
      VIEW_ONLY_WALLET: "/onboarding/view-only-wallet",
      ONBOARDING_COMPLETE: "/onboarding/done"
    };
    const Routes = OnboardingRoutes;
    function AccountItemRemovalConfirm({account, close}) {
      const {address, network} = account;
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem"
      });
      const dispatch = useBackgroundDispatch();
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const navigateTo = useNavigateTo();
      const {selectedAddress, accountsData} = useBackgroundSelector((state => ({
        selectedAddress: state.ui.selectedAccount.address,
        accountsData: state.account.accountsData
      })));
      const accountSigners = useBackgroundSelector(selectAccountSignersByAddress);
      const allAddresses = useBackgroundSelector(accountsSelectors_getAllAddresses);
      const signer = accountSigners[address];
      const readOnlyAccount = signer.type === "read-only";
      const lastAccountInQwalWallet = Object.keys(allAddresses).length === 1;
      return react.createElement("div", {
        className: "jsx-2922440577" + " " + "remove_address_option"
      }, react.createElement("div", {
        className: "jsx-2922440577" + " " + "header"
      }, react.createElement(AccountItemActionHeader, {
        label: t("removeAddress"),
        icon: "garbage@2x.png",
        color: "var(--c-error)"
      })), react.createElement("ul", {
        className: "jsx-2922440577"
      }, react.createElement("li", {
        className: "jsx-2922440577" + " " + "account_container"
      }, react.createElement("li", {
        className: "jsx-2922440577" + " " + "standard_width"
      }, react.createElement(SharedAccountItemSummary, {
        accountTotal: account,
        isSelected: false
      })))), react.createElement("div", {
        className: "jsx-2922440577" + " " + "remove_address_details"
      }, react.createElement(RemoveAccountWarning, {
        isReadOnlyAccount: readOnlyAccount,
        lastAccountInQwalWallet
      })), react.createElement("div", {
        className: "jsx-2922440577" + " " + "button_container"
      }, react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        onClick: e => {
          e.stopPropagation();
          close();
        }
      }, t("cancel")), react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        onClick: e => {
          e.stopPropagation();
          if (readOnlyAccount || areInternalSignersUnlocked) {
            dispatch(removeAccount({
              addressOnNetwork: {
                address,
                network
              },
              signer: accountSigners[address],
              lastAddressInAccount: false
            }));
            if (lastAccountInQwalWallet) {
              window.open(ONBOARDING_ROOT);
              window.close();
              return;
            }
            if (sameQEVMAddress(selectedAddress, address)) {
              const newAddress = Object.keys(accountsData.evm[network.chainID]).find((accountAddress => accountAddress !== address));
              if (newAddress) {
                dispatch(setNewSelectedAccount({
                  address: newAddress,
                  network
                }));
              }
            }
            close();
          } else {
            navigateTo("/internal-signer/unlock");
          }
        }
      }, t("removeConfirm"))), react.createElement(style_default(), {
        id: "2922440577"
      }, "li.jsx-2922440577{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;width:336px;height:52px;}.header.jsx-2922440577{height:24px;}.remove_address_option.jsx-2922440577{margin-left:20px;margin-right:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:95%;}.remove_address_details.jsx-2922440577{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:24px;font-size:16px;}.button_container.jsx-2922440577{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.account_container.jsx-2922440577{margin-top:-10px;background-color:var(--c-bg-alt);padding:5px;border-radius:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountItem/AccountItemRemovalConfirm.tsx */"));
    }
    function SharedWarningMessage({text}) {
      return react.createElement("div", {
        className: "jsx-2455758292" + " " + "warning_wrap"
      }, react.createElement("img", {
        src: "./images/message_warning.png",
        alt: "warning",
        className: "jsx-2455758292" + " " + "icon"
      }), react.createElement("span", {
        className: "jsx-2455758292" + " " + "text"
      }, text), react.createElement(style_default(), {
        id: "2455758292"
      }, ".warning_wrap.jsx-2455758292{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 40px 8px 12px;border:1px solid var(--c-warning);border-radius:4px;background:linear-gradient( 156deg, rgba(242,184,36,0.4) 0%, rgba(242,184,36,0.1) 45% );}.icon.jsx-2455758292{margin-right:12px;margin-top:4px;height:28px;}.text.jsx-2455758292{color:var(--c-warning);font-style:normal;font-weight:500;font-size:16px;line-height:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkV2FybmluZ01lc3NhZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFrQixBQUd3QixBQVlLLEFBS0ssa0JBSlIsS0FLRyxVQUpOLFFBS0ksSUFKbEIsWUFLaUIsZUFDRSxFQXBCRSxlQXFCckIsOEVBcEI0QiwwQkFDUSxrQ0FDaEIsa0JBS2pCLHdGQUNIIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkV2FybmluZ01lc3NhZ2UudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5cbnR5cGUgU2hhcmVkV2FybmluZ01lc3NhZ2VQcm9wcyA9IHtcbiAgdGV4dDogc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZFdhcm5pbmdNZXNzYWdlKHtcbiAgdGV4dCxcbn06IFNoYXJlZFdhcm5pbmdNZXNzYWdlUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2FybmluZ193cmFwXCI+XG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImljb25cIiBzcmM9XCIuL2ltYWdlcy9tZXNzYWdlX3dhcm5pbmcucG5nXCIgYWx0PVwid2FybmluZ1wiIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0XCI+e3RleHR9PC9zcGFuPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAud2FybmluZ193cmFwIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgcGFkZGluZzogOHB4IDQwcHggOHB4IDEycHg7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy13YXJuaW5nKTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgMTU2ZGVnLFxuICAgICAgICAgICAgcmdiYSgyNDIsIDE4NCwgMzYsIDAuNCkgMCUsXG4gICAgICAgICAgICByZ2JhKDI0MiwgMTg0LCAzNiwgMC4xKSA0NSVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgICAgICAudGV4dCB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtd2FybmluZyk7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedWarningMessage.tsx */"));
    }
    function PasswordInput_extends() {
      return PasswordInput_extends = Object.assign ? Object.assign.bind() : function(n) {
        for (var e = 1; e < arguments.length; e++) {
          var t = arguments[e];
          for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
        }
        return n;
      }, PasswordInput_extends.apply(null, arguments);
    }
    function PasswordInput(props) {
      const {hasPreview = true, ...inputProps} = props;
      const [showPassword, setShowPassword] = (0, react.useState)(false);
      const passwordInputType = showPassword ? "text" : "password";
      const {t} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      return react.createElement("div", {
        className: "jsx-2857028154" + " " + "wrapper"
      }, react.createElement(SharedInput, PasswordInput_extends({}, inputProps, {
        type: passwordInputType
      })), hasPreview && react.createElement("button", {
        role: "switch",
        type: "button",
        "aria-label": !showPassword ? t("showPasswordHint") : t("hidePasswordHint"),
        "aria-checked": showPassword,
        onClick: () => setShowPassword((visible => !visible)),
        className: "jsx-2857028154" + " " + (classnames_default()("icon icon_medium", {
          active: showPassword
        }) || "")
      }), react.createElement(style_default(), {
        id: "2857028154"
      }, '.wrapper.jsx-2857028154>input{padding-right:40px;}.wrapper.jsx-2857028154{position:relative;width:100%;}.icon.jsx-2857028154{position:absolute;top:0;bottom:0;right:0;margin-right:16px;height:16px;width:16px;-webkit-mask-image:url("./images/icons/s/eye-on.svg");mask-image:url("./images/icons/s/eye-on.svg");-webkit-mask-size:cover;mask-size:cover;background-position:center;background-color:var(--c-border);background-size:16px;-webkit-transition:all 0.12s ease-out;transition:all 0.12s ease-out;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}.icon.active.jsx-2857028154{background-color:var(--c-accent);}.icon_medium.jsx-2857028154{-webkit-mask-image:url("./images/icons/m/eye-on.svg");mask-image:url("./images/icons/m/eye-on.svg");-webkit-mask-size:cover;mask-size:cover;width:24px;height:24px;background-size:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvUGFzc3dvcmRJbnB1dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0NTLEFBR2dDLEFBR0QsQUFJQSxBQWdCZSxBQUdhLGtCQXRCbkMsQUFJTCxDQVBSLEtBUVcsS0FKWCxJQUtVLEFBY1YsUUFib0Isa0JBQ04sWUFDRCxXQUNtQyxrQkFhOUIsd0NBQ0wsV0FDQyxZQUNTLG1CQWZMLEVBZ0JsQixzQ0FmNkIsMkJBQ00saUNBQ1oscUJBQ1Msb0VBQ0osMEZBQzVCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvUGFzc3dvcmRJbnB1dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50UHJvcHMsIFJlYWN0RWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkSW5wdXQgZnJvbSBcIi4vU2hhcmVkSW5wdXRcIlxuaW1wb3J0IHsgU2ltcGxpZnkgfSBmcm9tIFwiLi90eXBlc1wiXG5cbnR5cGUgUGFzc3dvcmRJbnB1dFByb3BzID0gU2ltcGxpZnk8XG4gIHsgaGFzUHJldmlldz86IGJvb2xlYW4gfSAmIE9taXQ8Q29tcG9uZW50UHJvcHM8dHlwZW9mIFNoYXJlZElucHV0PiwgXCJ0eXBlXCI+XG4+XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhc3N3b3JkSW5wdXQocHJvcHM6IFBhc3N3b3JkSW5wdXRQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgaGFzUHJldmlldyA9IHRydWUsIC4uLmlucHV0UHJvcHMgfSA9IHByb3BzXG4gIGNvbnN0IFtzaG93UGFzc3dvcmQsIHNldFNob3dQYXNzd29yZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcGFzc3dvcmRJbnB1dFR5cGUgPSBzaG93UGFzc3dvcmQgPyBcInRleHRcIiA6IFwicGFzc3dvcmRcIlxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2hhcmVkXCIgfSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid3JhcHBlclwiPlxuICAgICAgPFNoYXJlZElucHV0XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgIHsuLi5pbnB1dFByb3BzfVxuICAgICAgICB0eXBlPXtwYXNzd29yZElucHV0VHlwZX1cbiAgICAgIC8+XG4gICAgICB7aGFzUHJldmlldyAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICByb2xlPVwic3dpdGNoXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtcbiAgICAgICAgICAgICFzaG93UGFzc3dvcmQgPyB0KFwic2hvd1Bhc3N3b3JkSGludFwiKSA6IHQoXCJoaWRlUGFzc3dvcmRIaW50XCIpXG4gICAgICAgICAgfVxuICAgICAgICAgIGFyaWEtY2hlY2tlZD17c2hvd1Bhc3N3b3JkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQYXNzd29yZCgodmlzaWJsZSkgPT4gIXZpc2libGUpfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImljb24gaWNvbl9tZWRpdW1cIiwge1xuICAgICAgICAgICAgYWN0aXZlOiBzaG93UGFzc3dvcmQsXG4gICAgICAgICAgfSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAud3JhcHBlciA+IDpnbG9iYWwoaW5wdXQpIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC53cmFwcGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvaWNvbnMvcy9leWUtb24uc3ZnXCIpO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYm9yZGVyKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjEycyBlYXNlLW91dDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MCUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuaWNvbi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuaWNvbl9tZWRpdW0ge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvaWNvbnMvbS9leWUtb24uc3ZnXCIpO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/PasswordInput.tsx */'));
    }
    function InternalSignerUnlock({displayCancelButton = true}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "keyring.unlock"
      });
      const {t: tShared} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      const [password, setPassword] = (0, react.useState)("");
      const [errorMessage, setErrorMessage] = (0, react.useState)("");
      const isDappPopup = useIsDappPopup();
      const history = useHistory();
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        if (areInternalSignersUnlocked) {
          history.goBack();
          dispatch(setSnackbarMessage(t("snackbar")));
        }
      }), [ history, areInternalSignersUnlocked, dispatch, t ]);
      const dispatchUnlockWallet = async event => {
        event.preventDefault();
        await dispatch(unlockInternalSigners(password));
        setErrorMessage(t("error.incorrect"));
      };
      const handleReject = async () => {
        await dispatch(rejectTransactionSignature());
      };
      const handleBack = async () => {
        await handleReject();
        history.goBack();
      };
      const handleCancel = () => {
        if (isDappPopup) {
          handleReject();
        } else {
          handleBack();
        }
      };
      return react.createElement("section", {
        className: "jsx-1846918572" + " " + "standard_width"
      }, displayCancelButton && react.createElement("div", {
        className: "jsx-1846918572" + " " + "cancel_btn_wrap"
      }, react.createElement(SharedButton, {
        type: "tertiaryGray",
        size: "small",
        onClick: handleCancel
      }, tShared("cancelBtn"))), react.createElement("div", {
        className: "jsx-1846918572" + " " + "img_wrap"
      }, react.createElement("div", {
        className: "jsx-1846918572" + " " + "illustration_unlock"
      })), react.createElement("h1", {
        className: "jsx-1846918572" + " " + "serif_header"
      }, t("title")), react.createElement("div", {
        className: "jsx-1846918572" + " " + "simple_text subtitle"
      }, t("subtitle")), react.createElement("form", {
        role: "presentation",
        onSubmit: dispatchUnlockWallet,
        onKeyDown: e => e.stopPropagation(),
        className: "jsx-1846918572"
      }, react.createElement("div", {
        className: "jsx-1846918572" + " " + "signing_wrap"
      }, react.createElement("div", {
        className: "jsx-1846918572" + " " + "input_wrap"
      }, react.createElement(PasswordInput, {
        id: "signing_password",
        label: t("signingPassword"),
        onChange: value => {
          setPassword(value);
          setErrorMessage("");
        },
        errorMessage,
        focusedLabelBackgroundColor: "var(--c-bg)"
      })), react.createElement("div", {
        className: "jsx-1846918572"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "large",
        isFormSubmit: true
      }, t("submitBtn"))))), react.createElement(style_default(), {
        id: "1846918572"
      }, '.illustration_unlock.jsx-1846918572{background:url("./images/illustration_unlock@2x.png");background-position:center;background-repeat:no-repeat;background-size:contain;width:182.83px;height:172.18px;}section.jsx-1846918572{background-color:var(--c-bg);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%;gap:16px;}.subtitle.jsx-1846918572{width:55%;text-align:center;box-sizing:border-box;}form.jsx-1846918572{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;}.signing_wrap.jsx-1846918572{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:30px;}.cancel_btn_wrap.jsx-1846918572{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;right:0px;top:0px;margin-top:12px;}.input_wrap.jsx-1846918572{width:260px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/InternalSigner/InternalSignerUnlock.tsx */'));
    }
    const EXPLAINER_LINK = "https://quantumevm.com/start/";
    function Explainer({translation, close}) {
      const {t} = useTranslation("translation", {
        keyPrefix: `accounts.accountItem.${translation}`
      });
      const {t: tShared} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenuPanel, {
        header: t("explainer.header"),
        type: "small"
      }, react.createElement("div", {
        className: "jsx-3560686184" + " " + "explainer simple_text"
      }, react.createElement("p", {
        className: "jsx-3560686184"
      }, t("explainer.text1")), react.createElement("p", {
        className: "jsx-3560686184" + " " + "bold"
      }, t("explainer.text2")), react.createElement("p", {
        className: "jsx-3560686184"
      }, t("explainer.text3")), react.createElement("div", {
        className: "jsx-3560686184" + " " + "explainer_buttons"
      }, react.createElement(SharedButton, {
        size: "medium",
        type: "tertiary",
        iconSmall: "close",
        onClick: () => close()
      }, tShared("close")), react.createElement(SharedButton, {
        size: "medium",
        type: "tertiary",
        iconSmall: "new-tab",
        onClick: () => {
          window.open(EXPLAINER_LINK, "_blank")?.focus();
        }
      }, tShared("readMore"))))), react.createElement(style_default(), {
        id: "3560686184"
      }, '.explainer.jsx-3560686184{font-family:"Segment";padding:0 24px 10px;margin-top:-20px;}.bold.jsx-3560686184{font-weight:600;color:var(--c-text);}.explainer_buttons.jsx-3560686184{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c0JhY2t1cC9FeHBsYWluZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDa0IsQUFHaUMsQUFLTixBQUlILGdCQUhPLE1BTEEsY0FNdEIsTUFMbUIsaUJBQ25CLGVBT2dDLG1IQUNoQyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvQWNjb3VudHNCYWNrdXAvRXhwbGFpbmVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkQnV0dG9uIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcbmltcG9ydCBTaGFyZWRTbGlkZVVwTWVudVBhbmVsIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkU2xpZGVVcE1lbnVQYW5lbFwiXG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRyYW5zbGF0aW9uOiBcInNob3dQcml2YXRlS2V5XCIgfCBcInNob3dNbmVtb25pY1wiXG4gIGNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmNvbnN0IEVYUExBSU5FUl9MSU5LID0gXCJodHRwczovL3F1YW50dW1ldm0uY29tL3N0YXJ0L1wiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxhaW5lcih7IHRyYW5zbGF0aW9uLCBjbG9zZSB9OiBQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBgYWNjb3VudHMuYWNjb3VudEl0ZW0uJHt0cmFuc2xhdGlvbn1gLFxuICB9KVxuICBjb25zdCB7IHQ6IHRTaGFyZWQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2hhcmVkXCIgfSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U2hhcmVkU2xpZGVVcE1lbnVQYW5lbCBoZWFkZXI9e3QoXCJleHBsYWluZXIuaGVhZGVyXCIpfSB0eXBlPVwic21hbGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleHBsYWluZXIgc2ltcGxlX3RleHRcIj5cbiAgICAgICAgICA8cD57dChcImV4cGxhaW5lci50ZXh0MVwiKX08L3A+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwiYm9sZFwiPnt0KFwiZXhwbGFpbmVyLnRleHQyXCIpfTwvcD5cbiAgICAgICAgICA8cD57dChcImV4cGxhaW5lci50ZXh0M1wiKX08L3A+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleHBsYWluZXJfYnV0dG9uc1wiPlxuICAgICAgICAgICAgPFNoYXJlZEJ1dHRvblxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRlcnRpYXJ5XCJcbiAgICAgICAgICAgICAgaWNvblNtYWxsPVwiY2xvc2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjbG9zZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dFNoYXJlZChcImNsb3NlXCIpfVxuICAgICAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICAgICAgICA8U2hhcmVkQnV0dG9uXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgICBpY29uU21hbGw9XCJuZXctdGFiXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKEVYUExBSU5FUl9MSU5LLCBcIl9ibGFua1wiKT8uZm9jdXMoKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dFNoYXJlZChcInJlYWRNb3JlXCIpfVxuICAgICAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9TaGFyZWRTbGlkZVVwTWVudVBhbmVsPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuZXhwbGFpbmVyIHtcbiAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgcGFkZGluZzogMCAyNHB4IDEwcHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogLTIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmJvbGQge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgLmV4cGxhaW5lcl9idXR0b25zIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/Explainer.tsx */'));
    }
    function SharedCheckbox(props) {
      const {label, labelPosition = "right", size = 16, checked, disabled, invalid, invalidMessage, style, stylesForLabel, onChange} = props;
      return react.createElement("div", {
        style,
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + (classnames_default()({
          container: invalidMessage,
          disabled
        }) || "")
      }, react.createElement("label", {
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + "checkbox_label"
      }, react.createElement("input", {
        type: "checkbox",
        disabled,
        checked,
        onChange: event => onChange(event.currentTarget.checked),
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + "checkbox_input"
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + (classnames_default()("checkbox_box", {
          checked,
          invalid: !disabled && invalid
        }) || "")
      }), react.createElement("span", {
        style: stylesForLabel,
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + "label"
      }, label)), react.createElement("span", {
        className: style_default().dynamic([ [ "557650763", [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ] ] ]) + " " + (classnames_default()("message", {
          visible: !disabled && invalidMessage && invalid
        }) || "")
      }, invalidMessage), react.createElement(style_default(), {
        id: "557650763",
        dynamic: [ labelPosition === "right" ? "row" : "row-reverse", size, size, label ? 4 : 0, size * .2, size * .6, size * .6 ]
      }, `.container.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.label.__jsx-style-dynamic-selector{color:var(--c-text);font-weight:500;font-size:16px;line-height:24px;}.disabled.__jsx-style-dynamic-selector .label.__jsx-style-dynamic-selector{color:var(--c-border);}.checkbox_label.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:${labelPosition === "right" ? "row" : "row-reverse"};-ms-flex-direction:${labelPosition === "right" ? "row" : "row-reverse"};flex-direction:${labelPosition === "right" ? "row" : "row-reverse"};margin:unset;gap:8px;cursor:pointer;}.disabled.__jsx-style-dynamic-selector .checkbox_label.__jsx-style-dynamic-selector{cursor:default;}.checkbox_input.__jsx-style-dynamic-selector{display:none;}.checkbox_box.__jsx-style-dynamic-selector{min-width:${size}px;height:${size}px;border-radius:2px;box-sizing:border-box;cursor:pointer;margin-top:${label ? 4 : 0}px;}.disabled.__jsx-style-dynamic-selector .checkbox_box.__jsx-style-dynamic-selector{background:var(--c-bg-inset);cursor:default;}.checkbox_box.__jsx-style-dynamic-selector:not(.checked){border:2px solid var(--c-border);}.checkbox_box.checked.__jsx-style-dynamic-selector{background-color:var(--c-accent);}.checkbox_box.invalid.__jsx-style-dynamic-selector{border:2px solid var(--c-error);}.checkbox_box.checked.__jsx-style-dynamic-selector::before{content:"";display:block;margin:${size * .2}px;width:${size * .6}px;height:${size * .6}px;background:no-repeat center / cover url("/images/checkmark@2x.png");}.message.__jsx-style-dynamic-selector{visibility:hidden;color:var(--c-error);font-weight:500;font-size:16px;line-height:24px;}.message.visible.__jsx-style-dynamic-selector{visibility:visible;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedCheckbox.tsx */`));
    }
    function ConfirmReveal({description, invalidMessage, confirmButton, onConfirm}) {
      const [showInvalidMessage, setShowInvalidMessage] = (0, react.useState)(false);
      const [isConfirmed, setIsConfirmed] = (0, react.useState)(false);
      return react.createElement("div", {
        className: "jsx-548303842" + " " + "confirmation_container"
      }, react.createElement(SharedCheckbox, {
        size: 16,
        label: description,
        invalidMessage,
        checked: isConfirmed,
        invalid: showInvalidMessage && !isConfirmed,
        onChange: value => {
          setIsConfirmed(value);
          setShowInvalidMessage(false);
        }
      }), react.createElement("div", {
        className: "jsx-548303842"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        isDisabled: !isConfirmed,
        hideEvents: false,
        onClick: () => {
          if (isConfirmed) {
            onConfirm();
          } else {
            setShowInvalidMessage(true);
          }
        }
      }, confirmButton)), react.createElement(style_default(), {
        id: "548303842"
      }, ".confirmation_container.jsx-548303842{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c0JhY2t1cC9Db25maXJtUmV2ZWFsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnRGtCLEFBR3dCLDBFQUNTLDhFQUNiLFNBQ1giLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0FjY291bnRzQmFja3VwL0NvbmZpcm1SZXZlYWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEJ1dHRvblwiXG5pbXBvcnQgU2hhcmVkQ2hlY2tib3ggZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRDaGVja2JveFwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbmZpcm1SZXZlYWwoe1xuICBkZXNjcmlwdGlvbixcbiAgaW52YWxpZE1lc3NhZ2UsXG4gIGNvbmZpcm1CdXR0b24sXG4gIG9uQ29uZmlybSxcbn06IHtcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBpbnZhbGlkTWVzc2FnZTogc3RyaW5nXG4gIGNvbmZpcm1CdXR0b246IHN0cmluZ1xuICBvbkNvbmZpcm06ICgpID0+IHZvaWRcbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbc2hvd0ludmFsaWRNZXNzYWdlLCBzZXRTaG93SW52YWxpZE1lc3NhZ2VdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0NvbmZpcm1lZCwgc2V0SXNDb25maXJtZWRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbmZpcm1hdGlvbl9jb250YWluZXJcIj5cbiAgICAgIDxTaGFyZWRDaGVja2JveFxuICAgICAgICBzaXplPXsxNn1cbiAgICAgICAgbGFiZWw9e2Rlc2NyaXB0aW9ufVxuICAgICAgICBpbnZhbGlkTWVzc2FnZT17aW52YWxpZE1lc3NhZ2V9XG4gICAgICAgIGNoZWNrZWQ9e2lzQ29uZmlybWVkfVxuICAgICAgICBpbnZhbGlkPXtzaG93SW52YWxpZE1lc3NhZ2UgJiYgIWlzQ29uZmlybWVkfVxuICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0SXNDb25maXJtZWQodmFsdWUpXG4gICAgICAgICAgc2V0U2hvd0ludmFsaWRNZXNzYWdlKGZhbHNlKVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgaXNEaXNhYmxlZD17IWlzQ29uZmlybWVkfVxuICAgICAgICAgIGhpZGVFdmVudHM9e2ZhbHNlfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0NvbmZpcm1lZCkge1xuICAgICAgICAgICAgICBvbkNvbmZpcm0oKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0U2hvd0ludmFsaWRNZXNzYWdlKHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjb25maXJtQnV0dG9ufVxuICAgICAgICA8L1NoYXJlZEJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuY29uZmlybWF0aW9uX2NvbnRhaW5lciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/ConfirmReveal.tsx */"));
    }
    function Banner(props) {
      const {icon, iconColor, iconAriaLabel, hasShadow = false, style, children} = props;
      return react.createElement("div", {
        style,
        className: "jsx-2217988715" + " " + (classnames_default()("banner_wrap", {
          shadow: hasShadow
        }) || "")
      }, icon && react.createElement(SharedIcon, {
        icon: `icons/m/${icon}.svg`,
        color: iconColor,
        width: 24,
        ariaLabel: iconAriaLabel,
        style: {
          flexShrink: 0,
          marginRight: 8
        }
      }), react.createElement("div", {
        className: "jsx-2217988715" + " " + "banner_content"
      }, children), react.createElement(style_default(), {
        id: "2217988715"
      }, ".banner_wrap.jsx-2217988715{width:336px;background:var(--c-bg-alt);border-radius:8px;padding:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;position:relative;}.banner_wrap.shadow.jsx-2217988715{box-shadow: 0px 16px 16px rgba(7,17,17,0.3), 0px 6px 8px rgba(7,17,17,0.24), 0px 2px 4px rgba(7,17,17,0.34);}.banner_content.jsx-2217988715{margin:2px 0;width:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedBanner.tsx */"));
    }
    function BannerWithClose(props) {
      const {id, children, icon, iconColor, style, iconAriaLabel, hasShadow} = props;
      const [isVisible, setIsVisible] = useLocalStorage(`banner_${id}`, "true");
      if (isVisible === "false") return null;
      return react.createElement(Banner, {
        icon,
        iconColor,
        iconAriaLabel,
        style,
        hasShadow
      }, react.createElement(SharedIcon, {
        onClick: () => setIsVisible("false"),
        icon: "icons/s/close.svg",
        ariaLabel: "close",
        width: 16,
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-text-secondary)",
        style: {
          position: "absolute",
          top: 12,
          right: 12
        }
      }), children);
    }
    function SharedBanner(props) {
      const {canBeClosed = false, id, ...bannerProps} = props;
      if (canBeClosed && id) return BannerWithClose({
        id,
        ...bannerProps
      });
      return Banner({
        ...bannerProps
      });
    }
    function CopyToClipboard({copyText, copy}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem.copyWarning"
      });
      const {t: sharedT} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      const dispatch = useBackgroundDispatch();
      const shouldShowCopyWarning = useBackgroundSelector(selectShouldShowDismissableItem("copy-sensitive-material-warning"));
      const [isOpen, setIsOpen] = (0, react.useState)(false);
      const [shouldNotDisplayAgain, setShouldNotDisplayAgain] = (0, react.useState)(false);
      const handleSubmitCopyWarning = () => {
        copy();
        setIsOpen(false);
        if (shouldNotDisplayAgain) {
          dispatch(markDismissableItemAsShown("copy-sensitive-material-warning"));
        }
      };
      return react.createElement(react.Fragment, null, react.createElement(SharedButton, {
        type: "tertiary",
        size: "small",
        iconMedium: "copy",
        onClick: () => {
          if (shouldShowCopyWarning) {
            setIsOpen(true);
          } else {
            copy();
          }
        },
        center: true
      }, copyText), react.createElement(SharedSlideUpMenu, {
        isOpen,
        size: "auto",
        close: () => setIsOpen(false)
      }, react.createElement(SharedSlideUpMenuPanel, {
        header: t("header")
      }, react.createElement("div", {
        className: "jsx-3410543784" + " " + "content"
      }, react.createElement(SharedBanner, {
        icon: "notif-attention",
        iconColor: "var(--c-warning)"
      }, react.createElement("div", {
        className: "jsx-3410543784" + " " + "banner"
      }, react.createElement("span", {
        className: "jsx-3410543784" + " " + "title"
      }, t("title")), react.createElement("span", {
        className: "jsx-3410543784" + " " + "simple_text"
      }, t("description")))), react.createElement("div", {
        className: "jsx-3410543784" + " " + "checkbox"
      }, react.createElement(SharedCheckbox, {
        size: 16,
        label: t("dontAsk"),
        checked: shouldNotDisplayAgain,
        onChange: value => setShouldNotDisplayAgain(value)
      })), react.createElement("div", {
        className: "jsx-3410543784" + " " + "buttons"
      }, react.createElement(SharedButton, {
        size: "medium",
        type: "secondary",
        onClick: () => setIsOpen(false)
      }, sharedT("cancelBtn")), react.createElement(SharedButton, {
        size: "medium",
        type: "primary",
        onClick: () => handleSubmitCopyWarning()
      }, t("submitBtn"))))), react.createElement(style_default(), {
        id: "3410543784"
      }, ".content.jsx-3410543784{padding:0 16px 16px 16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:16px;}.banner.jsx-3410543784{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:90%;}.title.jsx-3410543784{font-size:16px;line-height:24px;font-weight:500;color:var(--c-warning);margin-bottom:12px;}.checkbox.jsx-3410543784{margin-left:10px;}.buttons.jsx-3410543784{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-top:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/CopyToClipboard.tsx */")));
    }
    function RevealPrivateKey({address}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem.showPrivateKey"
      });
      const dispatch = useBackgroundDispatch();
      const [privateKey, setPrivateKey] = (0, react.useState)("");
      (0, react.useEffect)((() => {
        const fetchPrivateKey = async () => {
          const key = await dispatch(exportPrivateKey(address));
          if (key) {
            setPrivateKey(key);
          }
        };
        fetchPrivateKey();
      }), [ dispatch, address ]);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-3599604329" + " " + "key_container"
      }, react.createElement("div", {
        className: "jsx-3599604329" + " " + "key_info"
      }, react.createElement("span", {
        className: "jsx-3599604329" + " " + "key_label"
      }, t("privateKey")), react.createElement("span", {
        className: "jsx-3599604329" + " " + "key_description"
      }, t("warningMessage"))), react.createElement(CopyToClipboard, {
        copyText: t("exportingPrivateKey.copyBtn"),
        copy: () => {
          navigator.clipboard.writeText(privateKey);
          dispatch(setSnackbarMessage(t("exportingPrivateKey.copySuccess")));
        }
      })), react.createElement(style_default(), {
        id: "3599604329"
      }, ".key_container.jsx-3599604329{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;padding:8px 0;}.key_info.jsx-3599604329{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;text-align:center;}.key_label.jsx-3599604329{font-weight:600;font-size:16px;line-height:24px;color:var(--c-text-secondary);}.key_description.jsx-3599604329{font-weight:500;font-size:14px;line-height:16px;color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c0JhY2t1cC9SZXZlYWxQcml2YXRlS2V5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnRGtCLEFBR3dCLEFBT0EsQUFPRyxBQU1BLGdCQUxELEFBTUEsZUFMRSxBQU1BLGlCQUxhLEFBTUQsMEJBdEJQLEFBT0EsR0FnQnhCLENBTkEsMEVBaEJxQixBQU9BLDZGQU5WLEFBT0QsUUFDVSxDQVBKLGNBQ2hCLEdBT0EiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0FjY291bnRzQmFja3VwL1JldmVhbFByaXZhdGVLZXkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwb3J0UHJpdmF0ZUtleSB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvcmVkdXgtc2xpY2VzL2ludGVybmFsLXNpZ25lclwiXG5pbXBvcnQgeyBzZXRTbmFja2Jhck1lc3NhZ2UgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy91aVwiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgQXN5bmNUaHVua0Z1bGZpbGxtZW50VHlwZSB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvcmVkdXgtc2xpY2VzL3V0aWxzXCJcbmltcG9ydCB7IHVzZUJhY2tncm91bmREaXNwYXRjaCB9IGZyb20gXCIuLi8uLi9ob29rc1wiXG5pbXBvcnQgQ29weVRvQ2xpcGJvYXJkIGZyb20gXCIuL0NvcHlUb0NsaXBib2FyZFwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJldmVhbFByaXZhdGVLZXkoe1xuICBhZGRyZXNzLFxufToge1xuICBhZGRyZXNzOiBzdHJpbmdcbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJhY2NvdW50cy5hY2NvdW50SXRlbS5zaG93UHJpdmF0ZUtleVwiLFxuICB9KVxuICBjb25zdCBkaXNwYXRjaCA9IHVzZUJhY2tncm91bmREaXNwYXRjaCgpXG4gIGNvbnN0IFtwcml2YXRlS2V5LCBzZXRQcml2YXRlS2V5XSA9IHVzZVN0YXRlKFwiXCIpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByaXZhdGVLZXkgPSBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSAoYXdhaXQgZGlzcGF0Y2goXG4gICAgICAgIGV4cG9ydFByaXZhdGVLZXkoYWRkcmVzcyksXG4gICAgICApKSBhcyB1bmtub3duIGFzIEFzeW5jVGh1bmtGdWxmaWxsbWVudFR5cGU8dHlwZW9mIGV4cG9ydFByaXZhdGVLZXk+XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgc2V0UHJpdmF0ZUtleShrZXkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZmV0Y2hQcml2YXRlS2V5KClcbiAgfSwgW2Rpc3BhdGNoLCBhZGRyZXNzXSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImtleV9jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZXlfaW5mb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImtleV9sYWJlbFwiPnt0KFwicHJpdmF0ZUtleVwiKX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5X2Rlc2NyaXB0aW9uXCI+e3QoXCJ3YXJuaW5nTWVzc2FnZVwiKX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Q29weVRvQ2xpcGJvYXJkXG4gICAgICAgICAgY29weVRleHQ9e3QoXCJleHBvcnRpbmdQcml2YXRlS2V5LmNvcHlCdG5cIil9XG4gICAgICAgICAgY29weT17KCkgPT4ge1xuICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQocHJpdmF0ZUtleSlcbiAgICAgICAgICAgIGRpc3BhdGNoKHNldFNuYWNrYmFyTWVzc2FnZSh0KFwiZXhwb3J0aW5nUHJpdmF0ZUtleS5jb3B5U3VjY2Vzc1wiKSkpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAua2V5X2NvbnRhaW5lciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgICB9XG4gICAgICAgIC5rZXlfaW5mbyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIC5rZXlfbGFiZWwge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuICAgICAgICAua2V5X2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/RevealPrivateKey.tsx */"));
    }
    function ShowPrivateKey({account}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem.showPrivateKey"
      });
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const [showPrivateKey, setShowPrivateKey] = (0, react.useState)(false);
      const [showExplainer, setShowExplainer] = (0, react.useState)(false);
      useLockWallet();
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenuPanel, {
        header: t("header"),
        icon: "icons/s/key.svg",
        type: "small"
      }, react.createElement("div", {
        className: "jsx-130461577" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-130461577" + " " + "content"
      }, areInternalSignersUnlocked ? react.createElement(react.Fragment, null, react.createElement(SharedWarningMessage, {
        text: t("warningMessage")
      }), react.createElement("div", {
        className: "jsx-130461577" + " " + "exporting_container"
      }, react.createElement("span", {
        className: "jsx-130461577" + " " + "header"
      }, t("exportingPrivateKey.header")), react.createElement("div", {
        className: "jsx-130461577" + " " + "account_container"
      }, react.createElement(SharedAccountItemSummary, {
        accountTotal: account
      })), showPrivateKey ? react.createElement(RevealPrivateKey, {
        address: account.address
      }) : react.createElement(ConfirmReveal, {
        description: t("exportingPrivateKey.confirmationDesc"),
        invalidMessage: t("exportingPrivateKey.invalidMessage"),
        confirmButton: t("exportingPrivateKey.showBtn"),
        onConfirm: () => setShowPrivateKey(true)
      }))) : react.createElement(InternalSignerUnlock, {
        displayCancelButton: false
      })), react.createElement(SharedButton, {
        type: "tertiaryGray",
        size: "small",
        onClick: () => setShowExplainer(true)
      }, t("privateKeyInfo")))), react.createElement(SharedSlideUpMenu, {
        size: "auto",
        isOpen: showExplainer,
        close: () => setShowExplainer(false)
      }, react.createElement(Explainer, {
        translation: "showPrivateKey",
        close: () => setShowExplainer(false)
      })), react.createElement(style_default(), {
        id: "130461577"
      }, ".container.jsx-130461577{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:calc(100% - 35px);box-sizing:border-box;padding:0 24px 10px;}.content.jsx-130461577{box-sizing:border-box;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.account_container.jsx-130461577{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;border-bottom:1px solid var(--c-bg);padding:8px 0 24px;margin-bottom:20px;}.exporting_container.jsx-130461577{box-sizing:border-box;width:100%;padding:16px 24px 24px;background:var(--c-bg-alt);border-radius:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/ShowPrivateKey.tsx */"));
    }
    const allowExportPrivateKeys = [ AccountType.keyPair, AccountType.Imported, AccountType.Internal ];
    function AccountItemOptionsMenu({accountTotal, accountType}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem"
      });
      const dispatch = useBackgroundDispatch();
      const {address, network} = accountTotal;
      const [showAddressRemoveConfirm, setShowAddressRemoveConfirm] = (0, react.useState)(false);
      const [showPrivateKeyMenu, setShowPrivateKeyMenu] = (0, react.useState)(false);
      const [showEditName, setShowEditName] = (0, react.useState)(false);
      const copyAddress = (0, react.useCallback)((() => {
        navigator.clipboard.writeText(address);
        dispatch(setSnackbarMessage("Address copied to clipboard"));
      }), [ address, dispatch ]);
      const blockExplorerURL = DEFAULT_NETWORKS_BY_CHAIN_ID.has(network.chainID) ? `${blockExplorer[network.chainID].url}/address/${address}` : network.blockExplorerURL;
      const canExportPrivateKey = false;
      return react.createElement("div", {
        className: "jsx-2915722784" + " " + "options_menu_wrap"
      }, react.createElement(SharedSlideUpMenu, {
        size: "custom",
        customSize: "304px",
        isOpen: showEditName,
        close: e => {
          e?.stopPropagation();
          setShowEditName(false);
        }
      }, react.createElement("div", {
        role: "presentation",
        onClick: e => e.stopPropagation(),
        style: {
          cursor: "default"
        },
        className: "jsx-2915722784"
      }, react.createElement(AccountItemEditName, {
        addressOnNetwork: {
          address,
          network
        },
        account: accountTotal,
        close: () => setShowEditName(false)
      }))), react.createElement(SharedSlideUpMenu, {
        size: "custom",
        customSize: "336px",
        opaqueOverlay: true,
        isOpen: showAddressRemoveConfirm,
        close: e => {
          e?.stopPropagation();
          setShowAddressRemoveConfirm(false);
        }
      }, react.createElement("div", {
        role: "presentation",
        onClick: e => e.stopPropagation(),
        style: {
          cursor: "default"
        },
        className: "jsx-2915722784"
      }, react.createElement(AccountItemRemovalConfirm, {
        account: accountTotal,
        close: () => setShowAddressRemoveConfirm(false)
      }))), react.createElement(SharedSlideUpMenu, {
        isOpen: showPrivateKeyMenu,
        size: "custom",
        customSize: "580px",
        close: e => {
          e?.stopPropagation();
          setShowPrivateKeyMenu(false);
        }
      }, react.createElement("div", {
        role: "presentation",
        onClick: e => e.stopPropagation(),
        style: {
          cursor: "default"
        },
        className: "jsx-2915722784"
      }, react.createElement(ShowPrivateKey, {
        account: accountTotal
      }))), react.createElement(SharedDropdown, {
        toggler: toggle => react.createElement("button", {
          type: "button",
          role: "menu",
          onClick: () => toggle(),
          tabIndex: 0,
          className: "jsx-2915722784" + " " + "icon_settings"
        }),
        options: [ {
          key: "edit",
          icon: "icons/s/edit.svg",
          label: t("editName"),
          onClick: () => {
            setShowEditName(true);
          }
        }, {
          key: "copy",
          icon: "icons/s/copy.svg",
          label: t("copyAddress"),
          onClick: () => {
            copyAddress();
          }
        }, ...blockExplorerURL ? [ {
          key: "explorer",
          icon: "icons/s/new-tab.svg",
          label: t("openInExplorer"),
          onClick: () => {
            window.open(blockExplorerURL, "_blank")?.focus();
          }
        } ] : [], ...canExportPrivateKey ? [ {
          key: "key",
          icon: "icons/s/key.svg",
          label: t("showPrivateKey.header"),
          onClick: () => {
            setShowPrivateKeyMenu(true);
          }
        } ] : [], {
          key: "remove",
          icon: "garbage@2x.png",
          label: t("removeAddress"),
          onClick: () => {
            setShowAddressRemoveConfirm(true);
          },
          color: "var(--c-error)",
          hoverColor: "var(--c-error-strong)"
        } ]
      }), react.createElement(style_default(), {
        id: "2915722784"
      }, '.icon_settings.jsx-2915722784{-webkit-mask-image:url("./images/more_dots@2x.png");mask-image:url("./images/more_dots@2x.png");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:var(--c-border);-webkit-mask-size:20%;mask-size:20%;width:4px;height:20px;border:10px solid transparent;}.icon_settings.jsx-2915722784:hover{background-color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountItem/AccountItemOptionsMenu.tsx */'));
    }
    function EditSectionForm({onSubmit: onSubmitCallback, onCancel, accountTypeIcon, currentName}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem"
      });
      const [newName, setNewName] = (0, react.useState)("");
      const [error, setError] = (0, react.useState)("");
      const [touched, setTouched] = (0, react.useState)(false);
      const callbackRef = (0, react.useRef)(onSubmitCallback);
      callbackRef.current = onSubmitCallback;
      (0, react.useEffect)((() => {
        if (touched && newName.trim() === "") {
          setError(t("noNameError"));
        } else {
          setError("");
        }
      }), [ newName, error, touched, t ]);
      const onSubmit = react.useCallback((event => {
        event.preventDefault();
        if (!newName) {
          setTouched(true);
          setError(t("noNameError"));
          return;
        }
        if (error) {
          return;
        }
        callbackRef.current(newName);
      }), [ error, newName, t ]);
      return react.createElement("div", {
        role: "none",
        onClick: e => e.stopPropagation(),
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "edit_address_name"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "header"
      }, react.createElement(AccountItemActionHeader, {
        label: t("editName"),
        icon: "icons/s/edit.svg",
        color: "var(--c-text)"
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "wallet_title"
      }, react.createElement("h2", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "left"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "icon_wrap"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "icon"
      })), currentName)), react.createElement("form", {
        onSubmit,
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "form"
      }, react.createElement("div", {
        role: "presentation",
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "details"
      }, react.createElement(SharedInput, {
        label: "",
        placeholder: t("typeNewName"),
        errorMessage: error,
        autoFocus: true,
        onChange: value => {
          if (!touched) {
            setTouched(true);
          }
          setNewName(value);
        }
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "1597567687", [ accountTypeIcon ] ] ]) + " " + "button_container"
      }, react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        onClick: () => {
          onCancel();
        }
      }, t("cancel")), react.createElement(SharedButton, {
        type: "primaryGreen",
        size: "medium",
        isFormSubmit: true
      }, t("saveName")))), react.createElement(style_default(), {
        id: "1597567687",
        dynamic: [ accountTypeIcon ]
      }, `.icon_wrap.__jsx-style-dynamic-selector{background-color:var(--c-border);margin:0 7px 0 0;border-radius:4px;}.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("${accountTypeIcon}");mask-image:url("${accountTypeIcon}");-webkit-mask-size:cover;mask-size:cover;background-color:var(--c-text-secondary);width:24px;height:24px;}.wallet_title.__jsx-style-dynamic-selector{width:100%;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:var(--c-bg-alt);border-radius:4px;padding:8px;margin-top:24px;}.account_container.__jsx-style-dynamic-selector{margin:0 auto;width:336px;height:52px;margin-top:15px;}.wallet_title.__jsx-style-dynamic-selector>h2.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text-tertiary);font-size:18px;font-weight:600;line-height:24px;margin:0;}.header.__jsx-style-dynamic-selector{height:24px;}.edit_address_name.__jsx-style-dynamic-selector{margin-left:20px;margin-right:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:95%;}form.__jsx-style-dynamic-selector{margin:0px;}.details.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:24px;font-size:16px;margin-top:16px;}.button_container.__jsx-style-dynamic-selector{margin-top:32px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/EditSectionForm.tsx */`));
    }
    const AccountsNotificationPanel_EditSectionForm = EditSectionForm;
    function SigningButton({onCurrentAddressChange}) {
      const {t} = useTranslation();
      const dispatch = useBackgroundDispatch();
      const navigateTo = useNavigateTo();
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const buttonData = {
        color: areInternalSignersUnlocked ? "error" : "success",
        icon: areInternalSignersUnlocked ? "lock" : "unlock"
      };
      const toggleLockStatus = async () => {
        if (!areInternalSignersUnlocked) {
          navigateTo("/internal-signer/unlock");
        } else {
          await dispatch(lockInternalSigners());
          onCurrentAddressChange("");
        }
      };
      return react.createElement(react.Fragment, null, react.createElement("button", {
        type: "button",
        onClick: toggleLockStatus,
        className: style_default().dynamic([ [ "828267787", [ buttonData.color ] ], [ "645512392", [ buttonData.color ] ] ]) + " " + "signing_btn"
      }, t(`accounts.notificationPanel.signing.${areInternalSignersUnlocked ? "lock" : "unlock"}`), react.createElement(SharedIcon, {
        icon: `icons/m/${buttonData.icon}.svg`,
        width: 25,
        color: "var(--c-text-tertiary)",
        hoverColor: `var(--c-${buttonData.color})`,
        transitionHoverTime: "0.2s"
      })), react.createElement(style_default(), {
        id: "828267787",
        dynamic: [ buttonData.color ]
      }, `.signing_btn.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;-webkit-transition:color 0.2s;transition:color 0.2s;}.signing_btn.__jsx-style-dynamic-selector:hover{color:var(--c-${buttonData.color});}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c05vdGlmaWNhdGlvblBhbmVsL1NpZ25pbmdCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNEUyxBQUcwQixBQU0rQiw0Q0FDOUMsOEJBTnFCLDZGQUNYLFFBQ2Msb0RBQ3hCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c05vdGlmaWNhdGlvblBhbmVsL1NpZ25pbmdCdXR0b24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBsb2NrSW50ZXJuYWxTaWduZXJzIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvaW50ZXJuYWwtc2lnbmVyXCJcblxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQge1xuICB1c2VCYWNrZ3JvdW5kRGlzcGF0Y2gsXG4gIHVzZUFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkLFxuICB1c2VOYXZpZ2F0ZVRvLFxufSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuaW1wb3J0IFNoYXJlZEljb24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRJY29uXCJcblxudHlwZSBTaWduaW5nQnV0dG9uUHJvcHMgPSB7XG4gIG9uQ3VycmVudEFkZHJlc3NDaGFuZ2U6IChuZXdBZGRyZXNzOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lnbmluZ0J1dHRvbih7XG4gIG9uQ3VycmVudEFkZHJlc3NDaGFuZ2UsXG59OiBTaWduaW5nQnV0dG9uUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VCYWNrZ3JvdW5kRGlzcGF0Y2goKVxuICBjb25zdCBuYXZpZ2F0ZVRvID0gdXNlTmF2aWdhdGVUbygpXG4gIGNvbnN0IGFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkID0gdXNlQXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQoZmFsc2UpXG5cbiAgY29uc3QgYnV0dG9uRGF0YSA9IHtcbiAgICBjb2xvcjogYXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQgPyBcImVycm9yXCIgOiBcInN1Y2Nlc3NcIixcbiAgICBpY29uOiBhcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZCA/IFwibG9ja1wiIDogXCJ1bmxvY2tcIixcbiAgfVxuXG4gIGNvbnN0IHRvZ2dsZUxvY2tTdGF0dXMgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFhcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZCkge1xuICAgICAgbmF2aWdhdGVUbyhcIi9pbnRlcm5hbC1zaWduZXIvdW5sb2NrXCIpXG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGRpc3BhdGNoKGxvY2tJbnRlcm5hbFNpZ25lcnMoKSlcbiAgICAgIG9uQ3VycmVudEFkZHJlc3NDaGFuZ2UoXCJcIilcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJzaWduaW5nX2J0blwiIG9uQ2xpY2s9e3RvZ2dsZUxvY2tTdGF0dXN9PlxuICAgICAgICB7dChcbiAgICAgICAgICBgYWNjb3VudHMubm90aWZpY2F0aW9uUGFuZWwuc2lnbmluZy4ke1xuICAgICAgICAgICAgYXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQgPyBcImxvY2tcIiA6IFwidW5sb2NrXCJcbiAgICAgICAgICB9YCxcbiAgICAgICAgKX1cbiAgICAgICAgPFNoYXJlZEljb25cbiAgICAgICAgICBpY29uPXtgaWNvbnMvbS8ke2J1dHRvbkRhdGEuaWNvbn0uc3ZnYH1cbiAgICAgICAgICB3aWR0aD17MjV9XG4gICAgICAgICAgY29sb3I9XCJ2YXIoLS1jLXRleHQtdGVydGlhcnkpXCJcbiAgICAgICAgICBob3ZlckNvbG9yPXtgdmFyKC0tYy0ke2J1dHRvbkRhdGEuY29sb3J9KWB9XG4gICAgICAgICAgdHJhbnNpdGlvbkhvdmVyVGltZT1cIjAuMnNcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5zaWduaW5nX2J0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogNXB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcbiAgICAgICAgICB9XG4gICAgICAgICAgLnNpZ25pbmdfYnRuOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLSR7YnV0dG9uRGF0YS5jb2xvcn0pO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgICA8c3R5bGUgZ2xvYmFsIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuc2lnbmluZ19idG46aG92ZXIgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy0ke2J1dHRvbkRhdGEuY29sb3J9KTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/SigningButton.tsx */`), react.createElement(style_default(), {
        id: "645512392",
        dynamic: [ buttonData.color ]
      }, `.signing_btn:hover .icon{background-color:var(--c-${buttonData.color});}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9BY2NvdW50c05vdGlmaWNhdGlvblBhbmVsL1NpZ25pbmdCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1FUyxBQUdvRSx1REFDekQiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0FjY291bnRzTm90aWZpY2F0aW9uUGFuZWwvU2lnbmluZ0J1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IGxvY2tJbnRlcm5hbFNpZ25lcnMgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9pbnRlcm5hbC1zaWduZXJcIlxuXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7XG4gIHVzZUJhY2tncm91bmREaXNwYXRjaCxcbiAgdXNlQXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQsXG4gIHVzZU5hdmlnYXRlVG8sXG59IGZyb20gXCIuLi8uLi9ob29rc1wiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEljb25cIlxuXG50eXBlIFNpZ25pbmdCdXR0b25Qcm9wcyA9IHtcbiAgb25DdXJyZW50QWRkcmVzc0NoYW5nZTogKG5ld0FkZHJlc3M6IHN0cmluZykgPT4gdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaWduaW5nQnV0dG9uKHtcbiAgb25DdXJyZW50QWRkcmVzc0NoYW5nZSxcbn06IFNpZ25pbmdCdXR0b25Qcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCBkaXNwYXRjaCA9IHVzZUJhY2tncm91bmREaXNwYXRjaCgpXG4gIGNvbnN0IG5hdmlnYXRlVG8gPSB1c2VOYXZpZ2F0ZVRvKClcbiAgY29uc3QgYXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQgPSB1c2VBcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZChmYWxzZSlcblxuICBjb25zdCBidXR0b25EYXRhID0ge1xuICAgIGNvbG9yOiBhcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZCA/IFwiZXJyb3JcIiA6IFwic3VjY2Vzc1wiLFxuICAgIGljb246IGFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkID8gXCJsb2NrXCIgOiBcInVubG9ja1wiLFxuICB9XG5cbiAgY29uc3QgdG9nZ2xlTG9ja1N0YXR1cyA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkKSB7XG4gICAgICBuYXZpZ2F0ZVRvKFwiL2ludGVybmFsLXNpZ25lci91bmxvY2tcIilcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgZGlzcGF0Y2gobG9ja0ludGVybmFsU2lnbmVycygpKVxuICAgICAgb25DdXJyZW50QWRkcmVzc0NoYW5nZShcIlwiKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cInNpZ25pbmdfYnRuXCIgb25DbGljaz17dG9nZ2xlTG9ja1N0YXR1c30+XG4gICAgICAgIHt0KFxuICAgICAgICAgIGBhY2NvdW50cy5ub3RpZmljYXRpb25QYW5lbC5zaWduaW5nLiR7XG4gICAgICAgICAgICBhcmVJbnRlcm5hbFNpZ25lcnNVbmxvY2tlZCA/IFwibG9ja1wiIDogXCJ1bmxvY2tcIlxuICAgICAgICAgIH1gLFxuICAgICAgICApfVxuICAgICAgICA8U2hhcmVkSWNvblxuICAgICAgICAgIGljb249e2BpY29ucy9tLyR7YnV0dG9uRGF0YS5pY29ufS5zdmdgfVxuICAgICAgICAgIHdpZHRoPXsyNX1cbiAgICAgICAgICBjb2xvcj1cInZhcigtLWMtdGV4dC10ZXJ0aWFyeSlcIlxuICAgICAgICAgIGhvdmVyQ29sb3I9e2B2YXIoLS1jLSR7YnV0dG9uRGF0YS5jb2xvcn0pYH1cbiAgICAgICAgICB0cmFuc2l0aW9uSG92ZXJUaW1lPVwiMC4yc1wiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgLnNpZ25pbmdfYnRuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuc2lnbmluZ19idG46aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWMtJHtidXR0b25EYXRhLmNvbG9yfSk7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICAgIDxzdHlsZSBnbG9iYWwganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5zaWduaW5nX2J0bjpob3ZlciAuaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLSR7YnV0dG9uRGF0YS5jb2xvcn0pO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/SigningButton.tsx */`));
    }
    const DELAY = 250;
    function SharedAccordion({headerElement, contentElement, contentHeight, isInitiallyOpen = false, style = {}, onChange}) {
      const contentRef = (0, react.useRef)(null);
      const [isOpen, setIsOpen] = (0, react.useState)(isInitiallyOpen);
      const [isVisible, setIsVisible] = (0, react.useState)(isInitiallyOpen);
      const [withTransition, setWithTransition] = (0, react.useState)(!isInitiallyOpen);
      const [height, setHeight] = (0, react.useState)(isInitiallyOpen && contentHeight ? contentHeight : 0);
      const toggle = () => {
        setWithTransition(true);
        setIsOpen((open => !open));
        onChange?.(!isOpen);
      };
      (0, react.useEffect)((() => {
        setHeight(contentHeight ?? contentRef.current?.clientHeight ?? 600);
      }), [ contentRef, contentElement, contentHeight ]);
      (0, react.useEffect)((() => {
        const timeout = setTimeout((() => {
          setIsVisible(isOpen);
        }), isOpen ? 140 : 50);
        return () => clearTimeout(timeout);
      }), [ isOpen ]);
      return react.createElement("div", {
        "aria-expanded": isOpen,
        style,
        className: style_default().dynamic([ [ "3712123115", [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ] ] ]) + " " + "accordion"
      }, react.createElement("div", {
        role: "button",
        tabIndex: 0,
        onKeyDown: e => e.key === "Enter" && toggle(),
        onClick: toggle,
        className: style_default().dynamic([ [ "3712123115", [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ] ] ]) + " " + "accordion_header"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3712123115", [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ] ] ]) + " " + "accordion_header_content"
      }, headerElement), react.createElement(SharedIcon, {
        icon: "icons/s/arrow-toggle.svg",
        width: 16,
        color: "var(--c-text)",
        hoverColor: "var(--c-text)",
        onClick: e => {
          e.stopPropagation();
          toggle();
        },
        style: {
          margin: "2px 0 2px 8px",
          transform: `rotate(${isOpen ? "180" : "0"}deg)`,
          transition: "transform 100ms"
        }
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "3712123115", [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ] ] ]) + " " + (classnames_default()("accordion_content", {
          visible: isOpen
        }) || "")
      }, react.createElement("div", {
        ref: contentRef,
        className: style_default().dynamic([ [ "3712123115", [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ] ] ])
      }, typeof contentElement === "function" ? contentElement(isOpen) : contentElement)), react.createElement(style_default(), {
        id: "3712123115",
        dynamic: [ isOpen ? "var(--background, var(--c-bg-alt))" : "", DELAY, height + 10, withTransition ? DELAY : 0, isVisible ? "visible" : "hidden" ]
      }, `.accordion.__jsx-style-dynamic-selector{background-color:${isOpen ? "var(--background, var(--c-bg-alt))" : ""};}.accordion.__jsx-style-dynamic-selector:not([aria-expanded="true"]):hover{background-color:var(--background-hover,none);}.accordion_header.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--header-padding,"4px 8px");cursor:pointer;}.accordion_header_content.__jsx-style-dynamic-selector{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;max-width:calc(100% - 24px);}.accordion_content.__jsx-style-dynamic-selector{max-height:0;overflow:hidden;-webkit-transition: max-height ${DELAY}ms ease-out, opacity var(--content-fade-in-duration,130ms) ease-in;transition: max-height ${DELAY}ms ease-out, opacity var(--content-fade-in-duration,130ms) ease-in;opacity:0;}.accordion_content.visible.__jsx-style-dynamic-selector{max-height:${height + 10}px;-webkit-transition: max-height ${withTransition ? DELAY : 0}ms ease-in, opacity var(--content-fade-in-duration,130ms) ease-in;transition: max-height ${withTransition ? DELAY : 0}ms ease-in, opacity var(--content-fade-in-duration,130ms) ease-in;opacity:1;overflow:${isVisible ? "visible" : "hidden"};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAccordion.tsx */`));
    }
    function SharedSecretText(props) {
      const {text, label = "", width, height} = props;
      const {t} = useTranslation();
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: style_default().dynamic([ [ "2856672164", [ width ?? "100%", height ?? "100%" ] ] ]) + " " + "secret_container"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2856672164", [ width ?? "100%", height ?? "100%" ] ] ]) + " " + "secret_text centered"
      }, text), react.createElement("div", {
        className: style_default().dynamic([ [ "2856672164", [ width ?? "100%", height ?? "100%" ] ] ]) + " " + "secret_blur centered"
      }, react.createElement(SharedIcon, {
        icon: "icons/m/eye-off.svg",
        width: 24,
        color: "var(--c-text-secondary)"
      }), react.createElement("span", {
        className: style_default().dynamic([ [ "2856672164", [ width ?? "100%", height ?? "100%" ] ] ]) + " " + "secret_label"
      }, t("shared.mouseOverToShow")), label && react.createElement("span", {
        className: style_default().dynamic([ [ "2856672164", [ width ?? "100%", height ?? "100%" ] ] ]) + " " + "secret_label"
      }, label))), react.createElement(style_default(), {
        id: "2856672164",
        dynamic: [ width ?? "100%", height ?? "100%" ]
      }, `.secret_container.__jsx-style-dynamic-selector{width:${width ?? "100%"};height:${height ?? "100%"};position:relative;font-family:"Segment";font-style:normal;color:var(--c-text-secondary);text-align:center;cursor:pointer;}.secret_text.__jsx-style-dynamic-selector{font-weight:600;font-size:18px;line-height:27px;overflow-wrap:anywhere;padding:10px;opacity:0.8;-webkit-filter:blur(6px);filter:blur(6px);}.secret_blur.__jsx-style-dynamic-selector{font-weight:500;font-size:14px;line-height:16px;opacity:1;}.secret_container.__jsx-style-dynamic-selector:hover .secret_blur.__jsx-style-dynamic-selector{opacity:0;pointer-events:none;}.secret_container.__jsx-style-dynamic-selector:hover .secret_text.__jsx-style-dynamic-selector{opacity:1;-webkit-filter:blur(0px);filter:blur(0px);}.centered.__jsx-style-dynamic-selector{position:absolute;top:0;bottom:0;left:0;right:0;box-sizing:border-box;width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-transition: opacity 200ms ease-in-out, filter 200ms ease-in-out;transition: opacity 200ms ease-in-out, filter 200ms ease-in-out;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkU2VjcmV0VGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEJrQixBQUc4QyxBQVVuQixBQVNBLEFBTU4sQUFJQSxBQUlRLFVBUEUsQUFJSCxNQW5CRixBQVNBLEVBY1QsTUFDRyxNQVJYLENBZm1CLEFBU0EsRUFlVixFQW5DNkIsS0FvQzVCLFFBeEJlLEFBU2IsQUFnQlksSUFQeEIsTUFSQSxZQWdCYSxDQXJDTyxBQVlMLFVBMEJELEdBekJBLEtBWlUsSUFzQ1QsR0F6QkksZUFaQyxrQkFDWSxTQVloQyxxQkFYb0IsUUFvQ0ksVUFuQ1AsZUFDakIscURBbUNxQiw2RkFDSSxtR0FHRyx3SUFDNUIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRTZWNyZXRUZXh0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi9TaGFyZWRJY29uXCJcblxudHlwZSBQcm9wcyA9IHtcbiAgdGV4dDogc3RyaW5nIHwgUmVhY3RFbGVtZW50XG4gIGxhYmVsPzogc3RyaW5nXG4gIHdpZHRoPzogc3RyaW5nXG4gIGhlaWdodD86IHN0cmluZ1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRTZWNyZXRUZXh0KHByb3BzOiBQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdGV4dCwgbGFiZWwgPSBcIlwiLCB3aWR0aCwgaGVpZ2h0IH0gPSBwcm9wc1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWNyZXRfY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VjcmV0X3RleHQgY2VudGVyZWRcIj57dGV4dH08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWNyZXRfYmx1ciBjZW50ZXJlZFwiPlxuICAgICAgICAgIDxTaGFyZWRJY29uXG4gICAgICAgICAgICBpY29uPVwiaWNvbnMvbS9leWUtb2ZmLnN2Z1wiXG4gICAgICAgICAgICB3aWR0aD17MjR9XG4gICAgICAgICAgICBjb2xvcj1cInZhcigtLWMtdGV4dC1zZWNvbmRhcnkpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNlY3JldF9sYWJlbFwiPnt0KFwic2hhcmVkLm1vdXNlT3ZlclRvU2hvd1wiKX08L3NwYW4+XG4gICAgICAgICAge2xhYmVsICYmIDxzcGFuIGNsYXNzTmFtZT1cInNlY3JldF9sYWJlbFwiPntsYWJlbH08L3NwYW4+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuc2VjcmV0X2NvbnRhaW5lciB7XG4gICAgICAgICAgd2lkdGg6ICR7d2lkdGggPz8gXCIxMDAlXCJ9O1xuICAgICAgICAgIGhlaWdodDogJHtoZWlnaHQgPz8gXCIxMDAlXCJ9O1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICAgIC5zZWNyZXRfdGV4dCB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI3cHg7XG4gICAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDZweCk7XG4gICAgICAgIH1cbiAgICAgICAgLnNlY3JldF9ibHVyIHtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIC5zZWNyZXRfY29udGFpbmVyOmhvdmVyIC5zZWNyZXRfYmx1ciB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuc2VjcmV0X2NvbnRhaW5lcjpob3ZlciAuc2VjcmV0X3RleHQge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDBweCk7XG4gICAgICAgIH1cbiAgICAgICAgLmNlbnRlcmVkIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICBvcGFjaXR5IDIwMG1zIGVhc2UtaW4tb3V0LFxuICAgICAgICAgICAgZmlsdGVyIDIwMG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSecretText.tsx */`));
    }
    function MnemonicList(props) {
      const {mnemonic, startIndex, endIndex} = props;
      if (!mnemonic.length) return null;
      const splitMnemonic = mnemonic.split(" ").slice(startIndex, endIndex);
      return react.createElement("div", {
        className: "jsx-4189313870" + " " + "mnemonic_list"
      }, splitMnemonic.map(((word, index) => react.createElement("div", {
        key: `${word}_${index + 1}}`,
        className: "jsx-4189313870"
      }, startIndex + index + 1, " - ", word))), react.createElement(style_default(), {
        id: "4189313870"
      }, ".mnemonic_list.jsx-4189313870{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:left;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/RevealMnemonic.tsx */"));
    }
    function RevealMnemonic({address}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem.showMnemonic"
      });
      const dispatch = useBackgroundDispatch();
      const [mnemonic, setMnemonic] = (0, react.useState)("");
      (0, react.useEffect)((() => {
        const fetchMnemonic = async () => {
          const mnemonicText = await dispatch(exportMnemonic(address));
          if (mnemonicText) {
            setMnemonic(mnemonicText);
          }
        };
        fetchMnemonic();
      }), [ dispatch, address ]);
      const splitIndex = mnemonic.split(" ").length === 12 ? 6 : 12;
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2187093895" + " " + (classnames_default()("mnemonic_container", {
          small: splitIndex === 6
        }) || "")
      }, react.createElement(SharedSecretText, {
        text: react.createElement(MnemonicList, {
          mnemonic,
          startIndex: 0,
          endIndex: splitIndex
        }),
        width: "50%"
      }), react.createElement(SharedSecretText, {
        text: react.createElement(MnemonicList, {
          mnemonic,
          startIndex: splitIndex
        }),
        width: "50%"
      })), react.createElement(CopyToClipboard, {
        copyText: t("exportingMnemonic.copyBtn"),
        copy: () => {
          navigator.clipboard.writeText(mnemonic);
          dispatch(setSnackbarMessage(t("exportingMnemonic.copySuccess")));
        }
      }), react.createElement(style_default(), {
        id: "2187093895"
      }, ".mnemonic_container.jsx-2187093895{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:370px;}.mnemonic_container.small.jsx-2187093895{height:240px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/RevealMnemonic.tsx */"));
    }
    function ShowMnemonic({accounts, walletTitle}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "accounts.accountItem.showMnemonic"
      });
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const [showMnemonic, setShowMnemonic] = (0, react.useState)(false);
      const [showExplainer, setShowExplainer] = (0, react.useState)(false);
      useLockWallet();
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenuPanel, {
        header: t("header"),
        icon: "icons/s/lock-bold.svg",
        type: "small"
      }, react.createElement("div", {
        className: "jsx-801234740" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-801234740" + " " + "content"
      }, areInternalSignersUnlocked ? react.createElement(react.Fragment, null, react.createElement(SharedWarningMessage, {
        text: t("warningMessage")
      }), react.createElement("div", {
        className: "jsx-801234740"
      }, react.createElement("div", {
        className: "jsx-801234740" + " " + "exporting_header"
      }, react.createElement(SharedAccordion, {
        style: {
          "--background": "transparent"
        },
        headerElement: react.createElement("div", {
          className: "jsx-801234740" + " " + "accounts_header"
        }, react.createElement("span", {
          className: "jsx-801234740" + " " + "accounts_title"
        }, walletTitle), react.createElement("span", {
          className: "jsx-801234740" + " " + "accounts_count"
        }, accounts.length, " ", t("exportingMnemonic.address", {
          count: accounts.length
        }))),
        contentElement: react.createElement("div", {
          className: "jsx-801234740" + " " + "account_list"
        }, accounts.map((accountTotal => react.createElement("div", {
          key: accountTotal.address,
          className: "jsx-801234740" + " " + "account_item"
        }, react.createElement(SharedAccountItemSummary, {
          accountTotal,
          style: {
            width: "100%"
          }
        })))))
      })), react.createElement("div", {
        className: "jsx-801234740" + " " + (classnames_default()("exporting_container", {
          mnemonic: showMnemonic
        }) || "")
      }, showMnemonic ? react.createElement(RevealMnemonic, {
        address: accounts[0].address
      }) : react.createElement(ConfirmReveal, {
        description: t("exportingMnemonic.confirmationDesc"),
        invalidMessage: t("exportingMnemonic.invalidMessage"),
        confirmButton: t("exportingMnemonic.showBtn"),
        onConfirm: () => setShowMnemonic(true)
      })))) : react.createElement(InternalSignerUnlock, {
        displayCancelButton: false
      })), react.createElement(SharedButton, {
        type: "tertiaryGray",
        size: "small",
        onClick: () => setShowExplainer(true)
      }, t("mnemonicInfo")))), react.createElement(SharedSlideUpMenu, {
        size: "auto",
        isOpen: showExplainer,
        close: () => setShowExplainer(false)
      }, react.createElement(Explainer, {
        translation: "showMnemonic",
        close: () => setShowExplainer(false)
      })), react.createElement(style_default(), {
        id: "801234740"
      }, '.container.jsx-801234740{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:calc(100% - 19px);box-sizing:border-box;gap:16px;padding:0 24px 16px;overflow:scroll;}.content.jsx-801234740{box-sizing:border-box;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.exporting_header.jsx-801234740{box-sizing:border-box;width:100%;padding:16px 24px;border-radius:8px 8px 0 0;background:var(--c-bg-alt);}.exporting_container.jsx-801234740{box-sizing:border-box;width:100%;padding:24px;background:var(--c-bg-alt);border-radius:0 0 8px 8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.exporting_container.mnemonic.jsx-801234740{padding-top:16px;}.accounts_header.jsx-801234740{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;font-family:"Segment";line-height:24px;font-style:normal;}.accounts_title.jsx-801234740{font-weight:600;font-size:18px;color:var(--c-text);}.accounts_count.jsx-801234740{font-weight:400;font-size:16px;color:var(--c-text-tertiary);}.account_list.jsx-801234740{margin:16px -4px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsBackup/ShowMnemonic.tsx */'));
    }
    const walletTypeDetails = {
      [AccountType.ReadOnly]: {
        title: i18next.t("accounts.notificationPanel.readOnly"),
        icon: "./images/eye@2x.png",
        category: i18next.t("accounts.notificationPanel.category.readOnly")
      },
      [AccountType.Imported]: {
        title: i18next.t("accounts.notificationPanel.import"),
        icon: "./images/imported@2x.png",
        category: i18next.t("accounts.notificationPanel.category.others")
      },
      [AccountType.Internal]: {
        title: i18next.t("accounts.notificationPanel.internal"),
        icon: "./images/stars_grey.svg",
        category: i18next.t("accounts.notificationPanel.category.others")
      },
      [AccountType.keyPair]: {
        title: i18next.t("accounts.notificationPanel.keyPair"),
        icon: "./images/key-light.svg",
        category: i18next.t("accounts.notificationPanel.category.others")
      }
    };
    function WalletTypeHeader({accountType, accountTotals, onClickAddAddress, walletNumber, accountSigner}) {
      const {t} = useTranslation();
      const {title, icon} = walletTypeDetails[accountType];
      const dispatch = useBackgroundDispatch();
      const settingsBySigner = useBackgroundSelector((state => state.ui.accountSignerSettings));
      const signerSettings = accountSigner.type !== "read-only" ? settingsBySigner.find((({signer}) => isSameAccountSignerWithId(signer, accountSigner))) : undefined;
      const sectionCustomName = signerSettings?.title;
      const sectionTitle = (0, react.useMemo)((() => {
        if (isAccountSingular(accountType)) return title;
        const networkName = "";
        if (sectionCustomName) return `${sectionCustomName} ${networkName}`;
        return `${title} ${walletNumber} ${networkName}`;
      }), [ accountType, title, sectionCustomName, walletNumber ]);
      const navigateTo = useNavigateTo();
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const [showEditMenu, setShowEditMenu] = (0, react.useState)(false);
      const [showExportMnemonicMenu, setShowExportMnemonicMenu] = (0, react.useState)(false);
      return react.createElement(react.Fragment, null, accountSigner.type !== "read-only" && react.createElement(SharedSlideUpMenu, {
        size: "small",
        isOpen: showEditMenu,
        close: e => {
          e.stopPropagation();
          setShowEditMenu(false);
        }
      }, react.createElement(AccountsNotificationPanel_EditSectionForm, {
        onSubmit: newName => {
          if (newName) {
            dispatch(updateSignerTitle([ accountSigner, newName ]));
          }
          setShowEditMenu(false);
        },
        onCancel: () => setShowEditMenu(false),
        accountTypeIcon: walletTypeDetails[accountType].icon,
        currentName: sectionTitle
      })), react.createElement("header", {
        "data-testid": "wallet_title",
        className: style_default().dynamic([ [ "2837847876", [ icon ] ] ]) + " " + "wallet_title"
      }, react.createElement("h2", {
        className: style_default().dynamic([ [ "2837847876", [ icon ] ] ]) + " " + "left"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2837847876", [ icon ] ] ]) + " " + "icon_wrap"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2837847876", [ icon ] ] ]) + " " + "icon"
      })), sectionTitle), !isAccountSingular(accountType) && react.createElement(SharedDropdown, {
        toggler: toggle => react.createElement(SharedIcon, {
          color: "var(--c-text-tertiary)",
          style: {
            cursor: "pointer"
          },
          width: 24,
          onClick: () => toggle(),
          icon: "settings.svg"
        }),
        options: [ {
          key: "edit",
          icon: "icons/s/edit.svg",
          label: t("accounts.accountItem.editName"),
          onClick: () => setShowEditMenu(true)
        }, onClickAddAddress && {
          key: "addAddress",
          onClick: () => {
            if (areInternalSignersUnlocked) {
              onClickAddAddress();
            } else {
              navigateTo("/internal-signer/unlock");
            }
          },
          icon: "icons/s/add.svg",
          label: t("accounts.notificationPanel.addAddress")
        }, isAccountWithMnemonic(accountType) ? {
          key: "showMnemonic",
          onClick: () => setShowExportMnemonicMenu(true),
          icon: "icons/s/lock-bold.svg",
          label: t("accounts.accountItem.showMnemonic.header")
        } : undefined ]
      })), react.createElement(SharedSlideUpMenu, {
        size: "custom",
        customSize: "580px",
        isOpen: showExportMnemonicMenu,
        close: e => {
          e?.stopPropagation();
          setShowExportMnemonicMenu(false);
        }
      }, react.createElement(ShowMnemonic, {
        accounts: accountTotals,
        walletTitle: sectionTitle
      })), react.createElement(style_default(), {
        id: "2837847876",
        dynamic: [ icon ]
      }, `.wallet_title.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-top:16px;padding-right:4px;}.wallet_title.__jsx-style-dynamic-selector>h2.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);font-size:18px;font-weight:600;line-height:24px;padding:0px 12px 0px 24px;margin:8px 0px;}.icon_wrap.__jsx-style-dynamic-selector{background-color:var(--c-border);margin:0 7px 0 0;border-radius:4px;}.icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("${icon}");mask-image:url("${icon}");-webkit-mask-size:cover;mask-size:cover;background-color:var(--c-text-secondary);width:24px;height:24px;}.icon_wallet.__jsx-style-dynamic-selector{background:url("./images/wallet_kind_icon@2x.png") center no-repeat;background-size:cover;width:24px;height:24px;margin-right:8px;}.icon_edit.__jsx-style-dynamic-selector{background:url("./images/edit@2x.png") center no-repeat;background-size:cover;width:13px;height:13px;margin-left:8px;}.left.__jsx-style-dynamic-selector{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.right.__jsx-style-dynamic-selector{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:4px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx */`));
    }
    function WalletSignerAccounts({walletNumber, signerId, signerAccountTotals, onUpdatedAddressSelected}) {
      const dispatch = useBackgroundDispatch();
      const selectedAccountAddress = useBackgroundSelector(selectCurrentAccount).address;
      const {accountType} = signerAccountTotals[0];
      const onClickAddAddress = (0, react.useMemo)((() => {
        if (isAccountWithMnemonic(accountType)) {
          return () => dispatch(deriveAddress(signerId));
        }
        return () => {};
      }), [ dispatch, accountType, signerId ]);
      return react.createElement("section", {
        className: "jsx-2592370179"
      }, react.createElement(WalletTypeHeader, {
        accountType: signerAccountTotals[0].accountType,
        walletNumber,
        accountSigner: signerAccountTotals[0].accountSigner,
        accountTotals: signerAccountTotals,
        onClickAddAddress
      }), react.createElement("ul", {
        className: "jsx-2592370179"
      }, signerAccountTotals.map((accountTotal => {
        const normalizedAddress = normalizeQEVMAddress(accountTotal.address);
        const isSelected = sameQEVMAddress(normalizedAddress, selectedAccountAddress);
        return react.createElement("li", {
          key: normalizedAddress,
          onMouseOver: e => {
            e.currentTarget.style.backgroundColor = "var(--c-bg-alt)";
          },
          onFocus: e => {
            e.currentTarget.style.backgroundColor = "var(--c-bg-alt)";
          },
          onMouseOut: e => {
            e.currentTarget.style.backgroundColor = "";
          },
          onBlur: e => {
            e.currentTarget.style.backgroundColor = "";
          },
          className: "jsx-2592370179"
        }, react.createElement("div", {
          role: "button",
          tabIndex: 0,
          onKeyDown: e => {
            if (e.key === "Enter") {
              onUpdatedAddressSelected(normalizedAddress);
            }
          },
          onClick: () => {
            onUpdatedAddressSelected(normalizedAddress);
          },
          className: "jsx-2592370179"
        }, react.createElement(SharedAccountItemSummary, {
          key: normalizedAddress,
          accountTotal,
          isSelected
        }, react.createElement(AccountItemOptionsMenu, {
          accountTotal,
          accountType
        }))));
      }))), react.createElement(style_default(), {
        id: "2592370179"
      }, "ul.jsx-2592370179{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;margin-bottom:8px;}li.jsx-2592370179{width:100%;box-sizing:border-box;padding:8px 0px 8px 24px;cursor:pointer;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx */"));
    }
    function AccountsNotificationPanelAccounts({onCurrentAddressChange}) {
      const {t} = useTranslation();
      const dispatch = useBackgroundDispatch();
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const isMounted = (0, react.useRef)(false);
      const accountTotals = useBackgroundSelector(selectCurrentNetworkAccountTotalsByCategory);
      const [pendingSelectedAddress, setPendingSelectedAddress] = (0, react.useState)("");
      const selectedAccountAddress = useBackgroundSelector(selectCurrentAccount).address;
      const updateCurrentAccount = address => {
        setPendingSelectedAddress(address);
        dispatch(setNewSelectedAccount({
          address,
          network: selectedNetwork
        }));
      };
      (0, react.useEffect)((() => {
        if (pendingSelectedAddress !== "" && pendingSelectedAddress === selectedAccountAddress) {
          onCurrentAddressChange(pendingSelectedAddress);
          setPendingSelectedAddress("");
        }
      }), [ onCurrentAddressChange, pendingSelectedAddress, selectedAccountAddress ]);
      (0, react.useEffect)((() => {
        if (!isMounted.current) {
          isMounted.current = true;
        } else if (!areInternalSignersUnlocked) {
          dispatch(setSnackbarMessage(t("accounts.notificationPanel.snackbar")));
        }
      }), [ areInternalSignersUnlocked, dispatch, t ]);
      const accountTotalsByCategory = (0, react.useMemo)((() => accountTypes.reduce(((byCategory, accountType) => ({
        ...byCategory,
        [walletTypeDetails[accountType].category]: [ ...byCategory[walletTypeDetails[accountType].category] ?? [], ...accountTotals[accountType] ?? [] ]
      })), {})), [ accountTotals ]);
      return react.createElement("div", {
        className: "jsx-1957091201" + " " + "switcher_wrap"
      }, Object.entries(accountTotalsByCategory).map((([category, accountTypeTotals]) => {
        const accountTotalsBySignerId = accountTypeTotals.reduce(((acc, accountTypeTotal) => {
          if (accountTypeTotal.signerId) {
            acc[accountTypeTotal.signerId] ??= [];
            acc[accountTypeTotal.signerId].push(accountTypeTotal);
          } else {
            acc.readOnly ??= [];
            acc.readOnly.push(accountTypeTotal);
          }
          return acc;
        }), {});
        if (accountTypeTotals.length < 1) {
          return null;
        }
        return react.createElement("section", {
          key: category,
          className: "jsx-1957091201" + " " + "account-category"
        }, react.createElement("div", {
          className: "jsx-1957091201" + " " + "category_wrap simple_text"
        }, react.createElement("p", {
          className: "jsx-1957091201" + " " + "category_title"
        }, category), isAccountWithSecrets(accountTypeTotals[0].accountType) && react.createElement(SigningButton, {
          onCurrentAddressChange
        })), Object.entries(accountTotalsBySignerId).map((([signerId, signerAccountTotals], idx) => react.createElement(WalletSignerAccounts, {
          key: signerId,
          walletNumber: idx + 1,
          signerId,
          signerAccountTotals,
          onUpdatedAddressSelected: address => updateCurrentAccount(address)
        }))));
      })), react.createElement("footer", {
        className: "jsx-1957091201"
      }, react.createElement(SharedButton, {
        type: "tertiary",
        size: "medium",
        iconSmall: "add",
        iconPosition: "left",
        onClick: () => {
          window.open(ONBOARDING_ROOT);
          window.close();
        }
      }, t("accounts.notificationPanel.addWallet"))), react.createElement(style_default(), {
        id: "1957091201"
      }, "section.jsx-1957091201:last-of-type{margin-bottom:16px;}footer.jsx-1957091201{width:100%;height:48px;background-color:var(--c-bg-alt);position:fixed;bottom:0px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0px 12px;box-sizing:border-box;z-index:11;}.switcher_wrap.jsx-1957091201{height:432px;overflow-y:scroll;border-top:1px solid var(--c-bg-alt);}.category_wrap.jsx-1957091201{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:var(--c-bg-alt);padding:8px 10px 8px 24px;}.category_title.jsx-1957091201{color:var(--c-text-secondary);}p.jsx-1957091201{margin:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx */"));
    }
    function AccountsNotificationPanel({onCurrentAddressChange}) {
      const {t} = useTranslation();
      return react.createElement(SharedSlideUpMenuPanel, {
        header: t("accounts.notificationPanel.accountPanelName")
      }, react.createElement(AccountsNotificationPanelAccounts, {
        onCurrentAddressChange
      }));
    }
    const selectQEVMNetworks = es_createSelector((state => state.networks.evmNetworks), (evmNetworks => Object.values(evmNetworks)));
    const selectProductionQEVMNetworks = es_createSelector(selectQEVMNetworks, (evmNetworks => evmNetworks.filter((network => !TEST_NETWORK_BY_CHAIN_ID.has(network.chainID)))));
    const selectCustomNetworks = es_createSelector(selectQEVMNetworks, (evmNetworks => evmNetworks.filter((network => !DEFAULT_NETWORKS_BY_CHAIN_ID.has(network.chainID)))));
    function TopMenuProtocolListItem(props) {
      const {t} = useTranslation();
      const {info, isSelected = false, network, onSelect, isDisabled = false, showSelectedText = true} = props;
      return react.createElement("li", {
        onClick: () => {
          if (isDisabled) return;
          onSelect(network);
        },
        role: "presentation",
        className: "jsx-1428958923" + " " + (classnames_default()({
          select: isSelected,
          disabled: isDisabled
        }) || "")
      }, react.createElement("div", {
        className: "jsx-1428958923" + " " + "left"
      }, react.createElement("div", {
        className: "jsx-1428958923" + " " + "icon_wrap"
      }, react.createElement(SharedNetworkIcon, {
        size: 24,
        network
      }))), react.createElement("div", {
        className: "jsx-1428958923" + " " + "right"
      }, react.createElement("div", {
        className: "jsx-1428958923" + " " + "title"
      }, network.name), react.createElement("div", {
        className: "jsx-1428958923" + " " + "sub_title"
      }, info, isSelected && showSelectedText && react.createElement("span", {
        className: "jsx-1428958923" + " " + "status"
      }, t("protocol.connected")))), react.createElement(style_default(), {
        id: "1428958923"
      }, "li.jsx-1428958923{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:15px;cursor:pointer;}.status.jsx-1428958923{height:17px;color:var(--c-success);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;margin-left:8px;}.icon_wrap.jsx-1428958923{width:40px;height:40px;border-radius:4px;background-color:var(--c-bg-alt);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.left.jsx-1428958923{margin-right:16px;margin-left:2px;}.right.jsx-1428958923{height:24px;color:var(--c-text);font-size:18px;font-weight:600;line-height:24px;}.title.jsx-1428958923{height:24px;color:var(--c-text);font-size:18px;font-weight:600;line-height:24px;}.sub_title.jsx-1428958923{height:17px;color:var(--c-text-secondary);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;}.select.jsx-1428958923 .icon_wrap.jsx-1428958923{border:2px solid var(--c-success);}.select.jsx-1428958923 .left.jsx-1428958923{margin-left:0px;}.disabled.jsx-1428958923{cursor:default;}.disabled.jsx-1428958923 .title.jsx-1428958923{color:var(--c-text-secondary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProtocolListItem.tsx */"));
    }
    function TopMenuProtocolListFooter() {
      const history = useHistory();
      const {t} = useTranslation();
      return react.createElement("footer", {
        className: "jsx-862813389"
      }, react.createElement(SharedButton, {
        size: "medium",
        onClick: () => history.push("/settings/custom-networks"),
        type: "tertiary"
      }, react.createElement(SharedIcon, {
        width: 16,
        height: 16,
        style: {
          marginRight: 4
        },
        icon: "icons/s/add.svg",
        color: "currentColor"
      }), t("topMenu.protocolList.networkSettingsBtn")), react.createElement(style_default(), {
        id: "862813389"
      }, 'footer.jsx-862813389{background:var(--c-bg-alt);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;margin-top:auto;padding:4px 24px;}footer.jsx-862813389 ul.jsx-862813389{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;margin-bottom:8px;}footer.jsx-862813389 h2.jsx-862813389{font-family:"Segment";font-style:normal;font-weight:600;font-size:18px;line-height:24px;color:var(--c-text);margin:0;}footer.jsx-862813389 p.jsx-862813389{margin:0;font-family:"Segment";font-style:normal;font-weight:500;font-size:14px;line-height:16px;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ub3BNZW51L1RvcE1lbnVQcm90b2NvbExpc3RGb290ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCUyxBQUd3QyxBQVNkLEFBTVMsQUFVYixTQUNhLGFBVkosS0FmTCxJQTBCSyxTQVZGLFNBV0EsT0FWRCxTQVdBLE1BVkUsR0FUVCxNQW9CUyxFQW5CQyxNQVNFLFNBV0gsR0FuQm5CLENBVndCLE9BbUJiLE1BV2EsR0FWeEIsOERBbkJVLFFBQ1EsZ0JBQ0MsZ0JBNEJZLENBM0IvQiw0QkE0QkEiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1RvcE1lbnUvVG9wTWVudVByb3RvY29sTGlzdEZvb3Rlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcblxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEJ1dHRvblwiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEljb25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUb3BNZW51UHJvdG9jb2xMaXN0Rm9vdGVyKCk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcblxuICByZXR1cm4gKFxuICAgIDxmb290ZXI+XG4gICAgICA8U2hhcmVkQnV0dG9uXG4gICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBoaXN0b3J5LnB1c2goXCIvc2V0dGluZ3MvY3VzdG9tLW5ldHdvcmtzXCIpfVxuICAgICAgICB0eXBlPVwidGVydGlhcnlcIlxuICAgICAgPlxuICAgICAgICA8U2hhcmVkSWNvblxuICAgICAgICAgIHdpZHRoPXsxNn1cbiAgICAgICAgICBoZWlnaHQ9ezE2fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA0IH19XG4gICAgICAgICAgaWNvbj1cImljb25zL3MvYWRkLnN2Z1wiXG4gICAgICAgICAgY29sb3I9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAvPlxuICAgICAgICB7dChcInRvcE1lbnUucHJvdG9jb2xMaXN0Lm5ldHdvcmtTZXR0aW5nc0J0blwiKX1cbiAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICBmb290ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggMjRweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb290ZXIgdWwge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGdhcDogOHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvb3RlciBoMiB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0KTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb290ZXIgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZm9vdGVyPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProtocolListFooter.tsx */'));
    }
    const productionNetworkInfo = {
      [ZEUS.chainID]: i18next.t("protocol.mainnet"),
      [POSEIDON.chainID]: i18next.t("protocol.testnet")
    };
    const disabledChainIDs = [];
    const testNetworks = [ {
      network: POSEIDON,
      info: i18next.t("protocol.testnet"),
      isDisabled: false
    } ];
    function TopMenuProtocolList({onProtocolChange}) {
      const {t} = useTranslation();
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      const showTestNetworks = useBackgroundSelector(selectShowTestNetworks);
      const productionNetworks = useBackgroundSelector(selectProductionQEVMNetworks);
      const builtinNetworks = productionNetworks.filter(isBuiltInNetwork);
      const customNetworks = productionNetworks.filter((network => !isBuiltInNetwork(network)));
      return react.createElement("div", {
        className: "jsx-776233606" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-776233606" + " " + "networks_list"
      }, react.createElement("ul", {
        className: "jsx-776233606" + " " + "standard_width center_horizontal"
      }, builtinNetworks.map((network => react.createElement(TopMenuProtocolListItem, {
        isSelected: sameNetwork(currentNetwork, network),
        key: network.name,
        network,
        info: productionNetworkInfo[network.chainID] || t("protocol.compatibleChain"),
        onSelect: onProtocolChange,
        isDisabled: disabledChainIDs.includes(network.chainID)
      }))), customNetworks.length > 0 && react.createElement(react.Fragment, null, react.createElement("li", {
        className: "jsx-776233606" + " " + "protocol_divider"
      }, react.createElement("div", {
        className: "jsx-776233606" + " " + "divider_label"
      }, t("topMenu.protocolList.customNetworksSectionTitle")), react.createElement("div", {
        className: "jsx-776233606" + " " + "divider_line"
      })), customNetworks.map((network => react.createElement(TopMenuProtocolListItem, {
        isSelected: sameNetwork(currentNetwork, network),
        key: network.name,
        network,
        info: t("protocol.compatibleChain"),
        onSelect: onProtocolChange
      })))), showTestNetworks && testNetworks.length > 0 && react.createElement(react.Fragment, null, react.createElement("li", {
        className: "jsx-776233606" + " " + "protocol_divider"
      }, react.createElement("div", {
        className: "jsx-776233606" + " " + "divider_label"
      }, t("topMenu.protocolList.testnetsSectionTitle")), react.createElement("div", {
        className: "jsx-776233606" + " " + "divider_line"
      })), testNetworks.map((info => react.createElement(TopMenuProtocolListItem, {
        isSelected: sameNetwork(currentNetwork, info.network),
        key: info.network.name,
        network: info.network,
        info: info.info,
        onSelect: onProtocolChange,
        isDisabled: info.isDisabled ?? false
      }))))), react.createElement(TopMenuProtocolListFooter, null)), react.createElement(style_default(), {
        id: "776233606"
      }, ".container.jsx-776233606{overflow-y:auto;}.networks_list.jsx-776233606{overflow-y:auto;overflow-x:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:512px;}ul.jsx-776233606{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 24px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.protocol_divider.jsx-776233606{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:8px;margin-bottom:16px;gap:15px;position:relative;}.divider_line.jsx-776233606{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;background:var(--c-bg-alt);height:1px;margin-top:1px;}.divider_label.jsx-776233606{color:var(--c-text-dim);font-size:16px;font-weight:500;line-height:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuProtocolList.tsx */"));
    }
    function useDappPermission() {
      const [isConnected, setisConnected] = (0, react.useState)(false);
      const [currentPermission, setCurrentPermission] = (0, react.useState)(undefined);
      const allowedPages = useBackgroundSelector(selectAllowedPages);
      const initPermissionAndOrigin = (0, react.useCallback)((async () => {
        const {url} = await browser_polyfill_default().tabs.query({
          active: true
        }).then((tabs => tabs[0] ? tabs[0] : {
          url: "",
          favIconUrl: "",
          title: ""
        }));
        if (!url) return;
        const {origin} = new URL(url);
        const allowPermission = allowedPages.find((permission => permission.origin === origin));
        if (allowPermission) {
          setCurrentPermission(allowPermission);
          setisConnected(true);
        } else {
          setisConnected(false);
        }
      }), [ allowedPages, setCurrentPermission ]);
      (0, react.useEffect)((() => {
        initPermissionAndOrigin();
      }), [ initPermissionAndOrigin ]);
      return {
        isConnected,
        currentPermission,
        allowedPages
      };
    }
    function ConnectionDAppGuideline({isConnected}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "topMenu.connectedDappInfo"
      });
      return react.createElement(react.Fragment, null, react.createElement(SharedAccordion, {
        contentHeight: 132,
        style: {
          width: "100%",
          borderRadius: 10,
          marginTop: 12,
          background: "var(--c-bg-alt)",
          border: "1px solid var(--c-border-accent)",
          "--panel-switcher-border": "var(--c-border-accent)",
          "--header-padding": "12px 14px",
          "--content-fade-in-duration": "200ms"
        },
        isInitiallyOpen: !isConnected,
        headerElement: react.createElement("div", {
          className: "jsx-1028092013" + " " + "title"
        }, t("guideline.title")),
        contentElement: react.createElement("div", {
          className: "jsx-1028092013" + " " + "content_wrap"
        }, react.createElement("ol", {
          className: "jsx-1028092013" + " " + "steps"
        }, react.createElement("li", {
          className: "jsx-1028092013"
        }, t("guideline.step1")), react.createElement("li", {
          className: "jsx-1028092013"
        }, t("guideline.step2")), react.createElement("li", {
          className: "jsx-1028092013"
        }, t("guideline.step3"))))
      }), react.createElement(style_default(), {
        id: "1028092013"
      }, ".title.jsx-1028092013{font-weight:500;font-size:14px;line-height:20px;color:var(--c-text);}.content_wrap.jsx-1028092013{padding:0 14px 14px;}.steps.jsx-1028092013{margin:0;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;list-style:none;counter-reset:step;gap:8px;color:var(--c-text-tertiary);}.steps.jsx-1028092013>li.jsx-1028092013{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;font-weight:400;font-size:13px;line-height:18px;}.steps.jsx-1028092013>li.jsx-1028092013::before{content:counter(step);counter-increment:step;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:18px;height:18px;margin-right:10px;border-radius:50%;background:var(--c-accent-a12);color:var(--c-accent);font-size:11px;font-weight:600;line-height:18px;text-align:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx */"));
    }
    function TopMenuConnectedDAppInfo(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "topMenu.connectedDappInfo"
      });
      const {t: tShared} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      const {title, url, close, faviconUrl, disconnect, isConnected} = props;
      const [isClosing, setIsClosing] = (0, react.useState)(false);
      const animateThenClose = (0, react.useCallback)((() => {
        setIsClosing(true);
        setTimeout(close, 200);
      }), [ close ]);
      return react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + (classnames_default()("scrim", {
          fade_out: isClosing
        }) || "")
      }, react.createElement("button", {
        "aria-label": tShared("modalClose"),
        type: "button",
        onClick: animateThenClose,
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "void_space"
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + (classnames_default()("popover", {
          pop_out: isClosing
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "header"
      }, react.createElement("h2", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ])
      }, t(isConnected ? "dAppTitle" : "dappConnections")), react.createElement("button", {
        type: "button",
        "aria-label": tShared("close"),
        onClick: animateThenClose,
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "icon_close"
      })), isConnected && react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_card"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "favicon"
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_meta"
      }, react.createElement("div", {
        title,
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_title ellipsis"
      }, title), react.createElement("div", {
        title: url,
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_url ellipsis"
      }, url))), isConnected && react.createElement("button", {
        type: "button",
        onClick: disconnect,
        title: t("disconnectDapp"),
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "disconnect"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "482526547", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "disconnect_icon"
      }), t("disconnectDapp")), react.createElement(ConnectionDAppGuideline, {
        isConnected
      })), react.createElement(style_default(), {
        id: "482526547",
        dynamic: [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ]
      }, `.scrim.__jsx-style-dynamic-selector{position:fixed;inset:0;z-index:99999;background-color:var(--c-black-a45);-webkit-animation:fade-in-__jsx-style-dynamic-selector 180ms ease-out;animation:fade-in-__jsx-style-dynamic-selector 180ms ease-out;}.scrim.fade_out.__jsx-style-dynamic-selector{-webkit-animation:fade-out-__jsx-style-dynamic-selector 200ms ease-in forwards;animation:fade-out-__jsx-style-dynamic-selector 200ms ease-in forwards;}.void_space.__jsx-style-dynamic-selector{position:absolute;inset:0;}.popover.__jsx-style-dynamic-selector{position:absolute;top:52px;right:12px;width:300px;box-sizing:border-box;padding:14px;background-color:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:14px;box-shadow:var(--shadow-lg);-webkit-transform-origin:top right;-ms-transform-origin:top right;transform-origin:top right;-webkit-animation:pop-in-__jsx-style-dynamic-selector 200ms cubic-bezier(0.34,1.56,0.64,1);animation:pop-in-__jsx-style-dynamic-selector 200ms cubic-bezier(0.34,1.56,0.64,1);}.popover.pop_out.__jsx-style-dynamic-selector{-webkit-animation:pop-out-__jsx-style-dynamic-selector 180ms ease-in forwards;animation:pop-out-__jsx-style-dynamic-selector 180ms ease-in forwards;}.header.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}h2.__jsx-style-dynamic-selector{margin:0;font-size:14px;font-weight:600;line-height:20px;color:var(--c-text);}.icon_close.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/close.svg");mask-image:url("./images/close.svg");-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;width:12px;height:12px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;background-color:var(--c-text-tertiary);-webkit-transition:background-color 0.15s ease;transition:background-color 0.15s ease;}.icon_close.__jsx-style-dynamic-selector:hover{background-color:var(--c-text);}.dapp_card.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-top:14px;padding:10px;background-color:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:10px;}.favicon.__jsx-style-dynamic-selector{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:36px;height:36px;border-radius:9px;background:url("${faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl}");background-size:cover;background-position:center;}.dapp_meta.__jsx-style-dynamic-selector{min-width:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:2px;}.dapp_title.__jsx-style-dynamic-selector{font-size:14px;font-weight:500;color:var(--c-text);}.dapp_url.__jsx-style-dynamic-selector{font-size:12px;color:var(--c-text-tertiary);}.disconnect.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;width:100%;box-sizing:border-box;margin-top:12px;padding:10px;border-radius:10px;border:1px solid var(--c-border-accent);background-color:transparent;color:var(--c-error);font-size:13px;font-weight:500;-webkit-transition: background-color 0.15s ease, border-color 0.15s ease;transition: background-color 0.15s ease, border-color 0.15s ease;}.disconnect.__jsx-style-dynamic-selector:hover{background-color:var(--c-error-bg);border-color:var(--c-error);}.disconnect_icon.__jsx-style-dynamic-selector{width:15px;height:15px;-webkit-mask-image:url("./images/disconnect@2x.png");mask-image:url("./images/disconnect@2x.png");-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:var(--c-error);}@-webkit-keyframes fade-in-__jsx-style-dynamic-selector{from{opacity:0;}to{opacity:1;}}@keyframes fade-in-__jsx-style-dynamic-selector{from{opacity:0;}to{opacity:1;}}@-webkit-keyframes fade-out-__jsx-style-dynamic-selector{from{opacity:1;}to{opacity:0;}}@keyframes fade-out-__jsx-style-dynamic-selector{from{opacity:1;}to{opacity:0;}}@-webkit-keyframes pop-in-__jsx-style-dynamic-selector{from{opacity:0;-webkit-transform:translateY(-6px) scale(0.97);-ms-transform:translateY(-6px) scale(0.97);transform:translateY(-6px) scale(0.97);}to{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1);}}@keyframes pop-in-__jsx-style-dynamic-selector{from{opacity:0;-webkit-transform:translateY(-6px) scale(0.97);-ms-transform:translateY(-6px) scale(0.97);transform:translateY(-6px) scale(0.97);}to{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1);}}@-webkit-keyframes pop-out-__jsx-style-dynamic-selector{from{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1);}to{opacity:0;-webkit-transform:translateY(-6px) scale(0.97);-ms-transform:translateY(-6px) scale(0.97);transform:translateY(-6px) scale(0.97);}}@keyframes pop-out-__jsx-style-dynamic-selector{from{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1);}to{opacity:0;-webkit-transform:translateY(-6px) scale(0.97);-ms-transform:translateY(-6px) scale(0.97);transform:translateY(-6px) scale(0.97);}}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx */`));
    }
    function ActiveDAppConnection({isConnectedToDApp, faviconUrl, onOpenInfo}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "topMenu"
      });
      return react.createElement("button", {
        type: "button",
        "aria-label": t("showCurrentDappConnection"),
        onClick: onOpenInfo,
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "connection_button"
      }, isConnectedToDApp ? react.createElement("span", {
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "favicon"
      }) : react.createElement("svg", {
        width: "18",
        height: "18",
        viewBox: "0 0 24 24",
        fill: "none",
        stroke: "currentColor",
        strokeWidth: "1.6",
        strokeLinecap: "round",
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "globe"
      }, react.createElement("circle", {
        cx: "12",
        cy: "12",
        r: "9",
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ])
      }), react.createElement("line", {
        x1: "3",
        y1: "12",
        x2: "21",
        y2: "12",
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ])
      }), react.createElement("path", {
        d: "M12 3c2.6 2.8 2.6 15.2 0 18M12 3c-2.6 2.8-2.6 15.2 0 18",
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ])
      })), isConnectedToDApp && react.createElement("span", {
        className: style_default().dynamic([ [ "2707665435", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "status_dot"
      }), react.createElement(style_default(), {
        id: "2707665435",
        dynamic: [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ]
      }, `.connection_button.__jsx-style-dynamic-selector{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--c-border-accent);background-color:var(--c-bg-alt);-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);}.connection_button.__jsx-style-dynamic-selector:hover{background-color:var(--c-bg-inset);border-color:var(--c-accent-a40);-webkit-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px);}.favicon.__jsx-style-dynamic-selector{width:22px;height:22px;border-radius:6px;background-image:url("${faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl}");background-size:cover;background-position:center;background-repeat:no-repeat;}.globe.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);-webkit-transition:color 0.2s ease;transition:color 0.2s ease;}.connection_button.__jsx-style-dynamic-selector:hover .globe.__jsx-style-dynamic-selector{color:var(--c-accent);}.status_dot.__jsx-style-dynamic-selector{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background-color:var(--c-success);border:1.5px solid var(--c-bg-alt);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/DAppConnection/ActiveDAppConnection.tsx */`));
    }
    function DAppConnection() {
      const {isConnected, currentPermission, allowedPages} = useDappPermission();
      const [isInfoOpen, setIsInfoOpen] = (0, react.useState)(false);
      const dispatch = useBackgroundDispatch();
      const deny = (0, react.useCallback)((async () => {
        if (currentPermission !== undefined) {
          await Promise.all(allowedPages.map((async permission => {
            if (permission.origin === currentPermission.origin) {
              return dispatch(denyOrRevokePermission({
                ...permission,
                state: "deny"
              }));
            }
            return undefined;
          })));
        }
      }), [ dispatch, currentPermission, allowedPages ]);
      return react.createElement(react.Fragment, null, isInfoOpen && react.createElement(TopMenuConnectedDAppInfo, {
        title: currentPermission?.title ?? "",
        url: currentPermission?.origin ?? "",
        faviconUrl: currentPermission?.faviconUrl ?? "",
        close: () => setIsInfoOpen(false),
        disconnect: deny,
        isConnected
      }), react.createElement(ActiveDAppConnection, {
        isConnectedToDApp: isConnected,
        faviconUrl: currentPermission?.faviconUrl ?? "",
        onOpenInfo: () => setIsInfoOpen(true)
      }));
    }
    function TopMenu() {
      const {t} = useTranslation("translation", {
        keyPrefix: "topMenu"
      });
      const [isProtocolListOpen, setIsProtocolListOpen] = (0, react.useState)(false);
      const [isNotificationsOpen, setIsNotificationsOpen] = (0, react.useState)(false);
      const [isBonusProgramOpen, setIsBonusProgramOpen] = (0, react.useState)(false);
      const dispatch = useBackgroundDispatch();
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenu, {
        isOpen: isProtocolListOpen,
        isScrollable: true,
        style: {
          display: "flex",
          flexDirection: "column"
        },
        close: () => {
          setIsProtocolListOpen(false);
        }
      }, react.createElement(TopMenuProtocolList, {
        onProtocolChange: network => {
          dispatch(setSelectedNetwork(network));
          setIsProtocolListOpen(false);
        }
      })), react.createElement(SharedSlideUpMenu, {
        isOpen: isNotificationsOpen,
        allowOverflow: true,
        opaqueOverlay: true,
        close: () => {
          setIsNotificationsOpen(false);
        }
      }, react.createElement(AccountsNotificationPanel, {
        onCurrentAddressChange: () => setIsNotificationsOpen(false)
      })), react.createElement("nav", {
        className: "jsx-2357265696"
      }, react.createElement(TopMenuProtocolSwitcher, {
        onClick: () => setIsProtocolListOpen(true)
      }), react.createElement("div", {
        className: "jsx-2357265696" + " " + "profile_group"
      }, react.createElement(DAppConnection, null), isEnabled(FeatureFlags.SHOW_TOKEN_FEATURES) && react.createElement("button", {
        type: "button",
        "aria-label": t("rewardsProgram"),
        onClick: () => {
          setIsBonusProgramOpen(!isBonusProgramOpen);
        },
        className: "jsx-2357265696" + " " + "gift_button"
      }), react.createElement(TopMenuProfileButton, {
        onClick: () => {
          setIsNotificationsOpen(!isNotificationsOpen);
        }
      }))), react.createElement(style_default(), {
        id: "2357265696"
      }, 'nav.jsx-2357265696{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--c-bg);border-bottom:1px solid var(--c-border-accent);box-shadow:var(--shadow-sm);}.profile_group.jsx-2357265696{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0;}button.jsx-2357265696{border-radius:10px;border:1px solid var(--c-border-accent);width:36px;height:36px;margin-right:0;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);background-color:var(--c-bg-alt);}button.jsx-2357265696:hover{background-color:var(--c-bg-inset);border-color:var(--c-accent-a40);-webkit-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px);}.gift_button.jsx-2357265696{background: url("./images/gift@2x.png") center no-repeat, var(--c-bg-alt);background-size:20px 20px;}.gift_button.jsx-2357265696:hover{background: url("./images/gift@2x.png") center no-repeat, var(--c-bg-inset);background-size:20px 20px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/TopMenu/TopMenu.tsx */'));
    }
    function CorePage(props) {
      const {children, hasTopBar = true, hasTabBar} = props;
      return react.createElement("section", {
        className: "jsx-4157182179"
      }, hasTopBar && react.createElement(TopMenu, null), react.createElement("main", {
        className: "jsx-4157182179"
      }, children, react.createElement(Snackbar, null)), hasTabBar && react.createElement(TabBar, null), react.createElement(style_default(), {
        id: "4157182179"
      }, "section.jsx-4157182179{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:var(--c-bg);}main.jsx-4157182179{width:100%;overflow-y:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin:0 auto;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--c-bg-alt);height:100%;}.top_menu_wrap.jsx-4157182179{z-index:10;cursor:default;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Db3JlL0NvcmVQYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QlMsQUFHeUIsQUFNRCxBQVdBLFdBVkssQUFXRCxDQWpCRixjQWtCZixDQVhlLDJEQU5TLGVBT0EsK0RBTkMsZUFPWCxRQU5kLCtEQU9nQixjQUNLLDZGQUNjLGlDQUNyQixZQUNkIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Db3JlL0NvcmVQYWdlLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNuYWNrYmFyIGZyb20gXCIuLi9TbmFja2Jhci9TbmFja2JhclwiXG5pbXBvcnQgVGFiQmFyIGZyb20gXCIuLi9UYWJCYXIvVGFiQmFyXCJcbmltcG9ydCBUb3BNZW51IGZyb20gXCIuLi9Ub3BNZW51L1RvcE1lbnVcIlxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGhhc1RvcEJhcj86IGJvb2xlYW5cbiAgaGFzVGFiQmFyPzogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb3JlUGFnZShwcm9wczogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IGNoaWxkcmVuLCBoYXNUb3BCYXIgPSB0cnVlLCBoYXNUYWJCYXIgfSA9IHByb3BzXG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbj5cbiAgICAgIHtoYXNUb3BCYXIgJiYgPFRvcE1lbnUgLz59XG4gICAgICA8bWFpbj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvbWFpbj5cbiAgICAgIHtoYXNUYWJCYXIgJiYgPFRhYkJhciAvPn1cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWMtYmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYWluIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAudG9wX21lbnVfd3JhcCB7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvc2VjdGlvbj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Core/CorePage.tsx */"));
    }
    function ErrorFallback(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "genericPages"
      });
      const {error} = props;
      useOnMount((() => {
        if (true) {
          lib_logger.error(error?.message, error?.stack);
        }
      }));
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2609542891" + " " + "wrap"
      }, react.createElement("h1", {
        className: "jsx-2609542891" + " " + "serif_header"
      }, t("errorPageTitle")), react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        linkTo: "/"
      }, t("returnHome"))), react.createElement(style_default(), {
        id: "2609542891"
      }, ".wrap.jsx-2609542891{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}h1.jsx-2609542891{margin-bottom:20px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvRXJyb3JGYWxsYmFjay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkJrQixBQUd1QixBQVFPLFlBUE4sT0FRZixtRUFQd0IsOEVBQ0gsNkZBQ0ksbUdBQ0wsa0JBQ3BCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvRXJyb3JGYWxsYmFjay50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nZ2VyIGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvbGliL2xvZ2dlclwiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IEZhbGxiYWNrUHJvcHMgfSBmcm9tIFwicmVhY3QtZXJyb3ItYm91bmRhcnlcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRCdXR0b25cIlxuaW1wb3J0IHsgdXNlT25Nb3VudCB9IGZyb20gXCIuLi9ob29rcy9yZWFjdC1ob29rc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVycm9yRmFsbGJhY2soXG4gIHByb3BzOiBQYXJ0aWFsPEZhbGxiYWNrUHJvcHM+LFxuKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHsga2V5UHJlZml4OiBcImdlbmVyaWNQYWdlc1wiIH0pXG5cbiAgY29uc3QgeyBlcnJvciB9ID0gcHJvcHNcblxuICB1c2VPbk1vdW50KCgpID0+IHtcbiAgICAvLyBXZSBvbmx5IG5lZWQgdGhlIG9yaWdpbmFsIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSBpbiBwcm9kdWN0aW9uIGxvZ3NcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZXJyb3I/Lm1lc3NhZ2UsIGVycm9yPy5zdGFjaylcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3cmFwXCI+XG4gICAgICAgIDxoMSBjbGFzc05hbWU9XCJzZXJpZl9oZWFkZXJcIj57dChcImVycm9yUGFnZVRpdGxlXCIpfTwvaDE+XG4gICAgICAgIDxTaGFyZWRCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgbGlua1RvPVwiL1wiPlxuICAgICAgICAgIHt0KFwicmV0dXJuSG9tZVwiKX1cbiAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLndyYXAge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgaDEge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/ErrorFallback.tsx */"));
    }
    const CHAIN_ID_TO_NFT_METADATA_PROVIDER = {};
    const NETWORKS_SUPPORTING_NFTS = new Set(Object.keys(CHAIN_ID_TO_NFT_METADATA_PROVIDER));
    var BrowserRouter = function(_React$Component) {
      _inheritsLoose(BrowserRouter, _React$Component);
      function BrowserRouter() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
        _this.history = createBrowserHistory(_this.props);
        return _this;
      }
      var _proto = BrowserRouter.prototype;
      _proto.render = function render() {
        return react.createElement(Router, {
          history: this.history,
          children: this.props.children
        });
      };
      return BrowserRouter;
    }(react.Component);
    if (false) {}
    var HashRouter = function(_React$Component) {
      _inheritsLoose(HashRouter, _React$Component);
      function HashRouter() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _React$Component.call.apply(_React$Component, [ this ].concat(args)) || this;
        _this.history = createHashHistory(_this.props);
        return _this;
      }
      var _proto = HashRouter.prototype;
      _proto.render = function render() {
        return react.createElement(Router, {
          history: this.history,
          children: this.props.children
        });
      };
      return HashRouter;
    }(react.Component);
    if (false) {}
    var resolveToLocation = function resolveToLocation(to, currentLocation) {
      return typeof to === "function" ? to(currentLocation) : to;
    };
    var normalizeToLocation = function normalizeToLocation(to, currentLocation) {
      return typeof to === "string" ? createLocation(to, null, null, currentLocation) : to;
    };
    var forwardRefShim = function forwardRefShim(C) {
      return C;
    };
    var forwardRef = react.forwardRef;
    if (typeof forwardRef === "undefined") {
      forwardRef = forwardRefShim;
    }
    function isModifiedEvent(event) {
      return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
    }
    var LinkAnchor = forwardRef((function(_ref, forwardedRef) {
      var innerRef = _ref.innerRef, navigate = _ref.navigate, _onClick = _ref.onClick, rest = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_ref, [ "innerRef", "navigate", "onClick" ]);
      var target = rest.target;
      var props = extends_extends({}, rest, {
        onClick: function onClick(event) {
          try {
            if (_onClick) _onClick(event);
          } catch (ex) {
            event.preventDefault();
            throw ex;
          }
          if (!event.defaultPrevented && event.button === 0 && (!target || target === "_self") && !isModifiedEvent(event)) {
            event.preventDefault();
            navigate();
          }
        }
      });
      if (forwardRefShim !== forwardRef) {
        props.ref = forwardedRef || innerRef;
      } else {
        props.ref = innerRef;
      }
      return react.createElement("a", props);
    }));
    if (false) {}
    var Link = forwardRef((function(_ref2, forwardedRef) {
      var _ref2$component = _ref2.component, component = _ref2$component === void 0 ? LinkAnchor : _ref2$component, replace = _ref2.replace, to = _ref2.to, innerRef = _ref2.innerRef, rest = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_ref2, [ "component", "replace", "to", "innerRef" ]);
      return react.createElement(context.Consumer, null, (function(context) {
        !context ? false ? 0 : tiny_invariant_invariant(false) : void 0;
        var history = context.history;
        var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);
        var href = location ? history.createHref(location) : "";
        var props = extends_extends({}, rest, {
          href,
          navigate: function navigate() {
            var location = resolveToLocation(to, context.location);
            var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));
            var method = replace || isDuplicateNavigation ? history.replace : history.push;
            method(location);
          }
        });
        if (forwardRefShim !== forwardRef) {
          props.ref = forwardedRef || innerRef;
        } else {
          props.innerRef = innerRef;
        }
        return react.createElement(component, props);
      }));
    }));
    if (false) {
      var refType, toType;
    }
    var forwardRefShim$1 = function forwardRefShim(C) {
      return C;
    };
    var forwardRef$1 = react.forwardRef;
    if (typeof forwardRef$1 === "undefined") {
      forwardRef$1 = forwardRefShim$1;
    }
    function joinClassnames() {
      for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {
        classnames[_key] = arguments[_key];
      }
      return classnames.filter((function(i) {
        return i;
      })).join(" ");
    }
    var NavLink = forwardRef$1((function(_ref, forwardedRef) {
      var _ref$ariaCurrent = _ref["aria-current"], ariaCurrent = _ref$ariaCurrent === void 0 ? "page" : _ref$ariaCurrent, _ref$activeClassName = _ref.activeClassName, activeClassName = _ref$activeClassName === void 0 ? "active" : _ref$activeClassName, activeStyle = _ref.activeStyle, classNameProp = _ref.className, exact = _ref.exact, isActiveProp = _ref.isActive, locationProp = _ref.location, sensitive = _ref.sensitive, strict = _ref.strict, styleProp = _ref.style, to = _ref.to, innerRef = _ref.innerRef, rest = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(_ref, [ "aria-current", "activeClassName", "activeStyle", "className", "exact", "isActive", "location", "sensitive", "strict", "style", "to", "innerRef" ]);
      return react.createElement(context.Consumer, null, (function(context) {
        !context ? false ? 0 : tiny_invariant_invariant(false) : void 0;
        var currentLocation = locationProp || context.location;
        var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);
        var path = toLocation.pathname;
        var escapedPath = path && path.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1");
        var match = escapedPath ? matchPath(currentLocation.pathname, {
          path: escapedPath,
          exact,
          sensitive,
          strict
        }) : null;
        var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);
        var className = typeof classNameProp === "function" ? classNameProp(isActive) : classNameProp;
        var style = typeof styleProp === "function" ? styleProp(isActive) : styleProp;
        if (isActive) {
          className = joinClassnames(className, activeClassName);
          style = extends_extends({}, style, activeStyle);
        }
        var props = extends_extends({
          "aria-current": isActive && ariaCurrent || null,
          className,
          style,
          to: toLocation
        }, rest);
        if (forwardRefShim$1 !== forwardRef$1) {
          props.ref = forwardedRef || innerRef;
        } else {
          props.innerRef = innerRef;
        }
        return react.createElement(Link, props);
      }));
    }));
    if (false) {
      var ariaCurrentType;
    }
    var SharedAssetIcon_Buffer = __webpack_require__(8287)["Buffer"];
    const hardcodedIcons = new Set([ "QEVM", "pQEVM" ]);
    function getAsHttpURL(anyURL) {
      let httpURL = anyURL;
      try {
        httpURL = storageGatewayURL(anyURL).href;
      } catch (err) {
        httpURL = "";
      }
      return httpURL;
    }
    function SharedAssetIcon_useIntersectionObserver(ref, callback, options) {
      const callbackRef = (0, react.useRef)(callback);
      const [obs] = (0, react.useState)((() => new IntersectionObserver((([element]) => {
        callbackRef.current(element);
      }), options)));
      (0, react.useLayoutEffect)((() => {
        const target = ref.current;
        if (target) {
          obs.observe(ref.current);
        }
        return () => {
          if (target) obs.unobserve(target);
        };
      }), [ ref, obs ]);
    }
    function SharedAssetIcon({size = "medium", logoURL = null, symbol = "QEVM"}) {
      const [imageURL, setImageURL] = (0, react.useState)("");
      const [isLoading, setIsLoading] = (0, react.useState)(true);
      const [visible, setIsVisible] = (0, react.useState)(false);
      const [error, setHasError] = (0, react.useState)(false);
      const hasHardcodedIcon = hardcodedIcons.has(symbol);
      const sizeClass = typeof size === "string" ? size : "custom_size";
      const containerRef = (0, react.useRef)(null);
      SharedAssetIcon_useIntersectionObserver(containerRef, (entry => {
        if (entry.isIntersecting) {
          setIsVisible(true);
        }
      }), {
        threshold: .01,
        root: null,
        rootMargin: "50px 0px 50px 0px"
      });
      (0, react.useEffect)((() => {
        if (!visible || !logoURL) {
          return;
        }
        const isIpfsURL = /^ipfs:/.test(logoURL);
        const httpURL = getAsHttpURL(logoURL);
        setHasError(false);
        const img = new Image;
        img.onerror = () => {
          if (isIpfsURL) {
            fetch(httpURL).then((async response => {
              if (response.ok && response.headers.get("content-type") === "text/html") {
                const prefix = "data:image/svg+xml;base64,";
                const base64URI = SharedAssetIcon_Buffer.from(await response.arrayBuffer()).toString("base64");
                setImageURL(prefix + base64URI);
              } else {
                throw new Error("INVALID_RESPONSE");
              }
            })).catch((() => {
              setHasError(true);
            })).finally((() => setIsLoading(false)));
          } else {
            setHasError(true);
            setIsLoading(false);
          }
        };
        img.onload = () => {
          setIsLoading(false);
          setImageURL(img.src);
        };
        img.src = httpURL;
      }), [ visible, logoURL ]);
      return react.createElement("div", {
        ref: containerRef,
        role: "img",
        className: "jsx-2608798433 " + style_default().dynamic([ [ "4238040207", [ typeof size === "number" ? `.token_icon_wrap.custom_size {\n              width: ${size}px;\n              height: ${size}px;\n            }` : "", hasHardcodedIcon ? `background: url("${`./images/assets/${symbol.toLowerCase()}.png`}");\n            ` : `background: url("${imageURL}");\n            ` ] ] ]) + " " + (classnames_default()("token_icon_wrap", sizeClass) || "")
      }, hasHardcodedIcon || !isLoading && !error ? react.createElement("div", {
        className: "jsx-2608798433 " + style_default().dynamic([ [ "4238040207", [ typeof size === "number" ? `.token_icon_wrap.custom_size {\n              width: ${size}px;\n              height: ${size}px;\n            }` : "", hasHardcodedIcon ? `background: url("${`./images/assets/${symbol.toLowerCase()}.png`}");\n            ` : `background: url("${imageURL}");\n            ` ] ] ]) + " " + "token_icon"
      }) : react.createElement("div", {
        role: "presentation",
        className: "jsx-2608798433 " + style_default().dynamic([ [ "4238040207", [ typeof size === "number" ? `.token_icon_wrap.custom_size {\n              width: ${size}px;\n              height: ${size}px;\n            }` : "", hasHardcodedIcon ? `background: url("${`./images/assets/${symbol.toLowerCase()}.png`}");\n            ` : `background: url("${imageURL}");\n            ` ] ] ]) + " " + (classnames_default()("token_icon_fallback", sizeClass) || "")
      }, (symbol?.[0] ?? "?").toUpperCase()), react.createElement(style_default(), {
        id: "2608798433"
      }, ".token_icon_wrap.jsx-2608798433{width:40px;height:40px;border-radius:80px;overflow:hidden;background-color:var(--c-bg-deep);-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.token_icon_fallback.jsx-2608798433{width:100%;height:100%;color:var(--c-text);font-weight:900;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.medium.jsx-2608798433 .token_icon_fallback.jsx-2608798433{margin-top:1px;}.small.jsx-2608798433{width:32px;height:32px;}.small.jsx-2608798433 .icon_eth.jsx-2608798433{width:16px;height:24px;}.large.jsx-2608798433{width:48px;height:48px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetIcon.tsx */"), react.createElement(style_default(), {
        id: "4238040207",
        dynamic: [ typeof size === "number" ? `.token_icon_wrap.custom_size {\n              width: ${size}px;\n              height: ${size}px;\n            }` : "", hasHardcodedIcon ? `background: url("${`./images/assets/${symbol.toLowerCase()}.png`}");\n            ` : `background: url("${imageURL}");\n            ` ]
      }, `${typeof size === "number" ? `.token_icon_wrap.custom_size {\n              width: ${size}px;\n              height: ${size}px;\n            }` : ""}.__jsx-style-dynamic-selector .token_icon.__jsx-style-dynamic-selector{width:100%;height:100%;background-color:var(--c-bg-deep);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;${hasHardcodedIcon ? `background: url("${`./images/assets/${symbol.toLowerCase()}.png`}");\n            ` : `background: url("${imageURL}");\n            `} background-size:cover;-webkit-animation:fadein-__jsx-style-dynamic-selector 130ms ease-out forwards;animation:fadein-__jsx-style-dynamic-selector 130ms ease-out forwards;}@-webkit-keyframes fadein-__jsx-style-dynamic-selector{from{opacity:0;}to{opacity:1;}}@keyframes fadein-__jsx-style-dynamic-selector{from{opacity:0;}to{opacity:1;}}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetIcon.tsx */`));
    }
    const AssetListItem_styles = `\n  .asset_list_item {\n    height: 72px;\n    width: 100%;\n    color: var(--c-text);\n    background: var(--c-bg);\n    border: 1px solid var(--c-border);\n    border-radius: 14px;\n    box-shadow: var(--shadow-sm);\n    display: flex;\n    padding: 12px 16px;\n    box-sizing: border-box;\n    margin-bottom: 10px;\n    justify-content: space-between;\n    align-items: center;\n    gap: 8px;\n    transition: all 0.2s ease;\n  }\n  .asset_list_item:hover {\n    background: var(--c-accent-a8);\n    border-color: var(--c-accent-a30);\n    transform: translateY(-2px);\n  }\n  .asset_left {\n    display: flex;\n    align-items: center;\n  }\n  .asset_left_content {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    margin-left: 12px;\n  }\n  .asset_right {\n    display: flex;\n    justify-content: flex-end;\n    align-items: center;\n    gap: 8px;\n  }\n  .asset_amount {\n    height: 22px;\n    color: var(--c-text);\n    font-size: 14px;\n    font-weight: 600;\n    letter-spacing: 0.01em;\n    line-height: 22px;\n    text-transform: uppercase;\n    margin-bottom: 2px;\n    margin-top: 0;\n    overflow-wrap: anywhere;\n    word-break: break-all;\n    font-family: "Segment", sans-serif;\n  }\n  .bold_amount_count {\n    width: auto;\n    height: 22px;\n    color: var(--c-text);\n    font-size: 16px;\n    font-weight: 700;\n    line-height: 22px;\n    margin-right: 6px;\n  }\n  .verify_asset {\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-family: "Segment";\n    font-style: normal;\n    font-weight: 500;\n    font-size: 14px;\n    line-height: 20px;\n    color: var(--c-warning);\n  }\n`;
    function SharedIconRouterLink(props) {
      const {path, state, iconClass, disabled, isTooltip, tooltipText} = props;
      const history = useHistory();
      const navigate = (0, react.useCallback)((e => {
        e.preventDefault();
        e.stopPropagation();
        history.push({
          pathname: path,
          state
        });
      }), [ history, path, state ]);
      if (disabled) {
        return react.createElement("div", {
          onClick: e => {
            e.preventDefault();
            e.stopPropagation();
          },
          className: "icon_wrapper"
        }, react.createElement("i", {
          className: `disabled_asset_icon ${iconClass}`
        }));
      }
      return react.createElement(react.Fragment, null, isTooltip && tooltipText ? react.createElement(SharedTooltip, {
        type: "dark",
        horizontalPosition: "center",
        verticalPosition: "top",
        verticalShift: -10,
        IconComponent: () => react.createElement("div", {
          role: "button",
          tabIndex: 0,
          "aria-label": tooltipText || path,
          onClick: navigate,
          onKeyDown: e => {
            if (e.key === "Enter" || e.key === " ") {
              navigate(e);
            }
          },
          className: "jsx-1137945828" + " " + "router_link_container"
        }, react.createElement("div", {
          className: "jsx-1137945828" + " " + "icon_wrapper"
        }, react.createElement("i", {
          className: "jsx-1137945828" + " " + `asset_icon hoverable ${iconClass}`
        })))
      }, tooltipText) : react.createElement("div", {
        role: "button",
        tabIndex: 0,
        "aria-label": tooltipText || path,
        onClick: navigate,
        onKeyDown: e => {
          if (e.key === "Enter" || e.key === " ") {
            navigate(e);
          }
        },
        className: "jsx-1137945828" + " " + "router_link_container"
      }, react.createElement("div", {
        className: "jsx-1137945828" + " " + "icon_wrapper"
      }, react.createElement("i", {
        className: "jsx-1137945828" + " " + `asset_icon hoverable ${iconClass}`
      }))), react.createElement(style_default(), {
        id: "1137945828"
      }, ".router_link_container{margin:auto 4px;border-radius:4px;cursor:pointer;}.icon_wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0.5em;border-radius:4px;}.disabled_asset_icon{-webkit-mask-size:cover;mask-size:cover;background-color:var(--c-border);width:12px;height:12px;}.router_link_container:hover .icon_wrapper{background-color:var(--c-bg-alt);color:var(--c-accent);}.router_link_container:hover .asset_icon{background-color:var(--c-accent);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedIconRouterLink.tsx */"));
    }
    function AssetVerifyToggler({text, color, icon, hoverColor, onClick}) {
      return react.createElement("button", {
        type: "button",
        onClick,
        className: style_default().dynamic([ [ "3058926593", [ color, hoverColor ] ], [ "3923344732", [ hoverColor ] ] ]) + " " + "asset_verify_toggler"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "3058926593", [ color, hoverColor ] ], [ "3923344732", [ hoverColor ] ] ]) + " " + "text"
      }, text), react.createElement(SharedIcon, {
        icon: `/icons/m/${icon}.svg`,
        width: 24,
        color
      }), react.createElement(style_default(), {
        id: "3058926593",
        dynamic: [ color, hoverColor ]
      }, `.asset_verify_toggler.__jsx-style-dynamic-selector{color:${color};-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:4px;-webkit-transition:color 0.2s;transition:color 0.2s;white-space:nowrap;}.asset_verify_toggler.__jsx-style-dynamic-selector:hover{color:${hoverColor};}.text.__jsx-style-dynamic-selector{font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvVW52ZXJpZmllZEFzc2V0L0Fzc2V0VmVyaWZ5VG9nZ2xlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JrQixBQUc4QyxBQVFBLEFBR3BCLGVBQ0MsZ0JBQ0MsSUFaRSxBQVFyQixhQUtxQixnRkFaTixhQWFHLGdCQUNsQiw2Q0FiVSxRQUNjLG9EQUNILG1CQUNyQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvV2FsbGV0L1VudmVyaWZpZWRBc3NldC9Bc3NldFZlcmlmeVRvZ2dsZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi4vLi4vU2hhcmVkL1NoYXJlZEljb25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBc3NldFZlcmlmeVRvZ2dsZXIoe1xuICB0ZXh0LFxuICBjb2xvcixcbiAgaWNvbixcbiAgaG92ZXJDb2xvcixcbiAgb25DbGljayxcbn06IHtcbiAgdGV4dDogc3RyaW5nXG4gIGNvbG9yOiBzdHJpbmdcbiAgaWNvbjogc3RyaW5nXG4gIGhvdmVyQ29sb3I/OiBzdHJpbmdcbiAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZFxufSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbGlja30gY2xhc3NOYW1lPVwiYXNzZXRfdmVyaWZ5X3RvZ2dsZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHRcIj57dGV4dH08L3NwYW4+XG4gICAgICA8U2hhcmVkSWNvbiBpY29uPXtgL2ljb25zL20vJHtpY29ufS5zdmdgfSB3aWR0aD17MjR9IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmFzc2V0X3ZlcmlmeV90b2dnbGVyIHtcbiAgICAgICAgICBjb2xvcjogJHtjb2xvcn07XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGdhcDogNHB4O1xuICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgICAgICAuYXNzZXRfdmVyaWZ5X3RvZ2dsZXI6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAke2hvdmVyQ29sb3J9O1xuICAgICAgICB9XG4gICAgICAgIC50ZXh0IHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMGVtO1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICAgIDxzdHlsZSBnbG9iYWwganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5hc3NldF92ZXJpZnlfdG9nZ2xlcjpob3ZlciAuaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2hvdmVyQ29sb3J9O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvYnV0dG9uPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/UnverifiedAsset/AssetVerifyToggler.tsx */`), react.createElement(style_default(), {
        id: "3923344732",
        dynamic: [ hoverColor ]
      }, `.asset_verify_toggler:hover .icon{background-color:${hoverColor};-webkit-transition:color 0.2s;transition:color 0.2s;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvVW52ZXJpZmllZEFzc2V0L0Fzc2V0VmVyaWZ5VG9nZ2xlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNTLEFBRzJELDhDQUN4QixvREFDeEIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1dhbGxldC9VbnZlcmlmaWVkQXNzZXQvQXNzZXRWZXJpZnlUb2dnbGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEljb24gZnJvbSBcIi4uLy4uL1NoYXJlZC9TaGFyZWRJY29uXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXNzZXRWZXJpZnlUb2dnbGVyKHtcbiAgdGV4dCxcbiAgY29sb3IsXG4gIGljb24sXG4gIGhvdmVyQ29sb3IsXG4gIG9uQ2xpY2ssXG59OiB7XG4gIHRleHQ6IHN0cmluZ1xuICBjb2xvcjogc3RyaW5nXG4gIGljb246IHN0cmluZ1xuICBob3ZlckNvbG9yPzogc3RyaW5nXG4gIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWRcbn0pOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9IGNsYXNzTmFtZT1cImFzc2V0X3ZlcmlmeV90b2dnbGVyXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0XCI+e3RleHR9PC9zcGFuPlxuICAgICAgPFNoYXJlZEljb24gaWNvbj17YC9pY29ucy9tLyR7aWNvbn0uc3ZnYH0gd2lkdGg9ezI0fSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5hc3NldF92ZXJpZnlfdG9nZ2xlciB7XG4gICAgICAgICAgY29sb3I6ICR7Y29sb3J9O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cbiAgICAgICAgLmFzc2V0X3ZlcmlmeV90b2dnbGVyOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogJHtob3ZlckNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgICAudGV4dCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDBlbTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgICA8c3R5bGUgZ2xvYmFsIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuYXNzZXRfdmVyaWZ5X3RvZ2dsZXI6aG92ZXIgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtob3ZlckNvbG9yfTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/UnverifiedAsset/AssetVerifyToggler.tsx */`));
    }
    const MAX_SYMBOL_LENGTH = 10;
    function CommonAssetListItem(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet"
      });
      const {assetAmount, initializationLoadingTimeExpired, onUnverifiedAssetWarningClick} = props;
      const isMissingLocalizedUserValue = typeof assetAmount.localizedMainCurrencyAmount === "undefined";
      const contractAddress = "contractAddress" in assetAmount.asset ? assetAmount.asset.contractAddress : undefined;
      const isUntrusted = isUntrustedAsset(assetAmount.asset);
      const handleVerifyAsset = event => {
        event.preventDefault();
        if (isSmartContractFungibleAsset(assetAmount.asset) && onUnverifiedAssetWarningClick) {
          onUnverifiedAssetWarningClick(assetAmount.asset);
        }
      };
      return react.createElement(Link, {
        to: {
          pathname: "/singleAsset",
          state: assetAmount.asset
        }
      }, react.createElement("div", {
        "data-testid": "asset_list_item",
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "asset_list_item"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "asset_left"
      }, react.createElement(SharedAssetIcon, {
        logoURL: assetAmount?.asset?.metadata?.logoURL,
        symbol: assetAmount?.asset?.symbol
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "asset_left_content"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "asset_amount"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "bold_amount_count"
      }, assetAmount.localizedDecimalAmount), react.createElement("span", {
        title: assetAmount.asset.symbol,
        "data-testid": "asset_symbol",
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ])
      }, trimWithEllipsis(assetAmount.asset.symbol, MAX_SYMBOL_LENGTH))), isTrustedAsset(assetAmount.asset) && !(initializationLoadingTimeExpired && isMissingLocalizedUserValue) && react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "price"
      }, isMissingLocalizedUserValue ? react.createElement(SharedLoadingSpinner, {
        size: "small"
      }) : `$${assetAmount.localizedMainCurrencyAmount}`))), react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "asset_right"
      }, isUntrusted ? react.createElement(AssetVerifyToggler, {
        text: t("unverifiedAssets.verifyAsset"),
        icon: "notif-attention",
        color: "var(--c-warning)",
        hoverColor: "var(--c-text)",
        onClick: event => handleVerifyAsset(event)
      }) : react.createElement(react.Fragment, null, react.createElement(SharedIconRouterLink, {
        path: "/send",
        state: assetAmount.asset,
        iconClass: "asset_icon_send",
        isTooltip: true,
        tooltipText: "Send"
      }), react.createElement(SharedTooltip, {
        type: "dark",
        width: 180,
        height: 48,
        horizontalPosition: "left",
        verticalPosition: "bottom",
        horizontalShift: 42,
        verticalShift: 16,
        IconComponent: () => react.createElement("div", {
          className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "button_wrap"
        }, react.createElement(SharedIconRouterLink, {
          path: "/swap",
          disabled: true,
          state: {
            symbol: assetAmount.asset.symbol,
            contractAddress
          },
          iconClass: "asset_icon_swap"
        }))
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ]) + " " + "centered_tooltip"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ])
      }, t("swapDisabledOne")), react.createElement("div", {
        className: style_default().dynamic([ [ "3217664072", [ AssetListItem_styles ] ] ])
      }, t("swapDisabledTwo"))))))), react.createElement(style_default(), {
        id: "3217664072",
        dynamic: [ AssetListItem_styles ]
      }, `${AssetListItem_styles}.__jsx-style-dynamic-selector .price.__jsx-style-dynamic-selector{height:18px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:var(--c-text-dim);font-size:13px;font-weight:500;-webkit-letter-spacing:0.01em;-moz-letter-spacing:0.01em;-ms-letter-spacing:0.01em;letter-spacing:0.01em;line-height:18px;font-family:"Segment",sans-serif;}.centered_tooltip.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/AssetListItem/CommonAssetListItem.tsx */`));
    }
    function WalletAssetListItem(props) {
      const {assetAmount, initializationLoadingTimeExpired, onUnverifiedAssetWarningClick} = props;
      return react.createElement("li", {
        className: "jsx-2189646828"
      }, react.createElement(CommonAssetListItem, {
        assetAmount,
        initializationLoadingTimeExpired,
        onUnverifiedAssetWarningClick
      }), react.createElement(style_default(), {
        id: "2189646828"
      }, '.asset_icon{-webkit-mask-size:cover;mask-size:cover;background-color:var(--c-border);width:12px;height:12px;}.asset_list_item:hover .asset_icon:not(:hover){background-color:var(--c-text-tertiary);}.asset_icon:hover{background-color:var(--c-accent);}.asset_icon_earn{width:22px;height:22px;-webkit-mask-image:url("./images/earn_tab@2x.png");mask-image:url("./images/earn_tab@2x.png");margin-left:10px;margin-right:-5px;}.asset_icon_gift{width:22px;height:22px;-webkit-mask-image:url("./images/gift@2x.png");mask-image:url("./images/gift@2x.png");}.asset_icon_send{-webkit-mask-image:url("./images/send_asset.svg");mask-image:url("./images/send_asset.svg");}.asset_icon_swap{-webkit-mask-image:url("./images/swap_asset.svg");mask-image:url("./images/swap_asset.svg");}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvV2FsbGV0QXNzZXRMaXN0SXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUNTLEFBRzZCLEFBTXdCLEFBR1AsQUFHdEIsQUFPQSxBQUsrQixBQUdBLFdBZDlCLEFBT0EsWUFOK0IsQUFPSixVQVh6QyxPQVRtQyxBQU1uQyxpQ0FMYSxXQUNDLFFBc0JkLEFBR0EsSUF4QkEsYUFrQkEsUUFQbUIsaUJBQ0Msa0JBQ3BCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvV2FsbGV0QXNzZXRMaXN0SXRlbS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IENvbXBsZXRlQXNzZXRBbW91bnQgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9hY2NvdW50c1wiXG5cbmltcG9ydCB7XG4gIFNtYXJ0Q29udHJhY3RGdW5naWJsZUFzc2V0LFxuICBTd2FwcGFibGVBc3NldCxcbn0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9hc3NldHNcIlxuXG5pbXBvcnQgQ29tbW9uQXNzZXRMaXN0SXRlbSBmcm9tIFwiLi9Bc3NldExpc3RJdGVtL0NvbW1vbkFzc2V0TGlzdEl0ZW1cIlxuXG50eXBlIFByb3BzID0ge1xuICBhc3NldEFtb3VudDogQ29tcGxldGVBc3NldEFtb3VudDxTd2FwcGFibGVBc3NldD5cbiAgaW5pdGlhbGl6YXRpb25Mb2FkaW5nVGltZUV4cGlyZWQ6IGJvb2xlYW5cbiAgb25VbnZlcmlmaWVkQXNzZXRXYXJuaW5nQ2xpY2s/OiAoXG4gICAgYXNzZXQ6IENvbXBsZXRlQXNzZXRBbW91bnQ8U21hcnRDb250cmFjdEZ1bmdpYmxlQXNzZXQ+W1wiYXNzZXRcIl0sXG4gICkgPT4gdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXYWxsZXRBc3NldExpc3RJdGVtKHByb3BzOiBQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICBhc3NldEFtb3VudCxcbiAgICBpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZCxcbiAgICBvblVudmVyaWZpZWRBc3NldFdhcm5pbmdDbGljayxcbiAgfSA9IHByb3BzXG5cbiAgcmV0dXJuIChcbiAgICA8bGk+XG4gICAgICA8Q29tbW9uQXNzZXRMaXN0SXRlbVxuICAgICAgICBhc3NldEFtb3VudD17YXNzZXRBbW91bnR9XG4gICAgICAgIGluaXRpYWxpemF0aW9uTG9hZGluZ1RpbWVFeHBpcmVkPXtpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZH1cbiAgICAgICAgb25VbnZlcmlmaWVkQXNzZXRXYXJuaW5nQ2xpY2s9e29uVW52ZXJpZmllZEFzc2V0V2FybmluZ0NsaWNrfVxuICAgICAgLz5cbiAgICAgIDxzdHlsZSBqc3ggZ2xvYmFsPlxuICAgICAgICB7YFxuICAgICAgICAgIC5hc3NldF9pY29uIHtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJvcmRlcik7XG4gICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmFzc2V0X2xpc3RfaXRlbTpob3ZlciAuYXNzZXRfaWNvbjpub3QoOmhvdmVyKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYXNzZXRfaWNvbjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5hc3NldF9pY29uX2Vhcm4ge1xuICAgICAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIuL2ltYWdlcy9lYXJuX3RhYkAyeC5wbmdcIik7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTVweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmFzc2V0X2ljb25fZ2lmdCB7XG4gICAgICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzL2dpZnRAMngucG5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYXNzZXRfaWNvbl9zZW5kIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzL3NlbmRfYXNzZXQuc3ZnXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYXNzZXRfaWNvbl9zd2FwIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzL3N3YXBfYXNzZXQuc3ZnXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9saT5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletAssetListItem.tsx */'));
    }
    function SharedSkeletonLoader({width, height, borderRadius = 8, isLoaded = false, style, children}) {
      if (isLoaded) return react.createElement(react.Fragment, null, children);
      return react.createElement("div", {
        "data-testid": "loading_skeleton",
        style,
        className: style_default().dynamic([ [ "1042123594", [ width ? `${width}px` : "100%", height ? `${height}px` : "100%", borderRadius ] ] ]) + " " + (classnames_default()("skeleton") || "")
      }, react.createElement(style_default(), {
        id: "1042123594",
        dynamic: [ width ? `${width}px` : "100%", height ? `${height}px` : "100%", borderRadius ]
      }, `.skeleton.__jsx-style-dynamic-selector{width:${width ? `${width}px` : "100%"};height:${height ? `${height}px` : "100%"};background-color:var(--c-bg-inset);border-radius:${borderRadius}px;-webkit-animation:pulse-__jsx-style-dynamic-selector 1.1s infinite;animation:pulse-__jsx-style-dynamic-selector 1.1s infinite;}@-webkit-keyframes pulse-__jsx-style-dynamic-selector{0%{background-color:var(--c-bg-inset);}50%{background-color:var(--c-bg-deep);}100%{background-color:var(--c-bg-inset);}}@keyframes pulse-__jsx-style-dynamic-selector{0%{background-color:var(--c-bg-inset);}50%{background-color:var(--c-bg-deep);}100%{background-color:var(--c-bg-inset);}}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkU2tlbGV0b25Mb2FkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCUyxBQUdnRCxBQVFFLEFBR0QsQUFHQyxrQ0FGckMsQ0FYb0MsQUFRcEMsQUFNQSxvQ0FibUMsbUNBQ1UsNkNBQ2YsOEhBQ2hDIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkU2tlbGV0b25Mb2FkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENTU1Byb3BlcnRpZXMsIFJlYWN0RWxlbWVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVkU2tlbGV0b25Mb2FkZXIoe1xuICB3aWR0aCxcbiAgaGVpZ2h0LFxuICBib3JkZXJSYWRpdXMgPSA4LCAvLyDQl9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC30LTQtdGB0YxcbiAgaXNMb2FkZWQgPSBmYWxzZSwgLy8g0Jgg0LfQtNC10YHRjFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHdpZHRoPzogbnVtYmVyXG4gIGhlaWdodD86IG51bWJlclxuICBib3JkZXJSYWRpdXM/OiBudW1iZXJcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGVcbiAgaXNMb2FkZWQ/OiBib29sZWFuXG4gIHN0eWxlPzogQ1NTUHJvcGVydGllc1xufSk6IFJlYWN0RWxlbWVudCB7XG4gIGlmIChpc0xvYWRlZCkgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwic2tlbGV0b25cIil9XG4gICAgICBkYXRhLXRlc3RpZD1cImxvYWRpbmdfc2tlbGV0b25cIlxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgLnNrZWxldG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiAke3dpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCJ9O1xuICAgICAgICAgICAgaGVpZ2h0OiAke2hlaWdodCA/IGAke2hlaWdodH1weGAgOiBcIjEwMCVcIn07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWluc2V0KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyUmFkaXVzfXB4O1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBwdWxzZSAxLjFzIGluZmluaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAa2V5ZnJhbWVzIHB1bHNlIHtcbiAgICAgICAgICAgIDAlIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1pbnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA1MCUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWRlZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctaW5zZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSkeletonLoader.tsx */`));
    }
    function SharedActivityIcon({type, size}) {
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: style_default().dynamic([ [ "584903535", [ size, size ] ] ]) + " " + (classnames_default()("activity_icon", type) || "")
      }), react.createElement(style_default(), {
        id: "584903535",
        dynamic: [ size, size ]
      }, `.activity_icon.__jsx-style-dynamic-selector{background:url("./images/activity_contract_interaction@2x.png");background-size:cover;width:${size}px;height:${size}px;margin-right:4px;margin-left:4px;}.asset-transfer-receive.__jsx-style-dynamic-selector{background:url("./images/activity_receive@2x.png");background-size:cover;}.asset-transfer-send.__jsx-style-dynamic-selector{background:url("./images/activity_send@2x.png");background-size:cover;}.asset-approval.__jsx-style-dynamic-selector{background:url("./images/activity_approve@2x.png");background-size:cover;}.asset-swap.__jsx-style-dynamic-selector{background:url("./images/activity_swap@2x.png");background-size:cover;}.contract-interaction.__jsx-style-dynamic-selector{background:url("./images/activity_contract_interaction@2x.png");background-size:cover;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQWN0aXZpdHlJY29uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQmtCLEFBRzJFLEFBUWIsQUFJSCxBQUlHLEFBSUgsQUFJZ0IsZ0RBWDFDLEFBUUEsR0FaQSxBQVFBLGFBaEJBLEFBd0JBLE1BWHhCLEFBUUEsR0FaQSxBQVFBLGFBaEJ1QyxBQXdCdkMscUNBdkJ3QyxzQ0FDckIsaUJBQ0QsZ0JBQ2xCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQWN0aXZpdHlJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHsgQWN0aXZpdHlJY29uVHlwZSB9IGZyb20gXCIuLi8uLi9ob29rcy9hY3Rpdml0eS1ob29rc1wiXG5cbnR5cGUgU2hhcmVkQWN0aXZpdHlJY29uUHJvcHMgPSB7XG4gIHR5cGU6IEFjdGl2aXR5SWNvblR5cGVcbiAgc2l6ZTogbnVtYmVyXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEFjdGl2aXR5SWNvbih7XG4gIHR5cGUsXG4gIHNpemUsXG59OiBTaGFyZWRBY3Rpdml0eUljb25Qcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwiYWN0aXZpdHlfaWNvblwiLCB0eXBlKX0gLz5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmFjdGl2aXR5X2ljb24ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1hZ2VzL2FjdGl2aXR5X2NvbnRyYWN0X2ludGVyYWN0aW9uQDJ4LnBuZ1wiKTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgIHdpZHRoOiAke3NpemV9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke3NpemV9cHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgfVxuICAgICAgICAuYXNzZXQtdHJhbnNmZXItcmVjZWl2ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi9pbWFnZXMvYWN0aXZpdHlfcmVjZWl2ZUAyeC5wbmdcIik7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgfVxuICAgICAgICAuYXNzZXQtdHJhbnNmZXItc2VuZCB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi9pbWFnZXMvYWN0aXZpdHlfc2VuZEAyeC5wbmdcIik7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgfVxuICAgICAgICAuYXNzZXQtYXBwcm92YWwge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1hZ2VzL2FjdGl2aXR5X2FwcHJvdmVAMngucG5nXCIpO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLmFzc2V0LXN3YXAge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1hZ2VzL2FjdGl2aXR5X3N3YXBAMngucG5nXCIpO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRyYWN0LWludGVyYWN0aW9uIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuL2ltYWdlcy9hY3Rpdml0eV9jb250cmFjdF9pbnRlcmFjdGlvbkAyeC5wbmdcIik7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedActivityIcon.tsx */`));
    }
    function isReceiveActivity(activity, activityInitiatorAddress) {
      return activity.type === "asset-transfer" && sameQEVMAddress(activity.recipient?.address, activityInitiatorAddress);
    }
    function useActivityViewDetails(activity, activityInitiatorAddress) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.activities"
      });
      const baseDetails = {
        recipient: activity.recipient,
        assetLogoURL: activity.assetLogoUrl,
        assetSymbol: activity.assetSymbol,
        assetValue: activity.value
      };
      switch (activity.type) {
       case "asset-transfer":
        return {
          ...baseDetails,
          label: isReceiveActivity(activity, activityInitiatorAddress) ? t("tokenReceived") : t("tokenSent"),
          icon: isReceiveActivity(activity, activityInitiatorAddress) ? "asset-transfer-receive" : "asset-transfer-send"
        };

       case "asset-approval":
        return {
          ...baseDetails,
          label: t("tokenApproved"),
          icon: "asset-approval",
          assetValue: activity.value === INFINITE_VALUE ? t("infiniteApproval") : activity.value
        };

       case "asset-swap":
        return {
          ...baseDetails,
          icon: "asset-swap",
          label: t("tokenSwapped")
        };

       case "contract-deployment":
       case "contract-interaction":
       default:
        return {
          ...baseDetails,
          icon: "contract-interaction",
          label: t("contractInteraction")
        };
      }
    }
    function DetailRowItem(props) {
      const {assetIconUrl, label, value} = props;
      return react.createElement("li", {
        className: "jsx-624577039"
      }, react.createElement("div", {
        className: "jsx-624577039" + " " + "label"
      }, assetIconUrl !== undefined && react.createElement(SharedAssetIcon, {
        symbol: label,
        logoURL: assetIconUrl,
        size: 24
      }), label), react.createElement("div", {
        className: "jsx-624577039" + " " + "right"
      }, value), react.createElement(style_default(), {
        id: "624577039"
      }, "li.jsx-624577039{width:100%;border-bottom:1px solid var(--c-bg-alt);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:7px 0px;height:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.label.jsx-624577039{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;}.right.jsx-624577039{float:right;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}.value_detail.jsx-624577039{color:var(--c-text-tertiary);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;margin-left:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityDetails.tsx */"));
    }
    function DestinationCard(props) {
      const {label, address, name} = props;
      return react.createElement("div", {
        "data-testid": "tx_participant_wrap",
        className: "jsx-180299589" + " " + "card_wrap"
      }, react.createElement("div", {
        className: "jsx-180299589" + " " + "sub_info from"
      }, label, ":"), react.createElement(SharedAddress, {
        address,
        name,
        alwaysShowAddress: true
      }), react.createElement("div", {
        className: "jsx-180299589" + " " + "sub_info name"
      }), react.createElement(style_default(), {
        id: "180299589"
      }, ".card_wrap.jsx-180299589{width:160px;height:96px;border-radius:4px;background-color:var(--c-bg-alt);box-sizing:border-box;padding:15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.sub_info.jsx-180299589{width:69px;height:17px;color:var(--c-text-tertiary);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;}.from.jsx-180299589{margin-bottom:3px;}.name.jsx-180299589{margin-top:10px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityDetails.tsx */"));
    }
    function WalletActivityDetails(props) {
      const {activityItem, activityInitiatorAddress} = props;
      const dispatch = useBackgroundDispatch();
      const [details, setDetails] = (0, react.useState)([]);
      const network = useBackgroundSelector(selectCurrentNetwork);
      const blockExplorerUrl = getBlockExplorerURL(network);
      const openExplorer = (0, react.useCallback)((() => {
        window.open(`${blockExplorerUrl}/tx/${activityItem.hash}`, "_blank")?.focus();
      }), [ activityItem?.hash, blockExplorerUrl ]);
      (0, react.useEffect)((() => {
        const fetchDetails = async () => {
          if (activityItem?.hash) {
            setDetails(await dispatch(fetchSelectedActivityDetails(activityItem.hash)));
          }
        };
        fetchDetails();
      }), [ activityItem.hash, dispatch ]);
      const activityViewDetails = useActivityViewDetails(activityItem, activityInitiatorAddress);
      return react.createElement("div", {
        className: "jsx-1208391740" + " " + "wrap standard_width center_horizontal"
      }, react.createElement("div", {
        className: "jsx-1208391740" + " " + "header"
      }, react.createElement(SharedActivityIcon, {
        type: activityViewDetails.icon,
        size: 16
      }), react.createElement("span", {
        className: "jsx-1208391740" + " " + "header_title"
      }, activityViewDetails.label), blockExplorerUrl && react.createElement(SharedIcon, {
        icon: "icons/s/new-tab.svg",
        width: 16,
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-accent)",
        onClick: openExplorer
      })), react.createElement("div", {
        className: "jsx-1208391740" + " " + "destination_cards"
      }, react.createElement(DestinationCard, {
        label: "From",
        address: activityItem.from
      }), react.createElement("div", {
        className: "jsx-1208391740" + " " + "icon_transfer"
      }), react.createElement(DestinationCard, {
        label: "To",
        address: activityItem.recipient.address || "(Contract creation)",
        name: activityItem.recipient.name
      })), react.createElement("ul", {
        className: "jsx-1208391740"
      }, details.length <= 0 && Array.from({
        length: 7
      }).map(((_, index) => react.createElement(SharedSkeletonLoader, {
        key: `skeleton-${index}`,
        height: 24,
        style: {
          margin: "10px 0 15px"
        }
      }))), details.map((({assetIconUrl, label, value}) => react.createElement(DetailRowItem, {
        key: label,
        assetIconUrl,
        label,
        value
      })))), react.createElement(style_default(), {
        id: "1208391740"
      }, '.wrap.jsx-1208391740{margin-top:-24px;}.destination_cards.jsx-1208391740{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:4px;}.header.jsx-1208391740{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:18px 0;}.header_title.jsx-1208391740{margin-left:4px;margin-right:8px;font-family:"Segment";font-style:normal;font-weight:600;font-size:18px;line-height:24px;color:var(--c-text);}.icon_transfer.jsx-1208391740{background:url("./images/transfer@2x.png") center no-repeat;background-size:11px 12px;width:35px;height:35px;border:3px solid var(--c-bg);background-color:var(--c-bg-alt);border-radius:70%;margin:0 auto;margin-left:-5px;margin-right:-5px;position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityDetails.tsx */'));
    }
    function UnverifiedAssetBanner_extends() {
      return UnverifiedAssetBanner_extends = Object.assign ? Object.assign.bind() : function(n) {
        for (var e = 1; e < arguments.length; e++) {
          var t = arguments[e];
          for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
        }
        return n;
      }, UnverifiedAssetBanner_extends.apply(null, arguments);
    }
    function UnverifiedAssetBanner({id, title, description, style}) {
      const props = id ? {
        canBeClosed: true,
        id
      } : {};
      return react.createElement(SharedBanner, UnverifiedAssetBanner_extends({
        icon: "notif-attention",
        iconColor: "var(--c-warning)",
        style
      }, props), react.createElement("div", {
        className: "jsx-381227950" + " " + "banner"
      }, react.createElement("span", {
        className: "jsx-381227950" + " " + "warning_text"
      }, title), react.createElement("span", {
        className: "jsx-381227950" + " " + "simple_text"
      }, description)), react.createElement(style_default(), {
        id: "381227950"
      }, ".banner.jsx-381227950{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:90%;}.warning_text.jsx-381227950{font-size:16px;line-height:24px;font-weight:500;color:var(--c-warning);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvVW52ZXJpZmllZEFzc2V0L1VudmVyaWZpZWRBc3NldEJhbm5lci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkJrQixBQUd3QixBQUtFLGVBQ0UsaUJBQ0QsZ0JBQ08sdUJBQ3pCLEdBUndCLDhFQUNaLFVBQ1oiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1dhbGxldC9VbnZlcmlmaWVkQXNzZXQvVW52ZXJpZmllZEFzc2V0QmFubmVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDU1NQcm9wZXJ0aWVzLCBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEJhbm5lciwgeyBDYW5CZUNsb3NlZFByb3BzIH0gZnJvbSBcIi4uLy4uL1NoYXJlZC9TaGFyZWRCYW5uZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVbnZlcmlmaWVkQXNzZXRCYW5uZXIoe1xuICBpZCxcbiAgdGl0bGUsXG4gIGRlc2NyaXB0aW9uLFxuICBzdHlsZSxcbn06IHtcbiAgaWQ/OiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIHN0eWxlPzogQ1NTUHJvcGVydGllc1xufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHByb3BzOiBDYW5CZUNsb3NlZFByb3BzID0gaWQgPyB7IGNhbkJlQ2xvc2VkOiB0cnVlLCBpZCB9IDoge31cbiAgcmV0dXJuIChcbiAgICA8U2hhcmVkQmFubmVyXG4gICAgICBpY29uPVwibm90aWYtYXR0ZW50aW9uXCJcbiAgICAgIGljb25Db2xvcj1cInZhcigtLWMtd2FybmluZylcIlxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJhbm5lclwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3YXJuaW5nX3RleHRcIj57dGl0bGV9PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzaW1wbGVfdGV4dFwiPntkZXNjcmlwdGlvbn08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmJhbm5lciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgIH1cbiAgICAgICAgLndhcm5pbmdfdGV4dCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtd2FybmluZyk7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L1NoYXJlZEJhbm5lcj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/UnverifiedAsset/UnverifiedAssetBanner.tsx */"));
    }
    function AssetWarning(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.verifiedAssets"
      });
      const {asset, close, openActivityDetails} = props;
      const dispatch = useBackgroundDispatch();
      const history = useHistory();
      const {pathname} = useLocation();
      const network = useBackgroundSelector(selectCurrentNetwork);
      const isUnverified = isUnverifiedAsset(asset);
      const contractAddress = asset && "contractAddress" in asset && asset.contractAddress ? asset.contractAddress : "";
      const blockExplorerUrl = getBlockExplorerURL(network);
      const handleVerifyAsset = async () => {
        const metadata = {
          ...asset.metadata,
          verified: true
        };
        await dispatch(updateAssetMetadata({
          asset,
          metadata
        }));
        dispatch(setSnackbarMessage(t("verifyAssetSnackbar")));
        close();
      };
      const handleHideAsset = async () => {
        await dispatch(hideAsset({
          asset
        }));
        dispatch(setSnackbarMessage(t("removeAssetSnackbar")));
        close();
        if (pathname === "/singleAsset") {
          history.push("/");
        }
      };
      const activityInitiatorAddress = useBackgroundSelector(selectCurrentAccount).address;
      const discoveryTxHash = asset.metadata?.discoveryTxHash?.[activityInitiatorAddress];
      const currentAccountActivities = useBackgroundSelector(selectCurrentAccountActivities);
      const activityItem = discoveryTxHash ? currentAccountActivities.find((({hash}) => hash === discoveryTxHash)) : undefined;
      return react.createElement(SharedSlideUpMenuPanel, {
        header: t("assetImported")
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "content"
      }, react.createElement("div", {
        className: "jsx-3169480692"
      }, react.createElement(UnverifiedAssetBanner, {
        title: isUnverified ? t("banner.titleUnverified") : t("banner.titleVerified"),
        description: t("banner.description")
      }), react.createElement("ul", {
        className: "jsx-3169480692" + " " + "asset_details"
      }, react.createElement("li", {
        className: "jsx-3169480692" + " " + "asset_symbol"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "left"
      }, t("symbol")), react.createElement("div", {
        title: asset?.symbol,
        className: "jsx-3169480692" + " " + "right ellipsis"
      }, `${asset?.symbol}`)), react.createElement("li", {
        className: "jsx-3169480692"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "left"
      }, t("contract")), react.createElement("div", {
        className: "jsx-3169480692" + " " + "right"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "address_button_wrap"
      }, react.createElement("button", {
        type: "button",
        disabled: !blockExplorerUrl,
        onClick: () => window.open(`${blockExplorerUrl}/token/${contractAddress}`, "_blank")?.focus(),
        className: "jsx-3169480692" + " " + (classnames_default()("address_button", {
          no_click: !blockExplorerUrl
        }) || "")
      }, truncateAddress(contractAddress), blockExplorerUrl && react.createElement(SharedIcon, {
        width: 16,
        icon: "icons/s/new-tab.svg",
        color: "var(--c-text)",
        hoverColor: "var(--c-accent)",
        transitionHoverTime: "0.2s"
      }))))), discoveryTxHash && react.createElement("li", {
        className: "jsx-3169480692"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "left"
      }, t("discoveryTxHash")), react.createElement("div", {
        className: "jsx-3169480692" + " " + "right"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "address_button_wrap"
      }, react.createElement("button", {
        type: "button",
        onClick: () => {
          if (activityItem) {
            openActivityDetails({
              activityItem,
              activityInitiatorAddress
            });
          } else {
            window.open(`${blockExplorerUrl}/tx/${discoveryTxHash}`, "_blank")?.focus();
          }
        },
        title: discoveryTxHash,
        className: "jsx-3169480692" + " " + (classnames_default()("address_button", {
          no_click: activityItem ? false : !blockExplorerUrl
        }) || "")
      }, truncateAddress(discoveryTxHash), !activityItem && blockExplorerUrl && react.createElement(SharedIcon, {
        width: 16,
        icon: "icons/s/new-tab.svg",
        color: "var(--c-text)",
        hoverColor: "var(--c-accent)",
        transitionHoverTime: "0.2s"
      }))))))), react.createElement("div", {
        className: "jsx-3169480692"
      }, react.createElement("div", {
        className: "jsx-3169480692" + " " + "asset_verify_actions"
      }, react.createElement(SharedButton, {
        size: "medium",
        type: "secondary",
        onClick: () => handleHideAsset()
      }, t("dontShow")), isUnverified && react.createElement(SharedButton, {
        size: "medium",
        type: "primary",
        onClick: () => handleVerifyAsset()
      }, t("addToAssetList"))))), react.createElement(style_default(), {
        id: "3433803421"
      }, '.content.jsx-3169480692{padding:0 16px 16px 16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:82%;}ul.asset_details.jsx-3169480692{display:block;margin-top:16px;font-family:"Segment";font-style:normal;font-weight:500;font-size:16px;line-height:24px;}ul.asset_details.jsx-3169480692>li.jsx-3169480692{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.left.jsx-3169480692{color:var(--c-text-secondary);}.right.jsx-3169480692{color:var(--c-text);width:50%;text-align:right;}.asset_verify_actions.jsx-3169480692{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-top:24px;}.address_button_wrap.jsx-3169480692{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:end;-ms-flex-pack:end;justify-content:end;width:100%;}.address_button.jsx-3169480692{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:color 0.2s;transition:color 0.2s;}.address_button.jsx-3169480692:hover{color:var(--c-accent);}.address_button.jsx-3169480692 .no_click.jsx-3169480692{pointer-events:none;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx */'), react.createElement(style_default(), {
        id: "3524961376"
      }, ".address_button:hover .icon{background-color:var(--c-accent);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx */"));
    }
    function AssetWarningWrapper(props) {
      const {asset, close} = props;
      const [showAssetWarning, setShowAssetWarning] = (0, react.useState)(!!asset);
      const [activityDetails, setActivityDetails] = (0, react.useState)(undefined);
      (0, react.useEffect)((() => {
        setShowAssetWarning(!!asset);
      }), [ asset ]);
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenu, {
        isOpen: showAssetWarning,
        size: "auto",
        close: () => close()
      }, asset && react.createElement(AssetWarning, {
        asset,
        close: () => close(),
        openActivityDetails: newActivityDetails => {
          setActivityDetails(newActivityDetails);
          setShowAssetWarning(false);
        }
      })), react.createElement(SharedSlideUpMenu, {
        isOpen: !!activityDetails,
        size: "custom",
        close: () => {
          setActivityDetails(undefined);
          setShowAssetWarning(true);
        }
      }, activityDetails && react.createElement(WalletActivityDetails, {
        activityItem: activityDetails.activityItem,
        activityInitiatorAddress: activityDetails.activityInitiatorAddress
      })));
    }
    function WalletAssetList(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.activities"
      });
      const {assetAmounts, initializationLoadingTimeExpired} = props;
      const [warnedAsset, setWarnedAsset] = (0, react.useState)(null);
      if (!assetAmounts) return null;
      return react.createElement(react.Fragment, null, react.createElement(AssetWarningWrapper, {
        asset: warnedAsset,
        close: () => {
          setWarnedAsset(null);
        }
      }), react.createElement("ul", {
        className: "jsx-2642582244"
      }, assetAmounts.map((assetAmount => react.createElement(WalletAssetListItem, {
        assetAmount,
        key: getFullAssetID(assetAmount.asset),
        initializationLoadingTimeExpired,
        onUnverifiedAssetWarningClick: asset => setWarnedAsset(asset)
      }))), !initializationLoadingTimeExpired && react.createElement("li", {
        className: "jsx-2642582244" + " " + "loading"
      }, t("loadingActivities")), react.createElement(style_default(), {
        id: "2642582244"
      }, '.loading.jsx-2642582244{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-top:12px;padding-bottom:40px;color:var(--c-text-dim);font-size:14px;font-family:"Segment",sans-serif;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvV2FsbGV0QXNzZXRMaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtRG9CLEFBRzBCLDBFQUNVLG1HQUNOLGlCQUNHLG9CQUNJLHdCQUNULGVBQ21CLGlDQUNwQyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvV2FsbGV0L1dhbGxldEFzc2V0TGlzdC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBDb21wbGV0ZUFzc2V0QW1vdW50IH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvYWNjb3VudHNcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQge1xuICBTbWFydENvbnRyYWN0RnVuZ2libGVBc3NldCxcbiAgU3dhcHBhYmxlQXNzZXQsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvYXNzZXRzXCJcbmltcG9ydCB7IGdldEZ1bGxBc3NldElEIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvdXRpbHMvYXNzZXQtdXRpbHNcIlxuaW1wb3J0IFdhbGxldEFzc2V0TGlzdEl0ZW0gZnJvbSBcIi4vV2FsbGV0QXNzZXRMaXN0SXRlbVwiXG5pbXBvcnQgQXNzZXRXYXJuaW5nV3JhcHBlciBmcm9tIFwiLi9VbnZlcmlmaWVkQXNzZXQvQXNzZXRXYXJuaW5nV3JhcHBlclwiXG5cbnR5cGUgV2FsbGV0QXNzZXRMaXN0UHJvcHMgPSB7XG4gIGFzc2V0QW1vdW50czogQ29tcGxldGVBc3NldEFtb3VudDxTd2FwcGFibGVBc3NldD5bXVxuICBpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXYWxsZXRBc3NldExpc3QoXG4gIHByb3BzOiBXYWxsZXRBc3NldExpc3RQcm9wcyxcbik6IFJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJ3YWxsZXQuYWN0aXZpdGllc1wiLFxuICB9KVxuXG4gIGNvbnN0IHsgYXNzZXRBbW91bnRzLCBpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZCB9ID0gcHJvcHNcblxuICBjb25zdCBbd2FybmVkQXNzZXQsIHNldFdhcm5lZEFzc2V0XSA9IHVzZVN0YXRlPFxuICAgIENvbXBsZXRlQXNzZXRBbW91bnQ8U21hcnRDb250cmFjdEZ1bmdpYmxlQXNzZXQ+W1wiYXNzZXRcIl0gfCBudWxsXG4gID4obnVsbClcblxuICBpZiAoIWFzc2V0QW1vdW50cykgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8QXNzZXRXYXJuaW5nV3JhcHBlclxuICAgICAgICBhc3NldD17d2FybmVkQXNzZXR9XG4gICAgICAgIGNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0V2FybmVkQXNzZXQobnVsbClcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICA8dWw+XG4gICAgICAgIHthc3NldEFtb3VudHMubWFwKChhc3NldEFtb3VudCkgPT4gKFxuICAgICAgICAgIDxXYWxsZXRBc3NldExpc3RJdGVtXG4gICAgICAgICAgICBhc3NldEFtb3VudD17YXNzZXRBbW91bnR9XG4gICAgICAgICAgICBrZXk9e2dldEZ1bGxBc3NldElEKGFzc2V0QW1vdW50LmFzc2V0KX1cbiAgICAgICAgICAgIGluaXRpYWxpemF0aW9uTG9hZGluZ1RpbWVFeHBpcmVkPXtpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZH1cbiAgICAgICAgICAgIG9uVW52ZXJpZmllZEFzc2V0V2FybmluZ0NsaWNrPXsoYXNzZXQpID0+IHNldFdhcm5lZEFzc2V0KGFzc2V0KX1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgICAgeyFpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZCAmJiAoXG4gICAgICAgICAgPGxpIGNsYXNzTmFtZT1cImxvYWRpbmdcIj57dChcImxvYWRpbmdBY3Rpdml0aWVzXCIpfTwvbGk+XG4gICAgICAgICl9XG4gICAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgICAubG9hZGluZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA0MHB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dC1kaW0pO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiU2VnbWVudFwiLCBzYW5zLXNlcmlmO1xuICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuICAgICAgPC91bD5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletAssetList.tsx */')));
    }
    function isSendActivity(activity, activityInitiatorAddress) {
      return activity.type === "asset-transfer" ? sameQEVMAddress(activity.sender?.address, activityInitiatorAddress) : true;
    }
    function WalletActivityListItem(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.activities"
      });
      const {onClick, activity, activityInitiatorAddress} = props;
      const outcomeRef = (0, react.useRef)(null);
      const bottomRef = (0, react.useRef)(null);
      const [outcomeWidth, setOutcomeWidth] = (0, react.useState)(0);
      const [bottomWidth, setBottomWidth] = (0, react.useState)(0);
      (0, react.useEffect)((() => {
        if (outcomeRef.current) {
          setOutcomeWidth(outcomeRef.current.offsetWidth);
        }
      }), [ outcomeRef ]);
      (0, react.useEffect)((() => {
        if (bottomRef.current) {
          setBottomWidth(bottomRef.current.offsetWidth);
        }
      }), [ bottomRef ]);
      const activityViewDetails = useActivityViewDetails(activity, activityInitiatorAddress);
      return react.createElement("li", {
        "data-testid": "activity_list_item",
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ])
      }, react.createElement("button", {
        type: "button",
        onClick,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "standard_width"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "top"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "left"
      }, react.createElement(SharedActivityIcon, {
        type: activityViewDetails.icon,
        size: 14
      }), activityViewDetails.label, "status" in activity && activity.blockHash !== null && activity.status !== 1 && react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "status failed"
      }, t("transactionFailed")), "status" in activity && activity.blockHash === null && activity.status === 0 && react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "status dropped"
      }, t("transactionDropped")), !("status" in activity) && activity.blockHash === null && react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "status pending"
      }, t("transactionPending"))), react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "right"
      }, activity.blockTimestamp && dayjs_min_default().unix(activity.blockTimestamp).format("MMM D"))), react.createElement("div", {
        ref: bottomRef,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "bottom"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "left"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "token_icon_wrap"
      }, react.createElement(SharedAssetIcon, {
        logoURL: activityViewDetails.assetLogoURL,
        symbol: activityViewDetails.assetSymbol,
        size: "small"
      })), react.createElement("div", {
        "data-testid": "activity_list_item_amount",
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "amount"
      }, react.createElement("span", {
        title: activityViewDetails.assetValue,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "bold_amount_count"
      }, activityViewDetails.assetValue), react.createElement("span", {
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "name"
      }, activityViewDetails.assetSymbol))), react.createElement("div", {
        ref: outcomeRef,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "right"
      }, isSendActivity(activity, activityInitiatorAddress) ? react.createElement("div", {
        title: activityViewDetails.recipient.address,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "outcome"
      }, t("transactionTo"), ` ${activityViewDetails.recipient.name ?? (activityViewDetails.recipient.address === undefined ? t("contractCreation") : truncateAddress(activityViewDetails.recipient.address))}`) : react.createElement("div", {
        title: activity.from,
        className: style_default().dynamic([ [ "1221840078", [ bottomWidth, outcomeWidth ] ] ]) + " " + "outcome"
      }, t("transactionFrom"), ` ${truncateAddress(activity.from)}`)))), react.createElement(style_default(), {
        id: "1221840078",
        dynamic: [ bottomWidth, outcomeWidth ]
      }, `button.__jsx-style-dynamic-selector{height:72px;border-radius:16px;background-color:var(--c-bg);border:1px solid var(--c-accent-a15);box-shadow:var(--shadow-sm);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:9px 19px 8px 8px;box-sizing:border-box;margin-bottom:10px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);}button.__jsx-style-dynamic-selector:hover{background-color:var(--c-bg-inset);border-color:var(--c-accent-a30);box-shadow:var(--shadow-glow-sm);-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);}.status.__jsx-style-dynamic-selector:before{content:"•";margin:0 3px;}.failed.__jsx-style-dynamic-selector{color:var(--c-error);}.pending.__jsx-style-dynamic-selector{color:var(--c-warning);}.dropped.__jsx-style-dynamic-selector{color:var(--c-text-secondary);}.top.__jsx-style-dynamic-selector{height:16px;color:var(--c-text-dim);font-size:12px;font-weight:500;line-height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:2px;}.bottom.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.left.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.token_icon_wrap.__jsx-style-dynamic-selector{width:32px;height:32px;background-color:var(--c-bg-inset);border-radius:80px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.icon_eth.__jsx-style-dynamic-selector{background:url("./images/eth@2x.png");background-size:18px 29px;width:18px;height:29px;-webkit-transform:scale(0.8);-ms-transform:scale(0.8);transform:scale(0.8);}.amount.__jsx-style-dynamic-selector{color:var(--c-text);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;text-transform:uppercase;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0px 8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.bold_amount_count.__jsx-style-dynamic-selector{height:24px;color:var(--c-text);font-size:18px;font-weight:600;line-height:24px;margin-right:4px;max-width:calc(${bottomWidth}px - 50px - ${outcomeWidth}px);overflow:hidden;text-overflow:ellipsis;text-transform:none;}.name.__jsx-style-dynamic-selector{white-space:nowrap;padding-top:3px;}.price.__jsx-style-dynamic-selector{width:58px;height:17px;color:var(--c-text-tertiary);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;}.icon_send_asset.__jsx-style-dynamic-selector{background:url("./images/send_asset.svg");background-size:12px 12px;width:12px;height:12px;}.icon_swap_asset.__jsx-style-dynamic-selector{background:url("./images/swap_asset.svg");background-size:12px 12px;width:12px;height:12px;}.right.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;text-align:right;white-space:nowrap;}.outcome.__jsx-style-dynamic-selector{color:var(--c-text-secondary);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;text-align:right;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityListItem.tsx */`));
    }
    function WalletActivityList({activities}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.activities"
      });
      const dispatch = useBackgroundDispatch();
      const showingActivityDetail = useBackgroundSelector(selectShowingActivityDetail);
      const [instantlyHideActivityDetails, setInstantlyHideActivityDetails] = (0, react.useState)(true);
      const network = useBackgroundSelector(selectCurrentNetwork);
      const blockExplorerInfo = blockExplorer[network.chainID];
      (0, react.useEffect)((() => {
        setInstantlyHideActivityDetails(true);
        dispatch(setShowingActivityDetail(null));
      }), [ dispatch ]);
      const activityInitiatorAddress = useBackgroundSelector(selectCurrentAccount).address;
      const openExplorer = (0, react.useCallback)((() => {
        window.open(`${blockExplorerInfo.url}/address/${activityInitiatorAddress}`, "_blank")?.focus();
      }), [ blockExplorerInfo, activityInitiatorAddress ]);
      const handleOpen = (0, react.useCallback)((activityItem => {
        setInstantlyHideActivityDetails(false);
        dispatch(setShowingActivityDetail(activityItem.hash));
      }), [ dispatch ]);
      const handleClose = (0, react.useCallback)((() => {
        dispatch(setShowingActivityDetail(null));
      }), [ dispatch ]);
      if (!activities || activities.length === 0) return react.createElement("span", {
        className: "jsx-4030674529"
      }, t("defaultHistoricalActivityExplainer"), react.createElement(style_default(), {
        id: "4030674529"
      }, "span.jsx-4030674529{width:316px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text-secondary);font-size:16px;text-align:center;line-height:22px;margin:0 auto;margin-top:15px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityList.tsx */"));
      return react.createElement(react.Fragment, null, !instantlyHideActivityDetails && react.createElement(SharedSlideUpMenu, {
        isOpen: !!showingActivityDetail,
        close: handleClose
      }, showingActivityDetail && react.createElement(WalletActivityDetails, {
        activityItem: showingActivityDetail,
        activityInitiatorAddress
      })), react.createElement("ul", {
        "data-testid": "activity_list"
      }, activities.map((activityItem => {
        if (activityItem) {
          return react.createElement(WalletActivityListItem, {
            onClick: () => {
              handleOpen(activityItem);
            },
            key: activityItem?.hash,
            activity: activityItem,
            activityInitiatorAddress
          });
        }
        return null;
      }))), react.createElement("span", {
        className: "jsx-2029288559"
      }, react.createElement("div", {
        className: "jsx-2029288559" + " " + "hand"
      }, "✋"), react.createElement("div", {
        className: "jsx-2029288559"
      }, t("endOfList")), blockExplorerInfo && react.createElement("div", {
        className: "jsx-2029288559" + " " + "row"
      }, t("moreHistory"), react.createElement(SharedButton, {
        type: "tertiary",
        size: "small",
        iconSmall: "new-tab",
        onClick: openExplorer,
        style: {
          padding: 0,
          fontWeight: 400
        }
      }, blockExplorerInfo?.title)), react.createElement(style_default(), {
        id: "2029288559"
      }, "span.jsx-2029288559{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text-dim);font-size:16px;font-weight:400;line-height:24px;text-align:center;}.row.jsx-2029288559{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;}.hand.jsx-2029288559{margin:10px 0px;font-size:22px;}div.jsx-2029288559:last-child{margin-bottom:40px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletActivityList.tsx */")));
    }
    var react_qr_code_lib = __webpack_require__(194);
    function Receive() {
      const {t} = useTranslation();
      const dispatch = useDispatch();
      const currentAccount = useBackgroundSelector(selectCurrentAccount);
      if (!currentAccount) return null;
      return react.createElement("section", {
        className: "jsx-2929021533"
      }, react.createElement("h1", {
        className: "jsx-2929021533"
      }, react.createElement("span", {
        className: "jsx-2929021533" + " " + "icon_activity_send_medium"
      }), t("wallet.receiveAddress")), react.createElement("div", {
        className: "jsx-2929021533" + " " + "qr_code"
      }, react.createElement(react_qr_code_lib.A, {
        value: currentAccount.address,
        size: 128
      })), react.createElement("div", {
        className: "jsx-2929021533" + " " + "copy_wrap"
      }, react.createElement(SharedButton, {
        iconMedium: "copy",
        size: "medium",
        type: "primary",
        onClick: () => {
          navigator.clipboard.writeText(currentAccount.address);
          dispatch(setSnackbarMessage("Copied!"));
        }
      }, `${currentAccount.address.slice(0, 7)}...${currentAccount.address.slice(-6)}`)), react.createElement(style_default(), {
        id: "2929021533"
      }, 'section.jsx-2929021533{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.receive_wrap.jsx-2929021533{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:24px;}h1.jsx-2929021533{height:32px;color:var(--c-text);}.qr_code.jsx-2929021533{width:176px;height:176px;border-radius:16px;background-color:var(--c-white-a85);margin-top:31px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.copy_wrap.jsx-2929021533{width:215px;margin-top:40px;}.icon_activity_send_medium.jsx-2929021533{background:url("./images/activity_receive_medium@2x.png");background-size:24px 24px;width:24px;height:24px;margin-right:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvUmVjZWl2ZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNENTLEFBRzBCLEFBTUEsQUFNRCxBQUlBLEFBVUEsQUFJOEMsWUFqQnRDLEFBSVAsQUFVRyxhQVRHLEdBVXJCLElBZEEsWUFLc0MsY0FZVixnQkE5QkosQUFNSCxNQWFILElBWUwsV0FDQyxDQVpDLFdBYUksaUJBQ25CLDRCQWpDcUIsZUFNRyxHQWNILDJFQW5CUixBQU1LLFdBTGxCLEtBTUEsRUFheUIsbUdBQ3pCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvUmVjZWl2ZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgc2VsZWN0Q3VycmVudEFjY291bnQgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IHsgc2V0U25hY2tiYXJNZXNzYWdlIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvdWlcIlxuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiXG5pbXBvcnQgeyB1c2VCYWNrZ3JvdW5kU2VsZWN0b3IgfSBmcm9tIFwiLi4vaG9va3NcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVjZWl2ZSgpOiBSZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKVxuXG4gIGNvbnN0IGN1cnJlbnRBY2NvdW50OiB7IGFkZHJlc3M6IHN0cmluZyB9ID1cbiAgICB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0Q3VycmVudEFjY291bnQpXG5cbiAgaWYgKCFjdXJyZW50QWNjb3VudCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uPlxuICAgICAgPGgxPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpY29uX2FjdGl2aXR5X3NlbmRfbWVkaXVtXCIgLz5cbiAgICAgICAge3QoXCJ3YWxsZXQucmVjZWl2ZUFkZHJlc3NcIil9XG4gICAgICA8L2gxPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJxcl9jb2RlXCI+XG4gICAgICAgIDxRUkNvZGUgdmFsdWU9e2N1cnJlbnRBY2NvdW50LmFkZHJlc3N9IHNpemU9ezEyOH0gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb3B5X3dyYXBcIj5cbiAgICAgICAgPFNoYXJlZEJ1dHRvblxuICAgICAgICAgIGljb25NZWRpdW09XCJjb3B5XCJcbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY3VycmVudEFjY291bnQuYWRkcmVzcylcbiAgICAgICAgICAgIGRpc3BhdGNoKHNldFNuYWNrYmFyTWVzc2FnZShcIkNvcGllZCFcIikpXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtgJHtjdXJyZW50QWNjb3VudC5hZGRyZXNzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDcsXG4gICAgICAgICAgKX0uLi4ke2N1cnJlbnRBY2NvdW50LmFkZHJlc3Muc2xpY2UoLTYpfWB9XG4gICAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIHNlY3Rpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5yZWNlaXZlX3dyYXAge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaDEge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5xcl9jb2RlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNzZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTc2cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy13aGl0ZS1hODUpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMzFweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jb3B5X3dyYXAge1xuICAgICAgICAgICAgd2lkdGg6IDIxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmljb25fYWN0aXZpdHlfc2VuZF9tZWRpdW0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi9pbWFnZXMvYWN0aXZpdHlfcmVjZWl2ZV9tZWRpdW1AMngucG5nXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyNHB4IDI0cHg7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9zZWN0aW9uPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Receive.tsx */'));
    }
    function ReadOnlyNotice({isLite = false}) {
      const {t} = useTranslation();
      const currentAccountSigner = useBackgroundSelector(selectCurrentAccountSigner);
      if (currentAccountSigner !== ReadOnlyAccountSigner) return null;
      return react.createElement("div", {
        className: "jsx-2222433005" + " " + (classnames_default()("notice_wrap", {
          is_lite: isLite
        }) || "")
      }, react.createElement("div", {
        className: "jsx-2222433005" + " " + "icon_eye"
      }), isLite ? t("readOnly") : t("readOnlyNotice"), react.createElement(style_default(), {
        id: "2222433005"
      }, '.notice_wrap.jsx-2222433005{width:177px;height:40px;background:rgba(238,178,24,0.1);border-radius:2px;margin:6px 0 10px;font-weight:500;font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:solid 2px var(--c-warning);}.notice_wrap.is_lite.jsx-2222433005{width:120px;background:transparent;border:0;}.icon_eye.jsx-2222433005{background:url("./images/eye@2x.png");background-size:cover;width:24px;height:24px;margin:0px 7px 0px 10px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvUmVhZE9ubHlOb3RpY2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCa0IsQUFHdUIsQUFZQSxBQUswQixZQWhCMUIsQUFZVyxZQVhZLFdBWTFCLEdBSWEsTUFIeEIsWUFab0IsSUFnQlAsV0FDQyxHQWhCTSxTQWlCTSxTQWhCUixlQWlCbEIsQ0FoQmlCLGVBQ0YsMEVBQ00sNkZBQ29CLHVDQUN6QyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1JlYWRPbmx5Tm90aWNlLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlbGVjdEN1cnJlbnRBY2NvdW50U2lnbmVyIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvc2VsZWN0b3JzXCJcbmltcG9ydCB7IFJlYWRPbmx5QWNjb3VudFNpZ25lciB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvc2VydmljZXMvc2lnbmluZ1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVhZE9ubHlOb3RpY2Uoe1xuICBpc0xpdGUgPSBmYWxzZSxcbn06IHtcbiAgaXNMaXRlPzogYm9vbGVhblxufSk6IFJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgY3VycmVudEFjY291bnRTaWduZXIgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0Q3VycmVudEFjY291bnRTaWduZXIpXG5cbiAgaWYgKGN1cnJlbnRBY2NvdW50U2lnbmVyICE9PSBSZWFkT25seUFjY291bnRTaWduZXIpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJub3RpY2Vfd3JhcFwiLCB7XG4gICAgICAgIGlzX2xpdGU6IGlzTGl0ZSxcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvbl9leWVcIiAvPlxuICAgICAge2lzTGl0ZSA/IHQoXCJyZWFkT25seVwiKSA6IHQoXCJyZWFkT25seU5vdGljZVwiKX1cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLm5vdGljZV93cmFwIHtcbiAgICAgICAgICB3aWR0aDogMTc3cHg7XG4gICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjM4LCAxNzgsIDI0LCAwLjEpO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICBtYXJnaW46IDZweCAwIDEwcHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAycHggdmFyKC0tYy13YXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgICAubm90aWNlX3dyYXAuaXNfbGl0ZSB7XG4gICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgfVxuICAgICAgICAuaWNvbl9leWUge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1hZ2VzL2V5ZUAyeC5wbmdcIik7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgbWFyZ2luOiAwcHggN3B4IDBweCAxMHB4O1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/ReadOnlyNotice.tsx */'));
    }
    function ActionButtons(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet"
      });
      const {onReceive} = props;
      const history = useHistory();
      return react.createElement("div", {
        className: "jsx-1353776337" + " " + "action_buttons_wrap"
      }, react.createElement("button", {
        type: "button",
        onClick: () => history.push("/send"),
        className: "jsx-1353776337" + " " + "action_btn send"
      }, react.createElement("svg", {
        width: "20",
        height: "20",
        viewBox: "0 0 20 20",
        fill: "none",
        className: "jsx-1353776337"
      }, react.createElement("path", {
        d: "M18 2L9 11M18 2L12 18L9 11M18 2L2 8L9 11",
        stroke: "currentColor",
        strokeWidth: "2",
        strokeLinecap: "round",
        strokeLinejoin: "round",
        className: "jsx-1353776337"
      })), react.createElement("span", {
        className: "jsx-1353776337"
      }, t("send"))), react.createElement("button", {
        type: "button",
        onClick: onReceive,
        className: "jsx-1353776337" + " " + "action_btn receive"
      }, react.createElement("svg", {
        width: "20",
        height: "20",
        viewBox: "0 0 20 20",
        fill: "none",
        className: "jsx-1353776337"
      }, react.createElement("path", {
        d: "M10 2V18M10 18L14 14M10 18L6 14M16 10H18M2 10H4",
        stroke: "currentColor",
        strokeWidth: "2",
        strokeLinecap: "round",
        strokeLinejoin: "round",
        className: "jsx-1353776337"
      })), react.createElement("span", {
        className: "jsx-1353776337"
      }, t("receive"))), react.createElement(style_default(), {
        id: "1353776337"
      }, '.action_buttons_wrap.jsx-1353776337{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin:18px 0 0;width:100%;}.action_btn.jsx-1353776337{-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:7px;padding:14px 10px;background:var(--c-white-a18);border:1px solid var(--c-white-a35);border-radius:14px;cursor:pointer;-webkit-transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);transition:all 0.2s cubic-bezier(0.34,1.56,0.64,1);font-family:"Segment",sans-serif;color:var(--c-white-a85);font-size:12px;font-weight:700;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}.action_btn.jsx-1353776337:hover.jsx-1353776337:not(:disabled){background:var(--c-white-a28);border-color:var(--c-white-a50);-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.15);}.action_btn.jsx-1353776337:active.jsx-1353776337:not(:disabled){-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}.action_btn.jsx-1353776337 svg.jsx-1353776337{color:var(--c-white-a85);}.action_btn.swap.jsx-1353776337 svg.jsx-1353776337{color:var(--c-white-a85);}.action_btn.disabled.jsx-1353776337{opacity:0.45;cursor:not-allowed;}.action_btn.disabled.jsx-1353776337 svg.jsx-1353776337{color:var(--c-white-a75);}.centered_tooltip.jsx-1353776337{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletAccountBalanceControl.tsx */'));
    }
    function WalletAccountBalanceControl(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet"
      });
      const {balance, initializationLoadingTimeExpired} = props;
      const [openReceiveMenu, setOpenReceiveMenu] = (0, react.useState)(false);
      const hasSavedSeed = true;
      const currentAccountSigner = useBackgroundSelector(selectCurrentAccountSigner);
      const handleClick = (0, react.useCallback)((() => {
        setOpenReceiveMenu((currentlyOpen => !currentlyOpen));
      }), []);
      const shouldIndicateLoading = !initializationLoadingTimeExpired && typeof balance === "undefined";
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenu, {
        isOpen: openReceiveMenu,
        close: handleClick
      }, react.createElement(Receive, null)), react.createElement("div", {
        className: "jsx-1829324293" + " " + "wrap"
      }, react.createElement(SharedSkeletonLoader, {
        height: 48,
        width: 250,
        borderRadius: 14,
        style: {
          margin: "12px 0"
        },
        isLoaded: !shouldIndicateLoading
      }, react.createElement("div", {
        className: "jsx-1829324293" + " " + "balance_label"
      }, t("totalAccountBalance")), react.createElement("span", {
        className: "jsx-1829324293" + " " + "balance_area"
      }, react.createElement("span", {
        "data-testid": "wallet_balance",
        className: "jsx-1829324293" + " " + "balance"
      }, react.createElement("span", {
        className: "jsx-1829324293" + " " + "dollar_sign"
      }, "$"), balance ?? 0))), react.createElement(SharedSkeletonLoader, {
        isLoaded: !shouldIndicateLoading,
        height: 24,
        width: 180,
        style: {
          marginBottom: 10
        }
      }, react.createElement(ReadOnlyNotice, null), currentAccountSigner !== ReadOnlyAccountSigner && (hasSavedSeed ? react.createElement(ActionButtons, {
        onReceive: handleClick
      }) : react.createElement("div", {
        className: "jsx-1829324293" + " " + "save_seed_button_wrap"
      }, react.createElement(SharedButton, {
        iconSmall: "arrow-right",
        size: "large",
        type: "warning",
        linkTo: "/onboarding/2"
      }, t("secureSeed")))))), react.createElement(style_default(), {
        id: "1829324293"
      }, '.wrap.jsx-1829324293{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;box-sizing:border-box;padding:22px 20px 20px;background:var(--c-accent);border-radius:20px;margin:14px 10px 14px;border:none;box-shadow:var(--shadow-md);position:relative;overflow:hidden;}.balance_area.jsx-1829324293{height:52px;margin:6px 0;}.balance.jsx-1829324293{color:var(--c-white-a85);font-size:42px;font-weight:700;line-height:52px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-family:"Segment",sans-serif;-webkit-letter-spacing:-0.03em;-moz-letter-spacing:-0.03em;-ms-letter-spacing:-0.03em;letter-spacing:-0.03em;text-shadow:0 2px 8px rgba(0,0,0,0.15);}.balance_actions.jsx-1829324293{margin-bottom:20px;}.balance_label.jsx-1829324293{width:auto;height:20px;color:var(--c-white-a75);font-size:10px;font-weight:700;line-height:20px;text-align:center;font-family:"Segment",sans-serif;-webkit-letter-spacing:0.12em;-moz-letter-spacing:0.12em;-ms-letter-spacing:0.12em;letter-spacing:0.12em;text-transform:uppercase;margin-bottom:0;}.dollar_sign.jsx-1829324293{width:20px;height:38px;color:var(--c-white-a85);font-size:26px;font-weight:700;line-height:38px;text-align:center;margin-right:4px;margin-left:0;}.save_seed_button_wrap.jsx-1829324293{margin-top:10px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletAccountBalanceControl.tsx */'));
    }
    const bannerCampaigns = [];
    function useBannerCampaigns(chainID) {
      const [currentCampaign, setCurrentCampaign] = (0, react.useState)(null);
      (0, react.useEffect)((() => {
        const currentDate = new Date;
        const relevantCampaings = bannerCampaigns.filter((campaign => campaign.startDate <= currentDate && currentDate <= campaign.endDate && campaign.chains.includes(chainID)));
        setCurrentCampaign(relevantCampaings.reverse()[0] ?? null);
      }), [ chainID ]);
      return currentCampaign;
    }
    function WalletBannerSlideup(props) {
      const {isOpen, onClose, onDismiss} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.banner"
      });
      const dispatch = useBackgroundDispatch();
      const dismiss = () => {
        onDismiss();
        onClose();
      };
      const toggleSettings = () => {
        dispatch(toggleHideBanners(true));
        dispatch(setSnackbarMessage(t("snackbar")));
        onClose();
      };
      return react.createElement(SharedSlideUpMenu, {
        size: "custom",
        customSize: "230px",
        isOpen,
        close: onClose
      }, react.createElement("div", {
        className: "jsx-1540821249" + " " + "wallet_banner_slideup"
      }, react.createElement("h3", {
        className: "jsx-1540821249"
      }, t("notificationTitle")), react.createElement("p", {
        className: "jsx-1540821249"
      }, t("notificationDismissInfo")), react.createElement("div", {
        className: "jsx-1540821249" + " " + "wallet_banner_slideup_buttons"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        onClick: dismiss
      }, t("showNotifications")), react.createElement(SharedButton, {
        type: "tertiary",
        size: "medium",
        onClick: toggleSettings
      }, t("dontShowNotifications")))), react.createElement(style_default(), {
        id: "1540821249"
      }, "h3.jsx-1540821249{color:var(--c-error);font-size:18px;line-height:24px;font-weight:600;margin:0 0 16px;}p.jsx-1540821249{margin:0 0 32px;color:var(--c-text-secondary) font-weight:500;font-size:16px;line-height:24px;}.wallet_banner_slideup.jsx-1540821249{margin:0 24px;}.wallet_banner_slideup_buttons.jsx-1540821249{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-right:10px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvQmFubmVyL1dhbGxldEJhbm5lclNsaWRldXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlEa0IsQUFHZ0MsQUFPTCxBQU9GLEFBR0QsY0FGZixFQU5rQixLQVJELGVBQ0UsaUJBQ0QsU0FPRCxPQU5DLEtBY2MsR0FQYixRQU5uQixTQU9BLCtGQU9vQixrQkFDcEIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1dhbGxldC9CYW5uZXIvV2FsbGV0QmFubmVyU2xpZGV1cC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBzZXRTbmFja2Jhck1lc3NhZ2UsXG4gIHRvZ2dsZUhpZGVCYW5uZXJzLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy91aVwiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZERpc3BhdGNoIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzXCJcbmltcG9ydCBTaGFyZWRCdXR0b24gZnJvbSBcIi4uLy4uL1NoYXJlZC9TaGFyZWRCdXR0b25cIlxuaW1wb3J0IFNoYXJlZFNsaWRlVXBNZW51IGZyb20gXCIuLi8uLi9TaGFyZWQvU2hhcmVkU2xpZGVVcE1lbnVcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXYWxsZXRCYW5uZXJTbGlkZXVwKHByb3BzOiB7XG4gIGlzT3BlbjogYm9vbGVhblxuICBvbkRpc21pc3M6ICgpID0+IHZvaWRcbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgaXNPcGVuLCBvbkNsb3NlLCBvbkRpc21pc3MgfSA9IHByb3BzXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcIndhbGxldC5iYW5uZXJcIixcbiAgfSlcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VCYWNrZ3JvdW5kRGlzcGF0Y2goKVxuXG4gIGNvbnN0IGRpc21pc3MgPSAoKSA9PiB7XG4gICAgb25EaXNtaXNzKClcbiAgICBvbkNsb3NlKClcbiAgfVxuICBjb25zdCB0b2dnbGVTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh0b2dnbGVIaWRlQmFubmVycyh0cnVlKSlcbiAgICBkaXNwYXRjaChzZXRTbmFja2Jhck1lc3NhZ2UodChcInNuYWNrYmFyXCIpKSlcbiAgICBvbkNsb3NlKClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxTaGFyZWRTbGlkZVVwTWVudVxuICAgICAgc2l6ZT1cImN1c3RvbVwiXG4gICAgICBjdXN0b21TaXplPVwiMjMwcHhcIlxuICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICBjbG9zZT17b25DbG9zZX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndhbGxldF9iYW5uZXJfc2xpZGV1cFwiPlxuICAgICAgICA8aDM+e3QoXCJub3RpZmljYXRpb25UaXRsZVwiKX08L2gzPlxuICAgICAgICA8cD57dChcIm5vdGlmaWNhdGlvbkRpc21pc3NJbmZvXCIpfTwvcD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3YWxsZXRfYmFubmVyX3NsaWRldXBfYnV0dG9uc1wiPlxuICAgICAgICAgIDxTaGFyZWRCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgb25DbGljaz17ZGlzbWlzc30+XG4gICAgICAgICAgICB7dChcInNob3dOb3RpZmljYXRpb25zXCIpfVxuICAgICAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgICAgIDxTaGFyZWRCdXR0b24gdHlwZT1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e3RvZ2dsZVNldHRpbmdzfT5cbiAgICAgICAgICAgIHt0KFwiZG9udFNob3dOb3RpZmljYXRpb25zXCIpfVxuICAgICAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBoMyB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtZXJyb3IpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMzJweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXNlY29uZGFyeSlcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgfVxuICAgICAgICAud2FsbGV0X2Jhbm5lcl9zbGlkZXVwIHtcbiAgICAgICAgICBtYXJnaW46IDAgMjRweDtcbiAgICAgICAgfVxuICAgICAgICAud2FsbGV0X2Jhbm5lcl9zbGlkZXVwX2J1dHRvbnMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvU2hhcmVkU2xpZGVVcE1lbnU+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/Banner/WalletBannerSlideup.tsx */"));
    }
    function WalletBanner() {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet.banner"
      });
      const hideBanners = useBackgroundSelector(selectHideBanners);
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      const campaignDetails = useBannerCampaigns(currentNetwork.chainID);
      const [showDismissSlideup, setShowDismissSlideup] = (0, react.useState)(false);
      const [dismissedCampaignId, setDismissedCampaignId] = useLocalStorage("dismissedCampaignBanner", "");
      const campaignId = campaignDetails?.id ?? "";
      const isHidden = hideBanners || !campaignDetails || (campaignId ? dismissedCampaignId === campaignId : !!dismissedCampaignId);
      const {buttons} = campaignDetails ?? {};
      return react.createElement("div", {
        className: "jsx-3954374700" + " " + (classnames_default()("wallet_banner_container", {
          hide: isHidden
        }) || "")
      }, react.createElement(SharedBanner, null, react.createElement("div", {
        className: "jsx-3954374700" + " " + "wallet_banner"
      }, react.createElement(SharedIcon, {
        onClick: () => setShowDismissSlideup(true),
        icon: "icons/s/close.svg",
        ariaLabel: "close",
        width: 16,
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-text-secondary)",
        style: {
          position: "absolute",
          top: 0,
          right: 0
        }
      }), react.createElement("div", {
        className: "jsx-3954374700" + " " + "wallet_banner_content"
      }, react.createElement("h3", {
        className: "jsx-3954374700"
      }, t("bannerTitle")), buttons && react.createElement("div", {
        className: "jsx-3954374700" + " " + "wallet_banner_buttons"
      }, buttons.primary && react.createElement(SharedButton, {
        style: {
          height: "auto"
        },
        size: "medium",
        type: "tertiary",
        iconSmall: "new-tab",
        onClick: () => {
          setDismissedCampaignId(campaignId);
          window.open(buttons.primary?.link, "_blank")?.focus();
        }
      }, buttons.primary.title), buttons.secondary && react.createElement(SharedButton, {
        style: {
          height: "auto",
          marginLeft: "auto"
        },
        size: "medium",
        type: "tertiaryGray",
        iconSmall: "new-tab",
        onClick: () => {
          window.open(buttons.secondary?.link, "_blank")?.focus();
        }
      }, buttons.secondary.title))))), react.createElement(WalletBannerSlideup, {
        isOpen: showDismissSlideup,
        onDismiss: () => setDismissedCampaignId(campaignId),
        onClose: () => setShowDismissSlideup(false)
      }), react.createElement(style_default(), {
        id: "3954374700"
      }, ".wallet_banner.jsx-3954374700{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.wallet_banner_content.jsx-3954374700{width:100%;}h3.jsx-3954374700{margin:0 0 5px;font-weight:600;font-size:18px;line-height:24px;margin-right:25px;color:var(--c-success);}.wallet_banner_buttons.jsx-3954374700{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-top:5px;}.wallet_banner_container.jsx-3954374700{margin:10px 0 25px;max-height:200px;}.wallet_banner_container.hide.jsx-3954374700{max-height:0;margin:0;pointer-events:none;opacity:0;-webkit-transition:all 500ms ease;transition:all 500ms ease;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/Banner/WalletBanner.tsx */"));
    }
    function SharedLoadingDoggo({size, message, padding = "0", margin = "0", animated: animate = true}) {
      return react.createElement("div", {
        "data-testid": "loading_doggo",
        className: style_default().dynamic([ [ "684669004", [ padding, margin, animate ? "running" : "paused" ] ] ])
      }, message && react.createElement("span", {
        className: style_default().dynamic([ [ "684669004", [ padding, margin, animate ? "running" : "paused" ] ] ])
      }, message), react.createElement(style_default(), {
        id: "684669004",
        dynamic: [ padding, margin, animate ? "running" : "paused" ]
      }, `@-webkit-keyframes loading-dots-__jsx-style-dynamic-selector{0%{content:".";}33%{content:"..";}66%{content:"...";}100%{content:"....";}}@keyframes loading-dots-__jsx-style-dynamic-selector{0%{content:".";}33%{content:"..";}66%{content:"...";}100%{content:"....";}}div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:${padding};margin:${margin};}span.__jsx-style-dynamic-selector{color:var(--c-text-secondary);}span.__jsx-style-dynamic-selector::after{content:"";-webkit-animation:loading-dots-__jsx-style-dynamic-selector 2s ease-in forwards;animation:loading-dots-__jsx-style-dynamic-selector 2s ease-in forwards;-webkit-animation-play-state:${animate ? "running" : "paused"};animation-play-state:${animate ? "running" : "paused"};}img.__jsx-style-dynamic-selector{display:block;object-fit:contain;object-position:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkTG9hZGluZ0RvZ2dvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmtCLEFBSXlCLEFBR0MsQUFHQyxBQUdDLEFBSUosQUFRaUIsQUFJbkIsQUFNRyxXQUw2QixDQXpCM0MsQ0FHQSxDQUdBLEFBeUJtQixDQXRCbkIsZUFZRixHQVd5Qix1QkFDekIsa0JBcEJxQix5RkFhK0IsSUFaNUIsOEVBQ2UsMEJBWXZDLFdBWHNDLG9DQUN0QyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZExvYWRpbmdEb2dnby50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcblxudHlwZSBTaGFyZWRMb2FkaW5nRG9nZ29Qcm9wcyA9IHtcbiAgc2l6ZTogbnVtYmVyXG4gIG1lc3NhZ2U/OiBzdHJpbmdcbiAgcGFkZGluZz86IFJlYWN0LkNTU1Byb3BlcnRpZXNbXCJwYWRkaW5nXCJdXG4gIG1hcmdpbj86IFJlYWN0LkNTU1Byb3BlcnRpZXNbXCJtYXJnaW5cIl1cbiAgYW5pbWF0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZExvYWRpbmdEb2dnbyh7XG4gIHNpemUsXG4gIG1lc3NhZ2UsXG4gIHBhZGRpbmcgPSBcIjBcIixcbiAgbWFyZ2luID0gXCIwXCIsXG4gIGFuaW1hdGVkOiBhbmltYXRlID0gdHJ1ZSxcbn06IFNoYXJlZExvYWRpbmdEb2dnb1Byb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwibG9hZGluZ19kb2dnb1wiPlxuICAgICAge21lc3NhZ2UgJiYgPHNwYW4+e21lc3NhZ2V9PC9zcGFuPn1cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nLWRvdHMge1xuICAgICAgICAgIDAlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICAzMyUge1xuICAgICAgICAgICAgY29udGVudDogXCIuLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICA2NiUge1xuICAgICAgICAgICAgY29udGVudDogXCIuLi5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIi4uLi5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGl2IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBwYWRkaW5nOiAke3BhZGRpbmd9O1xuICAgICAgICAgIG1hcmdpbjogJHttYXJnaW59O1xuICAgICAgICB9XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3Bhbjo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nLWRvdHMgMnMgZWFzZS1pbiBmb3J3YXJkcztcbiAgICAgICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogJHthbmltYXRlID8gXCJydW5uaW5nXCIgOiBcInBhdXNlZFwifTtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedLoadingDoggo.tsx */`));
    }
    function noop_noop() {}
    const noPreviewLink = "./images/no_preview.svg";
    function NFTImage({width, height, alt, src, highResolutionSrc, fit = "cover", isBadge = false, isZoomed = false, style}) {
      const [isLoading, setIsLoading] = (0, react.useState)(true);
      const [imageUrl, setImageUrl] = (0, react.useState)(src || noPreviewLink);
      (0, react.useEffect)((() => {
        if (!highResolutionSrc) {
          return noop_noop;
        }
        const img = new Image;
        const handleSuccessfulLoad = () => setImageUrl(highResolutionSrc);
        img.src = highResolutionSrc;
        img.addEventListener("load", handleSuccessfulLoad);
        return () => {
          img.removeEventListener("load", handleSuccessfulLoad);
        };
      }), [ highResolutionSrc ]);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        style,
        className: style_default().dynamic([ [ "2946251269", [ width, height ? `${height}px` : "auto", fit, height ?? "100%", width ?? "100%", width * .8, height ? `${height * .8}px` : "auto", width * .1, isBadge ? "100%" : "8px", width, height || width + 40, imageUrl ] ] ]) + " " + (classnames_default()("nft_image_wrapper", {
          badge: isBadge
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2946251269", [ width, height ? `${height}px` : "auto", fit, height ?? "100%", width ?? "100%", width * .8, height ? `${height * .8}px` : "auto", width * .1, isBadge ? "100%" : "8px", width, height || width + 40, imageUrl ] ] ]) + " " + "nft_image_background"
      }), react.createElement("img", {
        loading: "lazy",
        onLoad: () => setIsLoading(false),
        alt,
        src: imageUrl,
        width,
        height,
        onError: ({currentTarget}) => {
          currentTarget.onerror = null;
          setImageUrl("./images/no_preview.svg");
          setIsLoading(false);
        },
        className: style_default().dynamic([ [ "2946251269", [ width, height ? `${height}px` : "auto", fit, height ?? "100%", width ?? "100%", width * .8, height ? `${height * .8}px` : "auto", width * .1, isBadge ? "100%" : "8px", width, height || width + 40, imageUrl ] ] ]) + " " + (classnames_default()({
          loading: isLoading,
          badge: isBadge,
          zoom: isZoomed
        }) || "")
      })), react.createElement(style_default(), {
        id: "2946251269",
        dynamic: [ width, height ? `${height}px` : "auto", fit, height ?? "100%", width ?? "100%", width * .8, height ? `${height * .8}px` : "auto", width * .1, isBadge ? "100%" : "8px", width, height || width + 40, imageUrl ]
      }, `@-webkit-keyframes pulse-__jsx-style-dynamic-selector{0%{background-color:var(--c-bg-alt);}50%{background-color:var(--c-bg);}100%{background-color:var(--c-bg-alt);}}@keyframes pulse-__jsx-style-dynamic-selector{0%{background-color:var(--c-bg-alt);}50%{background-color:var(--c-bg);}100%{background-color:var(--c-bg-alt);}}img.__jsx-style-dynamic-selector{width:${width}px;height:${height ? `${height}px` : "auto"};object-fit:${fit};max-height:${height ?? "100%"};max-width:${width ?? "100%"};-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-transition:-webkit-transform 200ms ease-in-out;-webkit-transition:transform 200ms ease-in-out;transition:transform 200ms ease-in-out;}img.zoom.__jsx-style-dynamic-selector{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5);}img.badge.__jsx-style-dynamic-selector{position:absolute;top:0;left:0;width:${width * .8}px;height:${height ? `${height * .8}px` : "auto"};margin:${width * .1}px;border-radius:100%;}img.loading.__jsx-style-dynamic-selector{background-color:var(--c-bg-alt);border-radius:${isBadge ? "100%" : "8px"};-webkit-animation:pulse-__jsx-style-dynamic-selector 1.1s infinite;animation:pulse-__jsx-style-dynamic-selector 1.1s infinite;}.nft_image_wrapper.__jsx-style-dynamic-selector{border-radius:8px;overflow:hidden;}.nft_image_wrapper.badge.__jsx-style-dynamic-selector{overflow:hidden;position:relative;width:${width}px;height:${height || width + 40}px;}.nft_image_wrapper.badge.__jsx-style-dynamic-selector .nft_image_background.__jsx-style-dynamic-selector{width:120%;height:120%;position:absolute;top:-10%;left:-10%;background:no-repeat center/200% url(${imageUrl});-webkit-filter:blur(20px);filter:blur(20px);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTImage.tsx */`));
    }
    const icons = {
      close: {
        icon: "close",
        label: "nfts.collectionHover.close",
        background: "var(--c-text-tertiary)",
        backgroundHover: "var(--c-text-secondary)",
        size: 12
      },
      expand: {
        icon: "chevron",
        label: "nfts.collectionHover.expand",
        background: "var(--c-success)",
        size: 12,
        style: {
          marginBottom: 3
        }
      },
      view: {
        icon: "eye",
        label: "nfts.collectionHover.view",
        background: "var(--c-accent)",
        size: 22
      }
    };
    const getIconType = (isCollection, isExpanded) => {
      if (isCollection) {
        return isExpanded ? "close" : "expand";
      }
      return "view";
    };
    function NFTsHover(props) {
      const {isCollection = false, isExpanded = false, onClick} = props;
      const {t} = useTranslation();
      const iconType = getIconType(isCollection, isExpanded);
      const {icon, label, background, backgroundHover, size, style} = icons[iconType];
      return react.createElement("button", {
        type: "button",
        "data-testid": iconType,
        onClick,
        className: style_default().dynamic([ [ "478010502", [ isExpanded ? 1 : 0, background, backgroundHover ?? background ] ] ]) + " " + "nft_hover"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "478010502", [ isExpanded ? 1 : 0, background, backgroundHover ?? background ] ] ])
      }, t(label)), react.createElement("div", {
        className: style_default().dynamic([ [ "478010502", [ isExpanded ? 1 : 0, background, backgroundHover ?? background ] ] ]) + " " + "nft_hover_icon"
      }, react.createElement(SharedIcon, {
        icon: `${icon}@2x.png`,
        width: size,
        color: "var(--c-bg-alt)",
        style
      })), react.createElement(style_default(), {
        id: "478010502",
        dynamic: [ isExpanded ? 1 : 0, background, backgroundHover ?? background ]
      }, `.nft_hover.__jsx-style-dynamic-selector{opacity:${isExpanded ? 1 : 0};position:absolute;top:0;width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background:var(--c-black-a45);border-radius:4px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:14px;font-weight:500;line-height:16px;-webkit-letter-spacing:3%;-moz-letter-spacing:3%;-ms-letter-spacing:3%;letter-spacing:3%;z-index:1;-webkit-transition:opacity 200ms ease-in-out;transition:opacity 200ms ease-in-out;}.nft_hover.__jsx-style-dynamic-selector:hover{opacity:1;}.nft_hover_icon.__jsx-style-dynamic-selector{margin-top:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background:${background};width:32px;height:32px;border-radius:100%;-webkit-transition:background 200ms ease-in-out;transition:background 200ms ease-in-out;}.nft_hover.__jsx-style-dynamic-selector:hover .nft_hover_icon.__jsx-style-dynamic-selector{background:${backgroundHover ?? background};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTHover.tsx */`));
    }
    function NFTItem(props) {
      const {onClick, isCollection = false, isExpanded = false, item} = props;
      const {name = "No title", chainID, thumbnailURL} = item;
      const network = NETWORK_BY_CHAIN_ID[chainID];
      const floorPrice = "floorPrice" in item && item.floorPrice?.value !== undefined && item.floorPrice;
      const nftsCount = "nftCount" in item && item.nftCount;
      const isBadge = "isBadge" in item && item.isBadge;
      const [hasHover, setHasHover] = (0, react.useState)(false);
      return react.createElement("div", {
        "data-testid": isCollection ? "nft_list_item_collection" : "nft_list_item_single",
        className: "jsx-2063305800" + " " + "nft_item"
      }, react.createElement("div", {
        onMouseEnter: () => setHasHover(true),
        onMouseLeave: () => setHasHover(false),
        className: "jsx-2063305800" + " " + "nft_image"
      }, react.createElement(NFTImage, {
        src: thumbnailURL,
        alt: name,
        width: 168,
        height: 168,
        isBadge,
        isZoomed: hasHover || isExpanded
      }), react.createElement("div", {
        className: "jsx-2063305800" + " " + "nft_image_details"
      }, react.createElement(SharedNetworkIcon, {
        network,
        size: 24,
        hasBackground: true,
        backgroundOpacity: .75,
        padding: 6,
        squared: true
      }), !!floorPrice && react.createElement("div", {
        className: "jsx-2063305800" + " " + "nft_item_price"
      }, "~", `${floorPrice.value} ${floorPrice.tokenSymbol}`)), react.createElement(NFTsHover, {
        onClick: () => onClick(item),
        isCollection,
        isExpanded
      })), react.createElement("div", {
        className: "jsx-2063305800" + " " + "nft_item_details"
      }, react.createElement("span", {
        className: "jsx-2063305800" + " " + "ellipsis"
      }, name?.length ? name : "No title"), !!nftsCount && react.createElement("span", {
        className: "jsx-2063305800" + " " + "nft_item_count"
      }, "(", nftsCount, ")")), react.createElement(style_default(), {
        id: "2063305800"
      }, ".nft_item.jsx-2063305800{width:168px;margin:8px 0;}.nft_item_price.jsx-2063305800{background:rgba(1,56,52,0.75);padding:4px 5px;font-weight:500;font-size:14px;line-height:16px;-webkit-letter-spacing:3%;-moz-letter-spacing:3%;-ms-letter-spacing:3%;letter-spacing:3%;border-radius:6px;}.nft_image.jsx-2063305800{position:relative;}.nft_image_details.jsx-2063305800{position:absolute;top:0;width:100%;padding:4px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:calc(100% - 8px);}.nft_item_details.jsx-2063305800{height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;font-weight:500;line-height:16px;margin:8px 0 4px;}.nft_item_count.jsx-2063305800{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--c-text-tertiary);margin-left:3px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTItem.tsx */"));
    }
    function NFTCollection(props) {
      const {collection, openPreview, isExpanded, setExpandedID} = props;
      const {id, owner, chainID, nfts, nftCount, hasNextPage} = collection;
      const dispatch = useBackgroundDispatch();
      const network = NETWORK_BY_CHAIN_ID[chainID];
      const [isLoading, setIsLoading] = (0, react.useState)(false);
      const [isUpdating, setIsUpdating] = (0, react.useState)(false);
      const [wasUpdated, setWasUpdated] = (0, react.useState)(false);
      const fetchCollection = (0, react.useCallback)((() => dispatch(fetchNFTsFromCollection({
        collectionID: id,
        account: {
          address: owner,
          network
        }
      }))), [ id, owner, network, dispatch ]);
      const fetchMore = (0, react.useCallback)((() => dispatch(fetchMoreNFTsFromCollection({
        collectionID: id,
        account: {
          address: owner,
          network
        }
      }))), [ id, owner, network, dispatch ]);
      const intersectionCallback = (0, react.useCallback)((([element]) => {
        if (element.isIntersecting && !wasUpdated) {
          if (!nfts.length && !isLoading) {
            setIsLoading(true);
            fetchCollection().finally((() => {
              setIsLoading(false);
              setWasUpdated(true);
            }));
          }
          if (nfts.length === 1 && !isUpdating) {
            setIsUpdating(true);
            fetchCollection().finally((() => {
              setIsUpdating(false);
              setWasUpdated(true);
            }));
          }
        }
      }), [ fetchCollection, isLoading, isUpdating, wasUpdated, nfts.length ]);
      const collectionRef = useIntersectionObserver(intersectionCallback, {
        threshold: .1
      });
      const loadMoreCallback = (0, react.useCallback)((([element]) => {
        if (element.isIntersecting && !isUpdating) {
          if (hasNextPage) setIsUpdating(true);
          fetchMore().finally((() => {
            setIsUpdating(false);
          }));
        }
      }), [ fetchMore, hasNextPage, isUpdating ]);
      const loadMoreRef = useIntersectionObserver(loadMoreCallback, {
        threshold: .1
      });
      (0, react.useEffect)((() => {
        if (isExpanded && !wasUpdated) {
          setIsUpdating(true);
          fetchCollection().finally((() => {
            setIsUpdating(false);
            setWasUpdated(true);
          }));
        }
      }), [ fetchCollection, isExpanded, wasUpdated ]);
      const toggleCollection = () => isExpanded ? setExpandedID(null, null) : setExpandedID(id, owner);
      const onItemClick = nft => openPreview({
        nft,
        collection
      });
      if ((!nftCount || !nfts.length) && !isLoading && wasUpdated) return null;
      return react.createElement(react.Fragment, null, react.createElement("div", {
        "data-testid": "nft_list_item",
        className: "jsx-3637026882" + " " + (classnames_default()("nft_collection_wrapper", {
          expanded: isExpanded && !isLoading,
          invisible: !nftCount
        }) || "")
      }, react.createElement("li", {
        ref: collectionRef,
        className: "jsx-3637026882" + " " + (classnames_default()("nft_collection", {
          expanded: isExpanded && !isLoading
        }) || "")
      }, react.createElement(SharedSkeletonLoader, {
        isLoaded: !isLoading && !!nfts.length,
        width: 168,
        height: 168,
        style: {
          margin: "8px 0 34px"
        }
      }, nfts.length === 1 ? react.createElement(NFTItem, {
        item: {
          ...collection,
          thumbnailURL: nfts[0].thumbnailURL || collection.thumbnailURL
        },
        onClick: () => onItemClick(nfts[0])
      }) : react.createElement(NFTItem, {
        item: {
          ...collection,
          thumbnailURL: nfts[0]?.thumbnailURL || collection.thumbnailURL
        },
        onClick: toggleCollection,
        isCollection: true,
        isExpanded
      }), isExpanded && react.createElement(react.Fragment, null, nfts.map((nft => react.createElement(NFTItem, {
        key: nft.id,
        item: nft,
        onClick: onItemClick
      }))), react.createElement(SharedSkeletonLoader, {
        isLoaded: !isUpdating,
        width: 168,
        height: 168,
        style: {
          margin: "8px 0"
        }
      }), react.createElement("div", {
        ref: loadMoreRef,
        className: "jsx-3637026882" + " " + "nft_load_more"
      }))))), react.createElement(style_default(), {
        id: "2753761767"
      }, ".nft_collection_wrapper.jsx-3637026882{position:relative;width:168px;min-height:212px;}.nft_collection.jsx-3637026882{position:absolute;margin:0;padding:0;background:transparent;width:168px;-webkit-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;}.nft_collection.expanded.jsx-3637026882{width:352px;z-index:3;margin:8px -16px;padding:8px 16px 6px;background:var(--c-bg-alt);box-shadow: 0 3px 7px rgb(0 20 19 / 54%), 0 14px 16px rgb(0 20 19 / 54%), 0 32px 32px rgb(0 20 19 / 20%);border-radius:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.nft_collection_wrapper.jsx-3637026882:nth-child(even) .nft_collection.expanded.jsx-3637026882{right:0;}.nft_collection_wrapper.invisible.jsx-3637026882{opacity:0;pointer-events:none;position:absolute;bottom:0;}.nft_load_more.jsx-3637026882{width:100%;height:1px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTCollection.tsx */"), react.createElement(style_default(), {
        id: "1734366476"
      }, "@-webkit-keyframes show{0%{opacity:0;position:absolute;}50%{position:static;}100%{opacity:1;}}@keyframes show{0%{opacity:0;position:absolute;}50%{position:static;}100%{opacity:1;}}.nft_collection.expanded .nft_item:not(:first-child),.nft_collection.expanded .skeleton{-webkit-animation-name:show;animation-name:show;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-duration:0.8s;animation-duration:0.8s;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTCollection.tsx */"));
    }
    const MARKET_LINK = {};
    function getRelevantMarketsList(_nft) {
      return [];
    }
    const HARDCODED_MARKETS = [];
    const HARDCODED_BADGES = [];
    function ExploreMarketButton(props) {
      const {title, icon, smallIcon, smallHoverIcon, color, hoverColor} = props;
      return react.createElement("div", {
        className: style_default().dynamic([ [ "1865477288", [ color, smallIcon ?? icon, hoverColor, smallHoverIcon ?? smallIcon ?? icon ] ] ]) + " " + "market_wrapper"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1865477288", [ color, smallIcon ?? icon, hoverColor, smallHoverIcon ?? smallIcon ?? icon ] ] ]) + " " + "market_icon"
      }), title, react.createElement(style_default(), {
        id: "1865477288",
        dynamic: [ color, smallIcon ?? icon, hoverColor, smallHoverIcon ?? smallIcon ?? icon ]
      }, `.market_wrapper.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;color:${color};padding:0px 4px;font-family:Segment;font-size:16px;font-weight:600;line-height:24px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;text-align:center;}.market_icon.__jsx-style-dynamic-selector{width:16px;height:16px;background-image:url("images/marketplaces/${smallIcon ?? icon}");background-size:contain;background-repeat:no-repeat;background-position:center;}.market_wrapper.__jsx-style-dynamic-selector:hover{color:${hoverColor};}.market_wrapper.__jsx-style-dynamic-selector:hover .market_icon.__jsx-style-dynamic-selector{background-image:url("images/marketplaces/${smallHoverIcon ?? smallIcon ?? icon}");}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/ExploreMarketLink.tsx */`));
    }
    function ExploreMarketIcon(props) {
      const {icon, title} = props;
      return react.createElement("div", {
        className: style_default().dynamic([ [ "2458223691", [ icon ] ] ]) + " " + "market_wrapper"
      }, react.createElement(SharedTooltip, {
        type: "dark",
        verticalPosition: "bottom",
        horizontalPosition: "center",
        horizontalShift: 10,
        width: 75,
        height: 34,
        IconComponent: () => react.createElement("div", {
          className: style_default().dynamic([ [ "2458223691", [ icon ] ] ]) + " " + "market_icon"
        })
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2458223691", [ icon ] ] ]) + " " + "market_title"
      }, title)), react.createElement(style_default(), {
        id: "2458223691",
        dynamic: [ icon ]
      }, `.market_icon.__jsx-style-dynamic-selector{width:32px;height:32px;background-image:url("images/marketplaces/${icon}");opacity:0.8;background-size:contain;background-repeat:no-repeat;background-position:center;text-align:center;}.market_title.__jsx-style-dynamic-selector{text-align:center;}.market_wrapper.__jsx-style-dynamic-selector:hover .market_icon.__jsx-style-dynamic-selector{opacity:1;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/ExploreMarketLink.tsx */`));
    }
    function ExploreMarketLink(props) {
      const {type, title, url} = props;
      return react.createElement("a", {
        className: type,
        title,
        href: url,
        rel: "noreferrer",
        target: "_blank"
      }, type === "button" ? react.createElement(ExploreMarketButton, props) : react.createElement(ExploreMarketIcon, props));
    }
    const MAX_DESCRIPTION_LENGTH = 180;
    const LINK_REGEX = /\[([\w\s\d]+)\]\((https?:\/\/[\w\d./?=#]+)\)/gm;
    const removeMarkdownLinks = description => description.replace(LINK_REGEX, "$1");
    const parseDescription = (description = "") => trimWithEllipsis(removeMarkdownLinks(description), MAX_DESCRIPTION_LENGTH);
    function NFTPreview(props) {
      const {nft, collection} = props;
      const {thumbnailURL, previewURL, contract, name, chainID, owner, description, attributes, supply, isBadge, rarityRank} = nft;
      const {totalNftCount, id: collectionID} = collection;
      const network = NETWORK_BY_CHAIN_ID[chainID];
      const floorPrice = "floorPrice" in collection && collection.floorPrice?.value !== undefined && collection.floorPrice;
      const dispatch = useBackgroundDispatch();
      const ownerName = useBackgroundSelector((state => getAccountNameOnChain(state, {
        address: owner,
        network
      })));
      const backdropRef = useIntersectionObserver((([div]) => {
        if (div.isIntersecting) {
          div.target.classList.remove("preview_backdrop");
          div.target.classList.add("preview_backdrop");
        }
      }), {
        threshold: .8
      });
      const marketsList = (0, react.useMemo)((() => getRelevantMarketsList(nft)), [ nft ]);
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      const refetchNFTs = (0, react.useCallback)((() => dispatch(refetchNFTsFromCollection({
        collectionID,
        account: {
          address: owner,
          network
        }
      }))), [ collectionID, owner, network, dispatch ]);
      const localizedTotalCount = (totalNftCount ?? supply)?.toLocaleString();
      const localizedRarityRank = rarityRank?.toLocaleString();
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_wrapper"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_image"
      }, react.createElement(NFTImage, {
        src: thumbnailURL,
        highResolutionSrc: previewURL,
        alt: name,
        width: 384,
        height: isBadge ? 384 : undefined,
        isBadge,
        style: {
          borderRadius: "0 0 8px 8px"
        }
      }), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_network"
      }, react.createElement(SharedNetworkIcon, {
        network,
        size: 24,
        padding: 6,
        squared: true,
        hasBackground: true
      })), react.createElement("div", {
        ref: backdropRef,
        className: "jsx-3412119788" + " " + "preview_details"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_column"
      }, react.createElement("span", {
        className: "jsx-3412119788" + " " + "preview_details_header"
      }, t("preview.owner")), react.createElement("span", {
        className: "jsx-3412119788" + " " + "preview_details_value"
      }, react.createElement(SharedAddress, {
        address: owner,
        name: ownerName,
        elide: true
      }))), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_column align_right no_shrink"
      }, react.createElement("span", {
        className: "jsx-3412119788" + " " + "preview_details_header"
      }, t("preview.floorPrice")), react.createElement("span", {
        className: "jsx-3412119788" + " " + "preview_details_value"
      }, floorPrice ? `~${floorPrice.value} ${floorPrice.tokenSymbol}` : "-")))), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_header"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_row"
      }, react.createElement("h1", {
        className: "jsx-3412119788" + " " + "ellipsis_multiline"
      }, name || t("noTitle")), isEnabled(FeatureFlags.SUPPORT_NFT_SEND) && react.createElement(SharedButton, {
        type: "tertiary",
        size: "small",
        iconSmall: "send",
        iconPosition: "left"
      }, t("preview.send"))), rarityRank !== null && react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_rarity_wrapper"
      }, react.createElement(SharedTooltip, {
        height: 37,
        horizontalPosition: "right",
        IconComponent: () => react.createElement("span", {
          className: "jsx-3412119788" + " " + "preview_rarity"
        }, t("preview.rank"), ":", react.createElement("span", {
          className: "jsx-3412119788" + " " + "preview_rarity_rank"
        }, " ", localizedRarityRank))
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "no_wrap"
      }, t("preview.rarityRank"), ": ", localizedRarityRank, " /", " ", localizedTotalCount)))), !!marketsList.length && react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_header"
      }, " ", t("preview.viewOn")), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_row preview_markets"
      }, marketsList.map((({url, title, icon, getNFTLink}) => react.createElement(ExploreMarketLink, {
        type: "icon",
        key: url,
        url: getNFTLink(nft),
        title,
        icon
      }))))), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_header"
      }, t("preview.description")), react.createElement("p", {
        className: "jsx-3412119788"
      }, parseDescription(description) || "-")), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section preview_section_row"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_column"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_header"
      }, t("preview.itemsCount")), react.createElement("p", {
        className: "jsx-3412119788"
      }, localizedTotalCount ?? "-")), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_column align_right"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_header"
      }, t("preview.creator")), contract?.length ? react.createElement(SharedAddress, {
        address: contract,
        elide: true
      }) : "-")), react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section"
      }, react.createElement("div", {
        className: "jsx-3412119788" + " " + "preview_section_header"
      }, t("preview.properties")), !!attributes.length && react.createElement("div", {
        "data-testid": "nft_properties_list",
        className: "jsx-3412119788" + " " + "preview_property_list preview_section_row"
      }, attributes.map((({trait, value}) => !!value && react.createElement("div", {
        key: trait,
        className: "jsx-3412119788" + " " + "preview_property preview_section_column"
      }, react.createElement("span", {
        className: "jsx-3412119788" + " " + "preview_property_trait"
      }, trait), react.createElement("span", {
        title: value,
        className: "jsx-3412119788" + " " + "preview_property_value ellipsis"
      }, value))))), react.createElement(SharedButton, {
        type: "tertiaryWhite",
        iconSmall: "refresh",
        iconPosition: "left",
        size: "small",
        style: {
          padding: 0
        },
        onClick: refetchNFTs
      }, t("preview.refresh")))), react.createElement(style_default(), {
        id: "3412119788"
      }, "@-webkit-keyframes progressive-blur-jsx-3412119788{0%{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);}100%{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}}@keyframes progressive-blur-jsx-3412119788{0%{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);}100%{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}}.preview_wrapper.jsx-3412119788{height:100%;width:100%;overflow:auto;}.preview_image.jsx-3412119788{position:relative;}.preview_network.jsx-3412119788{position:absolute;top:16px;left:16px;}.preview_details.jsx-3412119788{position:absolute;bottom:14px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 16px;padding:4px 8px;width:calc(100% - 48px);-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background:var(--c-black-a45);border-radius:8px;}.preview_backdrop.jsx-3412119788{-webkit-animation:progressive-blur-jsx-3412119788 120ms ease-in forwards;animation:progressive-blur-jsx-3412119788 120ms ease-in forwards;}.preview_details_header.jsx-3412119788{font-weight:500;font-size:12px;line-height:16px;}.preview_details_value.jsx-3412119788{font-weight:500;font-size:16px;line-height:24px;}.preview_header.jsx-3412119788{margin:20px 24px;}.preview_header.jsx-3412119788 h1.jsx-3412119788{margin:0;font-size:22px;line-height:32px;font-weight:500;}.preview_section.jsx-3412119788{margin:0 24px 24px;}.preview_section.jsx-3412119788 p.jsx-3412119788{font-weight:500;font-size:16px;line-height:24px;overflow-wrap:break-word;color:var(--c-text-secondary);margin:0;}.preview_section_column.jsx-3412119788{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;}.preview_section_row.jsx-3412119788{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.preview_section_column.align_right.jsx-3412119788{text-align:right;}.preview_section_header.jsx-3412119788{font-weight:500;font-size:14px;line-height:16px;color:var(--c-text-tertiary);margin-bottom:4px;}.preview_property.jsx-3412119788{box-sizing:border-box;background:var(--c-bg-alt);width:160px;border-radius:4px;padding:8px;margin-bottom:16px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:16px;font-weight:500;}.preview_property_list.jsx-3412119788{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:8px -4px 0;}.preview_property_trait.jsx-3412119788{color:var(--c-text-tertiary);font-size:12px;width:100%;text-align:center;}.preview_property_value.jsx-3412119788{font-size:14px;width:100%;text-align:center;}.preview_markets.jsx-3412119788{margin-top:8px;gap:24px;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}.preview_rarity_wrapper.jsx-3412119788{margin:12px -8px 14px;}.preview_rarity.jsx-3412119788{display:inline-block;background:var(--c-bg-alt);border:2px solid var(--c-text-tertiary);border-radius:25px;color:var(--c-text-tertiary);line-height:24px;font-size:14px;font-weight:500;padding:2px 12px 0;}.preview_rarity_rank.jsx-3412119788{color:var(--c-text);font-size:16px;}.no_shrink.jsx-3412119788{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.no_wrap.jsx-3412119788{overflow:hidden;white-space:nowrap;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTPreview.tsx */"));
    }
    function NFTList(props) {
      const {collections, expandBadgesCollections = false} = props;
      const [isPreviewOpen, setIsPreviewOpen] = (0, react.useState)(false);
      const [currentNFTPreview, setCurrentNFTPreview] = (0, react.useState)(null);
      const [currentExpandedID, setCurrentExpandedID] = (0, react.useState)(null);
      const setExpandedID = (0, react.useCallback)(((id, owner) => setCurrentExpandedID(`${id}_${owner}`)), []);
      const isReloading = useBackgroundSelector(selectIsReloadingNFTs);
      const openPreview = current => {
        setIsPreviewOpen(true);
        setCurrentNFTPreview(current);
      };
      const closePreview = () => {
        setIsPreviewOpen(false);
        setCurrentNFTPreview(null);
      };
      if (isReloading) return react.createElement(SharedLoadingDoggo, {
        size: 78,
        message: "Fetching NFTs",
        padding: "20px 0 0"
      });
      return react.createElement(react.Fragment, null, react.createElement("ul", {
        className: "jsx-2048315488" + " " + "nft_list"
      }, collections.map((collection => collection.hasBadges && expandBadgesCollections && collection.nfts.length ? collection.nfts.map((nft => react.createElement(NFTItem, {
        key: `${nft.id}_${nft.owner}`,
        item: {
          ...nft,
          floorPrice: collection.floorPrice
        },
        onClick: () => openPreview({
          nft,
          collection
        })
      }))) : react.createElement(NFTCollection, {
        key: `${collection.id}_${collection.owner}`,
        openPreview,
        collection,
        setExpandedID,
        isExpanded: `${collection.id}_${collection.owner}` === currentExpandedID
      })))), react.createElement(SharedSlideUpMenu, {
        isOpen: isPreviewOpen,
        close: closePreview,
        size: "large",
        testid: "nft_preview_menu",
        isFullScreen: true
      }, currentNFTPreview && react.createElement(NFTPreview, {
        nft: currentNFTPreview.nft,
        collection: currentNFTPreview.collection
      })), react.createElement(style_default(), {
        id: "2048315488"
      }, ".nft_list.jsx-2048315488{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:8px 0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTList.tsx */"));
    }
    function NFTsExploreBanner(props) {
      const {type} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      const items = type === "badge" ? HARDCODED_BADGES : HARDCODED_MARKETS;
      return react.createElement(SharedBanner, {
        style: {
          marginTop: 10
        }
      }, react.createElement("header", {
        className: "jsx-3062496101"
      }, t(`emptyBannerTitle.${type}`)), react.createElement("nav", {
        className: "jsx-3062496101"
      }, items.map((({title, url, icon, color, hoverColor, smallHoverIcon, smallIcon}) => react.createElement(ExploreMarketLink, {
        key: url,
        type: "button",
        url,
        title,
        color,
        hoverColor,
        smallIcon,
        smallHoverIcon,
        icon
      })))), react.createElement(style_default(), {
        id: "3062496101"
      }, "header.jsx-3062496101{font-family:Segment;font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;margin-bottom:16px;}nav.jsx-3062496101{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-bottom:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVHNFeHBsb3JlQmFubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnRGtCLEFBRytCLEFBVVAsb0JBVEUsZUFDQyxnQkFDQyxpQkFDRSxNQU9JLHVGQU5MLFlBT1YsTUFOVyxFQU9ELGlCQU5wQixDQU9BIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVHNFeHBsb3JlQmFubmVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkQmFubmVyIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkQmFubmVyXCJcbmltcG9ydCBFeHBsb3JlTWFya2V0TGluaywge1xuICBIQVJEQ09ERURfQkFER0VTLFxuICBIQVJEQ09ERURfTUFSS0VUUyxcbn0gZnJvbSBcIi4vRXhwbG9yZU1hcmtldExpbmtcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBORlRzRXhwbG9yZUJhbm5lcihwcm9wczoge1xuICB0eXBlOiBcImJhZGdlXCIgfCBcIm5mdHNcIlxufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdHlwZSB9ID0gcHJvcHNcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHtcbiAgICBrZXlQcmVmaXg6IFwibmZ0c1wiLFxuICB9KVxuXG4gIGNvbnN0IGl0ZW1zID0gdHlwZSA9PT0gXCJiYWRnZVwiID8gSEFSRENPREVEX0JBREdFUyA6IEhBUkRDT0RFRF9NQVJLRVRTXG5cbiAgcmV0dXJuIChcbiAgICA8U2hhcmVkQmFubmVyIHN0eWxlPXt7IG1hcmdpblRvcDogMTAgfX0+XG4gICAgICA8aGVhZGVyPnt0KGBlbXB0eUJhbm5lclRpdGxlLiR7dHlwZX1gKX08L2hlYWRlcj5cbiAgICAgIDxuYXY+XG4gICAgICAgIHtpdGVtcy5tYXAoXG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgaG92ZXJDb2xvcixcbiAgICAgICAgICAgIHNtYWxsSG92ZXJJY29uLFxuICAgICAgICAgICAgc21hbGxJY29uLFxuICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgIDxFeHBsb3JlTWFya2V0TGlua1xuICAgICAgICAgICAgICBrZXk9e3VybH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHsuLi57XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgICAgIGhvdmVyQ29sb3IsXG4gICAgICAgICAgICAgICAgc21hbGxJY29uLFxuICAgICAgICAgICAgICAgIHNtYWxsSG92ZXJJY29uLFxuICAgICAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICksXG4gICAgICAgICl9XG4gICAgICA8L25hdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgaGVhZGVyIHtcbiAgICAgICAgICBmb250LWZhbWlseTogU2VnbWVudDtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMGVtO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbmF2IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdhcDogOHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvU2hhcmVkQmFubmVyPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTsExploreBanner.tsx */"));
    }
    function NFTListCurrentWallet() {
      const collections = useBackgroundSelector(selectCurrentAccountNFTs);
      const nftCount = useBackgroundSelector(selectCurrentAccountNFTsCount);
      const isLoading = useBackgroundSelector(selectIsReloadingNFTs);
      useNFTsReload();
      if (!nftCount && !isLoading) return react.createElement(NFTsExploreBanner, {
        type: "nfts"
      });
      return react.createElement(NFTList, {
        collections
      });
    }
    function WalletHiddenAssets({assetAmounts}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "wallet"
      });
      const selectedAccount = useBackgroundSelector(selectCurrentAccount);
      const mountedRef = useIsMounted();
      const hiddenAssetsRef = (0, react.useRef)(null);
      const buttonRef = (0, react.useRef)(null);
      const [maxHeight, setMaxHeight] = (0, react.useState)(0);
      const [isOpen, setIsOpen] = (0, react.useState)(false);
      const stateOfHiddenAssets = isOpen ? t("unverifiedAssets.stateOfHiddenAssets1") : t("unverifiedAssets.stateOfHiddenAssets2");
      (0, react.useEffect)((() => {
        if (hiddenAssetsRef.current) {
          setMaxHeight(hiddenAssetsRef.current.scrollHeight);
        }
      }), [ hiddenAssetsRef?.current?.scrollHeight ]);
      (0, react.useEffect)((() => {
        setIsOpen(false);
      }), [ selectedAccount ]);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        ref: buttonRef,
        className: style_default().dynamic([ [ "1672244779", [ maxHeight ] ] ]) + " " + "hidden_assets_button"
      }, react.createElement(SharedButton, {
        type: "tertiaryGray",
        size: "small",
        onClick: () => {
          setIsOpen((prevState => !prevState));
          setTimeout((() => {
            if (!isOpen) {
              buttonRef.current?.scrollIntoView({
                behavior: "smooth"
              });
            }
          }), 500);
        }
      }, t("unverifiedAssets.hiddenAssets", {
        stateOfHiddenAssets,
        amount: assetAmounts.length
      }))), react.createElement("div", {
        ref: hiddenAssetsRef,
        "data-testid": "hidden_assets_container",
        className: style_default().dynamic([ [ "1672244779", [ maxHeight ] ] ]) + " " + (classnames_default()({
          hidden_assets: mountedRef.current,
          visible: mountedRef.current && isOpen
        }) || "")
      }, react.createElement(UnverifiedAssetBanner, {
        id: "unverified_asset_banner",
        title: t("verifiedAssets.banner.titleUnverified"),
        description: t("verifiedAssets.banner.description"),
        style: {
          marginBottom: 16
        }
      }), react.createElement(WalletAssetList, {
        assetAmounts,
        initializationLoadingTimeExpired: true
      })), react.createElement(style_default(), {
        id: "1672244779",
        dynamic: [ maxHeight ]
      }, `.hidden_assets.__jsx-style-dynamic-selector{max-height:0px;overflow:hidden;-webkit-transition:max-height 500ms ease-out;transition:max-height 500ms ease-out;}.hidden_assets.visible.__jsx-style-dynamic-selector{max-height:${maxHeight}px;-webkit-transition:max-height 500ms ease-in;transition:max-height 500ms ease-in;}.hidden_assets_button.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 0 16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletHiddenAssets.tsx */`));
    }
    function Wallet() {
      const {t} = useTranslation();
      const [panelNumber, setPanelNumber] = (0, react.useState)(0);
      const history = useHistory();
      const accountData = useBackgroundSelector(selectCurrentAccountBalances);
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const showUnverifiedAssets = useBackgroundSelector(selectShowUnverifiedAssets);
      (0, react.useEffect)((() => {}));
      (0, react.useEffect)((() => {
        if (!NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID)) {
          setPanelNumber(0);
        }
      }), [ selectedNetwork.chainID ]);
      const {assetAmounts, unverifiedAssetAmounts, totalMainCurrencyValue} = accountData ?? {
        assetAmounts: [],
        unverifiedAssetAmounts: [],
        totalMainCurrencyValue: undefined
      };
      const currentAccountActivities = useBackgroundSelector(selectCurrentAccountActivities);
      (0, react.useEffect)((() => {
        const locationState = history.location.state;
        if (locationState) {
          const {goTo} = locationState;
          if (goTo === "activity-page") {
            if (!NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID)) {
              setPanelNumber(1);
            } else {
              setPanelNumber(2);
            }
          }
        }
      }), [ history, selectedNetwork.chainID ]);
      const initializationLoadingTimeExpired = useBackgroundSelector((background => background.ui?.initializationLoadingTimeExpired));
      const showHiddenAssets = (0, react.useMemo)((() => showUnverifiedAssets && unverifiedAssetAmounts.length > 0), [ showUnverifiedAssets, unverifiedAssetAmounts.length ]);
      const panelNames = [ t("wallet.pages.assets") ];
      if (NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID)) {
        panelNames.push(t("wallet.pages.NFTs"));
      }
      panelNames.push(t("wallet.pages.activity"));
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-4007415589" + " " + "page_content"
      }, react.createElement("div", {
        className: "jsx-4007415589" + " " + "section"
      }, react.createElement(WalletAccountBalanceControl, {
        balance: totalMainCurrencyValue,
        initializationLoadingTimeExpired
      })), isEnabled(FeatureFlags.SUPPORT_ACHIEVEMENTS_BANNER) && react.createElement(WalletBanner, null), isEnabled(FeatureFlags.SHOW_TOKEN_FEATURES), react.createElement("div", {
        className: "jsx-4007415589" + " " + "section"
      }, react.createElement(SharedPanelSwitcher, {
        setPanelNumber,
        panelNumber,
        panelNames
      }), react.createElement("div", {
        className: "jsx-4007415589" + " " + (classnames_default()("panel standard_width", {
          no_padding: panelNumber === 1 && NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID)
        }) || "")
      }, panelNumber === 0 && react.createElement(react.Fragment, null, react.createElement(WalletAssetList, {
        assetAmounts,
        initializationLoadingTimeExpired
      }), react.createElement("div", {
        className: "jsx-4007415589" + " " + (classnames_default()("add_custom_asset", {
          line: showHiddenAssets
        }) || "")
      }, react.createElement("span", {
        className: "jsx-4007415589"
      }, t("wallet.activities.addCustomAssetPrompt")), react.createElement(SharedButton, {
        size: "medium",
        onClick: () => history.push("/settings/add-custom-asset"),
        type: "tertiary"
      }, react.createElement(SharedIcon, {
        width: 16,
        height: 16,
        style: {
          marginRight: 4
        },
        icon: "icons/s/add.svg",
        color: "currentColor"
      }), t("wallet.activities.addCustomAssetAction"))), showHiddenAssets && react.createElement(WalletHiddenAssets, {
        assetAmounts: unverifiedAssetAmounts
      })), panelNumber === 1 && NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID) && react.createElement(NFTListCurrentWallet, null), panelNumber === (NETWORKS_SUPPORTING_NFTS.has(selectedNetwork.chainID) ? 2 : 1) && react.createElement(WalletActivityList, {
        activities: currentAccountActivities ?? []
      })))), react.createElement(style_default(), {
        id: "4007415589"
      }, '.page_content.jsx-4007415589{width:100%;height:inherit;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;overflow-x:hidden;background:var(--c-bg-alt);}.section.jsx-4007415589{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.panel.jsx-4007415589{padding-top:16px;box-sizing:border-box;height:302px;}.panel.jsx-4007415589::-webkit-scrollbar{display:none;}.no_padding.jsx-4007415589{padding-top:0;}.add_custom_asset.jsx-4007415589{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:16px;padding:20px 16px;background:var(--c-bg);border:1px solid var(--c-accent-a15);border-radius:16px;box-shadow:var(--shadow-sm);}.add_custom_asset.jsx-4007415589 span.jsx-4007415589{font-size:14px;font-weight:500;line-height:20px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;color:var(--c-text-dim);font-family:"Segment",sans-serif;margin-bottom:12px;}.line.jsx-4007415589{border-bottom:1px solid var(--c-accent-a18);margin-bottom:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Wallet.tsx */'));
    }
    const buttonStyle = `\n  .subtext_large {\n    font-weight: 500;\n    font-size: 16px;\n    color: var(--c-text-tertiary);\n  }\n  .network_option {\n    width: 100%;\n    height: 56px;\n    padding: 0px 15px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    background: var(--c-bg-alt);\n    box-sizing: border-box;\n    margin: 8px 0;\n    cursor: pointer;\n    border-radius: 4px;\n    border: 1px solid transparent;\n    position: relative;\n  }\n  .network_option.active {\n    border-color: var(--c-success);\n    box-shadow: 0px 16px 16px rgba(0, 20, 19, 0.14),\n      0px 6px 8px rgba(0, 20, 19, 0.24), 0px 2px 4px rgba(0, 20, 19, 0.34);\n  }\n  .network_option.active .name {\n    color: var(--c-success);\n  }\n  .network_option_left,\n  .network_option_right {\n    display: flex;\n  }\n  .network_option_right {\n    align-items: center;\n    justify-content: space-between;\n  }\n  .network_option_left {\n    text-align: left;\n    flex-direction: column;\n    width: 70px;\n  }\n  .name,\n  .price {\n    color: var(--c-text);\n  }\n  .subtext {\n    color: var(--c-text-secondary);\n    font-size: 14px;\n  }\n  .max_fee {\n    display: flex;\n    flex-flow: column;\n    margin-right: 10px;\n    align-items: flex-end;\n  }\n  .max_r_label {\n    font-size: 14px;\n    color: var(--c-text-tertiary);\n  }\n  .currently_selected {\n    color: var(--c-success);\n    opacity: 0.8;\n    font-size: 10px;\n  }\n  .r_label {\n    padding-right: 5px;\n  }\n  .miner_wrap {\n    max-width: 116px;\n    display: flex;\n    align-items: center;\n  }\n`;
    function NetworkSettingsSelectOptionButton({option, handleSelectGasOption, isActive}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "networkFees"
      });
      return react.createElement("button", {
        key: option.confidence,
        onClick: handleSelectGasOption,
        type: "button",
        className: "jsx-3420434190" + " " + (classnames_default()("network_option", {
          active: isActive
        }) || "")
      }, react.createElement("div", {
        className: "jsx-3420434190" + " " + "network_option_left"
      }, react.createElement("div", {
        className: "jsx-3420434190" + " " + "name"
      }, NETWORK_FEE_CHOSEN_TYPE_TO_HUMAN_READABLE_TYPE[option.type]), react.createElement("div", {
        className: "jsx-3420434190" + " " + "subtext"
      }, option.estimatedSpeed)), react.createElement("div", {
        className: "jsx-3420434190" + " " + "network_option_right"
      }, react.createElement("div", {
        className: "jsx-3420434190" + " " + "miner_wrap"
      }, react.createElement("span", {
        className: "jsx-3420434190" + " " + "subtext_large miner"
      }, react.createElement("span", {
        className: "jsx-3420434190" + " " + "r_label"
      }, t("miner")), `${Number(option.maxPriorityGwei).toFixed(2)}`)), react.createElement("span", {
        className: "jsx-3420434190" + " " + "subtext_large large r_label"
      }, t("maxBase"), " "), react.createElement("div", {
        className: "jsx-3420434190" + " " + "price"
      }, ` ${Number(option.baseMaxGwei).toFixed(2)}`)), react.createElement(style_default(), {
        id: "3420434190"
      }, `${buttonStyle}.jsx-3420434190 .miner.jsx-3420434190{margin-right:14px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/NetworkSettingsSelectOptionButtons.tsx */`));
    }
    function NetworkSettingsSelectOptionButtonCustom({option, handleSelectGasOption, isActive, updateCustomGas}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "networkFees"
      });
      const [warningMessage, setWarningMessage] = (0, react.useState)("");
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const baseGasFee = useBackgroundSelector((state => state.networks.blockInfo[selectedNetwork.chainID].baseFeePerGas));
      return react.createElement("button", {
        key: option.confidence,
        onClick: handleSelectGasOption,
        type: "button",
        className: "jsx-1170804972" + " " + (classnames_default()("network_option", {
          active: isActive,
          network_option_warning: warningMessage
        }) || "")
      }, react.createElement("div", {
        className: "jsx-1170804972" + " " + "network_option_left"
      }, react.createElement("div", {
        className: "jsx-1170804972" + " " + "name"
      }, NETWORK_FEE_CHOSEN_TYPE_TO_HUMAN_READABLE_TYPE[option.type])), react.createElement("div", {
        className: "jsx-1170804972" + " " + "network_option_right"
      }, react.createElement("div", {
        className: "jsx-1170804972" + " " + "miner_wrap"
      }, react.createElement("span", {
        className: "jsx-1170804972" + " " + "subtext_large r_label"
      }, t("miner")), react.createElement("div", {
        className: "jsx-1170804972" + " " + "input_wrap"
      }, react.createElement(SharedInput, {
        value: `${option.maxPriorityGwei}`,
        isSmall: true,
        type: "number",
        onChange: value => {
          updateCustomGas(option.baseMaxFeePerGas, gweiToWei(parseFloat(value)));
        },
        maxLength: 4
      }))), react.createElement("span", {
        className: "jsx-1170804972" + " " + "subtext_large r_label"
      }, t("maxBase")), react.createElement("div", {
        className: "jsx-1170804972" + " " + "input_wrap"
      }, react.createElement(SharedInput, {
        value: `${option.baseMaxGwei}`,
        isSmall: true,
        type: "number",
        onChange: value => {
          updateCustomGas(gweiToWei(parseFloat(value)), option.maxPriorityFeePerGas);
          if (baseGasFee && gweiToWei(parseFloat(value)) < baseGasFee) {
            setWarningMessage(t("errors.lowGas"));
          } else {
            setWarningMessage("");
          }
        },
        maxLength: 12,
        warningMessage
      }))), react.createElement(style_default(), {
        id: "1170804972"
      }, `${buttonStyle}.jsx-1170804972 .miner_wrap.jsx-1170804972{width:112px;}.network_option_warning.jsx-1170804972{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;padding-top:11px;height:74px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/NetworkSettingsSelectOptionButtons.tsx */`));
    }
    const gasOptionFromEstimate = (mainCurrencyPricePoint, baseFeePerGas, gasLimit, {confidence, maxFeePerGas, maxPriorityFeePerGas, price}) => {
      const feeOptionData = {
        70: NetworkFeeTypeChosen.Regular,
        95: NetworkFeeTypeChosen.Express,
        99: NetworkFeeTypeChosen.Instant,
        0: NetworkFeeTypeChosen.Custom
      };
      const feeAssetAmount = typeof gasLimit !== "undefined" ? enrichAssetAmountWithMainCurrencyValues({
        asset: currencies_QEVM,
        amount: maxFeePerGas * gasLimit
      }, mainCurrencyPricePoint, 2) : undefined;
      const dollarValue = feeAssetAmount?.localizedMainCurrencyAmount;
      return {
        confidence: `${confidence}`,
        estimatedSpeed: ESTIMATED_SPEED_IN_READABLE_FORMAT_RELATIVE_TO_CONFIDENCE_LEVEL[confidence],
        type: feeOptionData[confidence],
        estimatedGwei: weiToGwei(baseFeePerGas * ESTIMATED_FEE_MULTIPLIERS[confidence] / 10n).split(".")[0],
        maxPriorityGwei: weiToGwei(maxPriorityFeePerGas),
        maxGwei: weiToGwei(maxFeePerGas).split(".")[0],
        dollarValue: dollarValue ? `$${dollarValue}` : "-",
        estimatedFeePerGas: baseFeePerGas * ESTIMATED_FEE_MULTIPLIERS[confidence] / 10n,
        baseMaxFeePerGas: BigInt(maxFeePerGas) - BigInt(maxPriorityFeePerGas),
        baseMaxGwei: weiToGwei(BigInt(maxFeePerGas) - BigInt(maxPriorityFeePerGas)),
        maxFeePerGas,
        maxPriorityFeePerGas,
        gasPrice: price?.toString()
      };
    };
    function NetworkSettingsSelect({estimatedFeesPerGas, networkSettings, onNetworkSettingsChange, onSave}) {
      const {t} = useTranslation();
      const dispatch = useBackgroundDispatch();
      const [gasOptions, setGasOptions] = (0, react.useState)([]);
      const customGas = useBackgroundSelector((state => state.transactionConstruction.customFeesPerGas));
      const [activeFeeIndex, setActiveFeeIndex] = (0, react.useState)(0);
      const [currentlySelectedType, setCurrentlySelectedType] = (0, react.useState)(networkSettings.feeType);
      const transactionDetails = useBackgroundSelector(selectTransactionData);
      const mainCurrencyPricePoint = useBackgroundSelector(selectTransactionMainCurrencyPricePoint);
      (0, react.useEffect)((() => {
        if (gasOptions.length > 0) {
          onNetworkSettingsChange({
            feeType: gasOptions[activeFeeIndex].type,
            values: {
              maxFeePerGas: gasOptions[activeFeeIndex].maxFeePerGas,
              maxPriorityFeePerGas: gasOptions[activeFeeIndex].maxPriorityFeePerGas
            },
            gasLimit: networkSettings.gasLimit,
            suggestedGasLimit: networkSettings.suggestedGasLimit
          });
        }
      }), [ gasOptions, activeFeeIndex, onNetworkSettingsChange, networkSettings.gasLimit, networkSettings.suggestedGasLimit ]);
      const handleSelectGasOption = index => {
        setActiveFeeIndex(index);
        setCurrentlySelectedType(gasOptions[index].type);
        onNetworkSettingsChange({
          feeType: gasOptions[index].type,
          values: {
            maxFeePerGas: gasOptions[index].maxFeePerGas,
            maxPriorityFeePerGas: gasOptions[index].maxPriorityFeePerGas
          },
          gasLimit: networkSettings.gasLimit,
          suggestedGasLimit: networkSettings.suggestedGasLimit
        });
      };
      const updateGasOptions = (0, react.useCallback)((() => {
        if (typeof estimatedFeesPerGas !== "undefined") {
          const {regular, express, instant, custom} = estimatedFeesPerGas ?? {};
          const gasLimit = networkSettings.gasLimit ?? networkSettings.suggestedGasLimit;
          if (typeof instant !== "undefined") {
            const baseFees = [ regular, express, instant, custom ];
            const updatedGasOptions = [];
            baseFees.forEach((option => {
              if (option) {
                updatedGasOptions.push(gasOptionFromEstimate(mainCurrencyPricePoint, estimatedFeesPerGas.baseFeePerGas ?? 0n, gasLimit, option));
              }
            }));
            if (customGas) {
              updatedGasOptions.push(gasOptionFromEstimate(mainCurrencyPricePoint, estimatedFeesPerGas.baseFeePerGas ?? 0n, gasLimit, customGas));
            }
            const selectedGasFeeIndex = updatedGasOptions.findIndex((el => el.type === currentlySelectedType));
            const currentlySelectedFeeIndex = selectedGasFeeIndex === -1 ? 0 : selectedGasFeeIndex;
            setGasOptions(updatedGasOptions);
            setActiveFeeIndex(currentlySelectedFeeIndex);
          }
        }
      }), [ estimatedFeesPerGas, networkSettings.gasLimit, networkSettings.suggestedGasLimit, mainCurrencyPricePoint, customGas, currentlySelectedType ]);
      (0, react.useEffect)((() => {
        updateGasOptions();
      }), [ updateGasOptions ]);
      const setGasLimit = gasLimit => {
        dispatch(setCustomGasLimit(gasLimit ?? networkSettings.suggestedGasLimit));
        onNetworkSettingsChange({
          ...networkSettings,
          gasLimit
        });
      };
      function updateCustomGas(customMaxBaseFee, customMaxPriorityFeePerGas) {
        dispatch(setCustomGas({
          maxPriorityFeePerGas: customMaxPriorityFeePerGas,
          maxFeePerGas: BigInt(customMaxBaseFee) + BigInt(customMaxPriorityFeePerGas)
        }));
      }
      return react.createElement("div", {
        className: "jsx-3277152717" + " " + "fees standard_width"
      }, react.createElement("span", {
        className: "jsx-3277152717" + " " + "settings_label network_fee_label"
      }, t("networkFees.settingsTitle")), gasOptions.map(((option, i) => option.type === "custom" ? react.createElement(NetworkSettingsSelectOptionButtonCustom, {
        option,
        isActive: i === activeFeeIndex,
        handleSelectGasOption: () => handleSelectGasOption(i),
        updateCustomGas: (customMaxBaseFee, customMaxPriorityFeePerGas) => updateCustomGas(customMaxBaseFee, customMaxPriorityFeePerGas)
      }) : react.createElement(NetworkSettingsSelectOptionButton, {
        option,
        isActive: i === activeFeeIndex,
        handleSelectGasOption: () => handleSelectGasOption(i)
      }))), react.createElement("footer", {
        className: "jsx-3277152717"
      }, transactionDetails?.annotation?.warnings?.includes("insufficient-funds") && react.createElement(SharedBanner, {
        icon: "notif-attention",
        iconColor: "var(--c-warning)"
      }, react.createElement("span", {
        className: "jsx-3277152717" + " " + "warning_text"
      }, t("networkFees.insufficientBaseAsset", {
        symbol: transactionDetails.network.baseAsset.symbol
      }))), react.createElement("div", {
        className: "jsx-3277152717" + " " + "info"
      }, react.createElement("div", {
        className: "jsx-3277152717" + " " + "limit"
      }, react.createElement(SharedTypedInput, {
        id: "gasLimit",
        value: networkSettings.gasLimit?.toString() ?? "",
        placeholder: networkSettings.suggestedGasLimit?.toString() ?? "",
        onChange: setGasLimit,
        parseAndValidate: value => {
          if (value.trim() === "") {
            return {
              parsed: undefined
            };
          }
          try {
            const parsed = BigInt(value);
            if (parsed < 21000n) {
              return {
                error: t("networkFees.errors.limitTooLow")
              };
            }
            return {
              parsed
            };
          } catch (e) {
            return {
              error: t("networkFees.errors.invalidLimit")
            };
          }
        },
        label: t("networkFees.gasLimit"),
        type: "number",
        focusedLabelBackgroundColor: "var(--c-bg)",
        step: 1e3
      })), react.createElement("div", {
        className: "jsx-3277152717" + " " + "max_fee"
      }, react.createElement("span", {
        className: "jsx-3277152717" + " " + "max_label"
      }, t("networkFees.totalMax")), react.createElement("div", {
        className: "jsx-3277152717" + " " + "price ellipsis"
      }, gasOptions?.[activeFeeIndex]?.maxGwei, " ", t("shared.gwei")))), react.createElement("div", {
        className: "jsx-3277152717" + " " + "confirm"
      }, react.createElement(SharedButton, {
        size: "medium",
        type: "primary",
        onClick: onSave
      }, t("networkFees.saveSettings")))), react.createElement(style_default(), {
        id: "3277152717"
      }, ".settings_label.jsx-3277152717{color:var(--c-text);font-weight:600;font-size:18px;line-height:24px;}.network_fee_label.jsx-3277152717{width:100%;display:block;margin-bottom:10px;}.max_fee.jsx-3277152717{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;margin-right:10px;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}.price.jsx-3277152717{width:176px;text-align:right;}.max_label.jsx-3277152717{font-size:14px;color:var(--c-text-tertiary);}.info.jsx-3277152717{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}footer.jsx-3277152717{position:fixed;bottom:16px;width:inherit;}.limit.jsx-3277152717{margin:16px 0;width:40%;position:relative;}.confirm.jsx-3277152717{float:right;}.warning_text.jsx-3277152717{font-size:16px;line-height:24px;font-weight:500;color:var(--c-warning);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/NetworkSettingsSelect.tsx */"));
    }
    function NetworkSettingsChooser({estimatedFeesPerGas, onNetworkSettingsSave}) {
      const [networkSettings, setNetworkSettings] = (0, react.useState)(useBackgroundSelector(selectDefaultNetworkFeeSettings));
      const transactionDetails = useBackgroundSelector(selectTransactionData);
      const dispatch = useBackgroundDispatch();
      const saveNetworkSettings = async () => {
        await dispatch(setFeeType(networkSettings.feeType));
        onNetworkSettingsSave(networkSettings);
      };
      if (!transactionDetails) {
        return null;
      }
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2186585004" + " " + "wrapper"
      }, react.createElement(NetworkSettingsSelect, {
        estimatedFeesPerGas,
        networkSettings,
        onNetworkSettingsChange: setNetworkSettings,
        onSave: saveNetworkSettings
      })), react.createElement(style_default(), {
        id: "2186585004"
      }, ".wrapper.jsx-2186585004{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;margin-left:12px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9OZXR3b3JrRmVlcy9OZXR3b3JrU2V0dGluZ3NDaG9vc2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RFMsQUFHeUIsWUFDQywwRUFDSSwrREFDQSxpQkFDRSw2RkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL05ldHdvcmtGZWVzL05ldHdvcmtTZXR0aW5nc0Nob29zZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtcbiAgRXN0aW1hdGVkRmVlc1BlckdhcyxcbiAgTmV0d29ya0ZlZVNldHRpbmdzLFxuICBzZXRGZWVUeXBlLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy90cmFuc2FjdGlvbi1jb25zdHJ1Y3Rpb25cIlxuaW1wb3J0IHtcbiAgc2VsZWN0RGVmYXVsdE5ldHdvcmtGZWVTZXR0aW5ncyxcbiAgc2VsZWN0VHJhbnNhY3Rpb25EYXRhLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnMvdHJhbnNhY3Rpb25Db25zdHJ1Y3Rpb25TZWxlY3RvcnNcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZERpc3BhdGNoLCB1c2VCYWNrZ3JvdW5kU2VsZWN0b3IgfSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuaW1wb3J0IE5ldHdvcmtTZXR0aW5nc1NlbGVjdCBmcm9tIFwiLi9OZXR3b3JrU2V0dGluZ3NTZWxlY3RcIlxuXG5pbnRlcmZhY2UgTmV0d29ya1NldHRpbmdzQ2hvb3NlclByb3BzIHtcbiAgZXN0aW1hdGVkRmVlc1BlckdhczogRXN0aW1hdGVkRmVlc1BlckdhcyB8IHVuZGVmaW5lZFxuICBvbk5ldHdvcmtTZXR0aW5nc1NhdmU6IChzZXR0aW5nOiBOZXR3b3JrRmVlU2V0dGluZ3MpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBOZXR3b3JrIGZlZSBzZXR0aW5ncyBjaG9vc2VyIGZvciBRRVZNLlxuICpcbiAqIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiByb3V0ZWQgdG8gZGlmZmVyZW50IGZlZS1zZXR0aW5ncyBjb21wb25lbnRzXG4gKiBkZXBlbmRpbmcgb24gdGhlIEV0aGVyZXVtIEwyIG5ldHdvcmsgKE9wdGltaXNtLCBBcmJpdHJ1bSwgUm9vdHN0b2NrLFxuICogQk5CIENoYWluKS4gU2luY2UgUUVWTSBkb2VzIG5vdCBzdXBwb3J0IGFueSBvZiB0aG9zZSBuZXR3b3JrcywgdGhpc1xuICogY29tcG9uZW50IGFsd2F5cyByZW5kZXJzIHRoZSBnZW5lcmljIGBOZXR3b3JrU2V0dGluZ3NTZWxlY3RgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOZXR3b3JrU2V0dGluZ3NDaG9vc2VyKHtcbiAgZXN0aW1hdGVkRmVlc1BlckdhcyxcbiAgb25OZXR3b3JrU2V0dGluZ3NTYXZlLFxufTogTmV0d29ya1NldHRpbmdzQ2hvb3NlclByb3BzKTogUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtuZXR3b3JrU2V0dGluZ3MsIHNldE5ldHdvcmtTZXR0aW5nc10gPSB1c2VTdGF0ZShcbiAgICB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0RGVmYXVsdE5ldHdvcmtGZWVTZXR0aW5ncyksXG4gIClcbiAgY29uc3QgdHJhbnNhY3Rpb25EZXRhaWxzID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdFRyYW5zYWN0aW9uRGF0YSlcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZUJhY2tncm91bmREaXNwYXRjaCgpXG5cbiAgY29uc3Qgc2F2ZU5ldHdvcmtTZXR0aW5ncyA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkaXNwYXRjaChzZXRGZWVUeXBlKG5ldHdvcmtTZXR0aW5ncy5mZWVUeXBlKSlcbiAgICBvbk5ldHdvcmtTZXR0aW5nc1NhdmUobmV0d29ya1NldHRpbmdzKVxuICB9XG5cbiAgaWYgKCF0cmFuc2FjdGlvbkRldGFpbHMpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3cmFwcGVyXCI+XG4gICAgICAgIDxOZXR3b3JrU2V0dGluZ3NTZWxlY3RcbiAgICAgICAgICBlc3RpbWF0ZWRGZWVzUGVyR2FzPXtlc3RpbWF0ZWRGZWVzUGVyR2FzfVxuICAgICAgICAgIG5ldHdvcmtTZXR0aW5ncz17bmV0d29ya1NldHRpbmdzfVxuICAgICAgICAgIG9uTmV0d29ya1NldHRpbmdzQ2hhbmdlPXtzZXROZXR3b3JrU2V0dGluZ3N9XG4gICAgICAgICAgb25TYXZlPXtzYXZlTmV0d29ya1NldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC53cmFwcGVyIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/NetworkSettingsChooser.tsx */"));
    }
    const getFeeDollarValue = (currencyPrice, gasLimit, estimatedSpendPerGas, estimatedL1RollupFee) => {
      if (estimatedSpendPerGas) {
        if (!gasLimit || !currencyPrice) return undefined;
        const [asset] = currencyPrice.pair;
        let currencyCostPerBaseAsset;
        const unitPricePoint = unitPricePointForPricePoint(currencyPrice);
        if (unitPricePoint) {
          currencyCostPerBaseAsset = assetAmountToDesiredDecimals(unitPricePoint.unitPrice, 2);
        }
        const {localizedMainCurrencyAmount} = enrichAssetAmountWithMainCurrencyValues({
          asset,
          amount: estimatedSpendPerGas * gasLimit + (estimatedL1RollupFee ?? 0n)
        }, currencyPrice, currencyCostPerBaseAsset && currencyCostPerBaseAsset < 1 ? 4 : 2);
        return localizedMainCurrencyAmount;
      }
      return undefined;
    };
    const estimateGweiAmount = options => {
      const {networkSettings, baseFeePerGas} = options;
      const estimatedSpendPerGas = baseFeePerGas + networkSettings.values.maxPriorityFeePerGas;
      const desiredDecimals = 0;
      const estimatedSpendPerGasInGwei = weiToGwei(estimatedSpendPerGas ?? 0n);
      const decimalLength = heuristicDesiredDecimalsForUnitPrice(desiredDecimals, Number(estimatedSpendPerGasInGwei));
      const estimatedGweiAmount = truncateDecimalAmount(estimatedSpendPerGasInGwei, decimalLength);
      return estimatedGweiAmount;
    };
    function FeeSettingsText({customNetworkSetting}) {
      const {t} = useTranslation();
      const transactionData = useBackgroundSelector(selectTransactionData);
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const currentNetwork = transactionData?.network || selectedNetwork;
      const networkIsBuiltIn = isBuiltInNetwork(currentNetwork);
      const estimatedFeesPerGas = useBackgroundSelector(selectEstimatedFeesPerGas);
      let networkSettings = useBackgroundSelector(selectDefaultNetworkFeeSettings);
      networkSettings = customNetworkSetting ?? networkSettings;
      const baseFeePerGas = useBackgroundSelector((state => state.networks.blockInfo[currentNetwork.chainID]?.baseFeePerGas)) ?? networkSettings.values?.baseFeePerGas ?? 0n;
      const mainCurrencyPricePoint = useBackgroundSelector(selectTransactionMainCurrencyPricePoint);
      const estimatedGweiAmount = estimateGweiAmount({
        baseFeePerGas,
        networkSettings,
        transactionData,
        network: currentNetwork
      });
      const gasLimit = networkSettings.gasLimit ?? networkSettings.suggestedGasLimit;
      const estimatedSpendPerGas = networkSettings.values.gasPrice || baseFeePerGas + networkSettings.values.maxPriorityFeePerGas;
      if (typeof estimatedFeesPerGas === "undefined") return react.createElement("div", null, t("networkFees.unknownFee"));
      const estimatedRollupFee = 0n;
      const gweiValue = `${estimatedGweiAmount} Gwei`;
      const dollarValue = getFeeDollarValue(mainCurrencyPricePoint, gasLimit, estimatedSpendPerGas, estimatedRollupFee);
      if (!dollarValue) return react.createElement("div", null, "~", gweiValue);
      return react.createElement("div", {
        className: "jsx-4239128798" + " " + "fee_settings_text_container"
      }, !gasLimit ? react.createElement(react.Fragment, null, t("networkFees.toBeDetermined")) : react.createElement(react.Fragment, null, networkIsBuiltIn && react.createElement("span", {
        className: "jsx-4239128798"
      }, "~$", dollarValue), react.createElement("span", {
        className: "jsx-4239128798" + " " + "fee_gwei"
      }, "(", gweiValue, ")")), react.createElement(style_default(), {
        id: "4239128798"
      }, ".fee_gwei.jsx-4239128798{color:var(--c-border);margin-left:5px;}.fee_settings_text_container.jsx-4239128798{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/FeeSettingsText.tsx */"));
    }
    function FeeSettingsButton({onClick}) {
      const transactionData = useBackgroundSelector(selectTransactionData);
      const selectedNetwork = useBackgroundSelector(selectCurrentNetwork);
      const currentNetwork = transactionData?.network || selectedNetwork;
      const {t} = useTranslation();
      if (!isBuiltInNetwork(currentNetwork)) {
        return react.createElement("div", null, react.createElement(SharedTooltip, {
          width: 175,
          height: 30,
          type: "dark",
          horizontalShift: 90,
          horizontalPosition: "center",
          verticalPosition: "bottom",
          IconComponent: () => react.createElement(react.Fragment, null, react.createElement("div", {
            className: "jsx-4272241995" + " " + "disabled_settings"
          }, react.createElement(FeeSettingsText, null)), react.createElement(style_default(), {
            id: "4272241995"
          }, ".disabled_settings.jsx-4272241995{font-size:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/FeeSettingsButton.tsx */"))
        }, react.createElement("div", {
          className: "tooltip_container"
        }, react.createElement("div", null, t("networkFees.settingsDisabledOne")), react.createElement("div", null, t("networkFees.settingsDisabledTwo")))));
      }
      return react.createElement("button", {
        type: "button",
        onClick,
        className: "jsx-2590107939" + " " + "settings"
      }, react.createElement(FeeSettingsText, null), react.createElement("img", {
        src: "./images/cog@2x.png",
        alt: "",
        className: "jsx-2590107939" + " " + "settings_image"
      }), react.createElement(style_default(), {
        id: "2590107939"
      }, ".settings.jsx-2590107939{height:32px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:16px;line-height:20px;border-radius:4px;padding:0.3rem;border:1px solid var(--c-accent-a25);-webkit-transition:all 0.3s ease;transition:all 0.3s ease;}.settings_image.jsx-2590107939{width:14px;height:14px;padding:0 8px;-webkit-transition:all 0.3s ease;transition:all 0.3s ease;}.settings.jsx-2590107939:hover{border:1px solid var(--c-text-muted);}.settings.jsx-2590107939:hover .settings_image.jsx-2590107939{-webkit-filter:brightness(1.5);filter:brightness(1.5);}.tooltip_container.jsx-2590107939{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NetworkFees/FeeSettingsButton.tsx */"));
    }
    function TransactionAdditionalDetails({transactionRequest, annotation}) {
      switch (annotation?.type) {
       default:
        return null;
      }
    }
    function TransactionSignatureDetailsWarning(props) {
      const {message, dismissable = false, onDismiss} = props;
      return react.createElement(react.Fragment, null, react.createElement(SharedBanner, {
        icon: "notif-attention",
        iconColor: "var(--c-warning)"
      }, dismissable && react.createElement(SharedIcon, {
        onClick: () => onDismiss?.(),
        icon: "icons/s/close.svg",
        ariaLabel: "close",
        width: 16,
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-text-secondary)",
        style: {
          position: "absolute",
          top: 12,
          right: 12
        }
      }), react.createElement("span", {
        className: "jsx-2605287717" + " " + "detail_warning"
      }, message)), react.createElement(style_default(), {
        id: "2605287717"
      }, ".detail_warning.jsx-2605287717{font-size:16px;line-height:24px;font-weight:500;color:var(--c-warning);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzL1RyYW5zYWN0aW9uU2lnbmF0dXJlRGV0YWlsc1dhcm5pbmcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDUyxBQUc0QixlQUNFLGlCQUNELGdCQUNPLHVCQUN6QiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2lnbmluZy9TaWduYXR1cmVEZXRhaWxzL1RyYW5zYWN0aW9uU2lnbmF0dXJlRGV0YWlscy9UcmFuc2FjdGlvblNpZ25hdHVyZURldGFpbHNXYXJuaW5nLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEJhbm5lciBmcm9tIFwiLi4vLi4vLi4vU2hhcmVkL1NoYXJlZEJhbm5lclwiXG5pbXBvcnQgU2hhcmVkSWNvbiBmcm9tIFwiLi4vLi4vLi4vU2hhcmVkL1NoYXJlZEljb25cIlxuXG50eXBlIERpc21pc3NhYmxlUHJvcHMgPVxuICB8IHtcbiAgICAgIGRpc21pc3NhYmxlOiB0cnVlXG4gICAgICBvbkRpc21pc3M6ICgpID0+IHZvaWRcbiAgICB9XG4gIHwge1xuICAgICAgZGlzbWlzc2FibGU/OiBmYWxzZVxuICAgICAgb25EaXNtaXNzPzogbmV2ZXJcbiAgICB9XG5cbnR5cGUgV2FybmluZ1Byb3BzID0geyBtZXNzYWdlOiBzdHJpbmcgfSAmIERpc21pc3NhYmxlUHJvcHNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzV2FybmluZyhcbiAgcHJvcHM6IFdhcm5pbmdQcm9wcyxcbik6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgbWVzc2FnZSwgZGlzbWlzc2FibGUgPSBmYWxzZSwgb25EaXNtaXNzIH0gPSBwcm9wc1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTaGFyZWRCYW5uZXIgaWNvbj1cIm5vdGlmLWF0dGVudGlvblwiIGljb25Db2xvcj1cInZhcigtLWMtd2FybmluZylcIj5cbiAgICAgICAge2Rpc21pc3NhYmxlICYmIChcbiAgICAgICAgICA8U2hhcmVkSWNvblxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EaXNtaXNzPy4oKX1cbiAgICAgICAgICAgIGljb249XCJpY29ucy9zL2Nsb3NlLnN2Z1wiXG4gICAgICAgICAgICBhcmlhTGFiZWw9XCJjbG9zZVwiXG4gICAgICAgICAgICB3aWR0aD17MTZ9XG4gICAgICAgICAgICBjb2xvcj1cInZhcigtLWMtdGV4dC10ZXJ0aWFyeSlcIlxuICAgICAgICAgICAgaG92ZXJDb2xvcj1cInZhcigtLWMtdGV4dC1zZWNvbmRhcnkpXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHRvcDogMTIsIHJpZ2h0OiAxMiB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRldGFpbF93YXJuaW5nXCI+e21lc3NhZ2V9PC9zcGFuPlxuICAgICAgPC9TaGFyZWRCYW5uZXI+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5kZXRhaWxfd2FybmluZyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy13YXJuaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureDetailsWarning.tsx */"));
    }
    function DetailPanel({transactionRequest, defaultPanelState}) {
      const [panelState, setPanelState] = (0, react.useState)(defaultPanelState ?? {
        dismissedWarnings: []
      });
      const [networkSettingsModalOpen, setNetworkSettingsModalOpen] = (0, react.useState)(false);
      const [updateNum, setUpdateNum] = (0, react.useState)(0);
      const estimatedFeesPerGas = useBackgroundSelector(selectEstimatedFeesPerGas);
      const dispatch = useBackgroundDispatch();
      const {t} = useTranslation();
      (0, react.useEffect)((() => {
        if (transactionRequest) {
          dispatch(updateTransactionData(transactionRequest));
        }
      }), [ updateNum, dispatch, transactionRequest?.maxFeePerGas, transactionRequest?.gasLimit, transactionRequest?.gasPrice, transactionRequest?.maxFeePerGas ]);
      if (transactionRequest === undefined) return null;
      const isEIP1559Compliant = EIP_1559_COMPLIANT_CHAIN_IDS.has(transactionRequest.network.chainID);
      const hasInsufficientFundsWarning = transactionRequest.annotation?.warnings?.includes("insufficient-funds");
      const isContractAddress = transactionRequest.annotation?.warnings?.includes("send-to-contract");
      const networkSettingsSaved = () => {
        setUpdateNum(updateNum + 1);
        setNetworkSettingsModalOpen(false);
      };
      const getHightForSlideUpMenu = () => `${3 * 56 + 320 + (hasInsufficientFundsWarning ? 15 : 0) + (isEIP1559Compliant ? 0 : 40)}px`;
      return react.createElement("div", {
        className: "jsx-2225092953" + " " + "detail_items_wrap standard_width_padded"
      }, react.createElement(SharedSlideUpMenu, {
        size: "custom",
        isOpen: networkSettingsModalOpen,
        close: () => setNetworkSettingsModalOpen(false),
        customSize: getHightForSlideUpMenu()
      }, react.createElement(NetworkSettingsChooser, {
        estimatedFeesPerGas,
        onNetworkSettingsSave: networkSettingsSaved
      })), isContractAddress && !panelState.dismissedWarnings.includes("send-to-contract") && react.createElement("span", {
        className: "jsx-2225092953" + " " + "detail_item"
      }, react.createElement(TransactionSignatureDetailsWarning, {
        message: t("wallet.sendToContractWarning"),
        dismissable: true,
        onDismiss: () => setPanelState((state => ({
          ...state,
          dismissedWarnings: [ ...state.dismissedWarnings, "send-to-contract" ]
        })))
      })), react.createElement("span", {
        className: "jsx-2225092953" + " " + "detail_item"
      }, react.createElement("div", {
        className: "jsx-2225092953" + " " + "detail_label"
      }, t("networkFees.estimatedNetworkFee")), react.createElement(FeeSettingsButton, {
        onClick: () => setNetworkSettingsModalOpen(true)
      })), react.createElement(TransactionAdditionalDetails, {
        transactionRequest,
        annotation: transactionRequest.annotation
      }), react.createElement("span", {
        className: "jsx-2225092953" + " " + (classnames_default()("detail_item warning", {
          visible: hasInsufficientFundsWarning
        }) || "")
      }, react.createElement(TransactionSignatureDetailsWarning, {
        message: t("networkFees.insufficientBaseAsset", {
          symbol: transactionRequest.network.baseAsset.symbol
        })
      })), react.createElement(style_default(), {
        id: "2225092953"
      }, ".detail_item.jsx-2225092953{width:100%;color:var(--c-text-tertiary);font-size:14px;line-height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.detail_items_wrap.jsx-2225092953{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:21px;gap:10px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.detail_label.jsx-2225092953{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;font-size:14px;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;}.warning.jsx-2225092953{width:100%;max-height:0;-webkit-transform:translateX(calc(-100% - 24px));-ms-transform:translateX(calc(-100% - 24px));transform:translateX(calc(-100% - 24px));-webkit-transition: -webkit-transform ease-out 0.2s, max-height ease-out 0.2s;-webkit-transition: transform ease-out 0.2s, max-height ease-out 0.2s;transition: transform ease-out 0.2s, max-height ease-out 0.2s;}.warning.visible.jsx-2225092953{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);max-height:55px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/DetailsPanel.tsx */"));
    }
    function RawDataPanel({transactionRequest}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction"
      });
      const dispatch = useDispatch();
      const {input} = transactionRequest;
      const copyData = () => {
        navigator.clipboard.writeText(input ?? "");
        dispatch(setSnackbarMessage(t("rawDataCopyMsg")));
      };
      return react.createElement("div", {
        className: "jsx-783765420" + " " + "raw_data_wrap standard_width_padded"
      }, react.createElement(SharedButton, {
        type: "tertiary",
        iconMedium: "copy",
        size: "medium",
        iconPosition: "left",
        onClick: copyData
      }, t("copyRawData")), react.createElement("div", {
        className: "jsx-783765420" + " " + "raw_data_text"
      }, input, " "), react.createElement(style_default(), {
        id: "783765420"
      }, ".raw_data_wrap.jsx-783765420{margin-top:15px;}.raw_data_text.jsx-783765420{margin:5px 0;padding:24px;border-radius:4px;background-color:var(--c-bg-alt);color:var(--c-text-tertiary);overflow-wrap:break-word;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzL1Jhd0RhdGFQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0NrQixBQUcyQixBQUdILGFBQ0EsR0FIZixVQUlvQixrQkFDZSxpQ0FDSiw2QkFDSix5QkFDM0IiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NpZ25pbmcvU2lnbmF0dXJlRGV0YWlscy9UcmFuc2FjdGlvblNpZ25hdHVyZURldGFpbHMvUmF3RGF0YVBhbmVsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIlxuaW1wb3J0IHsgc2V0U25hY2tiYXJNZXNzYWdlIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvdWlcIlxuaW1wb3J0IHsgRW5yaWNoZWRRRVZNVHJhbnNhY3Rpb25SZXF1ZXN0IH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9zZXJ2aWNlcy9lbnJpY2htZW50XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vLi4vLi4vU2hhcmVkL1NoYXJlZEJ1dHRvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhd0RhdGFQYW5lbCh7XG4gIHRyYW5zYWN0aW9uUmVxdWVzdCxcbn06IHtcbiAgdHJhbnNhY3Rpb25SZXF1ZXN0OiBFbnJpY2hlZFFFVk1UcmFuc2FjdGlvblJlcXVlc3Rcbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2lnblRyYW5zYWN0aW9uXCIgfSlcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpXG5cbiAgY29uc3QgeyBpbnB1dCB9ID0gdHJhbnNhY3Rpb25SZXF1ZXN0XG5cbiAgY29uc3QgY29weURhdGEgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaW5wdXQgPz8gXCJcIilcbiAgICBkaXNwYXRjaChzZXRTbmFja2Jhck1lc3NhZ2UodChcInJhd0RhdGFDb3B5TXNnXCIpKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyYXdfZGF0YV93cmFwIHN0YW5kYXJkX3dpZHRoX3BhZGRlZFwiPlxuICAgICAgPFNoYXJlZEJ1dHRvblxuICAgICAgICB0eXBlPVwidGVydGlhcnlcIlxuICAgICAgICBpY29uTWVkaXVtPVwiY29weVwiXG4gICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgb25DbGljaz17Y29weURhdGF9XG4gICAgICA+XG4gICAgICAgIHt0KFwiY29weVJhd0RhdGFcIil9XG4gICAgICA8L1NoYXJlZEJ1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmF3X2RhdGFfdGV4dFwiPntpbnB1dH0gPC9kaXY+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5yYXdfZGF0YV93cmFwIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5yYXdfZGF0YV90ZXh0IHtcbiAgICAgICAgICBtYXJnaW46IDVweCAwO1xuICAgICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/RawDataPanel.tsx */"));
    }
    function TransactionDataPanelSwitcher({transactionRequest}) {
      const switchablePanels = useSwitchablePanels([ {
        name: "Details",
        panelElement: () => react.createElement(DetailPanel, {
          transactionRequest
        })
      }, {
        name: "Raw data",
        panelElement: () => react.createElement(RawDataPanel, {
          transactionRequest
        })
      } ]);
      return switchablePanels;
    }
    function TransactionSignatureDetailsPanelCombined({transactionRequest}) {
      return react.createElement(react.Fragment, null, react.createElement(DetailPanel, {
        transactionRequest
      }), react.createElement(RawDataPanel, {
        transactionRequest
      }));
    }
    function TransactionSignatureSummaryBody({children}) {
      return react.createElement("div", {
        className: "jsx-3031167110"
      }, children, react.createElement(style_default(), {
        id: "3031167110"
      }, "div.jsx-3031167110{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;border-radius:16px;background-color:var(--c-bg-alt);margin:16px 0px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzL1RyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeS9UcmFuc2FjdGlvblNpZ25hdHVyZVN1bW1hcnlCb2R5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXUyxBQUcwQiwwRUFDTSxzRUFDQSxtQkFDYyxpQ0FDakIsZ0JBQ00sOEVBQ0gsNkZBQ3JCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzL1RyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeS9UcmFuc2FjdGlvblNpZ25hdHVyZVN1bW1hcnlCb2R5LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeUJvZHkoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxufSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICAgIG1hcmdpbjogMTZweCAwcHg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryBody.tsx */"));
    }
    function TransferSummaryBase({title, assetAmount, recipientAddress, recipientName}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction.assetTransfer"
      });
      const prices = useBackgroundSelector(getPricesState);
      const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol);
      const assetPricePoint = selectAssetPricePoint(prices, assetAmount.asset, mainCurrencySymbol);
      const localizedMainCurrencyAmount = enrichAssetAmountWithMainCurrencyValues(assetAmount, assetPricePoint, 2).localizedMainCurrencyAmount ?? "-";
      return react.createElement(react.Fragment, null, react.createElement("h1", {
        className: "serif_header title"
      }, title ?? t("title")), react.createElement(TransactionSignatureSummaryBody, null, react.createElement("div", {
        className: "jsx-1298421834" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-1298421834" + " " + "label"
      }, t("sendTo")), react.createElement("div", {
        className: "jsx-1298421834" + " " + "send_to"
      }, react.createElement(SharedAddress, {
        id: "recipientAddress",
        address: recipientAddress,
        name: recipientName
      }))), react.createElement("div", {
        className: "jsx-1298421834" + " " + "divider"
      }), react.createElement("div", {
        className: "jsx-1298421834" + " " + "container"
      }, react.createElement("span", {
        className: "jsx-1298421834" + " " + "label"
      }, t("spendAmountLabel")), react.createElement("span", {
        className: "jsx-1298421834" + " " + "spend_amount"
      }, assetAmount.localizedDecimalAmount, " ", assetAmount.asset.symbol), react.createElement("span", {
        className: "jsx-1298421834" + " " + "label"
      }, "$", `${localizedMainCurrencyAmount}`)), react.createElement(style_default(), {
        id: "1298421834"
      }, ".label.jsx-1298421834{color:var(--c-text-tertiary);font-size:16px;line-height:24px;margin-bottom:4px;}.spend_amount.jsx-1298421834{color:var(--c-text);font-size:28px;text-align:right;text-transform:uppercase;}.divider.jsx-1298421834{width:80%;height:2px;opacity:60%;background-color:var(--c-bg-alt);}.container.jsx-1298421834{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:20px 0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.send_to.jsx-1298421834{font-size:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransferSummary.tsx */")));
    }
    function TransferSummary({annotation: {assetAmount, recipient}}) {
      return react.createElement(TransferSummaryBase, {
        assetAmount,
        recipientAddress: recipient.address,
        recipientName: recipient.annotation.nameRecord?.resolved.nameOnNetwork.name
      });
    }
    function _objectWithoutProperties(e, t) {
      if (null == e) return {};
      var o, r, i = objectWithoutPropertiesLoose_objectWithoutPropertiesLoose(e, t);
      if (Object.getOwnPropertySymbols) {
        var n = Object.getOwnPropertySymbols(e);
        for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
      }
      return i;
    }
    var void_elements = __webpack_require__(7296);
    var void_elements_default = __webpack_require__.n(void_elements);
    var html_parse_stringify_module_t = /\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;
    function html_parse_stringify_module_n(n) {
      var r = {
        type: "tag",
        name: "",
        voidElement: !1,
        attrs: {},
        children: []
      }, i = n.match(/<\/?([^\s]+?)[/\s>]/);
      if (i && (r.name = i[1], (void_elements_default()[i[1]] || "/" === n.charAt(n.length - 2)) && (r.voidElement = !0), 
      r.name.startsWith("!--"))) {
        var s = n.indexOf("--\x3e");
        return {
          type: "comment",
          comment: -1 !== s ? n.slice(4, s) : ""
        };
      }
      for (var a = new RegExp(html_parse_stringify_module_t), c = null; null !== (c = a.exec(n)); ) if (c[0].trim()) if (c[1]) {
        var o = c[1].trim(), l = [ o, "" ];
        o.indexOf("=") > -1 && (l = o.split("=")), r.attrs[l[0]] = l[1], a.lastIndex--;
      } else c[2] && (r.attrs[c[2]] = c[3].trim().substring(1, c[3].length - 1));
      return r;
    }
    var html_parse_stringify_module_r = /<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g, html_parse_stringify_module_i = /^\s*$/, html_parse_stringify_module_s = Object.create(null);
    function html_parse_stringify_module_a(e, t) {
      switch (t.type) {
       case "text":
        return e + t.content;

       case "tag":
        return e += "<" + t.name + (t.attrs ? function(e) {
          var t = [];
          for (var n in e) t.push(n + '="' + e[n] + '"');
          return t.length ? " " + t.join(" ") : "";
        }(t.attrs) : "") + (t.voidElement ? "/>" : ">"), t.voidElement ? e : e + t.children.reduce(html_parse_stringify_module_a, "") + "</" + t.name + ">";

       case "comment":
        return e + "\x3c!--" + t.comment + "--\x3e";
      }
    }
    var html_parse_stringify_module_c = {
      parse: function(e, t) {
        t || (t = {}), t.components || (t.components = html_parse_stringify_module_s);
        var a, c = [], o = [], l = -1, m = !1;
        if (0 !== e.indexOf("<")) {
          var u = e.indexOf("<");
          c.push({
            type: "text",
            content: -1 === u ? e : e.substring(0, u)
          });
        }
        return e.replace(html_parse_stringify_module_r, (function(r, s) {
          if (m) {
            if (r !== "</" + a.name + ">") return;
            m = !1;
          }
          var u, f = "/" !== r.charAt(1), h = r.startsWith("\x3c!--"), p = s + r.length, d = e.charAt(p);
          if (h) {
            var v = html_parse_stringify_module_n(r);
            return l < 0 ? (c.push(v), c) : ((u = o[l]).children.push(v), c);
          }
          if (f && (l++, "tag" === (a = html_parse_stringify_module_n(r)).type && t.components[a.name] && (a.type = "component", 
          m = !0), a.voidElement || m || !d || "<" === d || a.children.push({
            type: "text",
            content: e.slice(p, e.indexOf("<", p))
          }), 0 === l && c.push(a), (u = o[l - 1]) && u.children.push(a), o[l] = a), (!f || a.voidElement) && (l > -1 && (a.voidElement || a.name === r.slice(2, -1)) && (l--, 
          a = -1 === l ? c : o[l]), !m && "<" !== d && d)) {
            u = -1 === l ? c : o[l].children;
            var x = e.indexOf("<", p), g = e.slice(p, -1 === x ? void 0 : x);
            html_parse_stringify_module_i.test(g) && (g = " "), (x > -1 && l + u.length >= 0 || " " !== g) && u.push({
              type: "text",
              content: g
            });
          }
        })), c;
      },
      stringify: function(e) {
        return e.reduce((function(e, t) {
          return e + html_parse_stringify_module_a("", t);
        }), "");
      }
    };
    const html_parse_stringify_module = html_parse_stringify_module_c;
    var Trans_excluded = [ "format" ], Trans_excluded2 = [ "children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape" ];
    function Trans_ownKeys(object, enumerableOnly) {
      var keys = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols = Object.getOwnPropertySymbols(object);
        if (enumerableOnly) {
          symbols = symbols.filter((function(sym) {
            return Object.getOwnPropertyDescriptor(object, sym).enumerable;
          }));
        }
        keys.push.apply(keys, symbols);
      }
      return keys;
    }
    function Trans_objectSpread(target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i] != null ? arguments[i] : {};
        if (i % 2) {
          Trans_ownKeys(Object(source), true).forEach((function(key) {
            _defineProperty(target, key, source[key]);
          }));
        } else if (Object.getOwnPropertyDescriptors) {
          Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
        } else {
          Trans_ownKeys(Object(source)).forEach((function(key) {
            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
          }));
        }
      }
      return target;
    }
    function hasChildren(node, checkLength) {
      if (!node) return false;
      var base = node.props ? node.props.children : node.children;
      if (checkLength) return base.length > 0;
      return !!base;
    }
    function getChildren(node) {
      if (!node) return [];
      return node.props ? node.props.children : node.children;
    }
    function hasValidReactChildren(children) {
      if (Object.prototype.toString.call(children) !== "[object Array]") return false;
      return children.every((function(child) {
        return (0, react.isValidElement)(child);
      }));
    }
    function getAsArray(data) {
      return Array.isArray(data) ? data : [ data ];
    }
    function Trans_mergeProps(source, target) {
      var newTarget = Trans_objectSpread({}, target);
      newTarget.props = Object.assign(source.props, target.props);
      return newTarget;
    }
    function nodesToString(children, i18nOptions) {
      if (!children) return "";
      var stringNode = "";
      var childrenArray = getAsArray(children);
      var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];
      childrenArray.forEach((function(child, childIndex) {
        if (typeof child === "string") {
          stringNode += "".concat(child);
        } else if ((0, react.isValidElement)(child)) {
          var childPropsCount = Object.keys(child.props).length;
          var shouldKeepChild = keepArray.indexOf(child.type) > -1;
          var childChildren = child.props.children;
          if (!childChildren && shouldKeepChild && childPropsCount === 0) {
            stringNode += "<".concat(child.type, "/>");
          } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {
            stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
          } else if (child.props.i18nIsDynamicList) {
            stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
          } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === "string") {
            stringNode += "<".concat(child.type, ">").concat(childChildren, "</").concat(child.type, ">");
          } else {
            var content = nodesToString(childChildren, i18nOptions);
            stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">");
          }
        } else if (child === null) {
          warn("Trans: the passed in value is invalid - seems you passed in a null child.");
        } else if (_typeof(child) === "object") {
          var format = child.format, clone = _objectWithoutProperties(child, Trans_excluded);
          var keys = Object.keys(clone);
          if (keys.length === 1) {
            var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0];
            stringNode += "{{".concat(value, "}}");
          } else {
            warn("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.", child);
          }
        } else {
          warn("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.", child);
        }
      }));
      return stringNode;
    }
    function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {
      if (targetString === "") return [];
      var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
      var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join("|")).test(targetString);
      if (!children && !emptyChildrenButNeedsHandling) return [ targetString ];
      var data = {};
      function getData(childs) {
        var childrenArray = getAsArray(childs);
        childrenArray.forEach((function(child) {
          if (typeof child === "string") return;
          if (hasChildren(child)) getData(getChildren(child)); else if (_typeof(child) === "object" && !(0, 
          react.isValidElement)(child)) Object.assign(data, child);
        }));
      }
      getData(children);
      var ast = html_parse_stringify_module.parse("<0>".concat(targetString, "</0>"));
      var opts = Trans_objectSpread(Trans_objectSpread({}, data), combinedTOpts);
      function renderInner(child, node, rootReactNode) {
        var childs = getChildren(child);
        var mappedChildren = mapAST(childs, node.children, rootReactNode);
        return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
      }
      function pushTranslatedJSX(child, inner, mem, i, isVoid) {
        if (child.dummy) child.children = inner;
        mem.push((0, react.cloneElement)(child, Trans_objectSpread(Trans_objectSpread({}, child.props), {}, {
          key: i
        }), isVoid ? undefined : inner));
      }
      function mapAST(reactNode, astNode, rootReactNode) {
        var reactNodes = getAsArray(reactNode);
        var astNodes = getAsArray(astNode);
        return astNodes.reduce((function(mem, node, i) {
          var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);
          if (node.type === "tag") {
            var tmp = reactNodes[parseInt(node.name, 10)];
            if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];
            if (!tmp) tmp = {};
            var child = Object.keys(node.attrs).length !== 0 ? Trans_mergeProps({
              props: node.attrs
            }, tmp) : tmp;
            var isElement = (0, react.isValidElement)(child);
            var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
            var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === "object" && child.dummy && !isElement;
            var isKnownComponent = _typeof(children) === "object" && children !== null && Object.hasOwnProperty.call(children, node.name);
            if (typeof child === "string") {
              var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);
              mem.push(value);
            } else if (hasChildren(child) || isValidTranslationWithChildren) {
              var inner = renderInner(child, node, rootReactNode);
              pushTranslatedJSX(child, inner, mem, i);
            } else if (isEmptyTransWithHTML) {
              var _inner = mapAST(reactNodes, node.children, rootReactNode);
              mem.push((0, react.cloneElement)(child, Trans_objectSpread(Trans_objectSpread({}, child.props), {}, {
                key: i
              }), _inner));
            } else if (Number.isNaN(parseFloat(node.name))) {
              if (isKnownComponent) {
                var _inner2 = renderInner(child, node, rootReactNode);
                pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);
              } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
                if (node.voidElement) {
                  mem.push((0, react.createElement)(node.name, {
                    key: "".concat(node.name, "-").concat(i)
                  }));
                } else {
                  var _inner3 = mapAST(reactNodes, node.children, rootReactNode);
                  mem.push((0, react.createElement)(node.name, {
                    key: "".concat(node.name, "-").concat(i)
                  }, _inner3));
                }
              } else if (node.voidElement) {
                mem.push("<".concat(node.name, " />"));
              } else {
                var _inner4 = mapAST(reactNodes, node.children, rootReactNode);
                mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">"));
              }
            } else if (_typeof(child) === "object" && !isElement) {
              var content = node.children[0] ? translationContent : null;
              if (content) mem.push(content);
            } else if (node.children.length === 1 && translationContent) {
              mem.push((0, react.cloneElement)(child, Trans_objectSpread(Trans_objectSpread({}, child.props), {}, {
                key: i
              }), translationContent));
            } else {
              mem.push((0, react.cloneElement)(child, Trans_objectSpread(Trans_objectSpread({}, child.props), {}, {
                key: i
              })));
            }
          } else if (node.type === "text") {
            var wrapTextNodes = i18nOptions.transWrapTextNodes;
            var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);
            if (wrapTextNodes) {
              mem.push((0, react.createElement)(wrapTextNodes, {
                key: "".concat(node.name, "-").concat(i)
              }, _content));
            } else {
              mem.push(_content);
            }
          }
          return mem;
        }), []);
      }
      var result = mapAST([ {
        dummy: true,
        children: children || []
      } ], ast, getAsArray(children || []));
      return getChildren(result[0]);
    }
    function Trans(_ref) {
      var children = _ref.children, count = _ref.count, parent = _ref.parent, i18nKey = _ref.i18nKey, context = _ref.context, _ref$tOptions = _ref.tOptions, tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions, values = _ref.values, defaults = _ref.defaults, components = _ref.components, ns = _ref.ns, i18nFromProps = _ref.i18n, tFromProps = _ref.t, shouldUnescape = _ref.shouldUnescape, additionalProps = _objectWithoutProperties(_ref, Trans_excluded2);
      var _ref2 = (0, react.useContext)(I18nContext) || {}, i18nFromContext = _ref2.i18n, defaultNSFromContext = _ref2.defaultNS;
      var i18n = i18nFromProps || i18nFromContext || getI18n();
      if (!i18n) {
        warnOnce("You will need to pass in an i18next instance by using i18nextReactModule");
        return children;
      }
      var t = tFromProps || i18n.t.bind(i18n) || function(k) {
        return k;
      };
      if (context) tOptions.context = context;
      var reactI18nextOptions = Trans_objectSpread(Trans_objectSpread({}, getDefaults()), i18n.options && i18n.options.react);
      var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
      namespaces = typeof namespaces === "string" ? [ namespaces ] : namespaces || [ "translation" ];
      var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;
      var hashTransKey = reactI18nextOptions.hashTransKey;
      var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);
      var interpolationOverride = values ? tOptions.interpolation : {
        interpolation: Trans_objectSpread(Trans_objectSpread({}, tOptions.interpolation), {}, {
          prefix: "#$?",
          suffix: "?$#"
        })
      };
      var combinedTOpts = Trans_objectSpread(Trans_objectSpread(Trans_objectSpread(Trans_objectSpread({}, tOptions), {}, {
        count
      }, values), interpolationOverride), {}, {
        defaultValue,
        ns: namespaces
      });
      var translation = key ? t(key, combinedTOpts) : defaultValue;
      var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);
      var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;
      return useAsParent ? (0, react.createElement)(useAsParent, additionalProps, content) : content;
    }
    function SpendApprovalSummary({transactionRequest, annotation}) {
      const {currentPermission} = useDappPermission();
      const dappFavicon = currentPermission?.faviconUrl;
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction.spendApproval"
      });
      const {t: sharedT} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      const dispatch = useDispatch();
      const {assetAmount: {asset, amount: approvalLimit}, spender: {address: spenderAddress}} = annotation;
      const [approvalLimitString, setApprovalLimitString] = (0, react.useState)(null);
      const [approvalLimitInput, setApprovalLimitInput] = (0, react.useState)(null);
      const [isLoading, setIsLoading] = (0, react.useState)(false);
      const [hasError, setHasError] = (0, react.useState)(false);
      const changing = approvalLimitInput !== null;
      const handleChangeClick = () => {
        setApprovalLimitInput(approvalLimitString ?? "");
      };
      const handleCancelClick = () => {
        setIsLoading(false);
        setApprovalLimitInput(null);
      };
      const handleSaveClick = () => {
        setIsLoading(false);
        if (!changing) return;
        if (approvalLimitInput === "" || approvalLimitInput === approvalLimitString) {
          return;
        }
        const decimalAmount = parseToFixedPointNumber(approvalLimitInput);
        if (decimalAmount === undefined || decimalAmount !== null && decimalAmount.amount < 0n) {
          setHasError(true);
          return;
        }
        setIsLoading(true);
        const bigintAmount = decimalAmount === null ? qethers_lib.qethers.constants.MaxUint256.toBigInt() : convertFixedPointNumber(decimalAmount, asset.decimals).amount;
        setApprovalLimitInput(null);
        const updatedInput = QERC20_INTERFACE.encodeFunctionData(QERC20_FUNCTIONS.approve, [ spenderAddress, (0, 
        lib_utils.hexlify)(bigintAmount) ]);
        dispatch(updateTransactionData({
          ...transactionRequest,
          input: updatedInput
        }));
      };
      (0, react.useEffect)((() => {
        setApprovalLimitString(isMaxUint256(approvalLimit) ? null : fixedPointNumberToString({
          amount: approvalLimit,
          decimals: asset.decimals
        }));
        setIsLoading(false);
      }), [ approvalLimit, asset.decimals ]);
      (0, react.useEffect)((() => {
        dispatch(updateAdditionalSigningStatus(approvalLimitInput !== null ? "editing" : undefined));
      }), [ approvalLimitInput, dispatch ]);
      return react.createElement(react.Fragment, null, react.createElement("h1", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "serif_header title"
      }, t("title")), react.createElement(TransactionSignatureSummaryBody, null, react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spend_destination_icons"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "site_icon"
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "asset_icon_wrap"
      }, react.createElement(SharedAssetIcon, {
        size: "large",
        symbol: asset.symbol,
        logoURL: asset.metadata?.logoURL
      }))), react.createElement("span", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "site"
      }, react.createElement(Trans, {
        t,
        i18nKey: "approveSpender",
        components: {
          spenderAddress: react.createElement(SharedAddress, {
            address: spenderAddress,
            name: annotation.spender.annotation.nameRecord?.resolved?.nameOnNetwork.name
          })
        }
      })), react.createElement("span", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spending_label"
      }, t("spendAmount", {
        assetSymbol: asset.symbol
      })), react.createElement("form", {
        onSubmit: event => event.preventDefault(),
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ])
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spend_limit_header"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spend_limit_label"
      }, t("spendLimit")), react.createElement(SharedTooltip, {
        width: 250
      }, react.createElement("p", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spend_limit_tooltip"
      }, t("tooltip1")), react.createElement("p", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spend_limit_tooltip"
      }, t("tooltip2")))), changing ? react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ])
      }, react.createElement(SharedInput, {
        label: "",
        value: approvalLimitInput,
        placeholder: approvalLimitString ?? "",
        onChange: value => {
          setApprovalLimitInput(value);
          setHasError(false);
        },
        errorMessage: hasError ? t("invalidAmount") : undefined,
        autoSelect: true
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + (classnames_default()("change_limit_actions", {
          has_error: hasError
        }) || "")
      }, react.createElement(SharedButton, {
        size: "small",
        type: "tertiary",
        onClick: handleCancelClick
      }, sharedT("cancelBtn")), react.createElement(SharedButton, {
        size: "small",
        isFormSubmit: true,
        type: "tertiary",
        onClick: handleSaveClick,
        isDisabled: approvalLimitInput === "" || approvalLimitInput === approvalLimitString
      }, sharedT("saveBtn")))) : react.createElement(react.Fragment, null, react.createElement(SharedSkeletonLoader, {
        isLoaded: !isLoading,
        width: 60,
        height: 24
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + (classnames_default()("spend_amount", {
          has_error: approvalLimitString === null
        }) || "")
      }, `${approvalLimitString ?? "Infinite"} ${asset.symbol.toUpperCase()}`)), react.createElement(SharedButton, {
        size: "small",
        isFormSubmit: true,
        type: "tertiary",
        onClick: handleChangeClick
      }, t("changeLimit")))), react.createElement("div", {
        className: style_default().dynamic([ [ "1167350504", [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ] ] ]) + " " + "spacer"
      })), react.createElement(style_default(), {
        id: "1167350504",
        dynamic: [ dappFavicon ?? "./images/dapp_favicon_default@2x.png" ]
      }, `.site_icon.__jsx-style-dynamic-selector{background:url(${dappFavicon ?? "./images/dapp_favicon_default@2x.png"});background-size:cover;width:48px;height:48px;margin-right:-16px;}.spend_destination_icons.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:22px;margin-bottom:16px;}.asset_icon_wrap.__jsx-style-dynamic-selector{z-index:1;}.site.__jsx-style-dynamic-selector{color:var(--c-text);font-size:16px;font-weight:500;line-height:24px;text-align:center;}.spending_label.__jsx-style-dynamic-selector{width:272px;color:var(--c-text-tertiary);font-size:16px;line-height:24px;text-align:center;border-bottom:1px solid var(--c-bg-alt);padding-bottom:16px;margin-bottom:16px;text-align:center;}.spend_limit_header.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.spend_limit_label.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);font-size:14px;line-height:16px;margin-bottom:4px;}.spend_limit_tooltip.__jsx-style-dynamic-selector{margin:0 0 5px;}.spend_limit_tooltip.__jsx-style-dynamic-selector:last-child{margin-bottom:0;}.change_limit_actions.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.change_limit_actions.has_error.__jsx-style-dynamic-selector{margin-top:24px;}.spend_amount.__jsx-style-dynamic-selector{color:var(--c-text);font-size:16px;line-height:24px;}.spend_amount.has_error.__jsx-style-dynamic-selector{color:var(--c-error);}.spacer.__jsx-style-dynamic-selector{margin-bottom:18px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/SpendApprovalSummary.tsx */`));
    }
    function TransactionSignatureSummaryDefault({transactionRequest}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction"
      });
      const {network} = transactionRequest;
      const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol);
      const baseAssetPricePoint = useBackgroundSelector((state => selectAssetPricePoint(state.prices, network.baseAsset, mainCurrencySymbol)));
      const transactionAssetAmount = enrichAssetAmountWithDecimalValues({
        asset: network.baseAsset,
        amount: transactionRequest.value
      }, heuristicDesiredDecimalsForUnitPrice(2, typeof baseAssetPricePoint !== "undefined" ? unitPricePointForPricePoint(baseAssetPricePoint) : undefined));
      return react.createElement(TransferSummaryBase, {
        title: t("title"),
        assetAmount: transactionAssetAmount,
        recipientAddress: transactionRequest.to ?? "-"
      });
    }
    function ContractInteractionSummary({transactionRequest, annotation}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction.contractInteraction"
      });
      return react.createElement(react.Fragment, null, react.createElement("h1", {
        className: "serif_header title"
      }, t("title")), react.createElement(TransactionSignatureSummaryBody, null, react.createElement("div", {
        className: "jsx-1001523268" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-1001523268" + " " + "label"
      }, t("interactingWithLabel")), transactionRequest.to === undefined ? t("newlyCreatedContract") : react.createElement(SharedAddress, {
        id: "recipientAddress",
        address: transactionRequest.to,
        name: annotation !== undefined && "contractInfo" in annotation ? annotation.contractInfo.annotation.nameRecord?.resolved?.nameOnNetwork.name : undefined
      })), react.createElement(style_default(), {
        id: "1001523268"
      }, ".label.jsx-1001523268{color:var(--c-text-tertiary);font-size:16px;line-height:24px;margin-bottom:4px;}.container.jsx-1001523268{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:20px 0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVEZXRhaWxzL1RyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeS9Db250cmFjdEludGVyYWN0aW9uU3VtbWFyeS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUNXLEFBRzRDLEFBTWhCLDZCQUxFLGVBQ0UsaUJBQ0MsYUFJSixLQUhoQixTQUl3Qiw4RUFDSCw2RkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NpZ25pbmcvU2lnbmF0dXJlRGV0YWlscy9UcmFuc2FjdGlvblNpZ25hdHVyZURldGFpbHMvVHJhbnNhY3Rpb25TaWduYXR1cmVTdW1tYXJ5L0NvbnRyYWN0SW50ZXJhY3Rpb25TdW1tYXJ5LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgeyBDb250cmFjdEludGVyYWN0aW9uIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9zZXJ2aWNlcy9lbnJpY2htZW50XCJcbmltcG9ydCBUcmFuc2FjdGlvblNpZ25hdHVyZVN1bW1hcnlCb2R5IGZyb20gXCIuL1RyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeUJvZHlcIlxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TaWduYXR1cmVTdW1tYXJ5UHJvcHMgfSBmcm9tIFwiLi9UcmFuc2FjdGlvblNpZ25hdHVyZVN1bW1hcnlQcm9wc1wiXG5pbXBvcnQgU2hhcmVkQWRkcmVzcyBmcm9tIFwiLi4vLi4vLi4vLi4vU2hhcmVkL1NoYXJlZEFkZHJlc3NcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250cmFjdEludGVyYWN0aW9uU3VtbWFyeSh7XG4gIHRyYW5zYWN0aW9uUmVxdWVzdCxcbiAgYW5ub3RhdGlvbixcbn06IFRyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeVByb3BzPENvbnRyYWN0SW50ZXJhY3Rpb24+KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHtcbiAgICBrZXlQcmVmaXg6IFwic2lnblRyYW5zYWN0aW9uLmNvbnRyYWN0SW50ZXJhY3Rpb25cIixcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8aDEgY2xhc3NOYW1lPVwic2VyaWZfaGVhZGVyIHRpdGxlXCI+e3QoXCJ0aXRsZVwiKX08L2gxPlxuICAgICAgPFRyYW5zYWN0aW9uU2lnbmF0dXJlU3VtbWFyeUJvZHk+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPnt0KFwiaW50ZXJhY3RpbmdXaXRoTGFiZWxcIil9PC9kaXY+XG4gICAgICAgICAge3RyYW5zYWN0aW9uUmVxdWVzdC50byA9PT0gdW5kZWZpbmVkID8gKFxuICAgICAgICAgICAgdChcIm5ld2x5Q3JlYXRlZENvbnRyYWN0XCIpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTaGFyZWRBZGRyZXNzXG4gICAgICAgICAgICAgIGlkPVwicmVjaXBpZW50QWRkcmVzc1wiXG4gICAgICAgICAgICAgIGFkZHJlc3M9e3RyYW5zYWN0aW9uUmVxdWVzdC50b31cbiAgICAgICAgICAgICAgbmFtZT17XG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbiAhPT0gdW5kZWZpbmVkICYmIFwiY29udHJhY3RJbmZvXCIgaW4gYW5ub3RhdGlvblxuICAgICAgICAgICAgICAgICAgPyBhbm5vdGF0aW9uLmNvbnRyYWN0SW5mby5hbm5vdGF0aW9uLm5hbWVSZWNvcmQ/LnJlc29sdmVkXG4gICAgICAgICAgICAgICAgICAgICAgPy5uYW1lT25OZXR3b3JrLm5hbWVcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgICAge2BcbiAgICAgICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYH1cbiAgICAgICAgPC9zdHlsZT5cbiAgICAgIDwvVHJhbnNhY3Rpb25TaWduYXR1cmVTdW1tYXJ5Qm9keT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/ContractInteractionSummary.tsx */")));
    }
    function TransactionSignatureSummary({transactionRequest, annotation}) {
      switch (annotation?.type) {
       case "asset-approval":
        return react.createElement(SpendApprovalSummary, {
          transactionRequest,
          annotation
        });

       case "asset-transfer":
        return react.createElement(TransferSummary, {
          transactionRequest,
          annotation
        });

       case "contract-interaction":
        return transactionRequest.value === BigInt(0) ? react.createElement(ContractInteractionSummary, {
          transactionRequest,
          annotation
        }) : react.createElement(TransactionSignatureSummaryDefault, {
          transactionRequest,
          annotation
        });

       default:
        return react.createElement(TransactionSignatureSummaryDefault, {
          transactionRequest,
          annotation
        });
      }
    }
    function TransactionSignatureDetails({transactionRequest}) {
      const {annotation, broadcastOnSign} = transactionRequest;
      const annotatedTransactionType = annotation?.type ?? "contract-interaction";
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "standard_width",
        "data-broadcast-on-sign": broadcastOnSign
      }, react.createElement(TransactionSignatureSummary, {
        transactionRequest,
        annotation
      })), annotatedTransactionType === "contract-interaction" ? react.createElement(TransactionSignatureDetailsPanelCombined, {
        transactionRequest
      }) : react.createElement(TransactionDataPanelSwitcher, {
        transactionRequest
      }));
    }
    function EIP191Info({signingData, account}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signing"
      });
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-1215729965" + " " + "message"
      }, react.createElement("div", {
        className: "jsx-1215729965" + " " + "message-title"
      }, t("message")), react.createElement("div", {
        id: "message-content",
        className: "jsx-1215729965" + " " + "light"
      }, `${signingData}`)), react.createElement("div", {
        className: "jsx-1215729965" + " " + "message"
      }, react.createElement("div", {
        className: "jsx-1215729965" + " " + "signed"
      }, t("signed")), react.createElement("div", {
        className: "jsx-1215729965"
      }, account ?? "Unknown")), react.createElement(style_default(), {
        id: "1215729965"
      }, ".message.jsx-1215729965{margin:16px;width:100%;overflow-wrap:anywhere;color:--var(green-20);}.message-title.jsx-1215729965{color:var(--c-text-tertiary);margin-bottom:6px;}.light.jsx-1215729965{color:var(--c-text-muted);white-space:pre-wrap;}.label.jsx-1215729965{color:var(--c-text-tertiary);}.header.jsx-1215729965{padding:16px 0;}.signed.jsx-1215729965{margin-bottom:6px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduRGF0YS9FSVAxOTFJbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QmtCLEFBR3VCLEFBTWlCLEFBSUgsQUFJRyxBQUdkLEFBR0csWUFuQlAsR0FpQmIsR0FHQSxLQW5CeUIsR0FTRixHQUpILEFBUXBCLGlCQVp3QixDQUt4QixBQUlBLHFCQVJBIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduRGF0YS9FSVAxOTFJbmZvLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgTWVzc2FnZVNpZ25pbmdSZXF1ZXN0IH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC91dGlscy9zaWduaW5nXCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuXG50eXBlIFByb3BzID0ge1xuICBzaWduaW5nRGF0YTogTWVzc2FnZVNpZ25pbmdSZXF1ZXN0W1wic2lnbmluZ0RhdGFcIl1cbiAgYWNjb3VudDogc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVJUDE5MUluZm8oe1xuICBzaWduaW5nRGF0YSxcbiAgYWNjb3VudCxcbn06IFByb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHsga2V5UHJlZml4OiBcInNpZ25pbmdcIiB9KVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtdGl0bGVcIj57dChcIm1lc3NhZ2VcIil9PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJtZXNzYWdlLWNvbnRlbnRcIiBjbGFzc05hbWU9XCJsaWdodFwiPntgJHtzaWduaW5nRGF0YX1gfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWduZWRcIj57dChcInNpZ25lZFwiKX08L2Rpdj5cbiAgICAgICAgPGRpdj57YWNjb3VudCA/PyBcIlVua25vd25cIn08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgbWFyZ2luOiAxNnB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICAgIGNvbG9yOiAtLXZhcihncmVlbi0yMCk7XG4gICAgICAgIH1cbiAgICAgICAgLm1lc3NhZ2UtdGl0bGUge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgfVxuICAgICAgICAubGlnaHQge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtbXV0ZWQpO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgfVxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgfVxuICAgICAgICAuc2lnbmVkIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/SignData/EIP191Info.tsx */"));
    }
    function SignDataInfo({label, content}) {
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-783184770" + " " + "wrapper"
      }, react.createElement("div", {
        className: "jsx-783184770" + " " + "label"
      }, label, ":"), react.createElement("div", {
        className: "jsx-783184770" + " " + "content"
      }, content)), react.createElement(style_default(), {
        id: "783184770"
      }, ".wrapper.jsx-783184770{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;font-size:16px;line-height:24px;}.wrapper.jsx-783184770 .label.jsx-783184770{font-size:16px;}.content.jsx-783184770{color:var(--c-text-secondary);word-break:break-word;margin-left:3px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduRGF0YS9TaWduRGF0YUluZm8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNrQixBQUd3QixBQU9FLEFBR2UsZUFGaEMsZUFHd0Isc0JBQ04sZ0JBQ2xCLE1BWmdDLG1IQUNuQixXQUNJLGVBQ0UsaUJBQ25CIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduRGF0YS9TaWduRGF0YUluZm8udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNpZ25EYXRhSW5mbyh7IGxhYmVsLCBjb250ZW50IH06IFByb3BzKTogSlNYLkVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPntsYWJlbH06PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiPntjb250ZW50fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC53cmFwcGVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLndyYXBwZXIgLmxhYmVsIHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/SignData/SignDataInfo.tsx */"));
    }
    function EIP4361Info({signingData}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signing.EIP4361"
      });
      const chainName = NETWORK_BY_CHAIN_ID[signingData.chainId.toString()]?.name ?? "Unknown";
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2114401608" + " " + "subtext"
      }, t("subtext1"), react.createElement("br", {
        className: "jsx-2114401608"
      }), t("subtext2")), react.createElement("div", {
        className: "jsx-2114401608" + " " + "address"
      }, signingData.address), react.createElement("div", {
        className: "jsx-2114401608" + " " + "divider spaced"
      }), signingData?.statement ? react.createElement(SignDataInfo, {
        label: t("statement"),
        content: signingData.statement
      }) : null, react.createElement(SignDataInfo, {
        label: t("nonce"),
        content: signingData.nonce
      }), react.createElement(SignDataInfo, {
        label: t("version"),
        content: signingData.version
      }), react.createElement(SignDataInfo, {
        label: t("chainID"),
        content: `${signingData.chainId.toString()} (${chainName})`
      }), signingData?.expiration ? react.createElement(SignDataInfo, {
        label: t("expiration"),
        content: signingData.expiration
      }) : null, react.createElement(style_default(), {
        id: "2114401608"
      }, ".subtext.jsx-2114401608{color:var(--c-text-tertiary);line-height:24px;font-size:16px;margin-bottom:4px;margin-top:16px;}.domain.jsx-2114401608,.address.jsx-2114401608,.subtext.jsx-2114401608{text-align:center;}.address.jsx-2114401608{line-break:anywhere;max-width:80%;font-size:16px;}.spaced.jsx-2114401608{margin:16px 0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduRGF0YS9FSVA0MzYxSW5mby50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNrQixBQUd3QyxBQVNYLEFBR0UsQUFLTixjQUNoQixJQVJBLEVBR2dCLFNBWkcsS0FhRixZQVpBLEdBYWpCLFlBWm9CLGtCQUNGLGdCQUNsQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2lnbkRhdGEvRUlQNDM2MUluZm8udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBFSVA0MzYxRGF0YSB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvdXRpbHMvc2lnbmluZ1wiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7IE5FVFdPUktfQllfQ0hBSU5fSUQgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL2NvbnN0YW50c1wiXG5pbXBvcnQgU2lnbkRhdGFJbmZvIGZyb20gXCIuL1NpZ25EYXRhSW5mb1wiXG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNpZ25pbmdEYXRhOiBFSVA0MzYxRGF0YVxufVxuXG4vLyB0aGlzIG92ZXJyaWRlcyB0aGUgdHlwZSB0byBleHBlY3QgRUlQNDM2MURhdGFcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEVJUDQzNjFJbmZvKHsgc2lnbmluZ0RhdGEgfTogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2lnbmluZy5FSVA0MzYxXCIgfSlcblxuICBjb25zdCBjaGFpbk5hbWUgPVxuICAgIE5FVFdPUktfQllfQ0hBSU5fSURbc2lnbmluZ0RhdGEuY2hhaW5JZC50b1N0cmluZygpXT8ubmFtZSA/PyBcIlVua25vd25cIlxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGV4dFwiPlxuICAgICAgICB7dChcInN1YnRleHQxXCIpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAge3QoXCJzdWJ0ZXh0MlwiKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhZGRyZXNzXCI+e3NpZ25pbmdEYXRhLmFkZHJlc3N9PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXIgc3BhY2VkXCIgLz5cbiAgICAgIHtzaWduaW5nRGF0YT8uc3RhdGVtZW50ID8gKCAvLyBGSVhNRSBDb250ZW50IHNob3VsZCBiZSBvbiB0aGUgbmV4dCBsaW5lIGZvciB0aGlzIG9uZS5cbiAgICAgICAgPFNpZ25EYXRhSW5mbyBsYWJlbD17dChcInN0YXRlbWVudFwiKX0gY29udGVudD17c2lnbmluZ0RhdGEuc3RhdGVtZW50fSAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U2lnbkRhdGFJbmZvIGxhYmVsPXt0KFwibm9uY2VcIil9IGNvbnRlbnQ9e3NpZ25pbmdEYXRhLm5vbmNlfSAvPlxuICAgICAgPFNpZ25EYXRhSW5mbyBsYWJlbD17dChcInZlcnNpb25cIil9IGNvbnRlbnQ9e3NpZ25pbmdEYXRhLnZlcnNpb259IC8+XG4gICAgICA8U2lnbkRhdGFJbmZvXG4gICAgICAgIGxhYmVsPXt0KFwiY2hhaW5JRFwiKX1cbiAgICAgICAgY29udGVudD17YCR7c2lnbmluZ0RhdGEuY2hhaW5JZC50b1N0cmluZygpfSAoJHtjaGFpbk5hbWV9KWB9XG4gICAgICAvPlxuICAgICAge3NpZ25pbmdEYXRhPy5leHBpcmF0aW9uID8gKFxuICAgICAgICA8U2lnbkRhdGFJbmZvXG4gICAgICAgICAgbGFiZWw9e3QoXCJleHBpcmF0aW9uXCIpfVxuICAgICAgICAgIGNvbnRlbnQ9e3NpZ25pbmdEYXRhLmV4cGlyYXRpb259XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnN1YnRleHQge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgfVxuICAgICAgICAuZG9tYWluLFxuICAgICAgICAuYWRkcmVzcyxcbiAgICAgICAgLnN1YnRleHQge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAuYWRkcmVzcyB7XG4gICAgICAgICAgbGluZS1icmVhazogYW55d2hlcmU7XG4gICAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB9XG4gICAgICAgIC5zcGFjZWQge1xuICAgICAgICAgIG1hcmdpbjogMTZweCAwO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/SignData/EIP4361Info.tsx */"));
    }
    function DataSignatureDetails({requestingSource, excludeTitle = false, children}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signing"
      });
      return react.createElement("div", {
        className: "jsx-4108760264" + " " + "primary_info_card standard_width"
      }, react.createElement("div", {
        className: "jsx-4108760264" + " " + "sign_block"
      }, react.createElement("div", {
        className: "jsx-4108760264" + " " + "container"
      }, !excludeTitle && react.createElement("div", {
        className: "jsx-4108760264" + " " + "label header"
      }, t("signatureRequired")), react.createElement("div", {
        className: "jsx-4108760264" + " " + (classnames_default()({
          source: requestingSource !== undefined
        }) || "")
      }, requestingSource), children)), react.createElement(style_default(), {
        id: "4108760264"
      }, ".primary_info_card.jsx-4108760264{display:block;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;border-radius:16px;background-color:var(--c-bg-alt);margin:0 0 16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.sign_block.jsx-4108760264{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.container.jsx-4108760264{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:15px 20px 15px 25px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:16px;line-height:24px;}.header.jsx-4108760264,.source.jsx-4108760264{padding:5px 0 15px;font-size:16px;margin:0 16px;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;border-bottom:1px solid var(--c-bg-alt);-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}.header.jsx-4108760264+.source.jsx-4108760264{padding-top:16px;}.source.jsx-4108760264{font-weight:500;line-height:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25hdHVyZURldGFpbHMvRGF0YVNpZ25hdHVyZURldGFpbHMvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDa0IsQUFHeUIsQUFVRCxBQU1BLEFBU00sQUFTRixBQUdELGNBcENHLEVBcUNGLENBSG5CLEVBVGlCLGNBYWpCLENBWmdCLGNBQ0ssMEJBakJSLEFBTWdCLFVBZlIsQ0FVRyxnQkFNQSxFQWZXLG1CQTBCTyxjQXpCeEIsZ0JBQ0gsVUF5QlUsQ0FqQk8sZ0JBTVgsK0NBYkcsbUNBeUJKLFdBWEgsTUFOakIsQ0FrQkEsUUFYbUIsaUJBZEUsQUFlckIsNkZBZEEiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NpZ25pbmcvU2lnbmF0dXJlRGV0YWlscy9EYXRhU2lnbmF0dXJlRGV0YWlscy9pbmRleC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5cbnR5cGUgRGF0YVNpZ25hdHVyZURldGFpbHNQcm9wcyA9IHtcbiAgcmVxdWVzdGluZ1NvdXJjZT86IHN0cmluZyB8IHVuZGVmaW5lZFxuICBleGNsdWRlVGl0bGU/OiBib29sZWFuXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YVNpZ25hdHVyZURldGFpbHMoe1xuICByZXF1ZXN0aW5nU291cmNlLFxuICBleGNsdWRlVGl0bGUgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG59OiBEYXRhU2lnbmF0dXJlRGV0YWlsc1Byb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHsga2V5UHJlZml4OiBcInNpZ25pbmdcIiB9KVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcmltYXJ5X2luZm9fY2FyZCBzdGFuZGFyZF93aWR0aFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWduX2Jsb2NrXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgeyFleGNsdWRlVGl0bGUgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbCBoZWFkZXJcIj57dChcInNpZ25hdHVyZVJlcXVpcmVkXCIpfTwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHsgc291cmNlOiByZXF1ZXN0aW5nU291cmNlICE9PSB1bmRlZmluZWQgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3JlcXVlc3RpbmdTb3VyY2V9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAucHJpbWFyeV9pbmZvX2NhcmQge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIGhlaWdodDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWFsdCk7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAuc2lnbl9ibG9jayB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIG1hcmdpbjogMTVweCAyMHB4IDE1cHggMjVweDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5zb3VyY2Uge1xuICAgICAgICAgIHBhZGRpbmc6IDVweCAwIDE1cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIG1hcmdpbjogMCAxNnB4O1xuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlciArIC5zb3VyY2Uge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgICAgICB9XG4gICAgICAgIC5zb3VyY2Uge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/DataSignatureDetails/index.tsx */"));
    }
    function MessageDataSignatureDetails({messageRequest}) {
      switch (messageRequest.messageType) {
       case "eip4361":
        return react.createElement(DataSignatureDetails, {
          requestingSource: messageRequest.signingData.domain,
          excludeTitle: true
        }, react.createElement(EIP4361Info, {
          signingData: messageRequest.signingData
        }));

       case "eip191":
        return react.createElement(DataSignatureDetails, null, react.createElement(EIP191Info, {
          account: messageRequest.account.address,
          signingData: messageRequest.signingData
        }));

       default:
        return assertUnreachable(messageRequest);
      }
    }
    function TypedDataFieldValue({value}) {
      const {t} = useTranslation("translation");
      if (typeof value === "string" && isProbablyQEVMAddress(value)) {
        return react.createElement("div", {
          className: "jsx-1502794509" + " " + "value"
        }, react.createElement(SharedAddress, {
          address: value
        }), react.createElement(SharedIcon, {
          icon: "new_tab@2x.png",
          width: 16,
          height: 16,
          color: "var(--c-text-tertiary)",
          hoverColor: "var(--c-accent)",
          ariaLabel: t("viewAddressOnBlockExplorer", {
            blockExplorer: "Etherscan"
          }),
          onClick: () => {
            window.open(`https://etherscan.io/address/${value}`, "_blank")?.focus();
          }
        }), react.createElement(style_default(), {
          id: "1502794509"
        }, "div.jsx-1502794509{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-column-gap:5px;column-gap:5px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text-secondary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx */"));
      }
      return react.createElement("div", {
        title: String(value),
        className: "jsx-1701955116"
      }, String(value), react.createElement(style_default(), {
        id: "1701955116"
      }, "div.jsx-1701955116{color:var(--c-text-secondary);margin-left:10px;overflow:hidden;text-overflow:ellipsis;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx */"));
    }
    function BasicTypedDataDetails({primaryType, fieldsToDisplay}) {
      const {t} = useTranslation();
      const keys = Object.keys(fieldsToDisplay);
      return react.createElement("div", {
        className: "jsx-1989937795" + " " + "messages"
      }, react.createElement("div", {
        className: "jsx-1989937795" + " " + "message"
      }, react.createElement("div", {
        className: "jsx-1989937795" + " " + "key"
      }, t("signing.type")), react.createElement(TypedDataFieldValue, {
        value: primaryType
      })), keys.map((key => {
        const value = fieldsToDisplay[key];
        return react.createElement("div", {
          key,
          className: "jsx-1989937795" + " " + "message"
        }, react.createElement("div", {
          className: "jsx-1989937795" + " " + "key"
        }, textUtils_capitalize(key)), react.createElement(TypedDataFieldValue, {
          value
        }));
      })), react.createElement(style_default(), {
        id: "1989937795"
      }, '.messages.jsx-1989937795{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;font-weight:500;width:100%;padding:16px 0 0;}.icon_external.jsx-1989937795{-webkit-mask-image:url("./images/new_tab@2x.png");mask-image:url("./images/new_tab@2x.png");-webkit-mask-size:16px 16px;mask-size:16px 16px;width:16px;margin-left:4px;font-weight:bold;height:16px;background-color:var(--c-accent);}.message.jsx-1989937795{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-top:8px;}.key.jsx-1989937795{color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx */'));
    }
    function TypedDataSignatureDetails({typedDataRequest}) {
      const {annotation, typedData} = typedDataRequest;
      switch (annotation?.type) {
       case "EIP-2612":
        return react.createElement(DataSignatureDetails, {
          requestingSource: textUtils_capitalize(annotation.source)
        }, react.createElement(BasicTypedDataDetails, {
          primaryType: typedData.primaryType,
          fieldsToDisplay: annotation.displayFields
        }));

       default:
        return react.createElement(DataSignatureDetails, {
          requestingSource: typedData.domain.name
        }, react.createElement(BasicTypedDataDetails, {
          primaryType: typedData.primaryType,
          fieldsToDisplay: typedData.message
        }));
      }
    }
    function resolveTransactionSignatureDetails({request, accountSigner}) {
      const annotation = isEnrichedQEVMTransactionRequest(request) ? request.annotation : undefined;
      return {
        signer: accountSigner,
        signingAddress: {
          address: request.from,
          network: request.network
        },
        signingActionLabelI18nKey: "signTransaction.confirmButtonLabel",
        renderedSigningData: react.createElement(TransactionSignatureDetails, {
          transactionRequest: request
        }),
        signActionCreator: () => signTransaction({
          request,
          accountSigner
        }),
        rejectActionCreator: rejectTransactionSignature,
        redirectToActivityPage: annotation?.type === "asset-swap"
      };
    }
    function resolveDataSignatureDetails({request, accountSigner}) {
      return {
        signer: accountSigner,
        signingAddress: request.account,
        signingActionLabelI18nKey: "signTransaction.confirmButtonLabel",
        renderedSigningData: react.createElement(MessageDataSignatureDetails, {
          messageRequest: request
        }),
        signActionCreator: () => signData({
          request,
          accountSigner
        }),
        rejectActionCreator: rejectDataSignature
      };
    }
    function resolveTypedDataSignatureDetails({request, accountSigner}) {
      return {
        signer: accountSigner,
        signingAddress: request.account,
        signingActionLabelI18nKey: "signTransaction.signTypedData.confirmButtonLabel",
        renderedSigningData: react.createElement(TypedDataSignatureDetails, {
          typedDataRequest: request
        }),
        signActionCreator: () => signTypedData({
          request,
          accountSigner
        }),
        rejectActionCreator: rejectDataSignature
      };
    }
    function resolveSignatureDetails({request, accountSigner}) {
      if ("signingData" in request) {
        return resolveDataSignatureDetails({
          request,
          accountSigner
        });
      }
      if ("typedData" in request) {
        return resolveTypedDataSignatureDetails({
          request,
          accountSigner
        });
      }
      return resolveTransactionSignatureDetails({
        request,
        accountSigner
      });
    }
    function useResolvedSignatureDetails(signOperation) {
      return signOperation === undefined ? undefined : resolveSignatureDetails(signOperation);
    }
    function TransactionButton({id, type, size, isDisabled, onClick, children, reactOnWindowFocus = false, showLoading = false, tooltip = ""}) {
      const hasTransactionLoaded = useBackgroundSelector(selectIsTransactionLoaded);
      const signDataRequest = useBackgroundSelector(selectSigningData);
      const typedDataRequest = useBackgroundSelector(selectTypedData);
      const hasSigningRequest = signDataRequest || typedDataRequest;
      const isTransactionDataReady = hasTransactionLoaded || hasSigningRequest;
      const delaySignButtonTimeout = (0, react.useRef)();
      const [isOnDelayToSign, setIsOnDelayToSign] = (0, react.useState)(false);
      const [unlockButtons, setUnlockButtons] = useDebounce(isTransactionDataReady, 300);
      const [focusChangeNonce, setFocusChangeNonce] = (0, react.useState)(0);
      function clearDelaySignButtonTimeout() {
        if (typeof delaySignButtonTimeout.current !== "undefined") {
          clearTimeout(delaySignButtonTimeout.current);
          delaySignButtonTimeout.current = undefined;
        }
      }
      (0, react.useEffect)((() => {
        setUnlockButtons(isTransactionDataReady);
      }), [ isTransactionDataReady, setUnlockButtons ]);
      (0, react.useEffect)((() => {
        const increaseFocusChangeNonce = () => {
          setFocusChangeNonce((x => x + 1));
        };
        window.addEventListener("focus", increaseFocusChangeNonce);
        window.addEventListener("blur", increaseFocusChangeNonce);
        return () => {
          window.removeEventListener("focus", increaseFocusChangeNonce);
          window.removeEventListener("blur", increaseFocusChangeNonce);
        };
      }), []);
      (0, react.useEffect)((() => {
        clearDelaySignButtonTimeout();
        if (document.hasFocus()) {
          delaySignButtonTimeout.current = window.setTimeout((() => {
            setIsOnDelayToSign(false);
          }), Math.floor(Math.random() * 4 + 1) * 500);
        } else {
          setIsOnDelayToSign(true);
        }
      }), [ focusChangeNonce ]);
      const renderButton = () => react.createElement(SharedButton, {
        id,
        type,
        size,
        onClick,
        showLoadingOnClick: true,
        isDisabled: (reactOnWindowFocus ? isOnDelayToSign : false) || !unlockButtons || isDisabled,
        isLoading: showLoading ? !unlockButtons : false
      }, children);
      return tooltip ? react.createElement(SharedTooltip, {
        width: 200,
        height: 60,
        horizontalPosition: "center",
        verticalPosition: "top",
        horizontalShift: 102,
        type: "dark",
        IconComponent: () => renderButton()
      }, tooltip) : renderButton();
    }
    function SignerBaseFrame({children, signingActionLabel, onConfirm, onReject}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "signTransaction"
      });
      const hasInsufficientFunds = useBackgroundSelector(selectHasInsufficientFunds);
      const additionalSigningStatus = useBackgroundSelector(selectAdditionalSigningStatus);
      const tooltip = additionalSigningStatus === "editing" ? t("unsavedChangesTooltip") : "";
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-3579761589" + " " + "signature-details"
      }, children), react.createElement("footer", {
        className: "jsx-3579761589"
      }, react.createElement(TransactionButton, {
        id: "reject",
        size: "large",
        type: "secondary",
        onClick: onReject
      }, t("reject")), react.createElement(TransactionButton, {
        id: "sign",
        type: "primaryGreen",
        size: "large",
        onClick: onConfirm,
        isDisabled: hasInsufficientFunds || additionalSigningStatus === "editing",
        tooltip,
        showLoadingOnClick: true,
        showLoading: true,
        reactOnWindowFocus: true
      }, signingActionLabel)), react.createElement(style_default(), {
        id: "3579761589"
      }, ".signature-details.jsx-3579761589{margin-bottom:84px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25lci9TaWduZXJCYXNlRnJhbWUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBEUyxBQU9nQyxtQkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NpZ25pbmcvU2lnbmVyL1NpZ25lckJhc2VGcmFtZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgc2VsZWN0SGFzSW5zdWZmaWNpZW50RnVuZHMgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnMvdHJhbnNhY3Rpb25Db25zdHJ1Y3Rpb25TZWxlY3RvcnNcIlxuaW1wb3J0IHsgc2VsZWN0QWRkaXRpb25hbFNpZ25pbmdTdGF0dXMgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zaWduaW5nXCJcbmltcG9ydCB7IHVzZUJhY2tncm91bmRTZWxlY3RvciB9IGZyb20gXCIuLi8uLi8uLi9ob29rc1wiXG5pbXBvcnQgVHJhbnNhY3Rpb25CdXR0b24gZnJvbSBcIi4vVHJhbnNhY3Rpb25CdXR0b25cIlxuXG50eXBlIFNpZ25lckJhc2VGcmFtZVByb3BzID0ge1xuICBzaWduaW5nQWN0aW9uTGFiZWw6IHN0cmluZ1xuICBvbkNvbmZpcm06ICgpID0+IHZvaWRcbiAgb25SZWplY3Q6ICgpID0+IHZvaWRcbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaWduZXJCYXNlRnJhbWUoe1xuICBjaGlsZHJlbixcbiAgc2lnbmluZ0FjdGlvbkxhYmVsLFxuICBvbkNvbmZpcm0sXG4gIG9uUmVqZWN0LFxufTogU2lnbmVyQmFzZUZyYW1lUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2lnblRyYW5zYWN0aW9uXCIgfSlcbiAgY29uc3QgaGFzSW5zdWZmaWNpZW50RnVuZHMgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0SGFzSW5zdWZmaWNpZW50RnVuZHMpXG4gIGNvbnN0IGFkZGl0aW9uYWxTaWduaW5nU3RhdHVzID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKFxuICAgIHNlbGVjdEFkZGl0aW9uYWxTaWduaW5nU3RhdHVzLFxuICApXG4gIGNvbnN0IHRvb2x0aXAgPVxuICAgIGFkZGl0aW9uYWxTaWduaW5nU3RhdHVzID09PSBcImVkaXRpbmdcIiA/IHQoXCJ1bnNhdmVkQ2hhbmdlc1Rvb2x0aXBcIikgOiBcIlwiXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWduYXR1cmUtZGV0YWlsc1wiPntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxUcmFuc2FjdGlvbkJ1dHRvblxuICAgICAgICAgIGlkPVwicmVqZWN0XCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVqZWN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJyZWplY3RcIil9XG4gICAgICAgIDwvVHJhbnNhY3Rpb25CdXR0b24+XG5cbiAgICAgICAgPFRyYW5zYWN0aW9uQnV0dG9uXG4gICAgICAgICAgaWQ9XCJzaWduXCJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeUdyZWVuXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ29uZmlybX1cbiAgICAgICAgICBpc0Rpc2FibGVkPXtcbiAgICAgICAgICAgIGhhc0luc3VmZmljaWVudEZ1bmRzIHx8IGFkZGl0aW9uYWxTaWduaW5nU3RhdHVzID09PSBcImVkaXRpbmdcIlxuICAgICAgICAgIH1cbiAgICAgICAgICB0b29sdGlwPXt0b29sdGlwfVxuICAgICAgICAgIHNob3dMb2FkaW5nT25DbGlja1xuICAgICAgICAgIHNob3dMb2FkaW5nXG4gICAgICAgICAgcmVhY3RPbldpbmRvd0ZvY3VzXG4gICAgICAgID5cbiAgICAgICAgICB7c2lnbmluZ0FjdGlvbkxhYmVsfVxuICAgICAgICA8L1RyYW5zYWN0aW9uQnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5zaWduYXR1cmUtZGV0YWlscyB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogQWRqdXN0IGZvciBmaXhlZC1wb3NpdGlvbiBmb290ZXIsIHBsdXMgc29tZSBleHRyYSB0byB2aXN1YWxseVxuICAgICAgICAgICAgICogZGVhbCB3aXRoIHRoZSBkcm9wIHNoYWRvdy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogODRweDtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/Signer/SignerBaseFrame.tsx */"));
    }
    const isMemoryHistory = history => "entries" in history;
    function SharedBackButton({path, onClick, withoutBackText, hidden = false, round = false}) {
      const {t} = useTranslation();
      const history = useHistory();
      const goBack = () => {
        if (isMemoryHistory(history)) {
          const newLocation = path ?? history.entries.at(-2)?.pathname ?? "/";
          history.push(newLocation, {
            isBack: true
          });
        } else {
          history.goBack();
        }
      };
      return react.createElement("button", {
        type: "button",
        onClick: () => {
          if (onClick) {
            onClick();
          } else {
            goBack();
          }
        },
        className: "jsx-2019118249" + " " + (classnames_default()({
          hide: hidden || !onClick && history.length <= 1,
          round: withoutBackText && round
        }) || "")
      }, react.createElement("div", {
        className: "jsx-2019118249" + " " + "icon"
      }), !withoutBackText && t("shared.backButtonText"), react.createElement(style_default(), {
        id: "2019118249"
      }, 'button.jsx-2019118249{color:var(--c-text-tertiary);font-size:12px;font-weight:500;line-height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:10px;margin-top:4px;}button.jsx-2019118249:hover{color:var(--c-accent);}button.round.jsx-2019118249{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--c-border);border-radius:50%;padding:12px;}.round.jsx-2019118249 .icon.jsx-2019118249{background-color:var(--c-bg-alt);}.icon.jsx-2019118249{-webkit-mask:url("./images/chevron_left.svg") center / contain no-repeat;mask:url("./images/chevron_left.svg") center / contain no-repeat;width:16px;height:16px;background-color:var(--c-text-tertiary);}button.jsx-2019118249:hover .icon.jsx-2019118249{background-color:var(--c-accent);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQmFja0J1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0RrQixBQUd3QyxBQVVQLEFBSUgsQUFPYyxBQUlnQyxBQU9oQyxzQkFyQm5DLE9BVmlCLElBcUJqQixBQVdBLFdBL0JrQixnQkFDQyxpQkFDSixnQkFXYywyQkFDVCxrQkFDTCxBQVNGLFdBQ0MsRUF0Qk8sQUFhckIsVUFVMEMsU0F0QnpCLGVBQ2pCLGdCQXNCQSIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZEJhY2tCdXR0b24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IHsgSGlzdG9yeSwgTWVtb3J5SGlzdG9yeSB9IGZyb20gXCJoaXN0b3J5XCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuXG5jb25zdCBpc01lbW9yeUhpc3RvcnkgPSAoaGlzdG9yeTogSGlzdG9yeTx1bmtub3duPik6IGhpc3RvcnkgaXMgTWVtb3J5SGlzdG9yeSA9PlxuICBcImVudHJpZXNcIiBpbiBoaXN0b3J5XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEJhY2tCdXR0b24oe1xuICBwYXRoLFxuICBvbkNsaWNrLFxuICB3aXRob3V0QmFja1RleHQsXG4gIGhpZGRlbiA9IGZhbHNlLFxuICByb3VuZCA9IGZhbHNlLFxufToge1xuICBwYXRoPzogc3RyaW5nXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkXG4gIHdpdGhvdXRCYWNrVGV4dD86IGJvb2xlYW5cbiAgaGlkZGVuPzogYm9vbGVhblxuICByb3VuZD86IGJvb2xlYW5cbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3Rvcnk8dW5rbm93bj4oKVxuXG4gIGNvbnN0IGdvQmFjayA9ICgpID0+IHtcbiAgICBpZiAoaXNNZW1vcnlIaXN0b3J5KGhpc3RvcnkpKSB7XG4gICAgICBjb25zdCBuZXdMb2NhdGlvbiA9IHBhdGggPz8gaGlzdG9yeS5lbnRyaWVzLmF0KC0yKT8ucGF0aG5hbWUgPz8gXCIvXCJcblxuICAgICAgaGlzdG9yeS5wdXNoKG5ld0xvY2F0aW9uLCB7IGlzQmFjazogdHJ1ZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBoaXN0b3J5LmdvQmFjaygpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgIGhpZGU6IGhpZGRlbiB8fCAoIW9uQ2xpY2sgJiYgaGlzdG9yeS5sZW5ndGggPD0gMSksXG4gICAgICAgIHJvdW5kOiB3aXRob3V0QmFja1RleHQgJiYgcm91bmQsXG4gICAgICB9KX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICBvbkNsaWNrKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnb0JhY2soKVxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvblwiIC8+XG4gICAgICB7IXdpdGhvdXRCYWNrVGV4dCAmJiB0KFwic2hhcmVkLmJhY2tCdXR0b25UZXh0XCIpfVxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b246aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24ucm91bmQge1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYy1ib3JkZXIpO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdW5kIC5pY29uIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWFsdCk7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgbWFzazogdXJsKFwiLi9pbWFnZXMvY2hldnJvbl9sZWZ0LnN2Z1wiKSBjZW50ZXIgLyBjb250YWluIG5vLXJlcGVhdDtcbiAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjpob3ZlciAuaWNvbiB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9idXR0b24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedBackButton.tsx */'));
    }
    var main = __webpack_require__(7065);
    var main_default = __webpack_require__.n(main);
    function PasswordStrengthBar(props) {
      const {password} = props;
      const {t} = useTranslation();
      const [evaluation, setEvaluation] = (0, react.useState)(0);
      (0, react.useEffect)((() => {
        setEvaluation(main_default()(password).score);
      }), [ password ]);
      const getDescription = (0, react.useCallback)((() => {
        if (!password) return t("passwordStrength.strength");
        if (evaluation < 3) return t("passwordStrength.weak");
        if (evaluation === 3) return t("passwordStrength.average");
        return t("passwordStrength.strong");
      }), [ evaluation, password, t ]);
      return react.createElement("div", {
        className: "jsx-4030820236" + " " + (classnames_default()("bar_wrap", {
          bar_weak: password.length && evaluation < 3,
          bar_average: evaluation === 3,
          bar_strong: evaluation > 3
        }) || "")
      }, react.createElement("div", {
        className: "jsx-4030820236" + " " + "bar_background bar_shape"
      }, react.createElement("div", {
        className: "jsx-4030820236" + " " + "bar_fill bar_shape"
      })), react.createElement("div", {
        className: "jsx-4030820236" + " " + "bar_description"
      }, getDescription()), react.createElement(SharedTooltip, {
        width: 150
      }, t("passwordStrength.hintDesc")), react.createElement(style_default(), {
        id: "4030820236"
      }, ".bar_wrap.jsx-4030820236{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;font-weight:500;line-height:16px;color:var(--c-text-tertiary);-webkit-transition:color 300ms;transition:color 300ms;}.bar_shape.jsx-4030820236{height:4px;border-radius:8px;}.bar_background.jsx-4030820236{width:100%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background-color:var(--c-border);}.bar_description.jsx-4030820236{text-align:right;margin-right:-5px;-webkit-flex:0 0 60px;-ms-flex:0 0 60px;flex:0 0 60px;}.bar_fill.jsx-4030820236{width:0%;background-color:var(--c-border);-webkit-transition: width 300ms, background-color 300ms;transition: width 300ms, background-color 300ms;}.bar_weak.bar_wrap.jsx-4030820236{color:var(--c-error);}.bar_weak.jsx-4030820236 .bar_fill.jsx-4030820236{width:30%;background-color:var(--c-error);}.bar_average.bar_wrap.jsx-4030820236{color:var(--c-warning);}.bar_average.jsx-4030820236 .bar_fill.jsx-4030820236{width:60%;background-color:var(--c-warning);}.bar_strong.bar_wrap.jsx-4030820236{color:var(--c-success);}.bar_strong.jsx-4030820236 .bar_fill.jsx-4030820236{width:100%;background-color:var(--c-success);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Password/PasswordStrengthBar.tsx */"));
    }
    function InternalSignerSetPassword() {
      const {t} = useTranslation("translation", {
        keyPrefix: "keyring.setPassword"
      });
      const [password, setPassword] = (0, react.useState)("");
      const [passwordErrorMessage, setPasswordErrorMessage] = (0, react.useState)("");
      const [passwordConfirmation, setPasswordConfirmation] = (0, react.useState)("");
      const history = useHistory();
      const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false);
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        if (areInternalSignersUnlocked) {
          history.goBack();
        }
      }), [ history, areInternalSignersUnlocked ]);
      const validatePassword = () => {
        if (password.length < 8) {
          setPasswordErrorMessage(t("error.characterCount"));
          return false;
        }
        if (password !== passwordConfirmation) {
          setPasswordErrorMessage(t("error.noMatch"));
          return false;
        }
        return true;
      };
      const handleInputChange = f => value => {
        setPasswordErrorMessage("");
        return f(value);
      };
      const dispatchCreatePassword = () => {
        if (validatePassword()) {
          dispatch(createPassword(password));
        }
      };
      return react.createElement("section", {
        className: "jsx-858700310" + " " + "standard_width"
      }, react.createElement("div", {
        className: "jsx-858700310" + " " + "top"
      }, react.createElement(SharedBackButton, {
        path: "/"
      }), react.createElement("div", {
        className: "jsx-858700310" + " " + "wordmark"
      })), react.createElement("h1", {
        className: "jsx-858700310" + " " + "serif_header"
      }, t("title")), react.createElement("div", {
        className: "jsx-858700310" + " " + "simple_text subtitle"
      }, t("subtitleFirstLine"), react.createElement("br", {
        className: "jsx-858700310"
      }), t("subtitleSecondLine")), react.createElement("form", {
        onSubmit: event => {
          event.preventDefault();
          dispatchCreatePassword();
        },
        className: "jsx-858700310"
      }, react.createElement("div", {
        className: "jsx-858700310" + " " + "input_wrap"
      }, react.createElement(PasswordInput, {
        label: t("password"),
        onChange: handleInputChange(setPassword),
        errorMessage: passwordErrorMessage
      })), react.createElement("div", {
        className: "jsx-858700310" + " " + "strength_bar_wrap"
      }, !passwordErrorMessage && react.createElement(PasswordStrengthBar, {
        password
      })), react.createElement("div", {
        className: "jsx-858700310" + " " + "input_wrap repeat_password_wrap"
      }, react.createElement(PasswordInput, {
        label: t("repeatPassword"),
        onChange: handleInputChange(setPasswordConfirmation),
        errorMessage: passwordErrorMessage
      })), react.createElement(SharedButton, {
        type: "primary",
        size: "large",
        onClick: dispatchCreatePassword,
        showLoadingOnClick: !passwordErrorMessage,
        isFormSubmit: true
      }, t("submitBtn"))), react.createElement("div", {
        className: "jsx-858700310" + " " + "restore"
      }, react.createElement(SharedButton, {
        type: "tertiary",
        size: "medium"
      }, t("restorePassword"))), react.createElement(style_default(), {
        id: "858700310"
      }, '.top.jsx-858700310{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}.wordmark.jsx-858700310{background:url("./images/wordmark.svg");background-size:contain;background-repeat:no-repeat;background-position:center;width:95px;height:25px;position:absolute;left:0px;right:0px;margin:0 auto;}.serif_header.jsx-858700310{text-align:center;margin:40px 30px 7px 30px;line-height:42px;}.subtitle.jsx-858700310{text-align:center;margin:24px 0px 51px 0px;white-space:pre-line;}section.jsx-858700310{padding-top:25px;background-color:var(--c-bg-alt);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.input_wrap.jsx-858700310{width:260px;}.strength_bar_wrap.jsx-858700310{width:260px;height:26px;box-sizing:border-box;padding-top:10px;}.repeat_password_wrap.jsx-858700310{margin-bottom:60px;margin-top:27px;}.restore.jsx-858700310{display:none;position:fixed;bottom:26px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/InternalSigner/InternalSignerSetPassword.tsx */'));
    }
    function SignerInternalSigning({signActionCreator, redirectToActivityPage}) {
      const dispatch = useBackgroundDispatch();
      const history = useHistory();
      const lockStatus = useBackgroundSelector(selectInternalSignerStatus);
      const [signingInitiated, setSigningInitiated] = (0, react.useState)(false);
      (0, react.useEffect)((() => {
        if (!signingInitiated && lockStatus === "unlocked") {
          dispatch(signActionCreator()).finally((() => {
            if (redirectToActivityPage) {
              history.push("/", {
                goTo: "activity-page"
              });
            }
          }));
          setSigningInitiated(true);
        }
      }), [ lockStatus, signingInitiated, setSigningInitiated, dispatch, signActionCreator, history, redirectToActivityPage ]);
      if (lockStatus === "uninitialized") {
        return react.createElement(InternalSignerSetPassword, null);
      }
      if (lockStatus === "locked") {
        return react.createElement(InternalSignerUnlock, {
          displayCancelButton: false
        });
      }
      return null;
    }
    function SignerKeyringFrame({children, signActionCreator, rejectActionCreator, signingActionLabelI18nKey, redirectToActivityPage}) {
      const {t} = useTranslation();
      const [isSigning, setIsSigning] = (0, react.useState)(false);
      const dispatch = useBackgroundDispatch();
      const handleConfirm = (0, react.useCallback)((() => {
        setIsSigning(true);
      }), [ setIsSigning ]);
      if (isSigning) {
        return react.createElement(SignerInternalSigning, {
          signActionCreator,
          redirectToActivityPage
        });
      }
      return react.createElement(SignerBaseFrame, {
        signingActionLabel: t(signingActionLabelI18nKey),
        onReject: () => dispatch(rejectActionCreator()),
        onConfirm: handleConfirm
      }, children);
    }
    function SignerReadOnlyFrame({children, rejectActionCreator}) {
      const dispatch = useBackgroundDispatch();
      return react.createElement(react.Fragment, null, children, react.createElement("footer", null, react.createElement(SharedButton, {
        size: "large",
        type: "secondary",
        onClick: () => dispatch(rejectActionCreator())
      }, "Reject"), react.createElement("span", {
        className: "no-signing"
      }, "Read-only accounts cannot sign")));
    }
    function SignerFrame(props) {
      const {signer} = props;
      switch (signer.type) {
       case "keyPair":
        return react.createElement(SignerKeyringFrame, props);

       case "read-only":
        return react.createElement(SignerReadOnlyFrame, props);

       default:
        assertUnreachable(signer);
      }
    }
    function SigningLoading() {
      return react.createElement("div", {
        className: "jsx-4085634061" + " " + "loading_transaction"
      }, react.createElement("div", {
        className: "jsx-4085634061" + " " + "header"
      }, react.createElement(SharedSkeletonLoader, {
        height: 44,
        width: 235
      })), react.createElement("div", {
        className: "jsx-4085634061" + " " + "container"
      }, react.createElement(SharedSkeletonLoader, {
        height: 32
      }), react.createElement(SharedSkeletonLoader, {
        height: 42
      }), react.createElement(SharedSkeletonLoader, {
        height: 52
      })), react.createElement(style_default(), {
        id: "4085634061"
      }, ".loading_transaction.jsx-4085634061{height:100vh;width:100%;background:var(--c-bg);padding-top:64px;}.header.jsx-4085634061{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.container.jsx-4085634061{border-radius:16px;background-color:var(--c-bg-alt);margin:16px;padding:16px;height:250px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25pbmdMb2FkaW5nLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFja0IsQUFHd0IsQUFNQSxBQUlNLGFBVFIsTUFVc0IsS0FUVix1QkFDTixLQVNMLFlBUmQsQUFTZSxVQU5VLEdBT1YsYUFDQSwwRUFDUyxTQVJ4QixxRUFTK0IsMkhBQy9CIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25pbmdMb2FkaW5nLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZFNrZWxldG9uTG9hZGVyIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkU2tlbGV0b25Mb2FkZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaWduaW5nTG9hZGluZygpOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibG9hZGluZ190cmFuc2FjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgPFNoYXJlZFNrZWxldG9uTG9hZGVyIGhlaWdodD17NDR9IHdpZHRoPXsyMzV9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxTaGFyZWRTa2VsZXRvbkxvYWRlciBoZWlnaHQ9ezMyfSAvPlxuICAgICAgICA8U2hhcmVkU2tlbGV0b25Mb2FkZXIgaGVpZ2h0PXs0Mn0gLz5cbiAgICAgICAgPFNoYXJlZFNrZWxldG9uTG9hZGVyIGhlaWdodD17NTJ9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmxvYWRpbmdfdHJhbnNhY3Rpb24ge1xuICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYy1iZyk7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDY0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICBtYXJnaW46IDE2cHg7XG4gICAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgICBoZWlnaHQ6IDI1MHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SigningLoading.tsx */"));
    }
    function SigningNetworkAccountInfoTopBar({accountTotal}) {
      const {t} = useTranslation();
      const {network, shortenedAddress, name, avatarURL} = accountTotal;
      return react.createElement("div", {
        className: "jsx-1682337452" + " " + "top_bar_wrap standard_width"
      }, react.createElement("div", {
        className: "jsx-1682337452" + " " + "row_part network"
      }, react.createElement("div", {
        className: "jsx-1682337452" + " " + "network_icon_wrap"
      }, react.createElement(SharedNetworkIcon, {
        network,
        size: 16
      })), react.createElement("span", {
        className: "jsx-1682337452" + " " + "network_name"
      }, network.name ?? t("signTransaction.unknownNetwork"))), react.createElement("div", {
        className: "jsx-1682337452" + " " + "row_part account"
      }, react.createElement(SharedCurrentAccountInformation, {
        address: accountTotal.address,
        shortenedAddress,
        name,
        avatarURL
      })), react.createElement(style_default(), {
        id: "1682337452"
      }, '.top_bar_wrap.jsx-1682337452{margin:0 auto;margin-top:16px;margin-bottom:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:5px;}.network.jsx-1682337452{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.network_name.jsx-1682337452{color:var(--c-text-secondary);font-size:16px;font-weight:500;line-height:24px;}.row_part.jsx-1682337452{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.account_avatar.jsx-1682337452{border-radius:2px;width:24px;height:24px;background-color:var(--c-bg-alt);margin-left:8px;background:url("./images/portrait.png");background-size:cover;}.network_icon_wrap.jsx-1682337452{width:24px;height:24px;border-radius:4px;background-color:var(--c-bg-inset);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:5px;}.account.jsx-1682337452{min-width:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaWduaW5nL1NpZ25pbmdOZXR3b3JrQWNjb3VudEluZm9Ub3BCYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DUyxBQUcyQixBQVFBLEFBR2dCLEFBTWpCLEFBSUssQUFTUCxBQVVDLFdBVEEsQ0FVZCxFQXhDa0IsSUFxQkwsS0FVTyxNQVROLENBckJPLEFBVUosV0FZa0IsQUFTRSxJQXBCbkIsSUFWSCxPQU1mLEtBS21CLGFBSUUsQUFPSCxFQVNILEVBbkJmLFlBVzBDLGlDQXRCVixPQXVCUixvQkFRSCxFQVByQixlQVRBLHVFQWRVLEtBK0JlLEdBOUJ6QixnR0ErQm1CLGlCQUNuQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2lnbmluZy9TaWduaW5nTmV0d29ya0FjY291bnRJbmZvVG9wQmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgQWNjb3VudFRvdGFsIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvc2VsZWN0b3JzXCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IFNoYXJlZEN1cnJlbnRBY2NvdW50SW5mb3JtYXRpb24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRDdXJyZW50QWNjb3VudEluZm9ybWF0aW9uXCJcbmltcG9ydCBTaGFyZWROZXR3b3JrSWNvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZE5ldHdvcmtJY29uXCJcblxudHlwZSBQcm9wcyA9IHtcbiAgYWNjb3VudFRvdGFsOiBBY2NvdW50VG90YWxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2lnbmluZ05ldHdvcmtBY2NvdW50SW5mb1RvcEJhcih7XG4gIGFjY291bnRUb3RhbCxcbn06IFByb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgbmV0d29yaywgc2hvcnRlbmVkQWRkcmVzcywgbmFtZSwgYXZhdGFyVVJMIH0gPSBhY2NvdW50VG90YWxcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidG9wX2Jhcl93cmFwIHN0YW5kYXJkX3dpZHRoXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd19wYXJ0IG5ldHdvcmtcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXR3b3JrX2ljb25fd3JhcFwiPlxuICAgICAgICAgIDxTaGFyZWROZXR3b3JrSWNvbiBuZXR3b3JrPXtuZXR3b3JrfSBzaXplPXsxNn0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm5ldHdvcmtfbmFtZVwiPlxuICAgICAgICAgIHtuZXR3b3JrLm5hbWUgPz8gdChcInNpZ25UcmFuc2FjdGlvbi51bmtub3duTmV0d29ya1wiKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd19wYXJ0IGFjY291bnRcIj5cbiAgICAgICAgPFNoYXJlZEN1cnJlbnRBY2NvdW50SW5mb3JtYXRpb25cbiAgICAgICAgICBhZGRyZXNzPXthY2NvdW50VG90YWwuYWRkcmVzc31cbiAgICAgICAgICBzaG9ydGVuZWRBZGRyZXNzPXtzaG9ydGVuZWRBZGRyZXNzfVxuICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgYXZhdGFyVVJMPXthdmF0YXJVUkx9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgLnRvcF9iYXJfd3JhcCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGdhcDogNXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAubmV0d29yayB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLm5ldHdvcmtfbmFtZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5yb3dfcGFydCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmFjY291bnRfYXZhdGFyIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1hZ2VzL3BvcnRyYWl0LnBuZ1wiKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5uZXR3b3JrX2ljb25fd3JhcCB7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctaW5zZXQpO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYWNjb3VudCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/SigningNetworkAccountInfoTopBar.tsx */'));
    }
    function Signing_extends() {
      return Signing_extends = Object.assign ? Object.assign.bind() : function(n) {
        for (var e = 1; e < arguments.length; e++) {
          var t = arguments[e];
          for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
        }
        return n;
      }, Signing_extends.apply(null, arguments);
    }
    function SigningLoaded({request, signatureDetails}) {
      const {signingAddress, renderedSigningData} = signatureDetails;
      const signerAccountTotal = useBackgroundSelector((state => getAccountTotal(state, signingAddress)));
      return react.createElement("section", {
        className: "jsx-4281766318"
      }, react.createElement(SharedSkeletonLoader, {
        isLoaded: signerAccountTotal !== undefined,
        height: 32,
        width: 120,
        style: {
          margin: "15px 0 15px 220px"
        }
      }, signerAccountTotal !== undefined && react.createElement(SigningNetworkAccountInfoTopBar, {
        accountTotal: signerAccountTotal
      })), react.createElement(SignerFrame, Signing_extends({
        request
      }, signatureDetails), renderedSigningData), react.createElement(style_default(), {
        id: "4281766318"
      }, "section.jsx-4281766318{width:100%;min-height:100%;overflow-y:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--c-bg);z-index:5;}section.jsx-4281766318 h1.title{color:var(--c-accent);font-weight:500;line-height:42px;text-align:center;}section.jsx-4281766318>footer{position:fixed;bottom:0px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;padding:0px 16px;box-sizing:border-box;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:80px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;box-shadow:0 0 5px rgba(0,20,19,0.5);background-color:var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Signing/index.tsx */"));
    }
    function Signing({request}) {
      const accountSigner = useBackgroundSelector(selectCurrentAccountSigner);
      const signatureDetails = useResolvedSignatureDetails(request === undefined ? undefined : {
        request,
        accountSigner
      });
      if (request === undefined || signatureDetails === undefined) {
        return react.createElement(SigningLoading, null);
      }
      return react.createElement(SigningLoaded, {
        request,
        signatureDetails
      });
    }
    function SignTransaction() {
      const transactionDetails = useBackgroundSelector(selectTransactionData);
      return react.createElement(Signing, {
        request: transactionDetails
      });
    }
    function SignData() {
      const typedDataRequest = useBackgroundSelector(selectTypedData);
      return react.createElement(Signing, {
        request: typedDataRequest
      });
    }
    function PersonalSignData() {
      const signingDataRequest = useBackgroundSelector(selectSigningData);
      return react.createElement(Signing, {
        request: signingDataRequest
      });
    }
    function OverviewAssetsTable(props) {
      const {t} = useTranslation();
      const {assets, initializationLoadingTimeExpired} = props;
      if (!assets) return null;
      function assetSortCompare(a, b) {
        if (a.mainCurrencyAmount !== b.mainCurrencyAmount) {
          if (a.mainCurrencyAmount === undefined) {
            return 1;
          }
          if (b.mainCurrencyAmount === undefined) {
            return -1;
          }
          return b.mainCurrencyAmount - a.mainCurrencyAmount;
        }
        return a.asset.symbol.localeCompare(b.asset.symbol);
      }
      return react.createElement("div", {
        className: "assets_wrapper"
      }, react.createElement("span", {
        className: "assets_title"
      }, `${t("overview.tableHeader.asset")} (${assets.length})`), react.createElement("table", {
        className: "jsx-2219788368" + " " + "assets_table standard_width"
      }, react.createElement("thead", {
        className: "jsx-2219788368"
      }, react.createElement("tr", {
        className: "jsx-2219788368"
      }, react.createElement("th", {
        className: "jsx-2219788368"
      }, t("overview.tableHeader.assets")), react.createElement("th", {
        className: "jsx-2219788368"
      }, t("overview.tableHeader.price")), react.createElement("th", {
        className: "jsx-2219788368"
      }, t("overview.tableHeader.balance")))), react.createElement("tbody", {
        className: "jsx-2219788368"
      }, assets.sort(assetSortCompare).map((asset => react.createElement("tr", {
        key: asset.asset.symbol,
        className: "jsx-2219788368"
      }, react.createElement("td", {
        className: "jsx-2219788368"
      }, react.createElement("div", {
        className: "jsx-2219788368" + " " + "asset_descriptor"
      }, react.createElement(SharedAssetIcon, {
        size: "small",
        logoURL: asset?.asset?.metadata?.logoURL,
        symbol: asset?.asset?.symbol
      }), react.createElement("span", {
        className: "jsx-2219788368" + " " + "asset_name"
      }, asset.asset.symbol))), react.createElement("td", {
        className: "jsx-2219788368"
      }, asset.localizedUnitPrice ? react.createElement("div", {
        className: "jsx-2219788368"
      }, "$", asset.localizedUnitPrice) : react.createElement("div", {
        className: "jsx-2219788368" + " " + "loading_wrap"
      }, !initializationLoadingTimeExpired && react.createElement(SharedLoadingSpinner, {
        size: "small"
      }))), react.createElement("td", {
        className: "jsx-2219788368"
      }, asset.localizedMainCurrencyAmount && react.createElement("div", {
        className: "jsx-2219788368"
      }, "$", asset.localizedMainCurrencyAmount), react.createElement("div", {
        className: "jsx-2219788368" + " " + "balance_token_amount"
      }, asset.localizedDecimalAmount)))))), react.createElement(style_default(), {
        id: "2219788368"
      }, '.assets_wrapper.jsx-2219788368{background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:16px;padding:16px;box-shadow:var(--shadow-sm);margin-bottom:4px;}.assets_title.jsx-2219788368{display:block;font-family:"Segment",sans-serif;font-weight:700;font-size:14px;line-height:20px;color:var(--c-text);padding-bottom:10px;border-bottom:1px solid var(--c-accent-a10);}.assets_table.jsx-2219788368{margin:0;width:100%;border-collapse:collapse;}tr.jsx-2219788368{height:52px;}thead.jsx-2219788368 tr.jsx-2219788368{height:auto;}td.jsx-2219788368,th.jsx-2219788368{text-align:left;font-family:"Segment",sans-serif;padding:0;}th.jsx-2219788368{color:var(--c-text-secondary);font-size:11px;font-weight:600;line-height:16px;padding-bottom:10px;vertical-align:bottom;text-transform:uppercase;-webkit-letter-spacing:0.6px;-moz-letter-spacing:0.6px;-ms-letter-spacing:0.6px;letter-spacing:0.6px;}td.jsx-2219788368{color:var(--c-text);font-size:14px;font-weight:500;border-top:1px solid var(--c-accent-a8);}tbody.jsx-2219788368 tr.jsx-2219788368:last-child td.jsx-2219788368{border-bottom:none;}tbody.jsx-2219788368 tr.jsx-2219788368:hover td.jsx-2219788368{background:var(--c-accent-a5);}td.jsx-2219788368:nth-child(1),th.jsx-2219788368:nth-child(1){width:45%;}th.jsx-2219788368:nth-child(2),td.jsx-2219788368:nth-child(2){width:25%;text-align:right;}th.jsx-2219788368:nth-child(3),td.jsx-2219788368:nth-child(3){width:30%;text-align:right;}.asset_descriptor.jsx-2219788368{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;}.asset_name.jsx-2219788368{font-weight:600;color:var(--c-text);}.balance_token_amount.jsx-2219788368{color:var(--c-accent);font-size:11px;line-height:14px;text-align:right;margin-top:2px;font-weight:500;}.loading_wrap.jsx-2219788368{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/OverviewAssetsTable.tsx */')));
    }
    function BalanceHeader({balance, initializationTimeExpired}) {
      const {t} = useTranslation();
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2375538191" + " " + "balance_header"
      }, react.createElement("span", {
        className: "jsx-2375538191" + " " + "balance_title"
      }, t("overview.totalBalanceEverywhere")), react.createElement("div", {
        className: "jsx-2375538191" + " " + "balance_value"
      }, initializationTimeExpired || balance ? react.createElement(react.Fragment, null, react.createElement("span", {
        className: "jsx-2375538191" + " " + "balance_sign"
      }, "$"), balance ?? "0") : react.createElement(SharedLoadingSpinner, null))), react.createElement(style_default(), {
        id: "2375538191"
      }, '.balance_header.jsx-2375538191{width:100%;background:var(--c-accent);border-radius:20px;padding:28px 24px 24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-shadow:var(--shadow-md);box-sizing:border-box;}.balance_title.jsx-2375538191{color:var(--c-white-a75);font-weight:600;font-size:11px;line-height:16px;margin-bottom:12px;font-family:"Segment",sans-serif;text-transform:uppercase;-webkit-letter-spacing:1.2px;-moz-letter-spacing:1.2px;-ms-letter-spacing:1.2px;letter-spacing:1.2px;}.balance_value.jsx-2375538191{color:var(--c-text-inverse);font-weight:700;font-size:44px;line-height:1;font-family:"Segment",sans-serif;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.balance_sign.jsx-2375538191{color:var(--c-white-a85);font-size:22px;font-weight:600;line-height:1;margin-right:4px;margin-top:6px;font-family:"Segment",sans-serif;position:static;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9PdmVydmlldy9CYWxhbmNlSGVhZGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4QmtCLEFBR3NCLEFBWWMsQUFVRyxBQVNILFdBOUJFLGNBWVgsQUFtQkQsR0FUQyxVQXJCRyxFQStCSCxDQW5CRCxHQVVBLFlBVEUsQUFtQkgsQ0EvQlMsRUFzQlQsV0FVRyxHQW5CRSxBQVVlLE9BdEJyQixPQWdDRSxLQW5CbUIsVUFvQkEsSUFWckIsbUJBVFksVUFvQlQsZUFuQkssQ0FvQnZCLEdBbEN3QiwwQkF1QkMsb0RBdEJKLG1CQWNyQixzQ0FTQSxvQ0F0QjhCLDRCQUNOLHNCQUN4QiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvT3ZlcnZpZXcvQmFsYW5jZUhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IFNoYXJlZExvYWRpbmdTcGlubmVyIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkTG9hZGluZ1NwaW5uZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYWxhbmNlSGVhZGVyKHtcbiAgYmFsYW5jZSxcbiAgaW5pdGlhbGl6YXRpb25UaW1lRXhwaXJlZCxcbn06IHtcbiAgYmFsYW5jZT86IHN0cmluZ1xuICBpbml0aWFsaXphdGlvblRpbWVFeHBpcmVkOiBib29sZWFuXG59KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJiYWxhbmNlX2hlYWRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWxhbmNlX3RpdGxlXCI+XG4gICAgICAgICAge3QoXCJvdmVydmlldy50b3RhbEJhbGFuY2VFdmVyeXdoZXJlXCIpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmFsYW5jZV92YWx1ZVwiPlxuICAgICAgICAgIHtpbml0aWFsaXphdGlvblRpbWVFeHBpcmVkIHx8IGJhbGFuY2UgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWxhbmNlX3NpZ25cIj4kPC9zcGFuPlxuICAgICAgICAgICAgICB7YmFsYW5jZSA/PyBcIjBcIn1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U2hhcmVkTG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuYmFsYW5jZV9oZWFkZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWMtYWNjZW50KTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgIHBhZGRpbmc6IDI4cHggMjRweCAyNHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWxhbmNlX3RpdGxlIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy13aGl0ZS1hNzUpO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiU2VnbWVudFwiLCBzYW5zLXNlcmlmO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5iYWxhbmNlX3ZhbHVlIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LWludmVyc2UpO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgZm9udC1zaXplOiA0NHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIlNlZ21lbnRcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICAgIC5iYWxhbmNlX3NpZ24ge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXdoaXRlLWE4NSk7XG4gICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIlNlZ21lbnRcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/BalanceHeader.tsx */'));
    }
    const NETWORK_DEFAULT_COLORS = {
      [ZEUS.chainID]: "#43B69A",
      [POSEIDON.chainID]: "#6C63FF"
    };
    const NETWORK_COLORS = (0, lodash.shuffle)([ "#43B69A", "#CC3C3C", "#EA7E30", "#B64396", "#EAC130", "#D1517F", "#CDA928", "#5184D1", "#9FB643", "#404BB2", "#43B671" ]);
    const getNetworksPercents = accountsTotal => {
      let totalsSum = 0;
      const totalsByChain = {};
      Object.values(accountsTotal).forEach((({totals}) => Object.entries(totals).forEach((([chainID, total]) => {
        totalsByChain[chainID] ??= 0;
        totalsByChain[chainID] += total;
        totalsSum += total;
      }))));
      return Object.entries(totalsByChain).flatMap((([chainID, total]) => {
        const percent = totalsSum ? Math.round(total / totalsSum * 100) : 0;
        return percent > 0 ? {
          chainID,
          percent
        } : [];
      }));
    };
    function NetworksChart({accountsTotal, networksCount}) {
      const {t} = useTranslation();
      const EVMNetworks = useBackgroundSelector(selectQEVMNetworks).reduce(((acc, network) => {
        acc[network.chainID] = network;
        return acc;
      }), {});
      const availableColors = [ ...NETWORK_COLORS ];
      const percents = getNetworksPercents(accountsTotal).map((percent => {
        if (NETWORK_DEFAULT_COLORS[percent.chainID]) {
          return {
            ...percent,
            color: NETWORK_DEFAULT_COLORS[percent.chainID]
          };
        }
        if (!availableColors.length) {
          availableColors.push(...NETWORK_COLORS);
        }
        const color = availableColors.pop();
        return {
          ...percent,
          color
        };
      }));
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-1416639589" + " " + "networks_wrapper"
      }, react.createElement("div", {
        className: "jsx-1416639589" + " " + "chains_header"
      }, t("overview.networks"), " (", networksCount, ")"), react.createElement("div", {
        className: "jsx-1416639589" + " " + "chains_chart"
      }, percents.map((({chainID, percent, color}) => react.createElement("div", {
        key: chainID,
        style: {
          width: `${percent}%`,
          background: color
        },
        className: "jsx-1416639589" + " " + "chart_item"
      })))), react.createElement("div", {
        className: "jsx-1416639589" + " " + "chains_legend"
      }, percents.map((({chainID, percent, color}, i) => react.createElement("div", {
        key: chainID,
        className: "jsx-1416639589" + " " + "chains_legend_item"
      }, react.createElement("div", {
        style: {
          backgroundColor: color
        },
        className: "jsx-1416639589" + " " + "chains_legend_dot"
      }), EVMNetworks[chainID]?.name || `Network ${i}`, "(", percent, "%)"))))), react.createElement(style_default(), {
        id: "1416639589"
      }, '.networks_wrapper.jsx-1416639589{background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:16px;padding:16px;box-sizing:border-box;box-shadow:var(--shadow-sm);}.chains_header.jsx-1416639589{font-family:"Segment",sans-serif;font-weight:700;font-size:14px;line-height:20px;color:var(--c-text);padding-bottom:10px;border-bottom:1px solid var(--c-accent-a10);margin-bottom:12px;}.chains_chart.jsx-1416639589{margin:0 0 12px;height:6px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:var(--c-accent-a10);border-radius:6px;overflow:hidden;gap:2px;}.chart_item.jsx-1416639589{height:100%;border-radius:3px;}.chains_legend.jsx-1416639589{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px 12px;}.chains_legend_item.jsx-1416639589{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px;line-height:16px;color:var(--c-text-secondary);font-family:"Segment",sans-serif;font-weight:500;gap:5px;}.chains_legend_dot.jsx-1416639589{width:7px;height:7px;border-radius:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/NetworksChart.tsx */'));
    }
    function AccountItem({name, address, percent, total}) {
      const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol);
      const balance = formatCurrencyAmount(mainCurrencySymbol, total, 2);
      const percentText = `${percent}%`;
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-4047742529" + " " + "account_item"
      }, react.createElement(SharedAddress, {
        address,
        name,
        elide: true
      }), react.createElement("span", {
        title: percentText,
        className: "jsx-4047742529" + " " + "account_value ellipsis"
      }, percentText), react.createElement("span", {
        title: `$${balance}`,
        className: "jsx-4047742529" + " " + "account_value ellipsis"
      }, "$", balance)), react.createElement(style_default(), {
        id: "4047742529"
      }, '.account_item.jsx-4047742529{color:var(--c-text);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-family:"Segment",sans-serif;border-bottom:1px solid var(--c-accent-a8);-webkit-transition:background 0.15s ease;transition:background 0.15s ease;}.account_item.jsx-4047742529:last-child{border-bottom:none;padding-bottom:0;}.account_item.jsx-4047742529:first-child{padding-top:0;}.account_item.jsx-4047742529:hover{background:var(--c-accent-a5);}.account_item.jsx-4047742529>:nth-child(1){-webkit-flex:1;-ms-flex:1;flex:1;text-align:left;color:var(--c-text);font-weight:500;min-width:0;}.account_value.jsx-4047742529:nth-child(2){width:52px;text-align:right;color:var(--c-accent);font-size:12px;font-weight:600;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.account_value.jsx-4047742529:nth-child(3){width:90px;text-align:right;font-weight:600;color:var(--c-text);-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9PdmVydmlldy9BY2NvdW50SXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JrQixBQUcrQixBQVFELEFBSUwsQUFHZ0IsQUFHdkIsQUFPSSxBQVFBLFdBUE0sQUFRQSxHQXJCbkIsS0FKbUIsQ0FSSixRQTBCUyxBQVFOLEVBbkJsQixHQUdrQixHQVRsQixRQTBCc0IsS0FoQkEsQ0FRTCxjQVNELENBUkUsSUFSQSxZQVNGLElBUkYsU0FwQk8sR0FxQnJCLHVCQWVBLGlCQVBBLGtEQTVCb0MsaUNBQ1MsMkNBQ1YsMEVBQ25DIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9PdmVydmlldy9BY2NvdW50SXRlbS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZWxlY3RNYWluQ3VycmVuY3lTeW1ib2wgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3lBbW91bnQgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy91dGlscy9hc3NldC11dGlsc1wiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZUJhY2tncm91bmRTZWxlY3RvciB9IGZyb20gXCIuLi8uLi9ob29rc1wiXG5pbXBvcnQgU2hhcmVkQWRkcmVzcyBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEFkZHJlc3NcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBY2NvdW50SXRlbSh7XG4gIG5hbWUsXG4gIGFkZHJlc3MsXG4gIHBlcmNlbnQsXG4gIHRvdGFsLFxufToge1xuICBuYW1lOiBzdHJpbmdcbiAgYWRkcmVzczogc3RyaW5nXG4gIHBlcmNlbnQ6IG51bWJlclxuICB0b3RhbDogbnVtYmVyXG59KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgbWFpbkN1cnJlbmN5U3ltYm9sID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdE1haW5DdXJyZW5jeVN5bWJvbClcbiAgY29uc3QgYmFsYW5jZSA9IGZvcm1hdEN1cnJlbmN5QW1vdW50KG1haW5DdXJyZW5jeVN5bWJvbCwgdG90YWwsIDIpXG4gIGNvbnN0IHBlcmNlbnRUZXh0ID0gYCR7cGVyY2VudH0lYFxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFjY291bnRfaXRlbVwiPlxuICAgICAgICA8U2hhcmVkQWRkcmVzcyBhZGRyZXNzPXthZGRyZXNzfSBuYW1lPXtuYW1lfSBlbGlkZSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhY2NvdW50X3ZhbHVlIGVsbGlwc2lzXCIgdGl0bGU9e3BlcmNlbnRUZXh0fT5cbiAgICAgICAgICB7cGVyY2VudFRleHR9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWNjb3VudF92YWx1ZSBlbGxpcHNpc1wiIHRpdGxlPXtgJCR7YmFsYW5jZX1gfT5cbiAgICAgICAgICAke2JhbGFuY2V9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuYWNjb3VudF9pdGVtIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0KTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiU2VnbWVudFwiLCBzYW5zLXNlcmlmO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jLWFjY2VudC1hOCk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlO1xuICAgICAgICB9XG4gICAgICAgIC5hY2NvdW50X2l0ZW06bGFzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgICAgICAuYWNjb3VudF9pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgICAuYWNjb3VudF9pdGVtOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWFjY2VudC1hNSk7XG4gICAgICAgIH1cbiAgICAgICAgLmFjY291bnRfaXRlbSA+IDpnbG9iYWwoOm50aC1jaGlsZCgxKSkge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0KTtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuICAgICAgICAuYWNjb3VudF92YWx1ZTpudGgtY2hpbGQoMikge1xuICAgICAgICAgIHdpZHRoOiA1MnB4O1xuICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLWFjY2VudCk7XG4gICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmFjY291bnRfdmFsdWU6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICB3aWR0aDogOTBweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQpO1xuICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/AccountItem.tsx */'));
    }
    const getAccountsList = accountsTotal => {
      let totalsSum = 0;
      const list = Object.entries(accountsTotal).map((([address, {ensName, totals, shortenedAddress}]) => {
        const total = Object.values(totals).reduce(((sum, current) => sum + current), 0);
        totalsSum += total;
        return {
          name: ensName ?? shortenedAddress,
          address,
          total,
          percent: 0
        };
      }));
      list.forEach((accountTotal => {
        accountTotal.percent = Math.round(totalsSum ? accountTotal.total / totalsSum * 100 : 0);
      }));
      list.sort(((account1, account2) => account2.percent - account1.percent));
      return list;
    };
    function AccountList({accountsTotal, accountsCount}) {
      const [isOpen, setIsOpen] = (0, react.useState)(false);
      const {t} = useTranslation();
      const accounts = getAccountsList(accountsTotal);
      const isCollapsible = accounts.length > 3;
      const toggle = () => setIsOpen((prev => !prev));
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-688088011" + " " + "accounts_list"
      }, react.createElement("div", {
        className: "jsx-688088011" + " " + "accounts_header"
      }, react.createElement("span", {
        className: "jsx-688088011"
      }, t("overview.accounts"), " (", accountsCount, ")"), isCollapsible && react.createElement("button", {
        type: "button",
        onClick: () => toggle(),
        className: "jsx-688088011" + " " + "accounts_toggle"
      }, isOpen ? t("toggle.collapse") : t("toggle.viewAll"), react.createElement(SharedIcon, {
        icon: "icons/s/arrow-toggle.svg",
        width: 12,
        height: 10,
        color: "var(--c-text-tertiary)",
        onClick: e => {
          e.stopPropagation();
          toggle();
        },
        style: {
          marginLeft: 5,
          transform: `rotate(${isOpen ? "180" : "0"}deg)`,
          transition: "transform 100ms"
        }
      }))), react.createElement("div", {
        className: "jsx-688088011"
      }, (!isCollapsible || isOpen ? accounts : accounts.slice(0, 3)).map((({address, name, total, percent}) => react.createElement(AccountItem, {
        key: name,
        name,
        address,
        total,
        percent
      }))))), react.createElement(style_default(), {
        id: "1079535016"
      }, '.accounts_list.jsx-688088011{background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:16px;padding:16px;box-shadow:var(--shadow-sm);}.accounts_header.jsx-688088011{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;font-size:14px;line-height:20px;color:var(--c-text);padding-bottom:10px;border-bottom:1px solid var(--c-accent-a10);}.accounts_toggle.jsx-688088011{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-accent);font-size:12px;font-weight:600;font-family:"Segment",sans-serif;-webkit-transition:opacity 0.2s ease;transition:opacity 0.2s ease;}.accounts_toggle.jsx-688088011:hover{opacity:0.75;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/AccountList.tsx */'), react.createElement(style_default(), {
        id: "3202550922"
      }, ".accounts_toggle:hover button{background-color:var(--c-text);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/AccountList.tsx */"));
    }
    function NFTsPortfolioOverview() {
      const {t} = useTranslation();
      const nftCount = useBackgroundSelector(selectFilteredNFTsCount);
      const collectionCount = useBackgroundSelector(selectFilteredNFTCollectionsCount);
      const badgeCount = useBackgroundSelector(selectFilteredNFTBadgesCount);
      const {totalFloorPriceInUSD} = useTotalNFTsFloorPrice();
      return react.createElement("section", {
        className: "jsx-1763133523" + " " + "nfts_card"
      }, react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_header"
      }, react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_title"
      }, "NFTs"), react.createElement(SharedTooltip, {
        width: 180,
        horizontalPosition: "right"
      }, t("overview.nftsTooltip")), react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_estimate"
      }, "~$", totalFloorPriceInUSD)), react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stats"
      }, react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stat"
      }, react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_value"
      }, nftCount), react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_label"
      }, "NFTs")), react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stat_divider"
      }), react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stat"
      }, react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_value"
      }, collectionCount), react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_label"
      }, "Collections")), react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stat_divider"
      }), react.createElement("div", {
        className: "jsx-1763133523" + " " + "nfts_stat"
      }, react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_value"
      }, badgeCount), react.createElement("span", {
        className: "jsx-1763133523" + " " + "nfts_stat_label"
      }, "Badges"))), react.createElement(style_default(), {
        id: "1763133523"
      }, '.nfts_card.jsx-1763133523{background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:16px;padding:16px;box-shadow:var(--shadow-sm);}.nfts_header.jsx-1763133523{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--c-accent-a10);}.nfts_title.jsx-1763133523{font-family:"Segment",sans-serif;font-weight:700;font-size:14px;line-height:20px;color:var(--c-text);}.nfts_estimate.jsx-1763133523{font-family:"Segment",sans-serif;font-weight:600;font-size:13px;color:var(--c-accent);margin-left:auto;}.nfts_stats.jsx-1763133523{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.nfts_stat.jsx-1763133523{-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:8px 0;}.nfts_stat_value.jsx-1763133523{font-family:"Segment",sans-serif;font-weight:700;font-size:22px;line-height:1.2;color:var(--c-text);}.nfts_stat_label.jsx-1763133523{font-family:"Segment",sans-serif;font-weight:500;font-size:11px;line-height:1;color:var(--c-text-secondary);text-transform:uppercase;-webkit-letter-spacing:0.5px;-moz-letter-spacing:0.5px;-ms-letter-spacing:0.5px;letter-spacing:0.5px;}.nfts_stat_divider.jsx-1763133523{width:1px;height:32px;background:var(--c-accent-a15);-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Overview/NFTsPortfolioOverview.tsx */'));
    }
    function Overview() {
      const accountsTotal = useBackgroundSelector(selectAccountTotalsForOverview);
      const balance = useBackgroundSelector(getTotalBalanceForOverview);
      const networksCount = useBackgroundSelector(getNetworkCountForOverview);
      const accountsCount = useBackgroundSelector(getAddressCount);
      const {combinedData} = useBackgroundSelector(selectAccountAndTimestampedActivities);
      const initializationLoadingTimeExpired = useBackgroundSelector(selectInitializationTimeExpired);
      return react.createElement("section", {
        className: "jsx-2807543939" + " " + "stats"
      }, react.createElement(BalanceHeader, {
        balance,
        initializationTimeExpired: initializationLoadingTimeExpired
      }), react.createElement(AccountList, {
        accountsTotal,
        accountsCount
      }), react.createElement(NetworksChart, {
        accountsTotal,
        networksCount
      }), react.createElement(NFTsPortfolioOverview, null), react.createElement(OverviewAssetsTable, {
        assets: combinedData.assets,
        initializationLoadingTimeExpired
      }), react.createElement(style_default(), {
        id: "2807543939"
      }, ".stats.jsx-2807543939{padding:16px;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;background-color:var(--c-bg-alt);box-sizing:border-box;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT3ZlcnZpZXcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1EUyxBQUcwQixhQUNGLFdBQ0UsMEVBQ1MsOEVBQ2IsU0FDd0IsaUNBQ1gsc0JBQ3hCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT3ZlcnZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1xuICBnZXRBZGRyZXNzQ291bnQsXG4gIGdldE5ldHdvcmtDb3VudEZvck92ZXJ2aWV3LFxuICBnZXRUb3RhbEJhbGFuY2VGb3JPdmVydmlldyxcbiAgc2VsZWN0QWNjb3VudEFuZFRpbWVzdGFtcGVkQWN0aXZpdGllcyxcbiAgc2VsZWN0QWNjb3VudFRvdGFsc0Zvck92ZXJ2aWV3LFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IHsgc2VsZWN0SW5pdGlhbGl6YXRpb25UaW1lRXhwaXJlZCB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvcmVkdXgtc2xpY2VzL3VpXCJcbmltcG9ydCB7IHVzZUJhY2tncm91bmRTZWxlY3RvciB9IGZyb20gXCIuLi9ob29rc1wiXG5pbXBvcnQgT3ZlcnZpZXdBc3NldHNUYWJsZSBmcm9tIFwiLi4vY29tcG9uZW50cy9PdmVydmlldy9PdmVydmlld0Fzc2V0c1RhYmxlXCJcbmltcG9ydCBCYWxhbmNlSGVhZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL092ZXJ2aWV3L0JhbGFuY2VIZWFkZXJcIlxuaW1wb3J0IE5ldHdvcmtzQ2hhcnQgZnJvbSBcIi4uL2NvbXBvbmVudHMvT3ZlcnZpZXcvTmV0d29ya3NDaGFydFwiXG5pbXBvcnQgQWNjb3VudExpc3QgZnJvbSBcIi4uL2NvbXBvbmVudHMvT3ZlcnZpZXcvQWNjb3VudExpc3RcIlxuaW1wb3J0IE5GVHNQb3J0Zm9saW9PdmVydmlldyBmcm9tIFwiLi4vY29tcG9uZW50cy9PdmVydmlldy9ORlRzUG9ydGZvbGlvT3ZlcnZpZXdcIlxuLy8gaW1wb3J0IEFiaWxpdGllc0hlYWRlciBmcm9tIFwiLi4vY29tcG9uZW50cy9PdmVydmlldy9BYmlsaXRpZXNIZWFkZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPdmVydmlldygpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBhY2NvdW50c1RvdGFsID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEFjY291bnRUb3RhbHNGb3JPdmVydmlldylcbiAgY29uc3QgYmFsYW5jZSA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihnZXRUb3RhbEJhbGFuY2VGb3JPdmVydmlldylcbiAgY29uc3QgbmV0d29ya3NDb3VudCA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihnZXROZXR3b3JrQ291bnRGb3JPdmVydmlldylcbiAgY29uc3QgYWNjb3VudHNDb3VudCA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihnZXRBZGRyZXNzQ291bnQpXG5cbiAgY29uc3QgeyBjb21iaW5lZERhdGEgfSA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihcbiAgICBzZWxlY3RBY2NvdW50QW5kVGltZXN0YW1wZWRBY3Rpdml0aWVzLFxuICApXG4gIGNvbnN0IGluaXRpYWxpemF0aW9uTG9hZGluZ1RpbWVFeHBpcmVkID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKFxuICAgIHNlbGVjdEluaXRpYWxpemF0aW9uVGltZUV4cGlyZWQsXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInN0YXRzXCI+XG4gICAgICA8QmFsYW5jZUhlYWRlclxuICAgICAgICBiYWxhbmNlPXtiYWxhbmNlfVxuICAgICAgICBpbml0aWFsaXphdGlvblRpbWVFeHBpcmVkPXtpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZH1cbiAgICAgIC8+XG4gICAgICB7LyogPEFiaWxpdGllc0hlYWRlciAvPiAqL31cbiAgICAgIDxBY2NvdW50TGlzdFxuICAgICAgICBhY2NvdW50c1RvdGFsPXthY2NvdW50c1RvdGFsfVxuICAgICAgICBhY2NvdW50c0NvdW50PXthY2NvdW50c0NvdW50fVxuICAgICAgLz5cbiAgICAgIDxOZXR3b3Jrc0NoYXJ0XG4gICAgICAgIGFjY291bnRzVG90YWw9e2FjY291bnRzVG90YWx9XG4gICAgICAgIG5ldHdvcmtzQ291bnQ9e25ldHdvcmtzQ291bnR9XG4gICAgICAvPlxuICAgICAgPE5GVHNQb3J0Zm9saW9PdmVydmlldyAvPlxuICAgICAgPE92ZXJ2aWV3QXNzZXRzVGFibGVcbiAgICAgICAgYXNzZXRzPXtjb21iaW5lZERhdGEuYXNzZXRzfVxuICAgICAgICBpbml0aWFsaXphdGlvbkxvYWRpbmdUaW1lRXhwaXJlZD17aW5pdGlhbGl6YXRpb25Mb2FkaW5nVGltZUV4cGlyZWR9XG4gICAgICAvPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuc3RhdHMge1xuICAgICAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWFsdCk7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9zZWN0aW9uPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Overview.tsx */"));
    }
    const SingleAsset_MAX_SYMBOL_LENGTH = 10;
    function SingleAsset() {
      const {t} = useTranslation();
      const location = useLocation();
      const locationAsset = location.state;
      const {symbol} = locationAsset;
      const contractAddress = "contractAddress" in locationAsset ? locationAsset.contractAddress : undefined;
      const currentAccountSigner = useBackgroundSelector(selectCurrentAccountSigner);
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      const filteredActivities = useBackgroundSelector((state => (selectCurrentAccountActivities(state) ?? []).filter((activity => {
        if (typeof contractAddress !== "undefined" && contractAddress === activity.to) {
          return true;
        }
        switch (activity?.type) {
         case "asset-transfer":
         case "asset-approval":
          return activity.assetSymbol === symbol;

         case "asset-swap":
          return activity.assetSymbol === symbol;

         case "contract-interaction":
         case "contract-deployment":
         default:
          return false;
        }
      }))));
      const {asset, localizedMainCurrencyAmount, localizedDecimalAmount} = useBackgroundSelector((state => {
        const balances = selectCurrentAccountBalances(state);
        if (typeof balances === "undefined") {
          return undefined;
        }
        return balances.allAssetAmounts.find((({asset: candidateAsset}) => {
          if (typeof contractAddress !== "undefined") {
            return isSmartContractFungibleAsset(candidateAsset) && sameQEVMAddress(candidateAsset.contractAddress, contractAddress);
          }
          return candidateAsset.symbol === symbol;
        }));
      })) ?? {
        asset: undefined,
        localizedMainCurrencyAmount: undefined,
        localizedDecimalAmount: undefined
      };
      const isTrusted = asset && isTrustedAsset(asset);
      const isVerified = asset && isVerifiedAsset(asset);
      const [warnedAsset, setWarnedAsset] = (0, react.useState)(null);
      return react.createElement(react.Fragment, null, react.createElement(AssetWarningWrapper, {
        asset: warnedAsset,
        close: () => {
          setWarnedAsset(null);
        }
      }), asset && react.createElement("div", {
        className: "jsx-1308515970" + " " + "header standard_width_padded"
      }, react.createElement("div", {
        "data-testid": "left_wrap",
        className: "jsx-1308515970" + " " + "left"
      }, react.createElement("div", {
        className: "jsx-1308515970" + " " + "asset_wrap"
      }, react.createElement(SharedAssetIcon, {
        logoURL: asset?.metadata?.logoURL,
        symbol: asset?.symbol
      }), react.createElement("span", {
        className: "jsx-1308515970" + " " + "asset_name"
      }, trimWithEllipsis(symbol, SingleAsset_MAX_SYMBOL_LENGTH)), contractAddress && react.createElement(SharedTooltip, {
        width: 155,
        IconComponent: () => react.createElement("a", {
          href: DEFAULT_NETWORKS_BY_CHAIN_ID.has(currentNetwork.chainID) ? `${blockExplorer[currentNetwork.chainID].url}/token/${contractAddress}` : currentNetwork.blockExplorerURL,
          target: "_blank",
          rel: "noreferrer",
          "aria-label": "View asset in block explorer",
          className: "jsx-1308515970" + " " + "new_tab_link"
        }, react.createElement("div", {
          className: "jsx-1308515970" + " " + "icon_new_tab"
        }))
      }, blockExplorer[currentNetwork.chainID] ? t("assets.viewAsset", {
        siteTitle: blockExplorer[currentNetwork.chainID].title
      }) : t("assets.openNetworkExplorer"))), react.createElement("div", {
        className: "jsx-1308515970" + " " + "balance"
      }, localizedDecimalAmount), localizedMainCurrencyAmount && react.createElement("div", {
        className: "jsx-1308515970" + " " + "usd_value"
      }, "$", localizedMainCurrencyAmount)), react.createElement("div", {
        className: "jsx-1308515970" + " " + "right"
      }, !isVerified && !isTrusted && isSmartContractFungibleAsset(asset) && react.createElement("div", {
        className: "jsx-1308515970" + " " + "unverified_asset_button"
      }, react.createElement(AssetVerifyToggler, {
        text: t("assets.unverifiedAsset"),
        icon: "notif-attention",
        color: "var(--c-text-secondary)",
        hoverColor: "var(--c-text)",
        onClick: () => setWarnedAsset(asset)
      }), react.createElement("div", {
        className: "jsx-1308515970"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        onClick: () => setWarnedAsset(asset)
      }, t("assets.verifyAsset")))), isTrusted && currentAccountSigner !== ReadOnlyAccountSigner && react.createElement(react.Fragment, null, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        iconSmall: "send",
        linkTo: {
          pathname: "/send",
          state: asset
        }
      }, t("shared.send")), react.createElement(SharedTooltip, {
        type: "dark",
        width: 180,
        height: 48,
        horizontalPosition: "center",
        verticalPosition: "bottom",
        style: {
          marginLeft: 0
        },
        horizontalShift: 94,
        IconComponent: () => react.createElement(SharedButton, {
          type: "primary",
          size: "medium",
          isDisabled: true,
          iconSmall: "swap"
        }, t("shared.swap"))
      }, react.createElement("div", {
        className: "jsx-1308515970" + " " + "centered_tooltip"
      }, react.createElement("div", {
        className: "jsx-1308515970"
      }, t("wallet.swapDisabledOne")), react.createElement("div", {
        className: "jsx-1308515970"
      }, t("wallet.swapDisabledTwo"))))))), react.createElement(WalletActivityList, {
        activities: filteredActivities
      }), react.createElement(style_default(), {
        id: "1308515970"
      }, '.header.jsx-1308515970{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:24px;margin-top:20px;gap:4px;}.header.jsx-1308515970 .right.jsx-1308515970{height:95px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.unverified_asset_button.jsx-1308515970{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:end;-webkit-box-align:end;-ms-flex-align:end;align-items:end;-webkit-box-pack:end;-webkit-justify-content:end;-ms-flex-pack:end;justify-content:end;box-sizing:border-box;padding-top:12px;gap:16px;}.asset_name.jsx-1308515970{color:var(--c-text);font-size:22px;font-weight:500;line-height:32px;text-transform:uppercase;margin-left:8px;word-break:break-word;}.asset_wrap.jsx-1308515970{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.balance.jsx-1308515970{color:var(--c-text);font-size:36px;font-weight:500;line-height:48px;}.usd_value.jsx-1308515970{width:112px;color:var(--c-text-tertiary);font-size:16px;font-weight:600;line-height:24px;}.label_light.jsx-1308515970{color:var(--c-text-tertiary);font-size:16px;font-weight:500;line-height:24px;margin-bottom:8px;}.icon_new_tab.jsx-1308515970{-webkit-mask-image:url("./images/new_tab@2x.png");mask-image:url("./images/new_tab@2x.png");-webkit-mask-size:cover;mask-size:cover;width:16px;height:16px;background-color:var(--c-text-tertiary);margin:0 5px;}.new_tab_link.jsx-1308515970:hover .icon_new_tab.jsx-1308515970{background-color:var(--c-accent);}.navigation.jsx-1308515970{margin-bottom:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/SingleAsset.tsx */'));
    }
    function SharedToggleButton({onChange, onColor, offColor, value}) {
      const [isActive, setIsActive] = (0, react.useState)(value || false);
      (0, react.useEffect)((() => {
        setIsActive(!!value);
      }), [ value ]);
      const handleToggleAction = () => {
        onChange(!isActive);
      };
      return react.createElement("button", {
        type: "button",
        role: "checkbox",
        "aria-checked": isActive,
        "data-testid": "toggle",
        onClick: handleToggleAction,
        className: style_default().dynamic([ [ "1884687552", [ offColor ?? "var(--c-text-tertiary)", onColor ?? "var(--c-accent)" ] ] ]) + " " + (classnames_default()("container", {
          is_active: isActive
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1884687552", [ offColor ?? "var(--c-text-tertiary)", onColor ?? "var(--c-accent)" ] ] ]) + " " + "bulb"
      }), react.createElement(style_default(), {
        id: "1884687552",
        dynamic: [ offColor ?? "var(--c-text-tertiary)", onColor ?? "var(--c-accent)" ]
      }, `.container.__jsx-style-dynamic-selector{width:40px;height:24px;border-radius:20px;background-color:var(--c-bg-inset);box-sizing:border-box;padding:4px;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.bulb.__jsx-style-dynamic-selector{width:16px;height:16px;border-radius:20px;background-color:${offColor ?? "var(--c-text-tertiary)"};-webkit-transition:0.2s ease-in-out;transition:0.2s ease-in-out;box-shadow:0px 1px 1px rgba(0,20,19,0.3);}.is_active.__jsx-style-dynamic-selector .bulb.__jsx-style-dynamic-selector{-webkit-transform:translateX(16px);-ms-transform:translateX(16px);transform:translateX(16px);background-color:${onColor ?? "var(--c-accent)"};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkVG9nZ2xlQnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2Q1MsQUFHd0IsQUFVQSxBQVNnQixXQWxCZixBQVVBLFlBVE8sQUFVQSxtQkFUZ0IsQUFVVyxtQ0FUeEIsV0FVTSxLQU1rQixNQWZsQyxZQUNHLGVBQ0YsYUFjZixhQUw4Qyx5Q0FDOUMsT0FUQSIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZFRvZ2dsZUJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIFJlYWN0RWxlbWVudCwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcblxudHlwZSBTaGFyZWRUb2dnbGVCdXR0b25Qcm9wcyA9IHtcbiAgb25DaGFuZ2U6ICh0b2dnbGVWYWx1ZTogYm9vbGVhbikgPT4gdm9pZFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSB0b2dnbGUgYnVsYiB3aGVuIHRoZSB0b2dnbGUgaXMgb24uIEFueSB2YWxpZCBDU1MgY29sb3JcbiAgICogKGluY2x1ZGluZyBhIGB2YXJgIGV4cHJlc3Npb24pIGNhbiBiZSB1c2VkLlxuICAgKi9cbiAgb25Db2xvcj86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSB0b2dnbGUgYnVsYiB3aGVuIHRoZSB0b2dnbGUgaXMgb2ZmLiBBbnkgdmFsaWQgQ1NTIGNvbG9yXG4gICAqIChpbmNsdWRpbmcgYSBgdmFyYCBleHByZXNzaW9uKSBjYW4gYmUgdXNlZC5cbiAgICovXG4gIG9mZkNvbG9yPzogc3RyaW5nXG4gIHZhbHVlPzogYm9vbGVhbiB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRUb2dnbGVCdXR0b24oe1xuICBvbkNoYW5nZSxcbiAgb25Db2xvcixcbiAgb2ZmQ29sb3IsXG4gIHZhbHVlLFxufTogU2hhcmVkVG9nZ2xlQnV0dG9uUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbaXNBY3RpdmUsIHNldElzQWN0aXZlXSA9IHVzZVN0YXRlKHZhbHVlIHx8IGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNBY3RpdmUoISF2YWx1ZSlcbiAgfSwgW3ZhbHVlXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25DaGFuZ2UoIWlzQWN0aXZlKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICBhcmlhLWNoZWNrZWQ9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwiY29udGFpbmVyXCIsIHsgaXNfYWN0aXZlOiBpc0FjdGl2ZSB9KX1cbiAgICAgIGRhdGEtdGVzdGlkPVwidG9nZ2xlXCJcbiAgICAgIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUFjdGlvbn1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1bGJcIiAvPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctaW5zZXQpO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5idWxiIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7b2ZmQ29sb3IgPz8gXCJ2YXIoLS1jLXRleHQtdGVydGlhcnkpXCJ9O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogMC4ycyBlYXNlLWluLW91dDtcblxuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgwLCAyMCwgMTksIDAuMyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5pc19hY3RpdmUgLmJ1bGIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE2cHgpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtvbkNvbG9yID8/IFwidmFyKC0tYy1hY2NlbnQpXCJ9O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9idXR0b24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedToggleButton.tsx */`));
    }
    function SharedSelect(props) {
      const {options: initialOptions, onChange, defaultIndex = 0, label, placement = "bottom", triggerLabel, onTrigger, showValue, showOptionValue, width = "320px"} = props;
      const cssWidth = typeof width === "number" ? `${width}px` : width;
      const [isDropdownOpen, setIsDropdownOpen] = (0, react.useState)(false);
      const [activeIndex, setActiveIndex] = (0, react.useState)(defaultIndex);
      const previousdefaultIndex = (0, react.useRef)(defaultIndex);
      const showDropdownHandler = () => setIsDropdownOpen(!isDropdownOpen);
      const hideDropdownHandler = () => setIsDropdownOpen(false);
      const selectContainerRef = (0, react.useRef)(null);
      useOnClickOutside(selectContainerRef, hideDropdownHandler);
      const options = (0, react.useMemo)((() => initialOptions.map((option => typeof option !== "string" ? option : {
        value: option,
        label: option
      }))), [ initialOptions ]);
      const currentOption = activeIndex !== null && activeIndex !== undefined ? options[activeIndex] : null;
      const currentLabel = currentOption?.label ?? null;
      const currentValue = currentOption?.value ?? null;
      const currentHideActiveValue = currentOption?.hideActiveValue ?? false;
      (0, react.useEffect)((() => {
        if (currentValue) onChange(currentValue);
      }), [ currentValue, onChange ]);
      (0, react.useEffect)((() => {
        if (previousdefaultIndex.current !== defaultIndex) setActiveIndex(defaultIndex);
      }), [ defaultIndex ]);
      const updateSelectedOption = index => {
        setActiveIndex(index);
        setIsDropdownOpen(false);
      };
      return react.createElement(react.Fragment, null, react.createElement("div", {
        ref: selectContainerRef,
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + (classnames_default()("select", [ placement ], {
          active: isDropdownOpen
        }) || "")
      }, label && react.createElement("label", {
        htmlFor: "button",
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ])
      }, label), react.createElement("button", {
        id: "button",
        type: "button",
        onClick: showDropdownHandler,
        onKeyPress: showDropdownHandler,
        tabIndex: 0,
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + "button"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ])
      }, showValue && activeIndex && !currentHideActiveValue ? `${currentLabel} - ${currentValue}` : `${currentLabel}`), react.createElement("span", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + "icon"
      })), react.createElement("ul", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + (classnames_default()("options", {
          show: isDropdownOpen,
          hide: !isDropdownOpen
        }) || "")
      }, options.map(((option, index) => react.createElement("li", {
        key: option.value,
        role: "option",
        tabIndex: index,
        "aria-selected": activeIndex === index,
        onClick: () => updateSelectedOption(index),
        onKeyPress: e => {
          if (e.key === "enter") {
            updateSelectedOption(index);
          }
        },
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + (classnames_default()("option", {
          selected: activeIndex === index
        }) || "")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + "option_content"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ])
      }, option.label), showOptionValue && react.createElement("span", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ])
      }, option.value))))), triggerLabel && react.createElement("li", {
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ]) + " " + "custom_option"
      }, react.createElement("button", {
        type: "button",
        onClick: onTrigger,
        className: style_default().dynamic([ [ "1577590767", [ cssWidth, cssWidth ] ] ])
      }, triggerLabel)))), react.createElement(style_default(), {
        id: "1577590767",
        dynamic: [ cssWidth, cssWidth ]
      }, `.select.__jsx-style-dynamic-selector{box-sizing:border-box;display:inline-block;position:relative;width:${cssWidth};background-color:transparent;}label.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);font-size:12px;display:block;margin-bottom:4px;margin-top:0;line-height:16px;}.button.__jsx-style-dynamic-selector{position:relative;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 16px;cursor:pointer;width:100%;height:40px;color:var(--c-text-secondary);border-width:2;border-color:var(--c-border);border-style:solid;border-radius:5px;-webkit-transition:background-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out;}.button.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector{-webkit-mask-image:url("./images/chevron_down.svg");mask-image:url("./images/chevron_down.svg");-webkit-mask-size:15px 8px;mask-size:15px 8px;width:15px;height:8px;background-color:var(--c-border);-webkit-transition:-webkit-transform 0.2s ease-in-out;-webkit-transition:transform 0.2s ease-in-out;transition:transform 0.2s ease-in-out;}.select.top.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector,.select.active.bottom.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.select.bottom.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector,.select.active.top.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}.select.active.__jsx-style-dynamic-selector .icon.__jsx-style-dynamic-selector{background-color:var(--c-bg-alt);}.select.active.__jsx-style-dynamic-selector .button.__jsx-style-dynamic-selector{background-color:var(--c-accent);border-color:var(--c-accent);color:var(--c-bg-alt);font-weight:600;}.options.__jsx-style-dynamic-selector{position:absolute;left:2px;box-sizing:border-box;width:calc(${cssWidth} - 4px);text-align:right;background-color:var(--c-bg);border-radius:5px;overflow-y:auto;color:var(--c-border);box-shadow: 0px 8px 24px rgba(0,0,0,0.08), 0px 2px 8px rgba(0,0,0,0.06);max-height:0;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;opacity:0;line-height:1.5;-webkit-transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out;transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out;z-index:10;}.select.bottom.__jsx-style-dynamic-selector .options.__jsx-style-dynamic-selector{top:42px;}.select.top.__jsx-style-dynamic-selector .options.__jsx-style-dynamic-selector{bottom:42px;}.options.show.__jsx-style-dynamic-selector{max-height:140px;bottom:42px;opacity:1;}.option.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;list-style-type:none;font-weight:600;cursor:pointer;padding:0 16px;color:var(--c-text-secondary);}.option.selected.__jsx-style-dynamic-selector{color:var(--c-border);}.option.__jsx-style-dynamic-selector:hover.__jsx-style-dynamic-selector:not(.selected){color:var(--c-text-tertiary);}.option_content.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding-top:16px;padding-bottom:15px;width:100%;}.option.__jsx-style-dynamic-selector:not(:last-child) .option_content.__jsx-style-dynamic-selector{border-bottom:1px solid var(--c-bg-inset);}.custom_option.__jsx-style-dynamic-selector{color:var(--c-accent);font-weight:600;padding:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;background-color:var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSelect.tsx */`));
    }
    function SettingButton(props) {
      const {link, ariaLabel, label, icon, onClick} = props;
      return react.createElement(SharedButton, {
        type: "unstyled",
        size: "medium",
        linkTo: link,
        onClick
      }, react.createElement("div", {
        className: "jsx-660913769" + " " + "button_container"
      }, react.createElement("div", {
        className: "jsx-660913769" + " " + "icon_wrap"
      }, react.createElement(SharedIcon, {
        icon: `icons/s/${icon}.svg`,
        width: 14,
        color: "var(--c-text-secondary)",
        ariaLabel
      })), react.createElement(style_default(), {
        id: "660913769"
      }, ".button_container.jsx-660913769{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:0;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;pointer-events:all;}.icon_wrap.jsx-660913769{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:20px;height:20px;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.button_container.jsx-660913769:hover .icon_wrap.jsx-660913769{-webkit-transform:translateX(2px);-ms-transform:translateX(2px);transform:translateX(2px);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvU2V0dGluZ0J1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JvQixBQUd3QixBQVVFLEFBU2EsV0FsQmQsWUFDQyxtREFTTSxnQkFTckIsT0FqQnFCLHNFQVNJLHVCQVJFLDRFQVNkLFdBQ0MsVUFURixFQVVlLFFBVEEsa0RBVVgsUUFUSyxtQkFDckIsNkJBU0EiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9TZXR0aW5ncy9TZXR0aW5nQnV0dG9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcbmltcG9ydCBTaGFyZWRJY29uIGZyb20gXCIuLi8uLi9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRJY29uXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2V0dGluZ0J1dHRvbihwcm9wczoge1xuICBsYWJlbDogc3RyaW5nXG4gIGFyaWFMYWJlbDogc3RyaW5nXG4gIGljb246IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG4gIG9uQ2xpY2s/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB2b2lkXG59KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyBsaW5rLCBhcmlhTGFiZWwsIGxhYmVsLCBpY29uLCBvbkNsaWNrIH0gPSBwcm9wc1xuXG4gIHJldHVybiAoXG4gICAgPFNoYXJlZEJ1dHRvbiB0eXBlPVwidW5zdHlsZWRcIiBzaXplPVwibWVkaXVtXCIgbGlua1RvPXtsaW5rfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25fd3JhcFwiPlxuICAgICAgICAgIDxTaGFyZWRJY29uXG4gICAgICAgICAgICBpY29uPXtgaWNvbnMvcy8ke2ljb259LnN2Z2B9XG4gICAgICAgICAgICB3aWR0aD17MTR9XG4gICAgICAgICAgICBjb2xvcj1cInZhcigtLWMtdGV4dC1zZWNvbmRhcnkpXCJcbiAgICAgICAgICAgIGFyaWFMYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3R5bGUganN4PntgXG4gICAgICAgICAgLmJ1dHRvbl9jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5pY29uX3dyYXAge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYnV0dG9uX2NvbnRhaW5lcjpob3ZlciAuaWNvbl93cmFwIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9TaGFyZWRCdXR0b24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingButton.tsx */")));
    }
    const STORAGE_KEY = "qevm-theme";
    function applyTheme(theme) {
      if (theme === "dark") {
        document.documentElement.setAttribute("data-theme", "dark");
      } else {
        document.documentElement.removeAttribute("data-theme");
      }
      localStorage.setItem(STORAGE_KEY, theme);
    }
    function getInitialTheme() {
      try {
        const stored = localStorage.getItem(STORAGE_KEY);
        if (stored === "dark" || stored === "light") return stored;
      } catch {}
      return "light";
    }
    if (typeof document !== "undefined") {
      try {
        const stored = localStorage.getItem(STORAGE_KEY);
        if (stored === "dark") {
          document.documentElement.setAttribute("data-theme", "dark");
        } else if (stored === "light") {
          document.documentElement.removeAttribute("data-theme");
        }
      } catch {}
    }
    function useTheme() {
      const [theme, setTheme] = (0, react.useState)(getInitialTheme);
      (0, react.useEffect)((() => {
        applyTheme(theme);
      }), [ theme ]);
      const toggleTheme = (0, react.useCallback)((() => {
        setTheme((prev => prev === "light" ? "dark" : "light"));
      }), []);
      return {
        theme,
        toggleTheme,
        isDark: theme === "dark"
      };
    }
    function getAppVersion() {
      return "1.0.0" ?? 0;
    }
    const NUMBER_OF_CLICKS_FOR_DEV_PANEL = 15;
    const FAQ_URL = "https://quantumevm.com/start/";
    const AUTO_LOCK_OPTIONS = [ {
      label: "5",
      value: String(5 * MINUTE)
    }, {
      label: "15",
      value: String(15 * MINUTE)
    }, {
      label: "30",
      value: String(30 * MINUTE)
    }, {
      label: "60",
      value: String(60 * MINUTE)
    } ];
    const FOOTER_ACTIONS = [ {
      icon: "icons/m/discord",
      linkTo: "https://discord.gg/uFfGQFwSMn/"
    }, {
      icon: "icons/m/telegram",
      linkTo: "https://t.me/+YpRb3VKutI0wYjhi"
    } ];
    function VersionLabel() {
      const history = useHistory();
      const [clickCounter, setClickCounter] = (0, react.useState)(0);
      const [isHover, setIsHover] = (0, react.useState)(false);
      (0, react.useEffect)((() => {
        if (isEnabled(FeatureFlags.SWITCH_RUNTIME_FLAGS) && clickCounter === NUMBER_OF_CLICKS_FOR_DEV_PANEL && isHover) {
          setIsHover(false);
          setClickCounter(0);
          history.push("/dev");
        }
      }), [ clickCounter, history, isHover ]);
      return react.createElement("div", {
        className: "jsx-2783507775" + " " + "version"
      }, react.createElement("button", {
        type: "button",
        onMouseEnter: () => setIsHover(true),
        onMouseLeave: () => setIsHover(false),
        onClick: () => setClickCounter((prevState => prevState + 1)),
        className: "jsx-2783507775"
      }, "Version ", getAppVersion()), react.createElement(style_default(), {
        id: "2783507775"
      }, '.version.jsx-2783507775{color:var(--c-text-muted);font-size:12px;font-weight:500;margin:0 auto;padding:0;font-family:"Segment",sans-serif;-webkit-letter-spacing:0.3px;-moz-letter-spacing:0.3px;-ms-letter-spacing:0.3px;letter-spacing:0.3px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings.tsx */'));
    }
    function SettingRow(props) {
      const {title, component, tooltip = () => null} = props;
      return react.createElement("li", {
        className: "jsx-4075905059"
      }, react.createElement("div", {
        className: "jsx-4075905059" + " " + "left"
      }, title, tooltip()), react.createElement("div", {
        className: "jsx-4075905059" + " " + "right"
      }, component()), react.createElement(style_default(), {
        id: "4075905059"
      }, ".left.jsx-4075905059{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-flex:1;-ms-flex:1;flex:1;}li.jsx-4075905059{padding:16px 18px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text);background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:14px;margin-bottom:8px;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;gap:12px;position:relative;z-index:0;}li.jsx-4075905059:hover{background:var(--c-accent-a8);border-color:var(--c-accent-a30);-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);box-shadow:var(--shadow-sm);}li.jsx-4075905059:focus-within,li.jsx-4075905059:hover{z-index:1;}li.jsx-4075905059:last-child{margin-bottom:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings.tsx */"));
    }
    function Settings() {
      const {t} = useTranslation();
      const dispatch = useDispatch();
      const hideDust = useSelector(selectHideDust);
      const hideBanners = useSelector(selectHideBanners);
      const showTestNetworks = useSelector(selectShowTestNetworks);
      const showUnverifiedAssets = useSelector(selectShowUnverifiedAssets);
      const mainCurrencySign = useBackgroundSelector(selectMainCurrencySign);
      const {isDark, toggleTheme} = useTheme();
      const toggleHideDustAssets = toggleValue => {
        dispatch(toggleHideDust(toggleValue));
      };
      const toggleShowTestNetworks = defaultWalletValue => {
        dispatch(toggleTestNetworks(defaultWalletValue));
      };
      const toggleShowUnverified = toggleValue => {
        dispatch(toggleShowUnverifiedAssets(toggleValue));
      };
      const toggleHideNotificationBanners = toggleValue => {
        dispatch(toggleHideBanners(!toggleValue));
      };
      const hideSmallAssetBalance = {
        title: t("settings.hideSmallAssetBalance", {
          amount: userValueDustThreshold,
          sign: mainCurrencySign
        }),
        component: () => react.createElement(SharedToggleButton, {
          onChange: toggleValue => toggleHideDustAssets(toggleValue),
          value: hideDust
        })
      };
      const unverifiedAssets = {
        title: t("settings.showUnverifiedAssets"),
        tooltip: () => react.createElement(SharedTooltip, {
          width: 190,
          style: {
            marginLeft: 4
          }
        }, react.createElement(Trans, {
          t,
          i18nKey: "settings.unverifiedAssets.tooltip"
        })),
        component: () => react.createElement(SharedToggleButton, {
          onChange: toggleValue => toggleShowUnverified(toggleValue),
          value: showUnverifiedAssets
        })
      };
      const enableTestNetworks = {
        title: t("settings.enableTestNetworks"),
        component: () => react.createElement(SharedToggleButton, {
          onChange: toggleValue => toggleShowTestNetworks(toggleValue),
          value: showTestNetworks
        })
      };
      const langOptions = getAvalableLanguages();
      const langIdx = getLanguageIndex(getLanguage());
      const languages = {
        title: t("settings.language"),
        component: () => react.createElement(SharedSelect, {
          width: 194,
          options: langOptions,
          onChange: setLanguage,
          defaultIndex: langIdx
        })
      };
      const needHelp = {
        title: t("settings.needHelp"),
        component: () => react.createElement(SettingButton, {
          label: t("settings.needHelp"),
          ariaLabel: t("settings.needHelp"),
          icon: "new-tab",
          onClick: () => window.open(FAQ_URL, "_blank")?.focus()
        })
      };
      const darkTheme = {
        title: "Dark Mode",
        component: () => react.createElement(SharedToggleButton, {
          onChange: toggleTheme,
          value: isDark
        })
      };
      const bugReport = {
        title: t("settings.bugReport"),
        component: () => react.createElement(SettingButton, {
          link: "/settings/export-logs",
          label: t("settings.bugReport"),
          ariaLabel: t("settings.exportLogs.ariaLabel"),
          icon: "continue"
        })
      };
      const dAppsSettings = {
        title: t("settings.connectedWebsites"),
        component: () => react.createElement(SettingButton, {
          link: "/settings/connected-websites",
          label: t("settings.connectedWebsites"),
          ariaLabel: t("settings.connectedWebsitesSettings.ariaLabel"),
          icon: "continue"
        })
      };
      const addCustomAsset = {
        title: t("settings.addCustomAsset"),
        component: () => react.createElement(SettingButton, {
          link: "/settings/add-custom-asset",
          label: t("settings.addCustomAsset"),
          ariaLabel: t("settings.connectedWebsitesSettings.ariaLabel"),
          icon: "continue"
        })
      };
      const autoLockInterval = useBackgroundSelector(selectAutoLockTimer);
      const autoLockSettings = {
        title: t("settings.autoLockTimer.label"),
        tooltip: () => react.createElement(SharedTooltip, {
          width: 190,
          style: {
            marginLeft: 4
          }
        }, react.createElement("div", {
          className: "tooltip"
        }, react.createElement("span", null, t("settings.autoLockTimer.tooltip")))),
        component: () => react.createElement(react.Fragment, null, react.createElement("div", {
          className: "jsx-395010890" + " " + "select_wrapper"
        }, react.createElement(SharedSelect, {
          options: AUTO_LOCK_OPTIONS.map((item => ({
            ...item,
            label: t("settings.autoLockTimer.interval", {
              time: item.label
            })
          }))),
          defaultIndex: AUTO_LOCK_OPTIONS.findIndex((({value}) => value === String(autoLockInterval))),
          width: "100%",
          onChange: newValue => dispatch(updateAutoLockInterval(newValue))
        })), react.createElement(style_default(), {
          id: "395010890"
        }, ".select_wrapper.jsx-395010890{width:118px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings.tsx */"))
      };
      const notificationBanner = {
        title: t("settings.showBanners"),
        component: () => react.createElement(SharedToggleButton, {
          onChange: toggleValue => toggleHideNotificationBanners(toggleValue),
          value: !hideBanners
        })
      };
      const settings = {
        general: {
          title: t("settings.group.general"),
          items: [ darkTheme, dAppsSettings, ...wrapIfEnabled(FeatureFlags.SUPPORT_MULTIPLE_LANGUAGES, languages), ...wrapIfEnabled(FeatureFlags.SUPPORT_ACHIEVEMENTS_BANNER, notificationBanner), autoLockSettings ]
        },
        walletOptions: {
          title: t("settings.group.walletOptions"),
          items: [ hideSmallAssetBalance, unverifiedAssets, addCustomAsset, enableTestNetworks ]
        },
        helpCenter: {
          title: t("settings.group.helpCenter"),
          items: [ bugReport, needHelp ]
        }
      };
      return react.createElement("section", {
        className: "jsx-379253413"
      }, react.createElement("div", {
        className: "jsx-379253413" + " " + "menu"
      }, react.createElement("h1", {
        className: "jsx-379253413"
      }, t("settings.mainMenu")), react.createElement("ul", {
        className: "jsx-379253413"
      }, Object.values(settings).map((({title, items}) => react.createElement("div", {
        key: title,
        className: "jsx-379253413" + " " + "group"
      }, react.createElement("span", {
        className: "jsx-379253413" + " " + "group_title"
      }, title), items.map(((item, index) => {
        const key = `${title}-${item.title}-${index}`;
        return react.createElement(SettingRow, {
          key,
          title: item.title,
          component: item.component,
          tooltip: item.tooltip
        });
      })))))), react.createElement("div", {
        className: "jsx-379253413" + " " + "footer"
      }, react.createElement("div", {
        className: "jsx-379253413" + " " + "footer_divider"
      }), react.createElement("div", {
        className: "jsx-379253413" + " " + "action_icons"
      }, FOOTER_ACTIONS.map((({icon, linkTo}) => react.createElement("button", {
        key: icon,
        type: "button",
        onClick: () => window.open(linkTo, "_blank")?.focus(),
        "aria-label": icon,
        className: "jsx-379253413" + " " + "social_btn"
      }, react.createElement(SharedIcon, {
        icon: `${icon}.svg`,
        width: 20,
        color: "var(--c-text-muted)"
      }))))), react.createElement(VersionLabel, null))), react.createElement(style_default(), {
        id: "379253413"
      }, 'section.jsx-379253413{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;height:544px;width:100%;background-color:var(--c-bg);box-sizing:border-box;margin:0;}.menu.jsx-379253413{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0 24px 24px;}h1.jsx-379253413{color:var(--c-text);font-weight:700;line-height:32px;margin-bottom:24px;padding-top:16px;font-family:"Segment",sans-serif;-webkit-letter-spacing:0.3px;-moz-letter-spacing:0.3px;-ms-letter-spacing:0.3px;letter-spacing:0.3px;}span.jsx-379253413{color:var(--c-text-secondary);font-size:14px;font-weight:600;line-height:24px;font-family:"Segment",sans-serif;}.footer.jsx-379253413{margin-top:32px;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding-bottom:8px;}.footer_divider.jsx-379253413{width:48px;height:1px;background:var(--c-border-accent);border-radius:1px;}.action_icons.jsx-379253413{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:20px;}.social_btn.jsx-379253413{width:36px;height:36px;border-radius:10px;background:var(--c-bg);border:1px solid var(--c-border-accent);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;}.group.jsx-379253413{margin-bottom:28px;}.group.jsx-379253413:last-child{margin-bottom:0;}.group_title.jsx-379253413{color:var(--c-accent);font-family:"Segment",sans-serif;font-style:normal;font-weight:700;font-size:11px;line-height:16px;text-transform:uppercase;-webkit-letter-spacing:1px;-moz-letter-spacing:1px;-ms-letter-spacing:1px;letter-spacing:1px;margin-bottom:12px;display:block;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings.tsx */'));
    }
    function hasAmounts(assetWithOptionalAmount) {
      return "amount" in assetWithOptionalAmount;
    }
    function SharedAssetItem(props) {
      const {onClick, assetAndAmount, currentNetwork} = props;
      const {asset} = assetAndAmount;
      const [contractLink, setContractLink] = (0, react.useState)("");
      function handleClick() {
        onClick?.(asset);
      }
      (0, react.useEffect)((() => {
        const baseLink = blockExplorer[currentNetwork.chainID]?.url;
        if ("contractAddress" in asset && baseLink) {
          setContractLink(`${baseLink}/token/${asset.contractAddress}`);
        } else {
          setContractLink("");
        }
      }), [ asset, currentNetwork ]);
      return react.createElement("li", {
        className: "jsx-2224158432"
      }, react.createElement("button", {
        type: "button",
        onClick: handleClick,
        className: "jsx-2224158432" + " " + "token_group"
      }, react.createElement("div", {
        className: "jsx-2224158432" + " " + "list_item standard_width"
      }, react.createElement("div", {
        className: "jsx-2224158432" + " " + "left"
      }, react.createElement(SharedAssetIcon, {
        logoURL: asset?.metadata?.logoURL,
        symbol: asset?.symbol
      }), react.createElement("div", {
        className: "jsx-2224158432" + " " + "left_content"
      }, react.createElement("div", {
        "data-testid": "asset_symbol",
        title: asset.symbol,
        className: "jsx-2224158432" + " " + "symbol ellipsis"
      }, asset.symbol), react.createElement("div", {
        title: asset.name,
        className: "jsx-2224158432" + " " + "token_subtitle ellipsis"
      }, asset.name))), react.createElement("div", {
        className: "jsx-2224158432" + " " + "right_content"
      }, hasAmounts(assetAndAmount) && react.createElement("div", {
        className: "jsx-2224158432" + " " + "amount"
      }, assetAndAmount.localizedDecimalAmount), contractLink && react.createElement(SharedIcon, {
        icon: "icons/s/new-tab.svg",
        width: 16,
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-accent)",
        onClick: () => {
          window.open(contractLink, "_blank")?.focus();
        }
      })))), react.createElement(style_default(), {
        id: "2224158432"
      }, '.left.jsx-2224158432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;}.list_item.jsx-2224158432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.left_content.jsx-2224158432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:41px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:0 8px 0 16px;max-width:100%;min-width:0;}.right_content.jsx-2224158432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:20px;}.amount.jsx-2224158432{color:var(--c-text-tertiary);}.token_group.jsx-2224158432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;width:100%;padding:7.5px 24px;}.token_group.jsx-2224158432:hover{background-color:var(--c-bg-alt);}.token_icon_wrap.jsx-2224158432{width:40px;height:40px;border-radius:46px;background-color:var(--c-bg-alt);border-radius:80px;margin-right:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.token_group.jsx-2224158432:hover .token_icon_wrap.jsx-2224158432{background-color:var(--c-bg-alt);}.token_subtitle.jsx-2224158432{height:17px;color:var(--c-border);font-size:14px;font-weight:400;-webkit-letter-spacing:0.42px;-moz-letter-spacing:0.42px;-ms-letter-spacing:0.42px;letter-spacing:0.42px;line-height:16px;margin-top:5px;}.icon_eth.jsx-2224158432{background:url("./images/eth@2x.png");background-size:18px 29px;width:18px;height:29px;}.symbol.jsx-2224158432{color:var(--c-text);font-size:16px;font-weight:500;line-height:18px;text-transform:uppercase;margin-top:2px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetItem.tsx */'));
    }
    function formatPriceImpact(value) {
      return Math.round(value * 100) / 100;
    }
    function getPriceImpactColor(value) {
      if (value) {
        switch (true) {
         case Math.abs(value) > 5:
          return "error";

         case Math.abs(value) > 2:
          return "attention";

         default:
          return "green-40";
        }
      }
      return "green-40";
    }
    function PriceDetails(props) {
      const {amountMainCurrency, priceImpact, mainCurrencySign, isLoading} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "priceDetails"
      });
      return react.createElement("div", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ]) + " " + "simple_text content_wrap"
      }, !isLoading && amountMainCurrency === undefined ? react.createElement(SharedTooltip, {
        width: 180,
        height: 27,
        horizontalPosition: "center",
        horizontalShift: 82,
        IconComponent: () => react.createElement("div", {
          className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ]) + " " + "warning"
        }, t("noAssetPrice"), react.createElement(SharedIcon, {
          width: 16,
          icon: "icons/m/info.svg",
          color: "var(--c-warning)",
          style: {
            flexShrink: 0
          }
        }))
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ])
      }, t("noAssetPriceTooltip.firstLine"), react.createElement("br", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ])
      }), react.createElement("br", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ])
      }), t("noAssetPriceTooltip.secondLine"))) : react.createElement(react.Fragment, null, amountMainCurrency === "0.00" && "<", mainCurrencySign, amountMainCurrency || "0.00", !isLoading && !!priceImpact && priceImpact > 1 && react.createElement("span", {
        "data-testid": "price_impact_percent",
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ]) + " " + "price_impact_percent"
      }, "(", formatPriceImpact(priceImpact), "%", react.createElement(SharedTooltip, {
        width: 180,
        height: 27,
        horizontalPosition: "left",
        IconComponent: () => react.createElement(SharedIcon, {
          width: 16,
          icon: "icons/m/info.svg",
          color: `var(--${getPriceImpactColor(priceImpact)})`,
          style: {
            marginLeft: -5
          }
        })
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ])
      }, t("priceImpactTooltip.firstLine"), react.createElement("br", {
        className: style_default().dynamic([ [ "2275206315", [ getPriceImpactColor(priceImpact) ] ] ])
      }), t("priceImpactTooltip.secondLine"))), ")")), react.createElement(style_default(), {
        id: "2275206315",
        dynamic: [ getPriceImpactColor(priceImpact) ]
      }, `.content_wrap.__jsx-style-dynamic-selector{font-size:14px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-webkit-justify-content:end;-ms-flex-pack:end;justify-content:end;gap:2px;}.warning.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;color:var(--c-warning);line-height:16px;text-align:right;}.price_impact_percent.__jsx-style-dynamic-selector{color:var(--${getPriceImpactColor(priceImpact)});display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/PriceDetails.tsx */`));
    }
    const defaultPlaceholder = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
    function SharedImageWithFallback({fallback, src = fallback, width, height, loading, alt, className, style, placeholder = defaultPlaceholder}) {
      const [isLoading, setIsLoading] = (0, react.useState)(true);
      const [imageSrc, setImageSrc] = (0, react.useState)(placeholder);
      (0, react.useEffect)((() => {
        const img = new Image;
        img.src = src;
        const setLoadedImgOrFallback = href => {
          setIsLoading(false);
          setImageSrc(href);
        };
        const handleSuccessfulLoad = () => setLoadedImgOrFallback(src);
        const handleLoadFailure = () => setLoadedImgOrFallback(fallback);
        img.addEventListener("load", handleSuccessfulLoad);
        img.addEventListener("error", handleLoadFailure);
        return () => {
          img.removeEventListener("load", handleSuccessfulLoad);
          img.removeEventListener("error", handleLoadFailure);
        };
      }), [ src, fallback ]);
      return react.createElement(react.Fragment, null, react.createElement("img", {
        src: imageSrc,
        style,
        loading,
        alt,
        width,
        height,
        className: "jsx-2235486020" + " " + (classnames_default()(className, {
          loading: isLoading
        }) || "")
      }), react.createElement(style_default(), {
        id: "2235486020"
      }, "@-webkit-keyframes pulse-jsx-2235486020{0%{background-color:var(--c-bg-alt);}50%{background-color:var(--c-bg);}100%{background-color:var(--c-bg-alt);}}@keyframes pulse-jsx-2235486020{0%{background-color:var(--c-bg-alt);}50%{background-color:var(--c-bg);}100%{background-color:var(--c-bg-alt);}}.loading.jsx-2235486020{-webkit-animation:pulse-jsx-2235486020 1.1s infinite;animation:pulse-jsx-2235486020 1.1s infinite;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkSW1hZ2VXaXRoRmFsbGJhY2sudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFUyxBQUlnRCxBQUdKLEFBR0ksQUFLTCw2QkFQOUIsSUFIQSxBQU1BLGlFQUtGIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkSW1hZ2VXaXRoRmFsbGJhY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIFByb3BzV2l0aG91dFJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcblxuLy8gVHJhbnNwYXJlbnQgcGl4ZWxcbmNvbnN0IGRlZmF1bHRQbGFjZWhvbGRlciA9XG4gIFwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3XCJcblxudHlwZSBTaGFyZWRJbWFnZVdpdGhGYWxsYmFja1Byb3BzID0gUHJvcHNXaXRob3V0UmVmPFxuICBKU1guSW50cmluc2ljRWxlbWVudHNbXCJpbWdcIl1cbj4gJiB7XG4gIGZhbGxiYWNrOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEltYWdlV2l0aEZhbGxiYWNrKHtcbiAgZmFsbGJhY2ssXG4gIHNyYyA9IGZhbGxiYWNrLFxuICB3aWR0aCxcbiAgaGVpZ2h0LFxuICBsb2FkaW5nLFxuICBhbHQsXG4gIGNsYXNzTmFtZSxcbiAgc3R5bGUsXG4gIHBsYWNlaG9sZGVyID0gZGVmYXVsdFBsYWNlaG9sZGVyLFxufTogU2hhcmVkSW1hZ2VXaXRoRmFsbGJhY2tQcm9wcyk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtpbWFnZVNyYywgc2V0SW1hZ2VTcmNdID0gdXNlU3RhdGUocGxhY2Vob2xkZXIpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKVxuICAgIGltZy5zcmMgPSBzcmNcblxuICAgIGNvbnN0IHNldExvYWRlZEltZ09yRmFsbGJhY2sgPSAoaHJlZjogc3RyaW5nKSA9PiB7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJbWFnZVNyYyhocmVmKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVN1Y2Nlc3NmdWxMb2FkID0gKCkgPT4gc2V0TG9hZGVkSW1nT3JGYWxsYmFjayhzcmMpXG4gICAgY29uc3QgaGFuZGxlTG9hZEZhaWx1cmUgPSAoKSA9PiBzZXRMb2FkZWRJbWdPckZhbGxiYWNrKGZhbGxiYWNrKVxuXG4gICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGhhbmRsZVN1Y2Nlc3NmdWxMb2FkKVxuICAgIGltZy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgaGFuZGxlTG9hZEZhaWx1cmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGhhbmRsZVN1Y2Nlc3NmdWxMb2FkKVxuICAgICAgaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBoYW5kbGVMb2FkRmFpbHVyZSlcbiAgICB9XG4gIH0sIFtzcmMsIGZhbGxiYWNrXSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8aW1nXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIHsgbG9hZGluZzogaXNMb2FkaW5nIH0pfVxuICAgICAgICBzcmM9e2ltYWdlU3JjfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHsuLi57IGxvYWRpbmcsIGFsdCwgd2lkdGgsIGhlaWdodCB9fVxuICAgICAgLz5cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgICAgICAgICAwJSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDUwJSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAubG9hZGluZyB7XG4gICAgICAgICAgICBhbmltYXRpb246IHB1bHNlIDEuMXMgaW5maW5pdGU7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedImageWithFallback.tsx */"));
    }
    const noPreviewImg = "/images/no_preview.svg";
    function NFTCollectionListItem({id, name = id, thumbnailURL = noPreviewImg, onClick}) {
      return react.createElement("div", {
        key: id,
        className: "jsx-4224543210"
      }, react.createElement(SharedImageWithFallback, {
        width: "64",
        height: "64",
        src: thumbnailURL,
        fallback: noPreviewImg,
        loading: "lazy",
        alt: name,
        style: {
          borderRadius: 4,
          objectPosition: "center",
          objectFit: "cover"
        }
      }), react.createElement("button", {
        type: "button",
        onClick,
        className: "jsx-4224543210" + " " + "label"
      }, react.createElement("p", {
        className: "jsx-4224543210" + " " + "ellipsis"
      }, name), react.createElement(SharedIcon, {
        height: 16,
        width: 16,
        icon: "icons/s/continue.svg"
      })), react.createElement(style_default(), {
        id: "4224543210"
      }, 'div.jsx-4224543210{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;}.label.jsx-4224543210{font-family:"Segment";font-style:normal;font-weight:500;font-size:14px;line-height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;color:var(--c-text);-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;gap:8px;}.label.jsx-4224543210:hover{color:var(--c-accent);}.label.jsx-4224543210 p.jsx-4224543210{max-width:calc(100% - 24px);}.label.jsx-4224543210 .icon{background-color:var(--c-text-tertiary);}.label.jsx-4224543210:hover .icon{background-color:currentColor;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TZW5kL05GVENvbGxlY3Rpb25MaXN0SXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0NrQixBQUd3QixBQU1TLEFBaUJBLEFBSU0sQUFJWSxBQUlWLHNCQTVCWixBQWlCcEIsTUFJQSxFQVFBLFVBNUJrQixBQXdCbEIsZ0JBdkJpQixlQUNFLEdBVEUsY0FXTiwwRUFDTSxLQVhYLFFBQ1YsZ0ZBV3dCLHlHQUNRLG1IQUNWLG9CQUNSLHVFQUNJLGdCQUNSLFFBQ1YiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NlbmQvTkZUQ29sbGVjdGlvbkxpc3RJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgTkZUIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9uZnRzXCJcbmltcG9ydCBTaGFyZWRJY29uIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkSWNvblwiXG5pbXBvcnQgU2hhcmVkSW1hZ2VXaXRoRmFsbGJhY2sgZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRJbWFnZVdpdGhGYWxsYmFja1wiXG5cbmV4cG9ydCBjb25zdCBub1ByZXZpZXdJbWcgPSBcIi9pbWFnZXMvbm9fcHJldmlldy5zdmdcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBORlRDb2xsZWN0aW9uTGlzdEl0ZW0oe1xuICBpZCxcbiAgbmFtZSA9IGlkLFxuICB0aHVtYm5haWxVUkwgPSBub1ByZXZpZXdJbWcsXG4gIG9uQ2xpY2ssXG59OiBQaWNrPE5GVCwgXCJpZFwiIHwgXCJuYW1lXCIgfCBcInRodW1ibmFpbFVSTFwiPiAmIHtcbiAgb25DbGljazogKCkgPT4gdm9pZFxufSk6IEpTWC5FbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGtleT17aWR9PlxuICAgICAgPFNoYXJlZEltYWdlV2l0aEZhbGxiYWNrXG4gICAgICAgIHdpZHRoPVwiNjRcIlxuICAgICAgICBoZWlnaHQ9XCI2NFwiXG4gICAgICAgIHNyYz17dGh1bWJuYWlsVVJMfVxuICAgICAgICBmYWxsYmFjaz17bm9QcmV2aWV3SW1nfVxuICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgIGFsdD17bmFtZX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgICAgICAgb2JqZWN0UG9zaXRpb246IFwiY2VudGVyXCIsXG4gICAgICAgICAgb2JqZWN0Rml0OiBcImNvdmVyXCIsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwibGFiZWxcIiBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwiZWxsaXBzaXNcIj57bmFtZX08L3A+XG4gICAgICAgIDxTaGFyZWRJY29uIGhlaWdodD17MTZ9IHdpZHRoPXsxNn0gaWNvbj1cImljb25zL3MvY29udGludWUuc3ZnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBkaXYge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiU2VnbWVudFwiO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcblxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0KTtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sYWJlbDpob3ZlciB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtYWNjZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sYWJlbCBwIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDI0cHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxhYmVsIDpnbG9iYWwoLmljb24pIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxhYmVsOmhvdmVyIDpnbG9iYWwoLmljb24pIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Send/NFTCollectionListItem.tsx */'));
    }
    function NFTCollectionAccordion({collection, onSelectNFT}) {
      const dispatch = useBackgroundDispatch();
      const [isExpanded, setIsExpanded] = (0, react.useState)(false);
      const [isLoading, setIsLoading] = (0, react.useState)(true);
      (0, react.useEffect)((() => {
        if (isExpanded) {
          setIsLoading(true);
          dispatch(fetchNFTsFromCollection({
            collectionID: collection.id,
            account: {
              address: collection.owner,
              network: NETWORK_BY_CHAIN_ID[collection.chainID]
            }
          })).then((() => setIsLoading(false)));
        }
      }), [ dispatch, isExpanded, collection.id, collection.owner, collection.chainID ]);
      return react.createElement("div", {
        key: collection.id,
        className: "jsx-1005205900" + " " + "list_item_container"
      }, react.createElement(SharedAccordion, {
        headerElement: react.createElement("div", {
          key: collection.id,
          className: "jsx-1005205900" + " " + "nft_collection"
        }, react.createElement(SharedImageWithFallback, {
          alt: collection.name,
          fallback: "images/no_preview.svg",
          width: "32",
          height: "32",
          src: collection.thumbnailURL,
          style: {
            borderRadius: 4
          }
        }), react.createElement("span", {
          className: "jsx-1005205900" + " " + "ellipsis"
        }, collection.name)),
        onChange: setIsExpanded,
        contentElement: isOpen => isLoading ? react.createElement(SharedLoadingDoggo, {
          size: 96,
          message: "Loading NFTs",
          padding: "0 0 8px",
          animated: isOpen
        }) : react.createElement("div", {
          className: "jsx-1005205900" + " " + "nft_list"
        }, collection.nfts.map((nft => react.createElement(NFTCollectionListItem, {
          key: nft.id,
          id: nft.id,
          name: nft.name,
          thumbnailURL: nft.thumbnailURL,
          onClick: () => onSelectNFT(nft)
        })))),
        style: {
          "--background": "var(--c-bg-alt)",
          "--background-hover": "var(--c-bg-alt)",
          "--header-padding": "4px 8px 4px 4px",
          borderRadius: 6
        }
      }), collection.owner && react.createElement(SharedIcon, {
        icon: "icons/s/new-tab.svg",
        width: 16,
        color: "var(--c-text-tertiary)",
        disabled: collection.nfts.length < 1 || isLoading,
        hoverColor: "var(--c-accent)",
        onClick: () => {
          const {contract} = collection.nfts[0] ?? {};
          const url = `${blockExplorer[collection.chainID].url}/token/${contract}`;
          window.open(url, "_blank")?.focus();
        },
        style: {
          margin: "12px 0 auto"
        }
      }), react.createElement(style_default(), {
        id: "1005205900"
      }, ".list_item_container.jsx-1005205900{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.list_item_container.jsx-1005205900>[aria-expanded]{max-width:calc(100% - 24px);-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.nft_collection.jsx-1005205900{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.nft_list.jsx-1005205900{padding:10px 8px 12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Send/NFTCollectionAccordion.tsx */"));
    }
    const SYMBOL_PRIORITY_LIST = [ "QEVM", "pQEVM" ];
    const symbolPriority = Object.fromEntries(SYMBOL_PRIORITY_LIST.map(((symbol, idx) => [ symbol, SYMBOL_PRIORITY_LIST.length - idx ])));
    function prioritizedAssetAlphabeticSorter({asset: {symbol: symbol1}}, {asset: {symbol: symbol2}}) {
      const firstSymbolPriority = symbolPriority[symbol1] ?? 0;
      const secondSymbolPriority = symbolPriority[symbol2] ?? 0;
      if (firstSymbolPriority > secondSymbolPriority) {
        return -1;
      }
      if (firstSymbolPriority < secondSymbolPriority) {
        return 1;
      }
      return symbol1.localeCompare(symbol2);
    }
    function assetAlphabeticSorterWithFilter(searchTerm) {
      const startingSearchTermRegExp = new RegExp(`^${searchTerm}.*$`, "i");
      return ({asset: {symbol: symbol1}}, {asset: {symbol: symbol2}}) => {
        const searchTermStartMatch1 = startingSearchTermRegExp.test(symbol1);
        const searchTermStartMatch2 = startingSearchTermRegExp.test(symbol2);
        if (searchTermStartMatch1 && !searchTermStartMatch2) {
          return -1;
        }
        if (!searchTermStartMatch1 && searchTermStartMatch2) {
          return 1;
        }
        return symbol1.localeCompare(symbol2);
      };
    }
    function SelectAssetMenuContent(props) {
      const {t} = useTranslation();
      const {setSelectedAssetAndClose, assets, currentNetwork, nfts: nftCollections, onSelectNFT = noop_noop} = props;
      const [searchTerm, setSearchTerm] = (0, react.useState)("");
      const searchInput = (0, react.useRef)(null);
      const filteredAssets = searchTerm.trim() === "" ? assets : assets.filter((({asset}) => asset.symbol.toLowerCase().includes(searchTerm.toLowerCase()) || "contractAddress" in asset && asset.contractAddress && searchTerm.startsWith("0x") && normalizeQEVMAddress(asset.contractAddress).includes(normalizeQEVMAddress(searchTerm).replace(/^0x0?/, "0x")) && asset.contractAddress.length >= searchTerm.length));
      const sortedFilteredAssets = filteredAssets.sort(searchTerm.trim() === "" ? prioritizedAssetAlphabeticSorter : assetAlphabeticSorterWithFilter(searchTerm.trim()));
      (0, react.useEffect)((() => {
        searchInput.current?.focus();
      }), [ searchInput ]);
      const shouldDisplayNFTs = nftCollections.length > 0;
      const [panelNumber, setPanelNumber] = (0, react.useState)(0);
      return react.createElement(react.Fragment, null, shouldDisplayNFTs && react.createElement("div", {
        className: "jsx-1485662691" + " " + "panel_switcher"
      }, react.createElement(SharedPanelSwitcher, {
        setPanelNumber,
        panelNumber,
        panelNames: [ "Tokens", "NFTs" ]
      })), panelNumber === 0 && react.createElement("div", {
        className: "jsx-1485662691" + " " + (classnames_default()({
          has_nfts: shouldDisplayNFTs
        }) || "")
      }, react.createElement("div", {
        className: "jsx-1485662691" + " " + "standard_width_padded center_horizontal"
      }, react.createElement("div", {
        className: "jsx-1485662691" + " " + "search_label"
      }, t("shared.selectToken")), react.createElement("div", {
        className: "jsx-1485662691" + " " + "search_wrap"
      }, react.createElement("input", {
        type: "text",
        ref: searchInput,
        placeholder: t("assetInput.search"),
        spellCheck: false,
        onChange: event => setSearchTerm(event.target.value),
        className: "jsx-1485662691" + " " + "search_input"
      }), react.createElement("span", {
        className: "jsx-1485662691" + " " + "icon_search"
      }))), react.createElement("div", {
        className: "jsx-1485662691" + " " + "divider"
      }), react.createElement("ul", {
        "data-testid": "assets_list",
        className: "jsx-1485662691" + " " + "assets_list"
      }, sortedFilteredAssets.map((assetWithOptionalAmount => {
        const {asset} = assetWithOptionalAmount;
        return react.createElement(SharedAssetItem, {
          key: asset.symbol + ("contractAddress" in asset ? asset.contractAddress : ""),
          assetAndAmount: assetWithOptionalAmount,
          onClick: () => setSelectedAssetAndClose(assetWithOptionalAmount),
          currentNetwork
        });
      })))), panelNumber === 1 && react.createElement("div", {
        className: "jsx-1485662691" + " " + "standard_width_padded center_horizontal has_nfts"
      }, react.createElement("div", {
        className: "jsx-1485662691" + " " + "search_wrap"
      }, react.createElement("input", {
        type: "text",
        ref: searchInput,
        placeholder: t("assetInput.searchNFT"),
        spellCheck: false,
        onChange: event => setSearchTerm(event.target.value),
        className: "jsx-1485662691" + " " + "search_input"
      }), react.createElement("span", {
        className: "jsx-1485662691" + " " + "icon_search"
      })), react.createElement("div", {
        className: "jsx-1485662691" + " " + "nft_list"
      }, nftCollections.map((collection => react.createElement(NFTCollectionAccordion, {
        key: collection.id,
        collection,
        onSelectNFT
      }))))), react.createElement(style_default(), {
        id: "1485662691"
      }, '.panel_switcher.jsx-1485662691{width:100%;}.has_nfts.jsx-1485662691>div.jsx-1485662691{margin-top:16px;}.nft_list.jsx-1485662691{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:20px;overflow:scroll;height:calc(100% - 96px);width:100%;}.search_label.jsx-1485662691{height:20px;color:var(--c-border);font-size:16px;font-weight:500;line-height:24px;margin-bottom:16px;margin-top:-5px;}.search_wrap.jsx-1485662691{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.search_input.jsx-1485662691{width:336px;height:48px;border-radius:4px;border:1px solid var(--c-border);padding-left:16px;padding-right:56px;box-sizing:border-box;color:var(--c-text-tertiary);}.search_input.jsx-1485662691::-webkit-input-placeholder{color:var(--c-text-tertiary);}.search_input.jsx-1485662691::-moz-placeholder{color:var(--c-text-tertiary);}.search_input.jsx-1485662691:-ms-input-placeholder{color:var(--c-text-tertiary);}.search_input.jsx-1485662691::placeholder{color:var(--c-text-tertiary);}.icon_search.jsx-1485662691{background:url("./images/search_large@2x.png");background-size:24px 24px;width:24px;height:24px;position:absolute;right:42px;margin-top:11px;}.divider.jsx-1485662691{width:384px;height:0;border-bottom:1px solid var(--c-bg-alt);margin-top:15px;}.assets_list.jsx-1485662691{display:block;overflow:scroll;height:calc(100% - 96px);width:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetInput.tsx */'));
    }
    function SelectedAssetButton({asset, isDisabled, toggleIsAssetMenuOpen = undefined, selectedNFT}) {
      if (selectedNFT) {
        const {name, thumbnailURL} = selectedNFT;
        return react.createElement("button", {
          type: "button",
          disabled: isDisabled,
          onClick: toggleIsAssetMenuOpen,
          className: "jsx-4198061952"
        }, react.createElement("img", {
          width: "56",
          height: "56",
          src: thumbnailURL,
          loading: "lazy",
          alt: name,
          className: "jsx-4198061952"
        }), react.createElement("span", {
          className: "jsx-4198061952" + " " + "ellipsis"
        }, name), react.createElement(style_default(), {
          id: "4198061952"
        }, 'button.jsx-4198061952{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:calc(100% - 32px);}img.jsx-4198061952{border-radius:4px;object-fit:cover;object-position:center;}span.jsx-4198061952{font-family:"Segment";font-style:normal;font-weight:500;font-size:16px;line-height:24px;color:var(--c-text);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetInput.tsx */'));
      }
      return react.createElement("button", {
        type: "button",
        "data-testid": "selected_asset_button",
        disabled: isDisabled,
        onClick: toggleIsAssetMenuOpen,
        className: "jsx-3336828556"
      }, react.createElement("div", {
        className: "jsx-3336828556" + " " + "asset_icon_wrap"
      }, react.createElement(SharedAssetIcon, {
        logoURL: asset?.metadata?.logoURL,
        symbol: asset?.symbol
      })), asset?.symbol, react.createElement(style_default(), {
        id: "3336828556"
      }, "button.jsx-3336828556{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--c-text);font-size:16px;font-weight:500;line-height:24px;text-transform:uppercase;}button.jsx-3336828556:disabled{cursor:default;color:var(--c-text-tertiary);}.asset_icon_wrap.jsx-3336828556{margin-right:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetInput.tsx */"));
    }
    function SharedAssetInput_isSameAsset(asset1, asset2) {
      return asset1.symbol === asset2.symbol;
    }
    function assetWithOptionalAmountFromAsset(asset, assetsToSearch) {
      return assetsToSearch.find((({asset: listAsset}) => SharedAssetInput_isSameAsset(asset, listAsset))) ?? {
        asset: {
          ...asset,
          decimals: 1
        },
        localizedDecimalAmount: "0",
        amount: BigInt(0)
      };
    }
    function SharedAssetInput({currentNetwork, assetsAndAmounts = [], label = "", selectedAsset, amount = "0.0", amountMainCurrency, priceImpact, isAssetOptionsLocked = false, disableDropdown = false, showMaxButton = true, isDisabled = false, showPriceDetails, isPriceDetailsLoading, mainCurrencySign, onAssetSelect, onAmountChange, onFocus = () => {}, onBlur = () => {}, onErrorMessageChange = () => {}, NFTCollections, onSelectNFT, selectedNFT}) {
      const {t} = useTranslation();
      const [openAssetMenu, setOpenAssetMenu] = (0, react.useState)(false);
      const [inputId] = (0, react.useState)(Math.floor(Math.random() * 100));
      const toggleIsAssetMenuOpen = (0, react.useCallback)((() => {
        if (!isAssetOptionsLocked) {
          setOpenAssetMenu((currentlyOpen => !currentlyOpen));
        }
      }), [ isAssetOptionsLocked ]);
      const selectedAssetAndAmount = typeof selectedAsset !== "undefined" ? assetWithOptionalAmountFromAsset(selectedAsset, assetsAndAmounts) : undefined;
      const setSelectedAssetAndClose = (0, react.useCallback)((assetWithOptionalAmount => {
        setOpenAssetMenu(false);
        onAssetSelect?.(assetWithOptionalAmount.asset);
      }), [ onAssetSelect ]);
      const isMaxButtonVisible = showMaxButton && selectedAssetAndAmount?.asset.symbol !== currentNetwork.baseAsset.symbol;
      const [errorMessage, setErrorMessage] = (0, react.useState)("");
      const getErrorMessage = (0, react.useCallback)((givenAmount => {
        if (givenAmount.trim() === "" || typeof selectedAssetAndAmount === "undefined" || !hasAmounts(selectedAssetAndAmount) || !("decimals" in selectedAssetAndAmount.asset)) {
          return undefined;
        }
        const parsedGivenAmount = parseToFixedPointNumber(givenAmount.trim());
        if (typeof parsedGivenAmount === "undefined") {
          return t("assetInput.error.invalidAmount");
        }
        const decimalMatched = convertFixedPointNumber(parsedGivenAmount, selectedAssetAndAmount.asset.decimals);
        if (decimalMatched.amount > selectedAssetAndAmount.amount || selectedAssetAndAmount.amount <= 0) {
          return t("assetInput.error.insufficientBalance");
        }
        return undefined;
      }), [ selectedAssetAndAmount, t ]);
      const handleSelectNFT = nft => {
        setOpenAssetMenu(false);
        onSelectNFT?.(nft);
      };
      (0, react.useEffect)((() => {
        const error = getErrorMessage(amount) ?? "";
        setErrorMessage(error);
        onErrorMessageChange(error);
      }), [ amount, getErrorMessage, onErrorMessageChange ]);
      const setMaxBalance = () => {
        if (typeof selectedAssetAndAmount === "undefined" || !hasAmounts(selectedAssetAndAmount)) {
          return;
        }
        const fixedPointAmount = {
          amount: selectedAssetAndAmount.amount,
          decimals: "decimals" in selectedAssetAndAmount.asset ? selectedAssetAndAmount.asset.decimals : 0
        };
        const fixedPointString = fixedPointNumberToString(fixedPointAmount);
        onAmountChange?.(fixedPointString, getErrorMessage(fixedPointString));
      };
      const displayedBalance = selectedNFT ? 1 : selectedAssetAndAmount && hasAmounts(selectedAssetAndAmount) && selectedAssetAndAmount.localizedDecimalAmount;
      return react.createElement(react.Fragment, null, react.createElement("label", {
        htmlFor: typeof selectedAsset === "undefined" ? `asset_selector${inputId}` : `asset_amount_input${inputId}`,
        className: "jsx-3683111279" + " " + "label"
      }, label), displayedBalance && react.createElement("div", {
        className: "jsx-3683111279" + " " + "amount_controls"
      }, react.createElement("span", {
        className: "jsx-3683111279" + " " + "available"
      }, t("send.balance", {
        amount: displayedBalance
      })), isMaxButtonVisible && react.createElement("button", {
        type: "button",
        onClick: setMaxBalance,
        className: "jsx-3683111279" + " " + "max"
      }, "Max")), react.createElement(SharedSlideUpMenu, {
        isOpen: openAssetMenu,
        close: () => {
          setOpenAssetMenu(false);
        }
      }, assetsAndAmounts && react.createElement(SelectAssetMenuContent, {
        currentNetwork,
        assets: assetsAndAmounts,
        setSelectedAssetAndClose,
        onSelectNFT: handleSelectNFT,
        nfts: NFTCollections ?? []
      })), react.createElement("div", {
        "data-type": selectedNFT ? "nft" : "token",
        className: "jsx-3683111279" + " " + "asset_wrap standard_width"
      }, react.createElement("div", {
        className: "jsx-3683111279"
      }, selectedAssetAndAmount?.asset.symbol ? react.createElement(SelectedAssetButton, {
        isDisabled: isDisabled || disableDropdown,
        asset: selectedAssetAndAmount.asset,
        selectedNFT,
        toggleIsAssetMenuOpen
      }) : react.createElement(SharedButton, {
        id: `asset_selector${inputId}`,
        type: "secondary",
        size: "medium",
        isDisabled: isDisabled || disableDropdown,
        onClick: toggleIsAssetMenuOpen,
        iconSmall: "dropdown"
      }, t("assetInput.selectToken"))), !selectedNFT && react.createElement("div", {
        className: "jsx-3683111279" + " " + "input_amount_wrap"
      }, react.createElement("input", {
        id: `asset_amount_input${inputId}`,
        type: "number",
        step: "any",
        placeholder: "0.0",
        min: "0",
        disabled: isDisabled,
        value: amount,
        spellCheck: false,
        onFocus: e => {
          if (e.target === e.currentTarget) {
            onFocus();
          }
        },
        onBlur: e => {
          if (e.target === e.currentTarget) {
            onBlur();
          }
        },
        onChange: event => onAmountChange?.(event.target.value, getErrorMessage(event.target.value)),
        className: "jsx-3683111279" + " " + "input_amount"
      }), showPriceDetails && amount && selectedAsset && Number(amount) !== 0 && (!errorMessage ? react.createElement(PriceDetails, {
        amountMainCurrency,
        priceImpact,
        isLoading: !!isPriceDetailsLoading,
        mainCurrencySign: mainCurrencySign || ""
      }) : react.createElement("div", {
        className: "jsx-3683111279" + " " + "error_message"
      }, errorMessage))), errorMessage && !showPriceDetails && react.createElement("div", {
        className: "jsx-3683111279" + " " + "error_message error_message_wrap"
      }, errorMessage)), react.createElement(style_default(), {
        id: "3683111279"
      }, 'label.jsx-3683111279,.amount_controls.jsx-3683111279{font-weight:500;}.amount_controls.jsx-3683111279{line-height:27px;margin:-27px 4px 0 0;color:var(--c-text-secondary);text-align:right;position:relative;font-size:14px;}.max.jsx-3683111279{margin-left:8px;color:var(--c-accent);cursor:pointer;}.asset_wrap.jsx-3683111279{height:72px;border-radius:4px;background-color:var(--c-bg);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;position:relative;padding:0px 16px;box-sizing:border-box;position:relative;}.asset_wrap[data-type="nft"].jsx-3683111279{padding:8px;}.asset_wrap[data-type="nft"].jsx-3683111279>div.jsx-3683111279{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;}label.jsx-3683111279:hover~.asset_wrap.jsx-3683111279>div.jsx-3683111279>button:hover{background:unset;color:var(--c-accent);}label.jsx-3683111279:hover~.asset_wrap.jsx-3683111279>div.jsx-3683111279>button:hover .icon_button{background-color:var(--c-accent);}.asset_input.jsx-3683111279{width:100%;height:34px;font-size:28px;font-weight:500;line-height:32px;color:var(--c-text);}.asset_input.jsx-3683111279::-webkit-input-placeholder{color:var(--c-text-tertiary);opacity:1;}.asset_input.jsx-3683111279::-moz-placeholder{color:var(--c-text-tertiary);opacity:1;}.asset_input.jsx-3683111279:-ms-input-placeholder{color:var(--c-text-tertiary);opacity:1;}.asset_input.jsx-3683111279::placeholder{color:var(--c-text-tertiary);opacity:1;}.input_amount_wrap.jsx-3683111279{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:end;-webkit-box-align:end;-ms-flex-align:end;align-items:end;}.input_amount.jsx-3683111279::-webkit-input-placeholder{color:var(--c-text-tertiary);opacity:1;}.input_amount.jsx-3683111279::-moz-placeholder{color:var(--c-text-tertiary);opacity:1;}.input_amount.jsx-3683111279:-ms-input-placeholder{color:var(--c-text-tertiary);opacity:1;}.input_amount.jsx-3683111279::placeholder{color:var(--c-text-tertiary);opacity:1;}.input_amount.jsx-3683111279{max-width:125px;height:32px;color:var(--c-text);font-size:22px;font-weight:500;line-height:32px;text-align:right;text-overflow:ellipsis;-webkit-transition:color 100ms ease-in;transition:color 100ms ease-in;}input.jsx-3683111279::-webkit-outer-spin-button,input.jsx-3683111279::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}input[type="number"].jsx-3683111279{-moz-appearance:textfield;}.input_amount.jsx-3683111279:disabled{cursor:default;color:var(--c-text-tertiary);}.error_message.jsx-3683111279{color:var(--c-error);font-weight:500;font-size:14px;line-height:24px;}.error_message_wrap.jsx-3683111279{position:absolute;width:150px;margin-left:172px;-webkit-transform:translateY(-3px);-ms-transform:translateY(-3px);transform:translateY(-3px);-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;text-align:end;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAssetInput.tsx */'));
    }
    function Send() {
      const {t} = useTranslation();
      const isMounted = (0, react.useRef)(false);
      const location = useLocation();
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      const currentAccount = useBackgroundSelector(selectCurrentAccount);
      const currentAccountSigner = useBackgroundSelector(selectCurrentAccountSigner);
      const [selectedAsset, setSelectedAsset] = (0, react.useState)(location.state ?? currentAccount.network.baseAsset);
      const [assetType, setAssetType] = (0, react.useState)("token");
      const [selectedNFT, setSelectedNFT] = (0, react.useState)(null);
      const handleAssetSelect = asset => {
        setSelectedAsset(asset);
        setAssetType("token");
      };
      (0, react.useEffect)((() => {
        if (!isMounted.current) {
          isMounted.current = true;
        } else {
          setSelectedAsset(currentAccount.network.baseAsset);
        }
      }), [ currentAccount.network.baseAsset.symbol ]);
      const [destinationAddress, setDestinationAddress] = (0, react.useState)(undefined);
      const [amount, setAmount] = (0, react.useState)("");
      const [isSendingTransactionRequest, setIsSendingTransactionRequest] = (0, react.useState)(false);
      const [hasError, setHasError] = (0, react.useState)(false);
      const history = useHistory();
      const dispatch = useBackgroundDispatch();
      const balanceData = useBackgroundSelector(selectCurrentAccountBalances);
      const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol);
      const nftCollections = useBackgroundSelector((state => {
        if (isEnabled(FeatureFlags.SUPPORT_NFT_SEND)) {
          return selectCurrentAccountNFTs(state);
        }
        return [];
      }));
      const fungibleAssetAmounts = balanceData?.allAssetAmounts?.filter((assetAmount => isFungibleAssetAmount(assetAmount) && assetAmount.decimalAmount > 0 && isTrustedAsset(assetAmount.asset))) ?? [];
      const assetPricePoint = useBackgroundSelector((state => selectAssetPricePoint(state.prices, selectedAsset, mainCurrencySymbol)));
      const assetAmountFromForm = () => {
        const fixedPointAmount = parseToFixedPointNumber(amount.toString());
        if (typeof fixedPointAmount === "undefined") {
          return undefined;
        }
        const decimalMatched = convertFixedPointNumber(fixedPointAmount, selectedAsset.decimals);
        return enrichAssetAmountWithMainCurrencyValues({
          asset: selectedAsset,
          amount: decimalMatched.amount
        }, assetPricePoint, 2);
      };
      const assetAmount = assetAmountFromForm();
      const sendTransactionRequest = (0, react.useCallback)((async () => {
        if (assetAmount === undefined || destinationAddress === undefined) {
          return;
        }
        try {
          setIsSendingTransactionRequest(true);
          await dispatch(transferAsset({
            fromAddressNetwork: currentAccount,
            toAddressNetwork: {
              address: destinationAddress,
              network: currentAccount.network
            },
            assetAmount
          }));
        } finally {
          setIsSendingTransactionRequest(false);
        }
        history.push("/singleAsset", assetAmount.asset);
      }), [ assetAmount, currentAccount, destinationAddress, dispatch, history ]);
      const copyAddress = (0, react.useCallback)((() => {
        if (destinationAddress === undefined) {
          return;
        }
        navigator.clipboard.writeText(destinationAddress);
        dispatch(setSnackbarMessage("Address copied to clipboard"));
      }), [ destinationAddress, dispatch ]);
      const {rawValue: userAddressValue, errorMessage: addressErrorMessage, isValidating: addressIsValidating, handleInputChange: handleAddressChange} = useAddressOrNameValidation((value => setDestinationAddress(value?.address)));
      const resolvedNameToAddress = addressErrorMessage === undefined && destinationAddress !== undefined && !sameQEVMAddress(destinationAddress, userAddressValue);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-3506101386" + " " + "standard_width"
      }, react.createElement("div", {
        className: "jsx-3506101386" + " " + "header_wrap"
      }, react.createElement(SharedBackButton, {
        withoutBackText: true,
        path: "/"
      }), react.createElement("h1", {
        className: "jsx-3506101386" + " " + "header"
      }, react.createElement("span", {
        className: "jsx-3506101386" + " " + "icon_activity_send_medium"
      }), react.createElement("div", {
        className: "jsx-3506101386" + " " + "title"
      }, t("wallet.sendAsset")), react.createElement(ReadOnlyNotice, {
        isLite: true
      }))), react.createElement("div", {
        className: "jsx-3506101386" + " " + "form"
      }, react.createElement("div", {
        className: "jsx-3506101386" + " " + "form_input"
      }, react.createElement(SharedAssetInput, {
        currentNetwork,
        label: t("wallet.assetAmount"),
        onAssetSelect: handleAssetSelect,
        assetsAndAmounts: fungibleAssetAmounts,
        onAmountChange: (value, errorMessage) => {
          setAmount(value);
          if (errorMessage) {
            setHasError(true);
          } else {
            setHasError(false);
          }
        },
        onSelectNFT: nft => {
          setSelectedNFT(nft);
          setAssetType("nft");
        },
        selectedAsset: selectedAsset ?? undefined,
        selectedNFT: assetType === "nft" && selectedNFT || undefined,
        amount,
        showMaxButton: assetType !== "nft",
        NFTCollections: isEnabled(FeatureFlags.SUPPORT_NFT_SEND) ? nftCollections : undefined
      }), assetType === "token" && !hasError && react.createElement("div", {
        className: "jsx-3506101386" + " " + "value"
      }, "$", assetAmount?.localizedMainCurrencyAmount ?? "-")), react.createElement("div", {
        className: "jsx-3506101386" + " " + "form_input send_to_field"
      }, react.createElement("label", {
        htmlFor: "send_address",
        className: "jsx-3506101386"
      }, t("wallet.sendTo")), react.createElement("input", {
        id: "send_address",
        type: "text",
        placeholder: "0x...",
        spellCheck: false,
        onChange: event => handleAddressChange(event.target.value),
        className: "jsx-3506101386" + " " + (classnames_default()({
          error: addressErrorMessage !== undefined,
          resolved_address: resolvedNameToAddress
        }) || "")
      }), addressIsValidating && react.createElement("p", {
        className: "jsx-3506101386" + " " + "validating"
      }, react.createElement(SharedLoadingSpinner, null)), resolvedNameToAddress && react.createElement("button", {
        type: "button",
        onClick: () => copyAddress(),
        className: "jsx-3506101386" + " " + "address"
      }, react.createElement(SharedIcon, {
        icon: "icons/s/copy.svg",
        width: 14,
        color: "var(--c-border)"
      }), destinationAddress), addressErrorMessage !== undefined && react.createElement("p", {
        title: "Note: UNS temporarily disabled for security reasons.",
        className: "jsx-3506101386" + " " + "error"
      }, "⚠️ ", addressErrorMessage)), react.createElement("div", {
        className: "jsx-3506101386" + " " + "send_footer standard_width_padded"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "large",
        isDisabled: currentAccountSigner === ReadOnlyAccountSigner || assetType === "token" && Number(amount) === 0 || destinationAddress === undefined || hasError,
        onClick: sendTransactionRequest,
        isFormSubmit: true,
        isLoading: isSendingTransactionRequest
      }, t("wallet.sendButton"))))), react.createElement(style_default(), {
        id: "3506101386"
      }, '.icon_activity_send_medium.jsx-3506101386{background:url("./images/activity_send_medium@2x.png");background-size:24px 24px;width:24px;height:24px;margin-right:8px;}.title.jsx-3506101386{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:32px;color:var(--c-text);font-size:22px;font-weight:500;line-height:32px;}.header_wrap.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:8px;margin-bottom:4px;margin-top:18px;}.header.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:32px;padding:0px;margin:-5px 0px 0px 0px;}.form_input.jsx-3506101386{position:relative;margin-bottom:14px;}.form.jsx-3506101386{margin-top:20px;}.label_right.jsx-3506101386{margin-right:6px;}.label.jsx-3506101386{margin-bottom:6px;}.value.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;bottom:8px;right:16px;color:var(--c-text-tertiary);font-size:12px;line-height:16px;}div.send_to_field.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}div.send_to_field.jsx-3506101386 label.jsx-3506101386{color:var(--c-text);text-align:right;font-size:14px;}input#send_address.jsx-3506101386{box-sizing:border-box;height:72px;width:100%;font-size:22px;font-weight:500;line-height:72px;color:var(--c-text);border-radius:4px;background-color:var(--c-bg);padding:0px 16px;-webkit-transition:padding-bottom 0.2s;transition:padding-bottom 0.2s;}input#send_address.jsx-3506101386::-webkit-input-placeholder{color:var(--c-text-tertiary);}input#send_address.jsx-3506101386::-moz-placeholder{color:var(--c-text-tertiary);}input#send_address.jsx-3506101386:-ms-input-placeholder{color:var(--c-text-tertiary);}input#send_address.jsx-3506101386::placeholder{color:var(--c-text-tertiary);}input#send_address.resolved_address.jsx-3506101386{font-size:18px;font-weight:600;padding-bottom:16px;}input#send_address.jsx-3506101386~.error.jsx-3506101386{color:var(--c-error);font-weight:500;font-size:14px;line-height:20px;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;text-align:end;margin-top:-25px;margin-right:15px;margin-bottom:5px;}input#send_address.jsx-3506101386~.address.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;color:var(--c-border);font-weight:500;font-size:12px;line-height:20px;-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;text-align:start;margin-top:-30px;margin-left:16px;margin-bottom:5px;-webkit-transition:color 0.2s;transition:color 0.2s;}input#send_address.jsx-3506101386~.address.jsx-3506101386:hover{color:var(--c-accent-light);}input#send_address.jsx-3506101386~.address.jsx-3506101386>.icon{-webkit-transition:background-color 0.2s;transition:background-color 0.2s;}input#send_address.jsx-3506101386~.address.jsx-3506101386:hover>.icon{background-color:var(--c-accent-light);}input#send_address.jsx-3506101386~.validating.jsx-3506101386{margin-top:-50px;margin-bottom:22px;margin-right:15px;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}.send_footer.jsx-3506101386{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;margin-top:21px;padding-bottom:20px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Send.tsx */'));
    }
    function RequestingDAppBlock(props) {
      const {title, url, faviconUrl} = props;
      return react.createElement("div", {
        className: style_default().dynamic([ [ "3527636732", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "request_wrap"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "3527636732", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_favicon"
      }), react.createElement("div", {
        className: style_default().dynamic([ [ "3527636732", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "info"
      }, react.createElement("div", {
        title,
        className: style_default().dynamic([ [ "3527636732", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_title ellipsis_multiline"
      }, title), react.createElement("div", {
        title: url,
        className: style_default().dynamic([ [ "3527636732", [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ] ] ]) + " " + "dapp_url"
      }, url)), react.createElement(style_default(), {
        id: "3527636732",
        dynamic: [ faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl ]
      }, `.request_wrap.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.dapp_favicon.__jsx-style-dynamic-selector{background:url("${faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl}");background-size:cover;width:48px;height:48px;border-radius:12px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.dapp_title.__jsx-style-dynamic-selector{color:var(--c-text);font-size:16px;font-weight:500;}.dapp_url.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info.__jsx-style-dynamic-selector{margin-left:16px;width:calc(100% - 48px - 16px);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvREFwcENvbm5lY3QvUmVxdWVzdGluZ0RBcHAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Ca0IsQUFHd0IsQUFLa0MsQUFRM0IsQUFLUyxBQU9aLGlCQUNjLEdBWmhCLFNBS0EsTUFKQyxTQUtHLEdBZEcsQ0FxQnhCLEdBWEEsWUFLa0IsTUFkTCxLQU5RLEtBcUJJLENBZFgsWUFDTyxVQWNyQixTQWJnQix3REFSSCxBQVNiLFdBUkEiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9EQXBwQ29ubmVjdC9SZXF1ZXN0aW5nREFwcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVxdWVzdGluZ0RBcHBCbG9jayhwcm9wczoge1xuICB0aXRsZTogc3RyaW5nXG4gIHVybDogc3RyaW5nXG4gIGZhdmljb25Vcmw6IHN0cmluZ1xufSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdGl0bGUsIHVybCwgZmF2aWNvblVybCB9ID0gcHJvcHNcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlcXVlc3Rfd3JhcFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXBwX2Zhdmljb25cIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGFwcF90aXRsZSBlbGxpcHNpc19tdWx0aWxpbmVcIiB0aXRsZT17dGl0bGV9PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGFwcF91cmxcIiB0aXRsZT17dXJsfT5cbiAgICAgICAgICB7dXJsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAucmVxdWVzdF93cmFwIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLmRhcHBfZmF2aWNvbiB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiJHtmYXZpY29uVXJsID09PSBcIlwiXG4gICAgICAgICAgICA/IFwiLi9pbWFnZXMvZGFwcF9mYXZpY29uX2RlZmF1bHRAMngucG5nXCJcbiAgICAgICAgICAgIDogZmF2aWNvblVybH1cIik7XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgICAgICAuZGFwcF90aXRsZSB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgLmRhcHBfdXJsIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB9XG4gICAgICAgIC5pbmZvIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNDhweCAtIDE2cHgpO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/DAppConnect/RequestingDApp.tsx */`));
    }
    function DefaultConnectionPopover({close}) {
      const {t: tShared} = useTranslation("translation", {
        keyPrefix: "shared"
      });
      const {t} = useTranslation("translation", {
        keyPrefix: "dAppConnect.defaultConnectionPopover"
      });
      const [isClosing, setIsClosing] = (0, react.useState)(false);
      const animateThenClose = (0, react.useCallback)((() => {
        setIsClosing(true);
        setTimeout(close, 300);
      }), [ close ]);
      return react.createElement("div", {
        className: "jsx-2463358120" + " " + (classnames_default()("bg", {
          fade_in: !isClosing,
          fade_out: isClosing
        }) || "")
      }, react.createElement("section", {
        className: "jsx-2463358120"
      }, react.createElement(SharedIcon, {
        id: "close",
        icon: "close.svg",
        width: 12,
        "aria-label": tShared("close"),
        onClick: animateThenClose,
        color: "var(--c-text-secondary)",
        hoverColor: "var(--c-text)",
        style: {
          position: "absolute",
          top: 16,
          right: 16
        }
      }), react.createElement("h3", {
        className: "jsx-2463358120"
      }, t("title")), react.createElement("p", {
        className: "jsx-2463358120"
      }, t("activeWallet")), react.createElement("p", {
        className: "jsx-2463358120"
      }, t("activeWalletMeaning")), react.createElement("h4", {
        className: "jsx-2463358120"
      }, t("infoHeading")), react.createElement("div", {
        className: "jsx-2463358120" + " " + "default-toggle"
      }, t("infoLabel"))), react.createElement("button", {
        "aria-label": tShared("modalClose"),
        type: "button",
        onClick: animateThenClose,
        className: "jsx-2463358120" + " " + "void_space"
      }), react.createElement(style_default(), {
        id: "2463358120"
      }, '.bg.jsx-2463358120{position:fixed;top:48px;left:0px;width:100%;height:100%;background-color:var(--c-black-a45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:4;}section.jsx-2463358120{position:absolute;top:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 12px;padding:20px;color:var(--c-text);background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:16px;box-shadow:var(--shadow-md);}section.jsx-2463358120:before,section.jsx-2463358120:after{content:"";position:absolute;top:-10px;left:28px;}section.jsx-2463358120:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:17px;height:17px;border:1px var(--c-accent-a30);border-style:solid none none solid;border-top-left-radius:6px;background:var(--c-bg);top:-7px;left:30px;width:0;height:0;border:7px transparent;border-style:none solid solid;border-bottom-color:var(--c-accent-light);border-top-left-radius:3px;}h3.jsx-2463358120{font-size:20px;color:var(--c-accent);margin:0 0 12px;font-family:"Segment",sans-serif;font-weight:700;}p.jsx-2463358120{font-weight:500;margin:0 0 8px;font-size:14px;color:var(--c-text-secondary);font-family:"Segment",sans-serif;line-height:1.5;}h4.jsx-2463358120{color:var(--c-text);margin:16px 0 12px;font-family:"Segment",sans-serif;font-size:16px;font-weight:600;}div.default-toggle.jsx-2463358120{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-family:"Segment",sans-serif;font-size:14px;}.void_space.jsx-2463358120{height:100%;width:100%;position:fixed;top:0;left:0;z-index:-1;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/DAppConnection/DAppConnectionInfoBar.tsx */'));
    }
    function DAppConnectionInfoBar() {
      const dispatch = useBackgroundDispatch();
      const shouldImmediatelyShowPopover = useBackgroundSelector(selectShouldShowDismissableItem("default-connection-popover"));
      const [isExpanded, setIsExpanded] = (0, react.useState)(false);
      const [isShowingDefaultConnectionPopover, setIsShowingDefaultConnectionPopover] = (0, 
      react.useState)(shouldImmediatelyShowPopover);
      const closeDefaultConnectionPopover = (0, react.useCallback)((() => {
        if (shouldImmediatelyShowPopover && isShowingDefaultConnectionPopover) {
          dispatch(markDismissableItemAsShown("default-connection-popover"));
        }
        setIsShowingDefaultConnectionPopover(false);
      }), [ dispatch, isShowingDefaultConnectionPopover, shouldImmediatelyShowPopover ]);
      const toggleIsShowingDefaultConnectionPopover = (0, react.useCallback)((() => {
        if (isShowingDefaultConnectionPopover) {
          closeDefaultConnectionPopover();
        } else {
          setIsShowingDefaultConnectionPopover(true);
        }
      }), [ closeDefaultConnectionPopover, isShowingDefaultConnectionPopover ]);
      return react.createElement("div", {
        className: "jsx-3388150368" + " " + "wrapper"
      }, react.createElement("button", {
        type: "button",
        onClick: () => setIsExpanded((v => !v)),
        "aria-label": "Connection settings",
        className: "jsx-3388150368" + " " + (classnames_default()("pill", {
          active: isExpanded
        }) || "")
      }, react.createElement(SharedIcon, {
        icon: "icons/m/info.svg",
        width: 14,
        color: isExpanded ? "var(--c-success)" : "var(--c-text-secondary)"
      }), react.createElement("span", {
        className: "jsx-3388150368" + " " + "pill_label"
      }, "Connect"), react.createElement("span", {
        className: "jsx-3388150368" + " " + (classnames_default()("pill_chevron", {
          rotated: isExpanded
        }) || "")
      }, "▾")), react.createElement("div", {
        className: "jsx-3388150368" + " " + (classnames_default()("bar", {
          expanded: isExpanded
        }) || "")
      }, react.createElement("div", {
        className: "jsx-3388150368" + " " + "bar_inner"
      }, react.createElement(SharedIcon, {
        onClick: () => toggleIsShowingDefaultConnectionPopover(),
        icon: "icons/m/info.svg",
        width: 16,
        hoverColor: "var(--c-success)",
        color: isShowingDefaultConnectionPopover ? "var(--c-success)" : "var(--c-text-secondary)"
      }), isShowingDefaultConnectionPopover && react.createElement(DefaultConnectionPopover, {
        close: closeDefaultConnectionPopover
      }))), react.createElement(style_default(), {
        id: "3388150368"
      }, '.wrapper.jsx-3388150368{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;padding:6px 12px 0;}.pill.jsx-3388150368{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;padding:4px 10px 4px 8px;background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:20px;cursor:pointer;-webkit-transition: background 0.15s ease, border-color 0.15s ease;transition: background 0.15s ease, border-color 0.15s ease;}.pill.jsx-3388150368:hover,.pill.active.jsx-3388150368{background:var(--c-bg-inset);border-color:var(--c-accent-a35);}.pill_label.jsx-3388150368{font-size:11px;font-weight:500;color:var(--c-text-secondary);font-family:"Segment",sans-serif;line-height:1;}.pill_chevron.jsx-3388150368{font-size:10px;color:var(--c-text-secondary);line-height:1;display:inline-block;-webkit-transition:-webkit-transform 0.2s ease;-webkit-transition:transform 0.2s ease;transition:transform 0.2s ease;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}.pill_chevron.rotated.jsx-3388150368{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.bar.jsx-3388150368{width:100%;max-height:0;overflow:hidden;-webkit-transition: max-height 0.25s ease, opacity 0.2s ease;transition: max-height 0.25s ease, opacity 0.2s ease;opacity:0;}.bar.expanded.jsx-3388150368{max-height:60px;opacity:1;}.bar_inner.jsx-3388150368{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:7px 0 6px;border-top:1px solid var(--c-border-accent);margin-top:6px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/DAppConnection/DAppConnectionInfoBar.tsx */'));
    }
    function DAppConnectPage({permission, currentAccountTotal, denyPermission, grantPermission}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "dappConnection"
      });
      const {title, origin, faviconUrl, accountAddress} = permission;
      const isDefaultWallet = useBackgroundSelector(selectDefaultWallet);
      const [wasDefaultWallet, setWasDefaultWallet] = (0, react.useState)(isDefaultWallet);
      (0, react.useEffect)((() => {
        if (wasDefaultWallet && !isDefaultWallet) {
          setTimeout((() => window.close()), 300);
        }
      }), [ wasDefaultWallet, isDefaultWallet ]);
      (0, react.useEffect)((() => {
        if (!wasDefaultWallet && isDefaultWallet) {
          setWasDefaultWallet(true);
        }
      }), [ wasDefaultWallet, isDefaultWallet ]);
      return react.createElement(react.Fragment, null, react.createElement(DAppConnectionInfoBar, null), react.createElement("section", {
        className: "jsx-3043012906" + " " + "standard_width"
      }, react.createElement("h1", {
        className: "jsx-3043012906" + " " + "serif_header"
      }, t("connectToDapp")), react.createElement("div", {
        className: "jsx-3043012906" + " " + "connection_destination"
      }, react.createElement(RequestingDAppBlock, {
        title,
        url: origin,
        faviconUrl
      })), react.createElement("div", {
        className: "jsx-3043012906" + " " + "icon_connection"
      }), react.createElement("div", {
        className: "jsx-3043012906" + " " + "connection_destination"
      }, react.createElement(SharedAccountItemSummary, {
        key: accountAddress,
        accountTotal: currentAccountTotal
      })), react.createElement("ul", {
        className: "jsx-3043012906" + " " + "permissions_list"
      }, react.createElement("li", {
        className: "jsx-3043012906" + " " + "permissions_list_title"
      }, t("dappPermissionListTitle")), react.createElement("li", {
        className: "jsx-3043012906"
      }, react.createElement("ul", {
        className: "jsx-3043012906"
      }, react.createElement("li", {
        className: "jsx-3043012906"
      }, t("viewAddressPermission")), react.createElement("li", {
        className: "jsx-3043012906"
      }, t("createTransactionPermission")))))), react.createElement("div", {
        className: "jsx-3043012906" + " " + "footer_actions"
      }, react.createElement(SharedButton, {
        id: "denyPermission",
        size: "large",
        type: "secondary",
        onClick: denyPermission
      }, t("rejectConnection")), react.createElement(SharedButton, {
        id: "grantPermission",
        type: "primary",
        size: "large",
        onClick: grantPermission
      }, t("acceptConnection"))), react.createElement(style_default(), {
        id: "3043012906"
      }, 'section.jsx-3043012906{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100vh;margin:0 auto;}.page.jsx-3043012906{background-color:var(--c-bg);height:100vh;width:100vw;z-index:1000;}h1.jsx-3043012906{color:var(--c-accent);margin-top:45px;margin-bottom:25px;text-align:center;}.permissions_list.jsx-3043012906{margin-left:16px;}ul.jsx-3043012906{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}li.jsx-3043012906{font-size:14px;line-height:20px;color:var(--c-text-tertiary);margin-bottom:4px;margin-left:5px;}.permissions_list_title.jsx-3043012906{color:var(--c-text);margin-bottom:8px;margin-top:15px;margin-left:0px;}.connection_destination.jsx-3043012906{width:100%;height:88px;background-color:var(--c-bg-alt);border-radius:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;box-sizing:border-box;margin-bottom:8px;}.icon_connection.jsx-3043012906{background:url("./images/bolt@2x.png") center no-repeat;background-color:var(--c-bg);border-radius:4px;background-size:10px 17px;border:solid 3px var(--c-bg-alt);width:24px;height:24px;margin-left:28px;margin-top:-19px;margin-bottom:-10px;z-index:3;}.footer_actions.jsx-3043012906{position:fixed;bottom:0px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;padding:0px 16px;box-sizing:border-box;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:80px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;box-shadow:0 0 5px rgba(0,20,19,0.5);background-color:var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/DAppConnect/DAppConnectPage.tsx */'));
    }
    function DAppConnectRequest() {
      const dispatch = useBackgroundDispatch();
      const currentAccountTotal = useBackgroundSelector(selectCurrentAccountTotal);
      const permission = useBackgroundSelector(selectCurrentPendingPermission);
      (0, react.useEffect)((() => {
        window.onbeforeunload = () => {
          if (typeof permission !== "undefined") {
            dispatch(denyOrRevokePermission({
              ...permission,
              state: "deny"
            }));
          }
        };
      }), [ dispatch, permission ]);
      const grant = (0, react.useCallback)((async () => {
        if (typeof permission !== "undefined" && typeof currentAccountTotal !== "undefined") {
          dispatch(grantPermission({
            ...permission,
            accountAddress: currentAccountTotal.address,
            state: "allow"
          }));
        }
        window.onbeforeunload = null;
        window.close();
      }), [ dispatch, permission, currentAccountTotal ]);
      const deny = (0, react.useCallback)((async () => {
        window.close();
      }), []);
      if (typeof permission === "undefined") {
        return react.createElement(ErrorFallback, null);
      }
      if (typeof currentAccountTotal === "undefined") {
        return react.createElement(Redirect, {
          to: "/onboarding/info-intro"
        });
      }
      return react.createElement("div", {
        className: "jsx-877549705" + " " + "page"
      }, react.createElement(DAppConnectPage, {
        permission,
        currentAccountTotal,
        denyPermission: deny,
        grantPermission: grant
      }), react.createElement(style_default(), {
        id: "65676226"
      }, ".page.jsx-877549705{background-color:var(--c-bg);height:100vh;width:100%;z-index:1000;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvREFwcENvbm5lY3RSZXF1ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwRWtCLEFBR3dDLDZCQUNoQixhQUNGLFdBQ0UsYUFDZiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL0RBcHBDb25uZWN0UmVxdWVzdC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7XG4gIHNlbGVjdEN1cnJlbnRQZW5kaW5nUGVybWlzc2lvbixcbiAgc2VsZWN0Q3VycmVudEFjY291bnRUb3RhbCxcbn0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvc2VsZWN0b3JzXCJcbmltcG9ydCB7XG4gIGRlbnlPclJldm9rZVBlcm1pc3Npb24sXG4gIGdyYW50UGVybWlzc2lvbixcbn0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvZGFwcFwiXG5cbmltcG9ydCB7IFJlZGlyZWN0IH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZERpc3BhdGNoLCB1c2VCYWNrZ3JvdW5kU2VsZWN0b3IgfSBmcm9tIFwiLi4vaG9va3NcIlxuaW1wb3J0IERBcHBDb25uZWN0UGFnZSBmcm9tIFwiLi9EQXBwQ29ubmVjdC9EQXBwQ29ubmVjdFBhZ2VcIlxuaW1wb3J0IEVycm9yRmFsbGJhY2sgZnJvbSBcIi4vRXJyb3JGYWxsYmFja1wiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERBcHBDb25uZWN0UmVxdWVzdCgpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZUJhY2tncm91bmREaXNwYXRjaCgpXG5cbiAgY29uc3QgY3VycmVudEFjY291bnRUb3RhbCA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihzZWxlY3RDdXJyZW50QWNjb3VudFRvdGFsKVxuICBjb25zdCBwZXJtaXNzaW9uID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEN1cnJlbnRQZW5kaW5nUGVybWlzc2lvbilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGVybWlzc2lvbiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBkZW55T3JSZXZva2VQZXJtaXNzaW9uKHtcbiAgICAgICAgICAgIC4uLnBlcm1pc3Npb24sXG4gICAgICAgICAgICBzdGF0ZTogXCJkZW55XCIsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtkaXNwYXRjaCwgcGVybWlzc2lvbl0pXG5cbiAgY29uc3QgZ3JhbnQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHBlcm1pc3Npb24gIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50QWNjb3VudFRvdGFsICE9PSBcInVuZGVmaW5lZFwiXG4gICAgKSB7XG4gICAgICBkaXNwYXRjaChcbiAgICAgICAgZ3JhbnRQZXJtaXNzaW9uKHtcbiAgICAgICAgICAuLi5wZXJtaXNzaW9uLFxuICAgICAgICAgIGFjY291bnRBZGRyZXNzOiBjdXJyZW50QWNjb3VudFRvdGFsLmFkZHJlc3MsIC8vIG1ha2Ugc3VyZSBhZGRyZXNzIGlzIG1hdGNoaW5nIGN1cnJlbnQgYWNjb3VudFxuICAgICAgICAgIHN0YXRlOiBcImFsbG93XCIsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsXG4gICAgd2luZG93LmNsb3NlKClcbiAgfSwgW2Rpc3BhdGNoLCBwZXJtaXNzaW9uLCBjdXJyZW50QWNjb3VudFRvdGFsXSlcblxuICBjb25zdCBkZW55ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIC8vIFRoZSBkZW55T3JSZXZva2VQZXJtaXNzaW9uIHdpbGwgYmUgZGlzcGF0Y2hlZCBpbiB0aGUgb25iZWZvcmV1bmxvYWQgZWZmZWN0XG4gICAgd2luZG93LmNsb3NlKClcbiAgfSwgW10pXG5cbiAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBwZXJtaXNzaW9ucyByZXF1ZXN0XG4gICAgcmV0dXJuIDxFcnJvckZhbGxiYWNrIC8+XG4gIH1cblxuICBpZiAodHlwZW9mIGN1cnJlbnRBY2NvdW50VG90YWwgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAvLyB0aGVyZSBpcyBubyBhY2NvdW50LCBsZXQncyBvbmJvYXJkIGZpcnN0XG4gICAgcmV0dXJuIDxSZWRpcmVjdCB0bz1cIi9vbmJvYXJkaW5nL2luZm8taW50cm9cIiAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2VcIj5cbiAgICAgIDxEQXBwQ29ubmVjdFBhZ2VcbiAgICAgICAgcGVybWlzc2lvbj17cGVybWlzc2lvbn1cbiAgICAgICAgY3VycmVudEFjY291bnRUb3RhbD17Y3VycmVudEFjY291bnRUb3RhbH1cbiAgICAgICAgZGVueVBlcm1pc3Npb249e2Rlbnl9XG4gICAgICAgIGdyYW50UGVybWlzc2lvbj17Z3JhbnR9XG4gICAgICAvPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAucGFnZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZyk7XG4gICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgICA8c3R5bGUganN4IGdsb2JhbD57YFxuICAgICAgICBib2R5IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnKTtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/DAppConnectRequest.tsx */"), react.createElement(style_default(), {
        id: "1022926754"
      }, "body{background-color:var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvREFwcENvbm5lY3RSZXF1ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRnlCLEFBR3dDLDZCQUMvQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL0RBcHBDb25uZWN0UmVxdWVzdC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7XG4gIHNlbGVjdEN1cnJlbnRQZW5kaW5nUGVybWlzc2lvbixcbiAgc2VsZWN0Q3VycmVudEFjY291bnRUb3RhbCxcbn0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvc2VsZWN0b3JzXCJcbmltcG9ydCB7XG4gIGRlbnlPclJldm9rZVBlcm1pc3Npb24sXG4gIGdyYW50UGVybWlzc2lvbixcbn0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvZGFwcFwiXG5cbmltcG9ydCB7IFJlZGlyZWN0IH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZERpc3BhdGNoLCB1c2VCYWNrZ3JvdW5kU2VsZWN0b3IgfSBmcm9tIFwiLi4vaG9va3NcIlxuaW1wb3J0IERBcHBDb25uZWN0UGFnZSBmcm9tIFwiLi9EQXBwQ29ubmVjdC9EQXBwQ29ubmVjdFBhZ2VcIlxuaW1wb3J0IEVycm9yRmFsbGJhY2sgZnJvbSBcIi4vRXJyb3JGYWxsYmFja1wiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERBcHBDb25uZWN0UmVxdWVzdCgpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZUJhY2tncm91bmREaXNwYXRjaCgpXG5cbiAgY29uc3QgY3VycmVudEFjY291bnRUb3RhbCA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihzZWxlY3RDdXJyZW50QWNjb3VudFRvdGFsKVxuICBjb25zdCBwZXJtaXNzaW9uID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEN1cnJlbnRQZW5kaW5nUGVybWlzc2lvbilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGVybWlzc2lvbiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBkZW55T3JSZXZva2VQZXJtaXNzaW9uKHtcbiAgICAgICAgICAgIC4uLnBlcm1pc3Npb24sXG4gICAgICAgICAgICBzdGF0ZTogXCJkZW55XCIsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtkaXNwYXRjaCwgcGVybWlzc2lvbl0pXG5cbiAgY29uc3QgZ3JhbnQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHBlcm1pc3Npb24gIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50QWNjb3VudFRvdGFsICE9PSBcInVuZGVmaW5lZFwiXG4gICAgKSB7XG4gICAgICBkaXNwYXRjaChcbiAgICAgICAgZ3JhbnRQZXJtaXNzaW9uKHtcbiAgICAgICAgICAuLi5wZXJtaXNzaW9uLFxuICAgICAgICAgIGFjY291bnRBZGRyZXNzOiBjdXJyZW50QWNjb3VudFRvdGFsLmFkZHJlc3MsIC8vIG1ha2Ugc3VyZSBhZGRyZXNzIGlzIG1hdGNoaW5nIGN1cnJlbnQgYWNjb3VudFxuICAgICAgICAgIHN0YXRlOiBcImFsbG93XCIsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsXG4gICAgd2luZG93LmNsb3NlKClcbiAgfSwgW2Rpc3BhdGNoLCBwZXJtaXNzaW9uLCBjdXJyZW50QWNjb3VudFRvdGFsXSlcblxuICBjb25zdCBkZW55ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIC8vIFRoZSBkZW55T3JSZXZva2VQZXJtaXNzaW9uIHdpbGwgYmUgZGlzcGF0Y2hlZCBpbiB0aGUgb25iZWZvcmV1bmxvYWQgZWZmZWN0XG4gICAgd2luZG93LmNsb3NlKClcbiAgfSwgW10pXG5cbiAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBwZXJtaXNzaW9ucyByZXF1ZXN0XG4gICAgcmV0dXJuIDxFcnJvckZhbGxiYWNrIC8+XG4gIH1cblxuICBpZiAodHlwZW9mIGN1cnJlbnRBY2NvdW50VG90YWwgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAvLyB0aGVyZSBpcyBubyBhY2NvdW50LCBsZXQncyBvbmJvYXJkIGZpcnN0XG4gICAgcmV0dXJuIDxSZWRpcmVjdCB0bz1cIi9vbmJvYXJkaW5nL2luZm8taW50cm9cIiAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2VcIj5cbiAgICAgIDxEQXBwQ29ubmVjdFBhZ2VcbiAgICAgICAgcGVybWlzc2lvbj17cGVybWlzc2lvbn1cbiAgICAgICAgY3VycmVudEFjY291bnRUb3RhbD17Y3VycmVudEFjY291bnRUb3RhbH1cbiAgICAgICAgZGVueVBlcm1pc3Npb249e2Rlbnl9XG4gICAgICAgIGdyYW50UGVybWlzc2lvbj17Z3JhbnR9XG4gICAgICAvPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAucGFnZSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1iZyk7XG4gICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgICA8c3R5bGUganN4IGdsb2JhbD57YFxuICAgICAgICBib2R5IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnKTtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/DAppConnectRequest.tsx */"));
    }
    function SharedPageHeader({children, withoutBackText, backPath}) {
      return react.createElement("div", {
        className: style_default().dynamic([ [ "956129416", [ withoutBackText ? "row" : "column", withoutBackText && "gap: 8px;" ] ] ]) + " " + "header_wrap"
      }, react.createElement(SharedBackButton, {
        withoutBackText,
        path: backPath
      }), react.createElement("h1", {
        className: style_default().dynamic([ [ "956129416", [ withoutBackText ? "row" : "column", withoutBackText && "gap: 8px;" ] ] ])
      }, children), react.createElement(style_default(), {
        id: "956129416",
        dynamic: [ withoutBackText ? "row" : "column", withoutBackText && "gap: 8px;" ]
      }, `h1.__jsx-style-dynamic-selector{font-size:22px;font-weight:500;line-height:32px;padding:0px;margin:-5px 0px 0px 0px;}.header_wrap.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-direction:${withoutBackText ? "row" : "column"};-ms-flex-direction:${withoutBackText ? "row" : "column"};flex-direction:${withoutBackText ? "row" : "column"};${withoutBackText && "gap: 8px;"};margin-top:25px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkUGFnZUhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JrQixBQUcwQixBQU9GLGVBTkcsZ0JBQ0MsaUJBQ0wsWUFDWSxjQUlGLFVBSHhCLG9FQUk4QyxnSkFDaEIsNkJBQ1osZ0JBQ2xCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkUGFnZUhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTaGFyZWRCYWNrQnV0dG9uIGZyb20gXCIuL1NoYXJlZEJhY2tCdXR0b25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRQYWdlSGVhZGVyKHtcbiAgY2hpbGRyZW4sXG4gIHdpdGhvdXRCYWNrVGV4dCxcbiAgYmFja1BhdGgsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgd2l0aG91dEJhY2tUZXh0PzogYm9vbGVhblxuICBiYWNrUGF0aD86IHN0cmluZ1xufSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXJfd3JhcFwiPlxuICAgICAgPFNoYXJlZEJhY2tCdXR0b24gd2l0aG91dEJhY2tUZXh0PXt3aXRob3V0QmFja1RleHR9IHBhdGg9e2JhY2tQYXRofSAvPlxuICAgICAgPGgxPntjaGlsZHJlbn08L2gxPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgIG1hcmdpbjogLTVweCAwcHggMHB4IDBweDtcbiAgICAgICAgfVxuICAgICAgICAuaGVhZGVyX3dyYXAge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogJHt3aXRob3V0QmFja1RleHQgPyBcInJvd1wiIDogXCJjb2x1bW5cIn07XG4gICAgICAgICAgJHt3aXRob3V0QmFja1RleHQgJiYgXCJnYXA6IDhweDtcIn07XG4gICAgICAgICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedPageHeader.tsx */`));
    }
    var SettingsExportLogs_Buffer = __webpack_require__(8287)["Buffer"];
    function SettingsExportLogs() {
      const {t} = useTranslation();
      const [base64LogData, setBase64LogData] = (0, react.useState)();
      (0, react.useEffect)((() => {
        const resolveSerializedLogs = async () => {
          setBase64LogData(SettingsExportLogs_Buffer.from(`${window.navigator.userAgent}\n\n\n${await serializeLogs()}` || "").toString("base64"));
        };
        resolveSerializedLogs();
      }), []);
      const logFileName = `logs_v${("1.0.0" || 0).replace(/\./g, "_")}__${dayjs_min_default()().format()}.txt`;
      return react.createElement("div", {
        className: "jsx-3503781328" + " " + "standard_width_padded"
      }, react.createElement(SharedPageHeader, {
        withoutBackText: true,
        backPath: "/settings"
      }, t("settings.exportLogs.title")), react.createElement("section", {
        className: "jsx-3503781328"
      }, react.createElement("h2", {
        className: "jsx-3503781328"
      }, t("settings.exportLogs.telegramTitle")), react.createElement("p", {
        className: "jsx-3503781328" + " " + "simple_text"
      }, t("settings.exportLogs.telegramDesc")), react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        iconSmall: "telegram",
        iconPosition: "left",
        onClick: () => {
          window.open("https://t.me/quantumevm/10253", "_blank")?.focus();
        }
      }, t("settings.exportLogs.telegramBtn"))), react.createElement("section", {
        className: "jsx-3503781328"
      }, react.createElement("h2", {
        className: "jsx-3503781328"
      }, t("settings.exportLogs.logTitle")), react.createElement("p", {
        className: "jsx-3503781328" + " " + "simple_text"
      }, t("settings.exportLogs.logDesc")), react.createElement("a", {
        href: `data:application/octet-stream;charset=utf-16le;base64,${base64LogData}`,
        download: logFileName,
        className: "jsx-3503781328"
      }, react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        iconSmall: "download",
        iconPosition: "left",
        isLoading: base64LogData === undefined
      }, t("settings.exportLogs.logBtn")))), react.createElement(style_default(), {
        id: "3503781328"
      }, "h2.jsx-3503781328{color:var(--c-text-secondary);font-size:18px;font-weight:600;line-height:24px;margin-top:20px;}section.jsx-3503781328{margin-bottom:35px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvU2V0dGluZ3NFeHBvcnRMb2dzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRWtCLEFBR3lDLEFBT1gsbUJBQ3JCLFdBUGlCLGVBQ0MsZ0JBQ0MsaUJBQ0QsZ0JBQ2xCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvU2V0dGluZ3NFeHBvcnRMb2dzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCJcbmltcG9ydCB7IHNlcmlhbGl6ZUxvZ3MgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL2xpYi9sb2dnZXJcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcbmltcG9ydCBTaGFyZWRQYWdlSGVhZGVyIGZyb20gXCIuLi8uLi9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRQYWdlSGVhZGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2V0dGluZ3NFeHBvcnRMb2dzKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IFtiYXNlNjRMb2dEYXRhLCBzZXRCYXNlNjRMb2dEYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVTZXJpYWxpemVkTG9ncyA9IGFzeW5jICgpID0+IHtcbiAgICAgIHNldEJhc2U2NExvZ0RhdGEoXG4gICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGAke3dpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fVxcblxcblxcbiR7YXdhaXQgc2VyaWFsaXplTG9ncygpfWAgfHwgXCJcIixcbiAgICAgICAgKS50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgIClcbiAgICB9XG4gICAgcmVzb2x2ZVNlcmlhbGl6ZWRMb2dzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9nRmlsZU5hbWUgPSBgbG9nc192JHsocHJvY2Vzcy5lbnYuVkVSU0lPTiB8fCBcIlwiKS5yZXBsYWNlKFxuICAgIC9cXC4vZyxcbiAgICBcIl9cIixcbiAgKX1fXyR7ZGF5anMoKS5mb3JtYXQoKX0udHh0YFxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzdGFuZGFyZF93aWR0aF9wYWRkZWRcIj5cbiAgICAgIDxTaGFyZWRQYWdlSGVhZGVyIHdpdGhvdXRCYWNrVGV4dCBiYWNrUGF0aD1cIi9zZXR0aW5nc1wiPlxuICAgICAgICB7dChcInNldHRpbmdzLmV4cG9ydExvZ3MudGl0bGVcIil9XG4gICAgICA8L1NoYXJlZFBhZ2VIZWFkZXI+XG4gICAgICA8c2VjdGlvbj5cbiAgICAgICAgPGgyPnt0KFwic2V0dGluZ3MuZXhwb3J0TG9ncy50ZWxlZ3JhbVRpdGxlXCIpfTwvaDI+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInNpbXBsZV90ZXh0XCI+e3QoXCJzZXR0aW5ncy5leHBvcnRMb2dzLnRlbGVncmFtRGVzY1wiKX08L3A+XG4gICAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBpY29uU21hbGw9XCJ0ZWxlZ3JhbVwiXG4gICAgICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oXCJodHRwczovL3QubWUvcXVhbnR1bWV2bS8xMDI1M1wiLCBcIl9ibGFua1wiKT8uZm9jdXMoKVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInNldHRpbmdzLmV4cG9ydExvZ3MudGVsZWdyYW1CdG5cIil9XG4gICAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24+XG4gICAgICAgIDxoMj57dChcInNldHRpbmdzLmV4cG9ydExvZ3MubG9nVGl0bGVcIil9PC9oMj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwic2ltcGxlX3RleHRcIj57dChcInNldHRpbmdzLmV4cG9ydExvZ3MubG9nRGVzY1wiKX08L3A+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj17YGRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2NoYXJzZXQ9dXRmLTE2bGU7YmFzZTY0LCR7YmFzZTY0TG9nRGF0YX1gfVxuICAgICAgICAgIGRvd25sb2FkPXtsb2dGaWxlTmFtZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICBpY29uU21hbGw9XCJkb3dubG9hZFwiXG4gICAgICAgICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgIGlzTG9hZGluZz17YmFzZTY0TG9nRGF0YSA9PT0gdW5kZWZpbmVkfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic2V0dGluZ3MuZXhwb3J0TG9ncy5sb2dCdG5cIil9XG4gICAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgaDIge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIHNlY3Rpb24ge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDM1cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsExportLogs.tsx */"));
    }
    function ConnectedWebsitesListItem(props) {
      const {t} = useTranslation("translation", {
        keyPrefix: "settings"
      });
      const {permission} = props;
      const {origin, title, faviconUrl} = permission;
      const icon = faviconUrl === "" ? "./images/dapp_favicon_default@2x.png" : faviconUrl;
      const {host} = new URL(origin);
      const dispatch = useBackgroundDispatch();
      const handleDisconnect = (0, react.useCallback)((async () => {
        await dispatch(denyOrRevokePermission({
          ...permission,
          state: "deny"
        }));
        dispatch(setSnackbarMessage(t("connectedWebsitesSettings.disconnected")));
      }), [ dispatch, permission, t ]);
      return react.createElement("div", {
        className: "jsx-1245495010" + " " + "container"
      }, react.createElement("div", {
        className: "jsx-1245495010" + " " + "connected-website-item"
      }, react.createElement("img", {
        src: icon,
        width: 32,
        alt: title,
        className: "jsx-1245495010" + " " + "logo"
      }), react.createElement("div", {
        className: "jsx-1245495010" + " " + "connected-website-details"
      }, react.createElement("span", {
        title,
        className: "jsx-1245495010" + " " + "title ellipsis"
      }, title), react.createElement("span", {
        title: host,
        className: "jsx-1245495010" + " " + "host ellipsis"
      }, host)), react.createElement(SharedIcon, {
        color: "var(--c-text-tertiary)",
        hoverColor: "var(--c-error)",
        width: 24,
        icon: "icons/m/disconnect.svg",
        onClick: handleDisconnect,
        style: {
          flexShrink: 0
        }
      })), react.createElement(style_default(), {
        id: "1245495010"
      }, ".container.jsx-1245495010{padding:16px 0;border-bottom:1px solid var(--c-bg);width:100%;}.connected-website-item.jsx-1245495010{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.logo.jsx-1245495010{margin-right:16px;}.connected-website-details.jsx-1245495010{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-right:auto;line-height:1.5;max-width:250px;}.title.jsx-1245495010{display:block;font-size:16px;font-weight:500;}.host.jsx-1245495010{display:block;color:var(--c-text-tertiary);font-size:14px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/ConnectedWebsitesListItem.tsx */"));
    }
    function ConnectedWebsitesListEmpty() {
      const {t} = useTranslation("translation", {
        keyPrefix: "settings"
      });
      return react.createElement("div", {
        className: "jsx-1689112192" + " " + "container"
      }, react.createElement("img", {
        src: "./images/empty_bowl@2x.png",
        alt: "",
        className: "jsx-1689112192" + " " + "bowl_image"
      }), react.createElement("p", {
        className: "jsx-1689112192"
      }, t("connectedWebsitesSettings.emptyList")), react.createElement(style_default(), {
        id: "1689112192"
      }, ".container.jsx-1689112192{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:16px;height:100%;}.bowl_image.jsx-1689112192{width:90px;margin-bottom:10px;}p.jsx-1689112192{width:250px;text-align:center;line-height:24px;font-weight:500;color:var(--c-text-tertiary);font-size:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvQ29ubmVjdGVkV2Vic2l0ZXNMaXN0RW1wdHkudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdTLEFBRzBCLEFBT0YsQUFJQyxXQUhPLENBSUQsa0JBSHBCLEFBSW1CLGlCQUNELGdCQUNhLFdBZFAsa0JBZVAsZUFDakIsNkNBZnFCLDZGQUNILGdCQUNKLFlBQ2QiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9TZXR0aW5ncy9Db25uZWN0ZWRXZWJzaXRlc0xpc3RFbXB0eS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb25uZWN0ZWRXZWJzaXRlc0xpc3RFbXB0eSgpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwgeyBrZXlQcmVmaXg6IFwic2V0dGluZ3NcIiB9KVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiYm93bF9pbWFnZVwiIHNyYz1cIi4vaW1hZ2VzL2VtcHR5X2Jvd2xAMngucG5nXCIgYWx0PVwiXCIgLz5cbiAgICAgIDxwPnt0KFwiY29ubmVjdGVkV2Vic2l0ZXNTZXR0aW5ncy5lbXB0eUxpc3RcIil9PC9wPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5ib3dsX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiA5MHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICB3aWR0aDogMjUwcHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/ConnectedWebsitesListEmpty.tsx */"));
    }
    function SettingsConnectedWebsites() {
      const {t} = useTranslation("translation", {
        keyPrefix: "settings"
      });
      const allowedPages = useBackgroundSelector(selectAllowedPages);
      const dappsByOrigin = (0, react.useMemo)((() => {
        const seen = new Set;
        return allowedPages.filter((permission => {
          if (seen.has(permission.origin)) return false;
          seen.add(permission.origin);
          return true;
        }));
      }), [ allowedPages ]);
      return react.createElement("div", {
        className: "jsx-179540623" + " " + "standard_width_padded wrapper"
      }, react.createElement(SharedPageHeader, {
        withoutBackText: true,
        backPath: "/settings"
      }, t("connectedWebsitesSettings.title")), react.createElement("section", {
        className: "jsx-179540623"
      }, dappsByOrigin.length === 0 ? react.createElement(ConnectedWebsitesListEmpty, null) : react.createElement("ul", {
        className: "jsx-179540623"
      }, dappsByOrigin.map((permission => react.createElement("li", {
        key: permission.origin,
        className: "jsx-179540623"
      }, react.createElement(ConnectedWebsitesListItem, {
        permission
      })))))), react.createElement(style_default(), {
        id: "179540623"
      }, ".wrapper.jsx-179540623{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:20px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvU2V0dGluZ3NDb25uZWN0ZWRXZWJzaXRlcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNrQixBQUd3QiwwRUFDUyw4RUFDYixTQUNYIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvU2V0dGluZ3MvU2V0dGluZ3NDb25uZWN0ZWRXZWJzaXRlcy50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgc2VsZWN0QWxsb3dlZFBhZ2VzIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvc2VsZWN0b3JzXCJcbmltcG9ydCBTaGFyZWRQYWdlSGVhZGVyIGZyb20gXCIuLi8uLi9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRQYWdlSGVhZGVyXCJcbmltcG9ydCBDb25uZWN0ZWRXZWJzaXRlc0xpc3RJdGVtIGZyb20gXCIuL0Nvbm5lY3RlZFdlYnNpdGVzTGlzdEl0ZW1cIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcbmltcG9ydCBDb25uZWN0ZWRXZWJzaXRlc0xpc3RFbXB0eSBmcm9tIFwiLi9Db25uZWN0ZWRXZWJzaXRlc0xpc3RFbXB0eVwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNldHRpbmdzQ29ubmVjdGVkV2Vic2l0ZXMoKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHsga2V5UHJlZml4OiBcInNldHRpbmdzXCIgfSlcbiAgY29uc3QgYWxsb3dlZFBhZ2VzID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEFsbG93ZWRQYWdlcylcbiAgY29uc3QgZGFwcHNCeU9yaWdpbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KClcblxuICAgIHJldHVybiBhbGxvd2VkUGFnZXMuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgICBpZiAoc2Vlbi5oYXMocGVybWlzc2lvbi5vcmlnaW4pKSByZXR1cm4gZmFsc2VcblxuICAgICAgc2Vlbi5hZGQocGVybWlzc2lvbi5vcmlnaW4pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcbiAgfSwgW2FsbG93ZWRQYWdlc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YW5kYXJkX3dpZHRoX3BhZGRlZCB3cmFwcGVyXCI+XG4gICAgICA8U2hhcmVkUGFnZUhlYWRlciB3aXRob3V0QmFja1RleHQgYmFja1BhdGg9XCIvc2V0dGluZ3NcIj5cbiAgICAgICAge3QoXCJjb25uZWN0ZWRXZWJzaXRlc1NldHRpbmdzLnRpdGxlXCIpfVxuICAgICAgPC9TaGFyZWRQYWdlSGVhZGVyPlxuICAgICAgPHNlY3Rpb24+XG4gICAgICAgIHtkYXBwc0J5T3JpZ2luLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8Q29ubmVjdGVkV2Vic2l0ZXNMaXN0RW1wdHkgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICB7ZGFwcHNCeU9yaWdpbi5tYXAoKHBlcm1pc3Npb24pID0+IChcbiAgICAgICAgICAgICAgPGxpIGtleT17cGVybWlzc2lvbi5vcmlnaW59PlxuICAgICAgICAgICAgICAgIDxDb25uZWN0ZWRXZWJzaXRlc0xpc3RJdGVtIHBlcm1pc3Npb249e3Blcm1pc3Npb259IC8+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICApfVxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAud3JhcHBlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGdhcDogMjBweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsConnectedWebsites.tsx */"));
    }
    function HiddenDevPanel() {
      const {t} = useTranslation("translation", {
        keyPrefix: "devPanel"
      });
      const history = useHistory();
      return react.createElement("section", {
        className: "jsx-4256114668" + " " + "standard_width_padded"
      }, react.createElement(SharedPageHeader, {
        backPath: "/settings",
        withoutBackText: true
      }, t("title")), react.createElement("div", {
        className: "jsx-4256114668" + " " + "buttons_wrap"
      }, react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        iconSmall: "arrow-right",
        onClick: () => {
          history.push("/dev/feature-flags");
        }
      }, t("featureFlags.title"))), react.createElement(style_default(), {
        id: "4256114668"
      }, "section.jsx-4256114668{height:100%;}h3.jsx-4256114668{border-bottom:1px solid var(--c-bg-alt);padding-bottom:10px;padding-left:8px;}.buttons_wrap.jsx-4256114668{height:80%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-top:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9IaWRkZW5EZXZQYW5lbC9IaWRkZW5EZXZQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkJrQixBQUd1QixBQUc0QixBQUs3QixXQUNFLENBUmYsNEJBR3NCLG9CQUNILGlCQUNuQixRQUl3Qiw4RUFDYixTQUNPLGdCQUNsQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvSGlkZGVuRGV2UGFuZWwvSGlkZGVuRGV2UGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7IHVzZUhpc3RvcnkgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiXG5pbXBvcnQgU2hhcmVkQnV0dG9uIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcbmltcG9ydCBTaGFyZWRQYWdlSGVhZGVyIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkUGFnZUhlYWRlclwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhpZGRlbkRldlBhbmVsKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7IGtleVByZWZpeDogXCJkZXZQYW5lbFwiIH0pXG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KClcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInN0YW5kYXJkX3dpZHRoX3BhZGRlZFwiPlxuICAgICAgPFNoYXJlZFBhZ2VIZWFkZXIgYmFja1BhdGg9XCIvc2V0dGluZ3NcIiB3aXRob3V0QmFja1RleHQ+XG4gICAgICAgIHt0KFwidGl0bGVcIil9XG4gICAgICA8L1NoYXJlZFBhZ2VIZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbnNfd3JhcFwiPlxuICAgICAgICA8U2hhcmVkQnV0dG9uXG4gICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgaWNvblNtYWxsPVwiYXJyb3ctcmlnaHRcIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGhpc3RvcnkucHVzaChcIi9kZXYvZmVhdHVyZS1mbGFnc1wiKVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImZlYXR1cmVGbGFncy50aXRsZVwiKX1cbiAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIGgzIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgICB9XG4gICAgICAgIC5idXR0b25zX3dyYXAge1xuICAgICAgICAgIGhlaWdodDogODAlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvc2VjdGlvbj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/HiddenDevPanel/HiddenDevPanel.tsx */"));
    }
    function BalanceReloader() {
      const dispatch = useDispatch();
      const [isSpinning, setIsSpinning] = (0, react.useState)(false);
      const [timeWhenLastReloaded, setTimeWhenLastReloaded] = useLocalStorage("timeWhenLastReloaded", "0");
      const loadingTimeMs = 15e3;
      const timeGapBetweenRunningReloadMs = 6e4 * 2;
      return react.createElement("button", {
        type: "button",
        disabled: isSpinning,
        onClick: () => {
          const currentTime = (new Date).getTime();
          setIsSpinning(true);
          if (Number(timeWhenLastReloaded) + timeGapBetweenRunningReloadMs < currentTime) {
            setTimeWhenLastReloaded(`${currentTime}`);
            dispatch(refreshBackgroundPage());
          }
          setTimeout((() => {
            setIsSpinning(false);
            window.location.reload();
          }), loadingTimeMs);
        },
        className: "jsx-4284811241" + " " + (classnames_default()("reload", {
          spinning: isSpinning
        }) || "")
      }, react.createElement(style_default(), {
        id: "4284811241"
      }, '.reload.jsx-4284811241{-webkit-mask-image:url("./images/reload@2x.png");mask-image:url("./images/reload@2x.png");-webkit-mask-size:cover;mask-size:cover;background-color:var(--c-text-inverse);width:17px;height:17px;margin-left:10px;}.reload.jsx-4284811241:hover{background-color:var(--c-accent);}.reload.jsx-4284811241:disabled{pointer-events:none;}.spinning.jsx-4284811241{-webkit-animation:spin-jsx-4284811241 1s cubic-bezier(0.65,0,0.35,1) infinite;animation:spin-jsx-4284811241 1s cubic-bezier(0.65,0,0.35,1) infinite;}.spinning.jsx-4284811241:hover{background-color:var(--c-text-inverse);}@-webkit-keyframes spin-jsx-4284811241{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes spin-jsx-4284811241{to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9CYWxhbmNlUmVsb2FkZXIvQmFsYW5jZVJlbG9hZGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0Q2tCLEFBR29ELEFBUVIsQUFHYixBQUdzQyxBQUduQixBQUlaLG9CQVQ3QixhQUhBLE1BU0EsZ0RBSUUsR0FyQmdCLHdDQUN1QixrQkFhekMscUJBWmEsV0FDQyxZQUNLLGlCQUNuQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvQmFsYW5jZVJlbG9hZGVyL0JhbGFuY2VSZWxvYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiXG5pbXBvcnQgeyByZWZyZXNoQmFja2dyb3VuZFBhZ2UgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy91aVwiXG5pbXBvcnQgeyB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYWxhbmNlUmVsb2FkZXIoKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpXG5cbiAgY29uc3QgW2lzU3Bpbm5pbmcsIHNldElzU3Bpbm5pbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gMCA9IG5ldmVyXG4gIGNvbnN0IFt0aW1lV2hlbkxhc3RSZWxvYWRlZCwgc2V0VGltZVdoZW5MYXN0UmVsb2FkZWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgIFwidGltZVdoZW5MYXN0UmVsb2FkZWRcIixcbiAgICBcIjBcIixcbiAgKVxuXG4gIGNvbnN0IGxvYWRpbmdUaW1lTXMgPSAxNTAwMFxuICBjb25zdCB0aW1lR2FwQmV0d2VlblJ1bm5pbmdSZWxvYWRNcyA9IDYwMDAwICogMlxuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBkaXNhYmxlZD17aXNTcGlubmluZ31cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcInJlbG9hZFwiLCB7IHNwaW5uaW5nOiBpc1NwaW5uaW5nIH0pfVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICAgIHNldElzU3Bpbm5pbmcodHJ1ZSlcblxuICAgICAgICAvLyBBcHBlYXIgdG8gc3BpbiByZWdhcmRsZXNzIGlmIHRvbyByZWNlbnQuIE9ubHkgcmVmcmVzaFxuICAgICAgICAvLyBiYWNrZ3JvdW5kIHBhZ2UgaWYgdGltZUdhcEJldHdlZW5SdW5uaW5nUmVsb2FkTXMgaXMgbWV0LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgTnVtYmVyKHRpbWVXaGVuTGFzdFJlbG9hZGVkKSArIHRpbWVHYXBCZXR3ZWVuUnVubmluZ1JlbG9hZE1zIDxcbiAgICAgICAgICBjdXJyZW50VGltZVxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRUaW1lV2hlbkxhc3RSZWxvYWRlZChgJHtjdXJyZW50VGltZX1gKVxuICAgICAgICAgIGRpc3BhdGNoKHJlZnJlc2hCYWNrZ3JvdW5kUGFnZSgpKVxuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldElzU3Bpbm5pbmcoZmFsc2UpXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gICAgICAgIH0sIGxvYWRpbmdUaW1lTXMpXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnJlbG9hZCB7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiLi9pbWFnZXMvcmVsb2FkQDJ4LnBuZ1wiKTtcbiAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgICB3aWR0aDogMTdweDtcbiAgICAgICAgICBoZWlnaHQ6IDE3cHg7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnJlbG9hZDpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy1hY2NlbnQpO1xuICAgICAgICB9XG4gICAgICAgIC5yZWxvYWQ6ZGlzYWJsZWQge1xuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5zcGlubmluZyB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDFzIGN1YmljLWJlemllcigwLjY1LCAwLCAwLjM1LCAxKSBpbmZpbml0ZTtcbiAgICAgICAgfVxuICAgICAgICAuc3Bpbm5pbmc6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIHNwaW4ge1xuICAgICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9idXR0b24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/BalanceReloader/BalanceReloader.tsx */'));
    }
    function FeatureFlag(props) {
      const {name} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "devPanel.featureFlags.flags"
      });
      const [value, setValue] = (0, react.useState)(isEnabled(FeatureFlags[name]));
      (0, react.useEffect)((() => {
        setLocalStorageItem(name, String(value));
      }), [ name, value ]);
      return react.createElement("li", {
        className: "jsx-1587465768" + " " + "toggle_wrap"
      }, react.createElement("span", {
        title: t(`${name}`),
        className: "jsx-1587465768" + " " + "simple_text"
      }, name), react.createElement(SharedToggleButton, {
        onChange: toggleValue => setValue(toggleValue),
        value
      }), react.createElement(style_default(), {
        id: "1587465768"
      }, ".toggle_wrap.jsx-1587465768{height:50px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9IaWRkZW5EZXZQYW5lbC9GZWF0dXJlRmxhZ3NQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUNrQixBQUd1QixZQUNDLDBFQUNNLDZGQUNXLG1IQUNoQyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvSGlkZGVuRGV2UGFuZWwvRmVhdHVyZUZsYWdzUGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZUZsYWdzLFxuICBpc0VuYWJsZWQsXG4gIFJ1bnRpbWVGbGFnLFxuICBSdW50aW1lRmxhZ1R5cGUsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvZmVhdHVyZXNcIlxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7IHNldExvY2FsU3RvcmFnZUl0ZW0gfSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuaW1wb3J0IEJhbGFuY2VSZWxvYWRlciBmcm9tIFwiLi4vQmFsYW5jZVJlbG9hZGVyL0JhbGFuY2VSZWxvYWRlclwiXG5pbXBvcnQgU2hhcmVkUGFnZUhlYWRlciBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZFBhZ2VIZWFkZXJcIlxuaW1wb3J0IFNoYXJlZFRvZ2dsZUJ1dHRvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZFRvZ2dsZUJ1dHRvblwiXG5cbmZ1bmN0aW9uIEZlYXR1cmVGbGFnKHByb3BzOiB7IG5hbWU6IFJ1bnRpbWVGbGFnVHlwZSB9KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyBuYW1lIH0gPSBwcm9wc1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJkZXZQYW5lbC5mZWF0dXJlRmxhZ3MuZmxhZ3NcIixcbiAgfSlcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpc0VuYWJsZWQoRmVhdHVyZUZsYWdzW25hbWVdKSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsU3RvcmFnZUl0ZW0obmFtZSwgU3RyaW5nKHZhbHVlKSlcbiAgfSwgW25hbWUsIHZhbHVlXSlcblxuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9XCJ0b2dnbGVfd3JhcFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPVwic2ltcGxlX3RleHRcIlxuICAgICAgICB0aXRsZT17dChgJHtuYW1lfWAgYXMgdW5rbm93biBhcyBUZW1wbGF0ZVN0cmluZ3NBcnJheSl9XG4gICAgICA+XG4gICAgICAgIHtuYW1lfVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8U2hhcmVkVG9nZ2xlQnV0dG9uXG4gICAgICAgIG9uQ2hhbmdlPXsodG9nZ2xlVmFsdWUpID0+IHNldFZhbHVlKHRvZ2dsZVZhbHVlKX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgLz5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnRvZ2dsZV93cmFwIHtcbiAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvbGk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmVhdHVyZUZsYWdzUGFuZWwoKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHtcbiAgICBrZXlQcmVmaXg6IFwiZGV2UGFuZWwuZmVhdHVyZUZsYWdzXCIsXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJzdGFuZGFyZF93aWR0aFwiPlxuICAgICAgPFNoYXJlZFBhZ2VIZWFkZXIgYmFja1BhdGg9XCIvZGV2XCIgd2l0aG91dEJhY2tUZXh0PlxuICAgICAgICB7dChcInRpdGxlXCIpfSA8QmFsYW5jZVJlbG9hZGVyIC8+XG4gICAgICA8L1NoYXJlZFBhZ2VIZWFkZXI+XG4gICAgICA8dWwgY2xhc3NOYW1lPVwiZmxhZ3Nfd3JhcFwiPlxuICAgICAgICB7KE9iamVjdC5rZXlzKFJ1bnRpbWVGbGFnKSBhcyBSdW50aW1lRmxhZ1R5cGVbXSkubWFwKChmbGFnTmFtZSkgPT4gKFxuICAgICAgICAgIDxGZWF0dXJlRmxhZyBrZXk9e2ZsYWdOYW1lfSBuYW1lPXtmbGFnTmFtZX0gLz5cbiAgICAgICAgKSl9XG4gICAgICA8L3VsPlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5mbGFnc193cmFwIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvc2VjdGlvbj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/HiddenDevPanel/FeatureFlagsPanel.tsx */"));
    }
    function FeatureFlagsPanel() {
      const {t} = useTranslation("translation", {
        keyPrefix: "devPanel.featureFlags"
      });
      return react.createElement("section", {
        className: "jsx-1493459790" + " " + "standard_width"
      }, react.createElement(SharedPageHeader, {
        backPath: "/dev",
        withoutBackText: true
      }, t("title"), " ", react.createElement(BalanceReloader, null)), react.createElement("ul", {
        className: "jsx-1493459790" + " " + "flags_wrap"
      }, Object.keys(RuntimeFlag).map((flagName => react.createElement(FeatureFlag, {
        key: flagName,
        name: flagName
      })))), react.createElement(style_default(), {
        id: "1493459790"
      }, "section.jsx-1493459790{margin-bottom:35px;}.flags_wrap.jsx-1493459790{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9IaWRkZW5EZXZQYW5lbC9GZWF0dXJlRmxhZ3NQYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0VrQixBQUc4QixBQUdOLG1CQUZmLHVEQUd3Qiw4RUFDTixnQkFDbEIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0hpZGRlbkRldlBhbmVsL0ZlYXR1cmVGbGFnc1BhbmVsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZlYXR1cmVGbGFncyxcbiAgaXNFbmFibGVkLFxuICBSdW50aW1lRmxhZyxcbiAgUnVudGltZUZsYWdUeXBlLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL2ZlYXR1cmVzXCJcbmltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgeyBzZXRMb2NhbFN0b3JhZ2VJdGVtIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcbmltcG9ydCBCYWxhbmNlUmVsb2FkZXIgZnJvbSBcIi4uL0JhbGFuY2VSZWxvYWRlci9CYWxhbmNlUmVsb2FkZXJcIlxuaW1wb3J0IFNoYXJlZFBhZ2VIZWFkZXIgZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRQYWdlSGVhZGVyXCJcbmltcG9ydCBTaGFyZWRUb2dnbGVCdXR0b24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRUb2dnbGVCdXR0b25cIlxuXG5mdW5jdGlvbiBGZWF0dXJlRmxhZyhwcm9wczogeyBuYW1lOiBSdW50aW1lRmxhZ1R5cGUgfSk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgbmFtZSB9ID0gcHJvcHNcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHtcbiAgICBrZXlQcmVmaXg6IFwiZGV2UGFuZWwuZmVhdHVyZUZsYWdzLmZsYWdzXCIsXG4gIH0pXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoaXNFbmFibGVkKEZlYXR1cmVGbGFnc1tuYW1lXSkpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMb2NhbFN0b3JhZ2VJdGVtKG5hbWUsIFN0cmluZyh2YWx1ZSkpXG4gIH0sIFtuYW1lLCB2YWx1ZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPVwidG9nZ2xlX3dyYXBcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT1cInNpbXBsZV90ZXh0XCJcbiAgICAgICAgdGl0bGU9e3QoYCR7bmFtZX1gIGFzIHVua25vd24gYXMgVGVtcGxhdGVTdHJpbmdzQXJyYXkpfVxuICAgICAgPlxuICAgICAgICB7bmFtZX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPFNoYXJlZFRvZ2dsZUJ1dHRvblxuICAgICAgICBvbkNoYW5nZT17KHRvZ2dsZVZhbHVlKSA9PiBzZXRWYWx1ZSh0b2dnbGVWYWx1ZSl9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIC8+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC50b2dnbGVfd3JhcCB7XG4gICAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2xpPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZlYXR1cmVGbGFnc1BhbmVsKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcImRldlBhbmVsLmZlYXR1cmVGbGFnc1wiLFxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3RhbmRhcmRfd2lkdGhcIj5cbiAgICAgIDxTaGFyZWRQYWdlSGVhZGVyIGJhY2tQYXRoPVwiL2RldlwiIHdpdGhvdXRCYWNrVGV4dD5cbiAgICAgICAge3QoXCJ0aXRsZVwiKX0gPEJhbGFuY2VSZWxvYWRlciAvPlxuICAgICAgPC9TaGFyZWRQYWdlSGVhZGVyPlxuICAgICAgPHVsIGNsYXNzTmFtZT1cImZsYWdzX3dyYXBcIj5cbiAgICAgICAgeyhPYmplY3Qua2V5cyhSdW50aW1lRmxhZykgYXMgUnVudGltZUZsYWdUeXBlW10pLm1hcCgoZmxhZ05hbWUpID0+IChcbiAgICAgICAgICA8RmVhdHVyZUZsYWcga2V5PXtmbGFnTmFtZX0gbmFtZT17ZmxhZ05hbWV9IC8+XG4gICAgICAgICkpfVxuICAgICAgPC91bD5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDtcbiAgICAgICAgfVxuICAgICAgICAuZmxhZ3Nfd3JhcCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L3NlY3Rpb24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/HiddenDevPanel/FeatureFlagsPanel.tsx */"));
    }
    function HeaderContainer({children}) {
      return react.createElement("header", {
        className: "jsx-1878199085"
      }, children, react.createElement(style_default(), {
        id: "1878199085"
      }, "header.jsx-1878199085{width:100%;padding:24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--c-bg-alt);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVHNIZWFkZXJCYXNlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjUyxBQUd3QixXQUNFLGFBQ0EsMEVBQ1Msc0JBQ0EsOEVBQ0gsNkZBQ1EsMkJBQzdCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVHNIZWFkZXJCYXNlLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgeyBPTkJPQVJESU5HX1JPT1QgfSBmcm9tIFwiLi4vLi4vcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvUm91dGVzXCJcbmltcG9ydCBTaGFyZWRCdXR0b24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRCdXR0b25cIlxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVyQ29udGFpbmVyKHtcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxoZWFkZXI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIGhlYWRlciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9oZWFkZXI+XG4gIClcbn1cbmV4cG9ydCBmdW5jdGlvbiBFbXB0eUhlYWRlcigpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJuZnRzXCIsXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgPGgxPnt0KFwiaGVhZGVyLmVtcHR5VGl0bGVcIil9PC9oMT5cbiAgICAgIDxwPnt0KFwiaGVhZGVyLmVtcHR5RGVzY1wiKX08L3A+XG4gICAgICA8U2hhcmVkQnV0dG9uXG4gICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICBpY29uU21hbGw9XCJhZGRcIlxuICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy5vcGVuKE9OQk9BUkRJTkdfUk9PVClcbiAgICAgICAgICB3aW5kb3cuY2xvc2UoKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dChcImhlYWRlci5hZGRBY2NvdW50Q1RBXCIpfVxuICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIkdlaXN0XCI7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDQycHg7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTsHeaderBase.tsx */"));
    }
    function EmptyHeader() {
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      return react.createElement("div", {
        className: "jsx-899391094" + " " + "container"
      }, react.createElement("h1", {
        className: "jsx-899391094"
      }, t("header.emptyTitle")), react.createElement("p", {
        className: "jsx-899391094"
      }, t("header.emptyDesc")), react.createElement(SharedButton, {
        iconPosition: "left",
        iconSmall: "add",
        type: "secondary",
        size: "large",
        onClick: () => {
          window.open(ONBOARDING_ROOT);
          window.close();
        }
      }, t("header.addAccountCTA")), react.createElement(style_default(), {
        id: "899391094"
      }, '.container.jsx-899391094{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}h1.jsx-899391094{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;color:var(--c-text);margin:0;margin-bottom:16px;}p.jsx-899391094{font-weight:500;font-size:16px;line-height:24px;color:var(--c-text-tertiary);text-align:center;margin:0;margin-bottom:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVHNIZWFkZXJCYXNlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGtCLEFBR3dCLEFBTU8sQUFVSixnQkFDRCxJQVZDLFdBV0MsS0FWRixZQVdjLEdBVlosaUJBQ0csTUFURSxHQW1CSixXQVRULE9BVUEsRUFUVSxPQVVBLFlBVHJCLE9BVUEsNkJBckJxQiw2RkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL05GVHMvTkZUc0hlYWRlckJhc2UudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7IE9OQk9BUkRJTkdfUk9PVCB9IGZyb20gXCIuLi8uLi9wYWdlcy9PbmJvYXJkaW5nL1RhYmJlZC9Sb3V0ZXNcIlxuaW1wb3J0IFNoYXJlZEJ1dHRvbiBmcm9tIFwiLi4vU2hhcmVkL1NoYXJlZEJ1dHRvblwiXG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJDb250YWluZXIoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGhlYWRlcj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgaGVhZGVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMjRweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLWFsdCk7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2hlYWRlcj5cbiAgKVxufVxuZXhwb3J0IGZ1bmN0aW9uIEVtcHR5SGVhZGVyKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcIm5mdHNcIixcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICA8aDE+e3QoXCJoZWFkZXIuZW1wdHlUaXRsZVwiKX08L2gxPlxuICAgICAgPHA+e3QoXCJoZWFkZXIuZW1wdHlEZXNjXCIpfTwvcD5cbiAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgIGljb25TbWFsbD1cImFkZFwiXG4gICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgd2luZG93Lm9wZW4oT05CT0FSRElOR19ST09UKVxuICAgICAgICAgIHdpbmRvdy5jbG9zZSgpXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHt0KFwiaGVhZGVyLmFkZEFjY291bnRDVEFcIil9XG4gICAgICA8L1NoYXJlZEJ1dHRvbj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiR2Vpc3RcIjtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0KTtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtdGVydGlhcnkpO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTsHeaderBase.tsx */'));
    }
    function SharedRadio({id, name, label, value, onChange}) {
      const [checked, setChecked] = (0, react.useState)(value || false);
      (0, react.useEffect)((() => {
        setChecked(!!value);
      }), [ value ]);
      return react.createElement("div", {
        className: "jsx-1635632768" + " " + "radio"
      }, react.createElement("input", {
        id,
        type: "radio",
        name: name || "radio",
        checked,
        onChange: () => onChange(!checked),
        className: "jsx-1635632768"
      }), react.createElement("label", {
        htmlFor: id,
        className: "jsx-1635632768" + " " + "radio-label"
      }, label), react.createElement(style_default(), {
        id: "1635632768"
      }, '.radio.jsx-1635632768{padding:8px 0;}.radio-label.jsx-1635632768{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;font-size:14px;line-height:16px;line-height:normal;color:var(--c-text);margin-top:0;cursor:pointer;}.radio-label.jsx-1635632768:before{content:"";border-radius:100%;display:inline-block;width:16px;height:16px;position:relative;margin-right:8px;vertical-align:top;cursor:pointer;text-align:center;-webkit-transition:all 250ms ease;transition:all 250ms ease;background-color:var(--c-bg-inset);box-shadow:inset 0 0 0 2px var(--c-border);}input[type="radio"].jsx-1635632768{position:absolute;opacity:0;}input.jsx-1635632768:checked~.radio-label.jsx-1635632768:before{background-color:var(--c-bg);box-shadow:inset 0 0 0 5px var(--c-accent);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkUmFkaW8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Da0IsQUFHeUIsQUFHRCxBQVlGLEFBZU8sQUFJVyxXQWxCVixHQWZyQixJQThCWSxVQUNaLENBRzZDLENBbEJ0QixxQkFDVixXQUNDLFVBaUJkLEVBaENxQixBQWdCRCxrQkFDRCxpQkFDRSxtQkFDSixlQWxCSSxBQW1CRCxrQkFDUSw0REFDUyxlQXBCbkIsZ0JBQ0QsSUFvQjRCLFdBbkIxQixpQkFDRSxlQW1CckIsSUFsQnNCLG9CQUNQLGFBQ0UsZUFDakIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRSYWRpby50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcblxudHlwZSBQcm9wcyA9IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFsdWU/OiBib29sZWFuXG4gIG9uQ2hhbmdlOiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRSYWRpbyh7XG4gIGlkLFxuICBuYW1lLFxuICBsYWJlbCxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxufTogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBbY2hlY2tlZCwgc2V0Q2hlY2tlZF0gPSB1c2VTdGF0ZSh2YWx1ZSB8fCBmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENoZWNrZWQoISF2YWx1ZSlcbiAgfSwgW3ZhbHVlXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmFkaW9cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpZD17aWR9XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIG5hbWU9e25hbWUgfHwgXCJyYWRpb1wifVxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBvbkNoYW5nZT17KCkgPT4gb25DaGFuZ2UoIWNoZWNrZWQpfVxuICAgICAgLz5cbiAgICAgIDxsYWJlbCBodG1sRm9yPXtpZH0gY2xhc3NOYW1lPVwicmFkaW8tbGFiZWxcIj5cbiAgICAgICAge2xhYmVsfVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnJhZGlvIHtcbiAgICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgICAgfVxuICAgICAgICAucmFkaW8tbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLnJhZGlvLWxhYmVsOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jLWJnLWluc2V0KTtcbiAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggdmFyKC0tYy1ib3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQ6Y2hlY2tlZCB+IC5yYWRpby1sYWJlbDpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmcpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDVweCB2YXIoLS1jLWFjY2VudCk7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedRadio.tsx */'));
    }
    const STARS_GREY_URL = "./images/stars_grey.svg";
    function SharedToggleItem({label, thumbnailURL, checked, onChange}) {
      return react.createElement("div", {
        "data-testid": "toggle_item",
        className: style_default().dynamic([ [ "75227572", [ thumbnailURL || STARS_GREY_URL ] ] ]) + " " + "content"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "75227572", [ thumbnailURL || STARS_GREY_URL ] ] ]) + " " + "text_wrap"
      }, react.createElement("div", {
        role: "img",
        className: style_default().dynamic([ [ "75227572", [ thumbnailURL || STARS_GREY_URL ] ] ]) + " " + "thumbnail"
      }), react.createElement("label", {
        className: style_default().dynamic([ [ "75227572", [ thumbnailURL || STARS_GREY_URL ] ] ]) + " " + "label ellipsis"
      }, isProbablyQEVMAddress(label) ? truncateAddress(label) : label)), react.createElement(SharedToggleButton, {
        onChange,
        value: checked
      }), react.createElement(style_default(), {
        id: "75227572",
        dynamic: [ thumbnailURL || STARS_GREY_URL ]
      }, `.content.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:4px 8px 4px 4px;background:var(--c-bg-alt);border-radius:6px;}.text_wrap.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;width:85%;}.thumbnail.__jsx-style-dynamic-selector{background:url("${thumbnailURL || STARS_GREY_URL}") center no-repeat;background-size:cover;width:32px;height:32px;border-radius:4px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.label.__jsx-style-dynamic-selector{margin-top:0;font-weight:500;font-size:14px;line-height:16px;color:var(--c-text);display:block;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkVG9nZ2xlSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JrQixBQUd3QixBQVFBLEFBTW1ELEFBUW5ELGFBQ0csZ0JBQ0QsZUFDRSxpQkFDRyxHQVhFLFVBZEgsQUFRQSxPQWtCTCxLQVhILFNBWWIsRUFYYyxZQUNNLGtCQUNKLHdDQWpCZ0IsQUFRdEIsUUFDRSxRQVNaLEVBUkEsaUdBVDBCLHdCQUNHLDJCQUNULGtCQUNwQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZFRvZ2dsZUl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNQcm9iYWJseVFFVk1BZGRyZXNzLFxuICB0cnVuY2F0ZUFkZHJlc3MsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvbGliL3V0aWxzXCJcbmltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZFRvZ2dsZUJ1dHRvbiBmcm9tIFwiLi9TaGFyZWRUb2dnbGVCdXR0b25cIlxuXG5leHBvcnQgY29uc3QgU1RBUlNfR1JFWV9VUkwgPSBcIi4vaW1hZ2VzL3N0YXJzX2dyZXkuc3ZnXCJcblxudHlwZSBTaGFyZWRUb2dnbGVJdGVtUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdGh1bWJuYWlsVVJMPzogc3RyaW5nXG4gIGNoZWNrZWQ6IGJvb2xlYW5cbiAgb25DaGFuZ2U6ICh0b2dnbGVWYWx1ZTogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRUb2dnbGVJdGVtKHtcbiAgbGFiZWwsXG4gIHRodW1ibmFpbFVSTCxcbiAgY2hlY2tlZCxcbiAgb25DaGFuZ2UsXG59OiBTaGFyZWRUb2dnbGVJdGVtUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiIGRhdGEtdGVzdGlkPVwidG9nZ2xlX2l0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dF93cmFwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGh1bWJuYWlsXCIgcm9sZT1cImltZ1wiIC8+XG4gICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbCBlbGxpcHNpc1wiPlxuICAgICAgICAgIHtpc1Byb2JhYmx5UUVWTUFkZHJlc3MobGFiZWwpID8gdHJ1bmNhdGVBZGRyZXNzKGxhYmVsKSA6IGxhYmVsfVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8U2hhcmVkVG9nZ2xlQnV0dG9uIG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e2NoZWNrZWR9IC8+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIHBhZGRpbmc6IDRweCA4cHggNHB4IDRweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLWFsdCk7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICB9XG4gICAgICAgIC50ZXh0X3dyYXAge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICB3aWR0aDogODUlO1xuICAgICAgICB9XG4gICAgICAgIC50aHVtYm5haWwge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIiR7dGh1bWJuYWlsVVJMIHx8IFNUQVJTX0dSRVlfVVJMfVwiKSBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedToggleItem.tsx */`));
    }
    const HEIGHT = 40;
    const FilterList = react.forwardRef(((props, ref) => {
      const {filters, isLoaded = true, onChange, emptyMessage, testid = "nft_filters_list"} = props;
      return react.createElement("div", {
        ref,
        "data-testid": testid,
        className: "jsx-2970994749" + " " + "filter_list"
      }, filters.length > 0 ? react.createElement(react.Fragment, null, filters.map((item => react.createElement(SharedSkeletonLoader, {
        key: item.id,
        isLoaded,
        height: HEIGHT
      }, react.createElement(SharedToggleItem, {
        label: item.name,
        thumbnailURL: item?.thumbnailURL,
        checked: item.isEnabled,
        onChange: toggleValue => onChange({
          ...item,
          isEnabled: toggleValue
        })
      }))))) : emptyMessage && react.createElement(SharedSkeletonLoader, {
        isLoaded: isLoaded || filters.length === 0,
        height: HEIGHT
      }, react.createElement("span", {
        className: "jsx-2970994749" + " " + "message"
      }, emptyMessage)), react.createElement(style_default(), {
        id: "2970994749"
      }, `.filter_list.jsx-2970994749{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.message.jsx-2970994749{height:${HEIGHT}px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL0ZpbHRlcnMvRmlsdGVyTGlzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0RvQixBQUcwQixBQUt5QixzQ0FDekIsb0NBTFMsc0NBTUgsd0NBTFgsUUFDViw2Q0FLQSIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvTkZUcy9GaWx0ZXJzL0ZpbHRlckxpc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9yZWR1eC1zbGljZXMvbmZ0c1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTaGFyZWRTa2VsZXRvbkxvYWRlciBmcm9tIFwiLi4vLi4vU2hhcmVkL1NoYXJlZFNrZWxldG9uTG9hZGVyXCJcbmltcG9ydCBTaGFyZWRUb2dnbGVJdGVtIGZyb20gXCIuLi8uLi9TaGFyZWQvU2hhcmVkVG9nZ2xlSXRlbVwiXG5cbmNvbnN0IEhFSUdIVCA9IDQwXG5cbnR5cGUgRmlsdGVyTGlzdFByb3BzID0ge1xuICBmaWx0ZXJzOiBGaWx0ZXJbXVxuICBvbkNoYW5nZTogKGZpbHRlcjogRmlsdGVyKSA9PiB2b2lkXG4gIGlzTG9hZGVkPzogYm9vbGVhblxuICBlbXB0eU1lc3NhZ2U/OiBzdHJpbmdcbiAgdGVzdGlkPzogc3RyaW5nXG59XG5cbmNvbnN0IEZpbHRlckxpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBGaWx0ZXJMaXN0UHJvcHM+KFxuICAocHJvcHM6IEZpbHRlckxpc3RQcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZmlsdGVycyxcbiAgICAgIGlzTG9hZGVkID0gdHJ1ZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgZW1wdHlNZXNzYWdlLFxuICAgICAgdGVzdGlkID0gXCJuZnRfZmlsdGVyc19saXN0XCIsXG4gICAgfSA9IHByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPVwiZmlsdGVyX2xpc3RcIiBkYXRhLXRlc3RpZD17dGVzdGlkfT5cbiAgICAgICAge2ZpbHRlcnMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge2ZpbHRlcnMubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICAgIDxTaGFyZWRTa2VsZXRvbkxvYWRlclxuICAgICAgICAgICAgICAgIGtleT17aXRlbS5pZH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlZD17aXNMb2FkZWR9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtIRUlHSFR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2hhcmVkVG9nZ2xlSXRlbVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgIHRodW1ibmFpbFVSTD17aXRlbT8udGh1bWJuYWlsVVJMfVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXRlbS5pc0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHRvZ2dsZVZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZSh7IC4uLml0ZW0sIGlzRW5hYmxlZDogdG9nZ2xlVmFsdWUgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NoYXJlZFNrZWxldG9uTG9hZGVyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZW1wdHlNZXNzYWdlICYmIChcbiAgICAgICAgICAgIDxTaGFyZWRTa2VsZXRvbkxvYWRlclxuICAgICAgICAgICAgICBpc0xvYWRlZD17aXNMb2FkZWQgfHwgZmlsdGVycy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgIGhlaWdodD17SEVJR0hUfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtZXNzYWdlXCI+e2VtcHR5TWVzc2FnZX08L3NwYW4+XG4gICAgICAgICAgICA8L1NoYXJlZFNrZWxldG9uTG9hZGVyPlxuICAgICAgICAgIClcbiAgICAgICAgKX1cbiAgICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAgIC5maWx0ZXJfbGlzdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgICBoZWlnaHQ6ICR7SEVJR0hUfXB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICBgfTwvc3R5bGU+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH0sXG4pXG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlckxpc3RcbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/Filters/FilterList.tsx */`));
    }));
    const Filters_FilterList = FilterList;
    const RADIO_NAME = "sortType";
    const KEY_PREFIX = "nfts.filters";
    const DEFAULT_MAX_HIGHT = 46;
    const LOADING_DELAY = 1e3;
    const RADIO_BTNS = [ {
      value: "desc",
      label: i18next.t(`${KEY_PREFIX}.sortType.priceDesc`)
    }, {
      value: "asc",
      label: i18next.t(`${KEY_PREFIX}.sortType.priceAsc`)
    }, {
      value: "new",
      label: i18next.t(`${KEY_PREFIX}.sortType.newestAdded`)
    }, {
      value: "old",
      label: i18next.t(`${KEY_PREFIX}.sortType.oldestAdded`)
    }, {
      value: "number",
      label: i18next.t(`${KEY_PREFIX}.sortType.numberInOneCollection`)
    } ];
    function NFTsFilters() {
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts.filters"
      });
      const collectionsRef = (0, react.useRef)(null);
      const timerRef = (0, react.useRef)(null);
      const [maxHeight, setMaxHeight] = (0, react.useState)(DEFAULT_MAX_HIGHT);
      const [isLoading, setIsLoading] = (0, react.useState)(false);
      const filters = useBackgroundSelector(selectEnrichedNFTFilters);
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        if (collectionsRef.current) {
          setMaxHeight(collectionsRef.current.offsetHeight);
        }
      }), [ collectionsRef?.current?.offsetHeight ]);
      (0, react.useEffect)((() => () => {
        if (timerRef.current) {
          clearTimeout(timerRef.current);
        }
      }), []);
      const handleUpdateSortType = (0, react.useCallback)((type => {
        dispatch(updateSortType(type));
      }), [ dispatch ]);
      const handleUpdateCollectionFilter = (0, react.useCallback)((filter => {
        dispatch(updateCollectionFilter(filter));
      }), [ dispatch ]);
      const handleUpdateAccountFilter = (0, react.useCallback)((filter => {
        setIsLoading(true);
        dispatch(updateAccountFilter(filter)).then((() => {
          timerRef.current = window.setTimeout((() => setIsLoading(false)), LOADING_DELAY);
        }));
      }), [ dispatch ]);
      return react.createElement(SharedSlideUpMenuPanel, {
        header: t("title")
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "filters"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "simple_text filter_warning"
      }, t("warning")), react.createElement("div", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ])
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "simple_text filter_title"
      }, t("sortTypeTitle")), RADIO_BTNS.map((({value, label}) => react.createElement(SharedRadio, {
        key: value,
        id: `radio_${value}`,
        name: RADIO_NAME,
        value: filters.type === value,
        label,
        onChange: () => handleUpdateSortType(value)
      })))), react.createElement("div", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "simple_text"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "filter_title"
      }, t("accountsTitle")), react.createElement(Filters_FilterList, {
        filters: filters.accounts,
        onChange: handleUpdateAccountFilter,
        testid: "nft_account_filters"
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "simple_text"
      }, react.createElement("span", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + "filter_title"
      }, t("collectionsTitle")), react.createElement("div", {
        className: style_default().dynamic([ [ "1962077484", [ DEFAULT_MAX_HIGHT, maxHeight ] ] ]) + " " + (classnames_default()("collections", {
          visible: !isLoading
        }) || "")
      }, react.createElement(Filters_FilterList, {
        ref: collectionsRef,
        isLoaded: !isLoading,
        filters: filters.collections,
        onChange: handleUpdateCollectionFilter,
        emptyMessage: t("noCollections"),
        testid: "nft_collection_filters"
      })))), react.createElement(style_default(), {
        id: "1962077484",
        dynamic: [ DEFAULT_MAX_HIGHT, maxHeight ]
      }, `.filters.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;height:471px;overflow-y:scroll;padding:0 24px 8px;}.filter_title.__jsx-style-dynamic-selector{display:inline-block;margin-bottom:4px;width:100%;}.filter_warning.__jsx-style-dynamic-selector{color:var(--c-text-secondary);}.spinner.__jsx-style-dynamic-selector{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:16px 0;}.collections.__jsx-style-dynamic-selector{max-height:${DEFAULT_MAX_HIGHT}px;overflow:hidden;-webkit-transition:max-height 500ms ease-out;transition:max-height 500ms ease-out;}.collections.visible.__jsx-style-dynamic-selector{max-height:${maxHeight}px;-webkit-transition:max-height 500ms ease-in;transition:max-height 500ms ease-in;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/Filters/NFTsFilters.tsx */`));
    }
    function SharedFilterTooltip({keyPrefix, isOpen, setIsOpen}) {
      const {t} = useTranslation("translation", {
        keyPrefix
      });
      const handleToggleClick = (0, react.useCallback)((() => {
        setIsOpen((currentlyOpen => !currentlyOpen));
      }), [ setIsOpen ]);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-4174581096" + " " + "filters_container"
      }, react.createElement(SharedTooltip, {
        width: 36,
        height: 32,
        verticalPosition: "bottom",
        horizontalPosition: "center",
        horizontalShift: 8,
        type: "dark",
        isOpen,
        IconComponent: () => react.createElement(SharedIcon, {
          width: 24,
          icon: "toggle.svg",
          ariaLabel: t("filters.title"),
          color: "var(--c-text-tertiary)",
          hoverColor: "var(--c-text-secondary)",
          onClick: handleToggleClick
        })
      }, t("filters.tooltip"))), react.createElement(style_default(), {
        id: "4174581096"
      }, ".filters_container.jsx-4174581096{position:absolute;width:90vw;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:end;-ms-flex-pack:end;justify-content:end;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkRmlsdGVyVG9vbHRpcC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaURrQixBQUc2QixrQkFDUCxXQUNFLDBFQUNPLHVGQUN0QiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZEZpbHRlclRvb2x0aXAudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgS2V5UHJlZml4LCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCBTaGFyZWRUb29sdGlwIGZyb20gXCIuL1NoYXJlZFRvb2x0aXBcIlxuaW1wb3J0IFNoYXJlZEljb24gZnJvbSBcIi4vU2hhcmVkSWNvblwiXG5cbnR5cGUgU2hhcmVkRmlsdGVyVG9vbHRpcFByb3BzID0ge1xuICBrZXlQcmVmaXg6IEtleVByZWZpeDxcInRyYW5zbGF0aW9uXCI+XG4gIGlzT3BlbjogYm9vbGVhblxuICBzZXRJc09wZW46IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPGJvb2xlYW4+PlxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRGaWx0ZXJUb29sdGlwKHtcbiAga2V5UHJlZml4LFxuICBpc09wZW4sXG4gIHNldElzT3Blbixcbn06IFNoYXJlZEZpbHRlclRvb2x0aXBQcm9wcykge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeCxcbiAgfSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4oKGN1cnJlbnRseU9wZW4pID0+ICFjdXJyZW50bHlPcGVuKVxuICB9LCBbc2V0SXNPcGVuXSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcnNfY29udGFpbmVyXCI+XG4gICAgICAgIDxTaGFyZWRUb29sdGlwXG4gICAgICAgICAgd2lkdGg9ezM2fVxuICAgICAgICAgIGhlaWdodD17MzJ9XG4gICAgICAgICAgdmVydGljYWxQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uPVwiY2VudGVyXCJcbiAgICAgICAgICBob3Jpem9udGFsU2hpZnQ9ezh9XG4gICAgICAgICAgdHlwZT1cImRhcmtcIlxuICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgIEljb25Db21wb25lbnQ9eygpID0+IChcbiAgICAgICAgICAgIDxTaGFyZWRJY29uXG4gICAgICAgICAgICAgIHdpZHRoPXsyNH1cbiAgICAgICAgICAgICAgaWNvbj1cInRvZ2dsZS5zdmdcIlxuICAgICAgICAgICAgICBhcmlhTGFiZWw9e3QoXCJmaWx0ZXJzLnRpdGxlXCIpfVxuICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWMtdGV4dC10ZXJ0aWFyeSlcIlxuICAgICAgICAgICAgICBob3ZlckNvbG9yPVwidmFyKC0tYy10ZXh0LXNlY29uZGFyeSlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVDbGlja31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZmlsdGVycy50b29sdGlwXCIpfVxuICAgICAgICA8L1NoYXJlZFRvb2x0aXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmZpbHRlcnNfY29udGFpbmVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDkwdnc7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedFilterTooltip.tsx */"));
    }
    function NFTsHeader() {
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      const [openFiltersMenu, setOpenFiltersMenu] = (0, react.useState)(false);
      const isLoading = useBackgroundSelector(selectIsReloadingNFTs);
      const allNftCount = useBackgroundSelector(selectAllNFTsCount);
      const nftCount = useBackgroundSelector(selectFilteredNFTsCount);
      const collectionCount = useBackgroundSelector(selectFilteredNFTCollectionsCount);
      const badgeCount = useBackgroundSelector(selectFilteredNFTBadgesCount);
      const mainCurrencySign = useBackgroundSelector(selectMainCurrencySign);
      const {totalFloorPriceInETH, totalFloorPriceInUSD} = useTotalNFTsFloorPrice();
      const handleToggleClick = (0, react.useCallback)((() => {
        setOpenFiltersMenu((currentlyOpen => !currentlyOpen));
      }), []);
      if (!allNftCount && !isLoading) {
        return react.createElement(HeaderContainer, null, react.createElement(EmptyHeader, null));
      }
      return react.createElement(react.Fragment, null, react.createElement(SharedSlideUpMenu, {
        testid: "nft_filters_menu",
        isOpen: openFiltersMenu,
        close: handleToggleClick
      }, react.createElement(NFTsFilters, null)), react.createElement(HeaderContainer, null, react.createElement("div", {
        className: "jsx-3021371361" + " " + "stats_container"
      }, react.createElement("div", {
        className: "jsx-3021371361" + " " + "stats_title"
      }, t("header.title")), allNftCount > 0 && react.createElement(SharedFilterTooltip, {
        keyPrefix: "nfts",
        isOpen: openFiltersMenu,
        setIsOpen: setOpenFiltersMenu
      }), react.createElement("div", {
        className: "jsx-3021371361" + " " + "stats_totals"
      }, react.createElement("span", {
        className: "jsx-3021371361" + " " + "currency_sign"
      }, mainCurrencySign), react.createElement("span", {
        "data-testid": "nft_header_currency_total",
        className: "jsx-3021371361" + " " + "currency_total"
      }, totalFloorPriceInUSD ?? "0"), isLoading && react.createElement(SharedLoadingSpinner, {
        size: "small",
        variant: "transparent"
      })), react.createElement("div", {
        className: "jsx-3021371361" + " " + "crypto_total"
      }, totalFloorPriceInETH ?? "-", " ETH")), react.createElement("ul", {
        className: "jsx-3021371361" + " " + "nft_counts"
      }, react.createElement("li", {
        className: "jsx-3021371361"
      }, react.createElement("strong", {
        "data-testid": "nft_header_nft_count",
        className: "jsx-3021371361"
      }, nftCount), t("units.nft", {
        count: nftCount ?? 0
      })), react.createElement("li", {
        role: "presentation",
        className: "jsx-3021371361" + " " + "spacer"
      }), react.createElement("li", {
        className: "jsx-3021371361"
      }, react.createElement("strong", {
        "data-testid": "nft_header_collection_count",
        className: "jsx-3021371361"
      }, collectionCount), t("units.collection", {
        count: collectionCount ?? 0
      })), react.createElement("li", {
        role: "presentation",
        className: "jsx-3021371361" + " " + "spacer"
      }), react.createElement("li", {
        className: "jsx-3021371361"
      }, react.createElement("strong", {
        "data-testid": "nft_header_badge_count",
        className: "jsx-3021371361"
      }, badgeCount), t("units.badge", {
        count: badgeCount ?? 0
      })))), react.createElement(style_default(), {
        id: "3021371361"
      }, ".stats_container.jsx-3021371361{text-align:center;margin-bottom:24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}.stats_title.jsx-3021371361{font-size:14px;font-weight:500;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;color:var(--c-text-secondary);}.stats_spinner.jsx-3021371361{position:absolute;right:-25px;}.stats_totals.jsx-3021371361{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:4px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.currency_total.jsx-3021371361{font-size:36px;font-weight:500;line-height:48px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;color:var(--c-text);}.currency_sign.jsx-3021371361{font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;color:var(--c-text-tertiary);-webkit-align-self:start;-ms-flex-item-align:start;align-self:start;margin-top:7px;}.crypto_total.jsx-3021371361{font-size:14px;font-weight:500;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;color:var(--c-text-secondary);}.nft_counts.jsx-3021371361{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}li.jsx-3021371361{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;color:var(--c-text-tertiary);font-weight:600;font-size:18px;line-height:24px;}li.jsx-3021371361 strong.jsx-3021371361{color:var(--c-text);}li.spacer.jsx-3021371361{border:0.5px solid var(--c-bg-inset);-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTsHeader.tsx */"));
    }
    function NoMatchingNFTs(props) {
      const {type} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      return react.createElement("div", {
        className: "jsx-2872621454" + " " + "content"
      }, react.createElement("h2", {
        className: "jsx-2872621454"
      }, t("noMatchingNFTs", {
        type: type === "nfts" ? t("type1") : t("type2")
      })), react.createElement(NFTsExploreBanner, {
        type
      }), react.createElement(style_default(), {
        id: "2872621454"
      }, ".content.jsx-2872621454{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:32px;margin-top:38px;}.content.jsx-2872621454 h2.jsx-2872621454{font-weight:600;font-size:18px;line-height:24px;margin:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05vTWF0Y2hpbmdORlRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmtCLEFBR3dCLEFBT0csZ0JBQ0QsZUFDRSxpQkFDUixTQUNYLGlCQVZ3Qiw4RUFDSCw2RkFDVixTQUNPLGdCQUNsQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvTkZUcy9Ob01hdGNoaW5nTkZUcy50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IE5GVHNFeHBsb3JlQmFubmVyIGZyb20gXCIuL05GVHNFeHBsb3JlQmFubmVyXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTm9NYXRjaGluZ05GVHMocHJvcHM6IHtcbiAgdHlwZTogXCJiYWRnZVwiIHwgXCJuZnRzXCJcbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHR5cGUgfSA9IHByb3BzXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcIm5mdHNcIixcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiPlxuICAgICAgPGgyPlxuICAgICAgICB7dChcIm5vTWF0Y2hpbmdORlRzXCIsIHtcbiAgICAgICAgICB0eXBlOiB0eXBlID09PSBcIm5mdHNcIiA/IHQoXCJ0eXBlMVwiKSA6IHQoXCJ0eXBlMlwiKSxcbiAgICAgICAgfSl9XG4gICAgICA8L2gyPlxuICAgICAgPE5GVHNFeHBsb3JlQmFubmVyIHR5cGU9e3R5cGV9IC8+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDMycHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMzhweDtcbiAgICAgICAgfVxuICAgICAgICAuY29udGVudCBoMiB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NoMatchingNFTs.tsx */"));
    }
    function NFTListPortfolio(props) {
      const {type, isEmptyPortfolio} = props;
      const {t} = useTranslation("translation", {
        keyPrefix: "nfts"
      });
      const collections = useBackgroundSelector(type === "nfts" ? selectFilteredNFTCollections : selectFilteredNFTBadgesCollections);
      const nftCount = useBackgroundSelector(type === "nfts" ? selectFilteredNFTCollectionsCount : selectFilteredNFTBadgesCount);
      const isLoading = useBackgroundSelector(selectIsReloadingNFTs);
      if (isEmptyPortfolio) {
        return react.createElement(NFTsExploreBanner, {
          type
        });
      }
      return react.createElement(react.Fragment, null, nftCount || isLoading ? react.createElement(react.Fragment, null, react.createElement("h2", {
        className: "jsx-111712472"
      }, type === "nfts" ? t("units.collection_other") : t("units.badge_other")), react.createElement(NFTList, {
        collections,
        expandBadgesCollections: type !== "nfts"
      }), !isLoading && react.createElement(SharedBanner, {
        id: "nfts_networks_banner",
        canBeClosed: true,
        style: {
          margin: "15px 0 30px"
        },
        hasShadow: true
      }, react.createElement("div", {
        className: "jsx-111712472" + " " + "simple_text"
      }, t("networksBanner")))) : react.createElement(NoMatchingNFTs, {
        type
      }), react.createElement(style_default(), {
        id: "111712472"
      }, "h2.jsx-111712472{font-weight:600;font-size:18px;line-height:24px;margin:10px 0 0;}.simple_text.jsx-111712472{color:var(--c-text-secondary);margin:0 25px 0 4px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVExpc3RQb3J0Zm9saW8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1FUyxBQUc2QixBQU1jLGdCQUxmLGNBTUssQ0FMSCxpQkFDRCxFQUtsQixjQUpBIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9ORlRzL05GVExpc3RQb3J0Zm9saW8udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2VsZWN0SXNSZWxvYWRpbmdORlRzLFxuICBzZWxlY3RGaWx0ZXJlZE5GVEJhZGdlc0NvbGxlY3Rpb25zLFxuICBzZWxlY3RGaWx0ZXJlZE5GVEJhZGdlc0NvdW50LFxuICBzZWxlY3RGaWx0ZXJlZE5GVENvbGxlY3Rpb25zLFxuICBzZWxlY3RGaWx0ZXJlZE5GVENvbGxlY3Rpb25zQ291bnQsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvcmVkdXgtc2xpY2VzL3NlbGVjdG9yc1wiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcbmltcG9ydCBTaGFyZWRCYW5uZXIgZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRCYW5uZXJcIlxuaW1wb3J0IE5GVExpc3QgZnJvbSBcIi4vTkZUTGlzdFwiXG5pbXBvcnQgTkZUc0V4cGxvcmVCYW5uZXIgZnJvbSBcIi4vTkZUc0V4cGxvcmVCYW5uZXJcIlxuaW1wb3J0IE5vTWF0Y2hpbmdORlRzIGZyb20gXCIuL05vTWF0Y2hpbmdORlRzXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTkZUTGlzdFBvcnRmb2xpbyhwcm9wczoge1xuICB0eXBlOiBcImJhZGdlXCIgfCBcIm5mdHNcIlxuICBpc0VtcHR5UG9ydGZvbGlvOiBib29sZWFuXG59KTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0eXBlLCBpc0VtcHR5UG9ydGZvbGlvIH0gPSBwcm9wc1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJuZnRzXCIsXG4gIH0pXG4gIGNvbnN0IGNvbGxlY3Rpb25zID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKFxuICAgIHR5cGUgPT09IFwibmZ0c1wiXG4gICAgICA/IHNlbGVjdEZpbHRlcmVkTkZUQ29sbGVjdGlvbnNcbiAgICAgIDogc2VsZWN0RmlsdGVyZWRORlRCYWRnZXNDb2xsZWN0aW9ucyxcbiAgKVxuICBjb25zdCBuZnRDb3VudCA9IHVzZUJhY2tncm91bmRTZWxlY3RvcihcbiAgICB0eXBlID09PSBcIm5mdHNcIlxuICAgICAgPyBzZWxlY3RGaWx0ZXJlZE5GVENvbGxlY3Rpb25zQ291bnRcbiAgICAgIDogc2VsZWN0RmlsdGVyZWRORlRCYWRnZXNDb3VudCxcbiAgKVxuICBjb25zdCBpc0xvYWRpbmcgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0SXNSZWxvYWRpbmdORlRzKVxuXG4gIGlmIChpc0VtcHR5UG9ydGZvbGlvKSB7XG4gICAgcmV0dXJuIDxORlRzRXhwbG9yZUJhbm5lciB0eXBlPXt0eXBlfSAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge25mdENvdW50IHx8IGlzTG9hZGluZyA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICB7dHlwZSA9PT0gXCJuZnRzXCJcbiAgICAgICAgICAgICAgPyB0KFwidW5pdHMuY29sbGVjdGlvbl9vdGhlclwiKVxuICAgICAgICAgICAgICA6IHQoXCJ1bml0cy5iYWRnZV9vdGhlclwiKX1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICAgIDxORlRMaXN0XG4gICAgICAgICAgICBjb2xsZWN0aW9ucz17Y29sbGVjdGlvbnN9XG4gICAgICAgICAgICBleHBhbmRCYWRnZXNDb2xsZWN0aW9ucz17dHlwZSAhPT0gXCJuZnRzXCJ9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8U2hhcmVkQmFubmVyXG4gICAgICAgICAgICAgIGlkPVwibmZ0c19uZXR3b3Jrc19iYW5uZXJcIlxuICAgICAgICAgICAgICBjYW5CZUNsb3NlZFxuICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW46IFwiMTVweCAwIDMwcHhcIiB9fVxuICAgICAgICAgICAgICBoYXNTaGFkb3dcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaW1wbGVfdGV4dFwiPnt0KFwibmV0d29ya3NCYW5uZXJcIil9PC9kaXY+XG4gICAgICAgICAgICA8L1NoYXJlZEJhbm5lcj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxOb01hdGNoaW5nTkZUcyB0eXBlPXt0eXBlfSAvPlxuICAgICAgKX1cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnNpbXBsZV90ZXh0IHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAyNXB4IDAgNHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/NFTs/NFTListPortfolio.tsx */"));
    }
    function SharedButtonUp(props) {
      const {elementRef, offset = 0} = props;
      const [isHidden, setIsHidden] = (0, react.useState)(true);
      (0, react.useEffect)((() => {
        const id = setInterval((() => {
          const {y} = elementRef.current?.getBoundingClientRect() ?? {};
          if (typeof y !== "undefined") setIsHidden(y + offset > 0);
        }), 500);
        return () => clearInterval(id);
      }), [ elementRef, offset ]);
      const scrollToTop = (0, react.useCallback)((() => elementRef.current?.scrollIntoView({
        behavior: "smooth"
      })), [ elementRef ]);
      return react.createElement(react.Fragment, null, react.createElement("button", {
        type: "button",
        onClick: scrollToTop,
        className: "jsx-3357341997" + " " + (classnames_default()("button_up", {
          hidden: isHidden
        }) || "")
      }, react.createElement("div", {
        className: "jsx-3357341997" + " " + "icon_up"
      })), react.createElement(style_default(), {
        id: "3357341997"
      }, '.button_up.jsx-3357341997{position:absolute;bottom:68px;right:8px;margin-left:auto;width:32px;height:32px;background-color:var(--c-text-secondary);border-radius:9px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:3;opacity:1;-webkit-transition:opacity 100ms ease-in;transition:opacity 100ms ease-in;}.button_up.hidden.jsx-3357341997{opacity:0;pointer-events:none;}.button_up.jsx-3357341997:hover{background-color:var(--c-text);}.icon_up.jsx-3357341997{-webkit-mask-image:url("./images/chevron_down.svg");mask-image:url("./images/chevron_down.svg");-webkit-mask-size:14px 8px;mask-size:14px 8px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:14px;height:8px;background-color:var(--c-bg-alt);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQnV0dG9uVXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZDa0IsQUFHNkIsQUFnQlIsQUFJcUIsQUFHYSxVQU54QixRQWhCUixZQUNGLEFBZ0JaLENBR0EsU0FsQm1CLGlCQUNOLFdBQ0MsWUFDNkIsZ0JBa0J0Qix5QkFqQkQsa0JBQ0wsR0FpQlMsb0RBQ1gsV0FDQSxRQWxCWSxHQW1CVSxpQ0FDUiwrREFuQk4sd0JBb0JyQixxRUFuQlksVUFDQSxVQUN1QiwwRUFDbkMiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRCdXR0b25VcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgUmVhY3QsIHtcbiAgUmVhY3RFbGVtZW50LFxuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaGFyZWRCdXR0b25VcDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHByb3BzOiB7XG4gIGVsZW1lbnRSZWY6IFJlZk9iamVjdDxUPlxuICBvZmZzZXQ/OiBudW1iZXJcbn0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IGVsZW1lbnRSZWYsIG9mZnNldCA9IDAgfSA9IHByb3BzXG4gIGNvbnN0IFtpc0hpZGRlbiwgc2V0SXNIaWRkZW5dID0gdXNlU3RhdGUodHJ1ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgeyB5IH0gPSBlbGVtZW50UmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IHt9XG5cbiAgICAgIGlmICh0eXBlb2YgeSAhPT0gXCJ1bmRlZmluZWRcIikgc2V0SXNIaWRkZW4oeSArIG9mZnNldCA+IDApXG4gICAgfSwgNTAwKVxuXG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpXG4gIH0sIFtlbGVtZW50UmVmLCBvZmZzZXRdKVxuXG4gIGNvbnN0IHNjcm9sbFRvVG9wID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT5cbiAgICAgIGVsZW1lbnRSZWYuY3VycmVudD8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcbiAgICAgIH0pLFxuICAgIFtlbGVtZW50UmVmXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImJ1dHRvbl91cFwiLCB7XG4gICAgICAgICAgaGlkZGVuOiBpc0hpZGRlbixcbiAgICAgICAgfSl9XG4gICAgICAgIG9uQ2xpY2s9e3Njcm9sbFRvVG9wfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25fdXBcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5idXR0b25fdXAge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206IDY4cHg7XG4gICAgICAgICAgcmlnaHQ6IDhweDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYy10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMDBtcyBlYXNlLWluO1xuICAgICAgICB9XG4gICAgICAgIC5idXR0b25fdXAuaGlkZGVuIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5idXR0b25fdXA6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgLmljb25fdXAge1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIi4vaW1hZ2VzL2NoZXZyb25fZG93bi5zdmdcIik7XG4gICAgICAgICAgbWFzay1zaXplOiAxNHB4IDhweDtcbiAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedButtonUp.tsx */'));
    }
    const PANEL_NAMES = [ "Investments", "DEFI", "DEX", "NFT", "DAO" ];
    function NFTs() {
      const allNftCount = useBackgroundSelector(selectAllNFTsCount);
      const pageRef = (0, react.useRef)(null);
      const [panelNumber, setPanelNumber] = (0, react.useState)(0);
      useNFTsReload();
      return react.createElement("div", {
        ref: pageRef,
        className: "jsx-2840521189" + " " + "page_content"
      }, react.createElement(NFTsHeader, null), react.createElement("div", {
        className: "jsx-2840521189" + " " + "panel_switcher_wrap"
      }, react.createElement(SharedPanelSwitcher, {
        setPanelNumber,
        panelNumber,
        panelNames: PANEL_NAMES
      })), react.createElement("div", {
        className: "jsx-2840521189" + " " + "standard_width"
      }, panelNumber === 3 && react.createElement(NFTListPortfolio, {
        type: "nfts",
        isEmptyPortfolio: !(allNftCount > 0)
      })), react.createElement(SharedButtonUp, {
        elementRef: pageRef,
        offset: 100
      }), react.createElement(style_default(), {
        id: "2840521189"
      }, ".page_content.jsx-2840521189{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.panel_switcher_wrap.jsx-2840521189{width:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvTkZUcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUNTLEFBR3dCLEFBUUEsV0FQRSxBQVFmLDBFQVB3Qiw4RUFDZCxRQUNXLDZGQUNyQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL05GVHMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBzZWxlY3RBbGxORlRzQ291bnQgfSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy9zZWxlY3RvcnNcIlxuaW1wb3J0IFNoYXJlZFBhbmVsU3dpdGNoZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZFBhbmVsU3dpdGNoZXJcIlxuaW1wb3J0IE5GVHNIZWFkZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvTkZUcy9ORlRzSGVhZGVyXCJcbmltcG9ydCB7IHVzZUJhY2tncm91bmRTZWxlY3RvciwgdXNlTkZUc1JlbG9hZCB9IGZyb20gXCIuLi9ob29rc1wiXG5pbXBvcnQgTkZUTGlzdFBvcnRmb2xpbyBmcm9tIFwiLi4vY29tcG9uZW50cy9ORlRzL05GVExpc3RQb3J0Zm9saW9cIlxuaW1wb3J0IFNoYXJlZEJ1dHRvblVwIGZyb20gXCIuLi9jb21wb25lbnRzL1NoYXJlZC9TaGFyZWRCdXR0b25VcFwiXG5cbmNvbnN0IFBBTkVMX05BTUVTID0gW1wiSW52ZXN0bWVudHNcIiwgXCJERUZJXCIsIFwiREVYXCIsIFwiTkZUXCIsIFwiREFPXCJdXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE5GVHMoKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgYWxsTmZ0Q291bnQgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0QWxsTkZUc0NvdW50KVxuICBjb25zdCBwYWdlUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgY29uc3QgW3BhbmVsTnVtYmVyLCBzZXRQYW5lbE51bWJlcl0gPSB1c2VTdGF0ZSgwKVxuXG4gIHVzZU5GVHNSZWxvYWQoKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwYWdlX2NvbnRlbnRcIiByZWY9e3BhZ2VSZWZ9PlxuICAgICAgPE5GVHNIZWFkZXIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWxfc3dpdGNoZXJfd3JhcFwiPlxuICAgICAgICA8U2hhcmVkUGFuZWxTd2l0Y2hlclxuICAgICAgICAgIHNldFBhbmVsTnVtYmVyPXtzZXRQYW5lbE51bWJlcn1cbiAgICAgICAgICBwYW5lbE51bWJlcj17cGFuZWxOdW1iZXJ9XG4gICAgICAgICAgcGFuZWxOYW1lcz17UEFORUxfTkFNRVN9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhbmRhcmRfd2lkdGhcIj5cbiAgICAgICAge3BhbmVsTnVtYmVyID09PSAzICYmIChcbiAgICAgICAgICA8TkZUTGlzdFBvcnRmb2xpbyB0eXBlPVwibmZ0c1wiIGlzRW1wdHlQb3J0Zm9saW89eyEoYWxsTmZ0Q291bnQgPiAwKX0gLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPFNoYXJlZEJ1dHRvblVwIGVsZW1lbnRSZWY9e3BhZ2VSZWZ9IG9mZnNldD17MTAwfSAvPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAucGFnZV9jb250ZW50IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnBhbmVsX3N3aXRjaGVyX3dyYXAge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/NFTs.tsx */"));
    }
    function AbilityLabel({type}) {
      return react.createElement(react.Fragment, null, react.createElement("div", {
        style: {
          color: ABILITY_TYPE_COLOR[type] || "white",
          borderColor: ABILITY_TYPE_COLOR[type] || "white"
        },
        className: "jsx-3624299908" + " " + "icon_type"
      }, react.createElement("span", {
        className: "jsx-3624299908" + " " + "label_text"
      }, textUtils_capitalize(type))), react.createElement(style_default(), {
        id: "3624299908"
      }, '.icon_type.jsx-3624299908{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;gap:8px;height:24px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding:0px 8px;border:1.5px solid;border-radius:32px;}.label_text.jsx-3624299908{font-family:"Segment";font-style:normal;font-weight:500;font-size:14px;line-height:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvQWJpbGl0aWVzL0FiaWxpdHlMYWJlbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JTLEFBRzBCLEFBY1Msc0JBQ0osa0JBQ0YsZ0JBQ0QsZUFDRSxHQWpCRSxjQW1CTix1REFsQk0sbUJBbUJBLDBFQWxCSSxtQkFtQkQsZ0ZBbEJkLFFBQ0ksWUFDTSxLQWlCcEIsOERBaEJrQixnQkFFRyxtQkFDQSxtQkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9BYmlsaXRpZXMvQWJpbGl0eUxhYmVsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFiaWxpdHlUeXBlLFxuICBBQklMSVRZX1RZUEVfQ09MT1IsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvYWJpbGl0aWVzXCJcbmltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy90ZXh0VXRpbHNcIlxuXG5mdW5jdGlvbiBBYmlsaXR5TGFiZWwoeyB0eXBlIH06IHsgdHlwZTogQWJpbGl0eVR5cGUgfSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBjb2xvcjogQUJJTElUWV9UWVBFX0NPTE9SW3R5cGVdIHx8IFwid2hpdGVcIixcbiAgICAgICAgICBib3JkZXJDb2xvcjogQUJJTElUWV9UWVBFX0NPTE9SW3R5cGVdIHx8IFwid2hpdGVcIixcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPVwiaWNvbl90eXBlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGFiZWxfdGV4dFwiPntjYXBpdGFsaXplKHR5cGUpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICAuaWNvbl90eXBlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHggOHB4O1xuXG4gICAgICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzJweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAubGFiZWxfdGV4dCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG5cbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFiaWxpdHlMYWJlbFxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityLabel.tsx */'));
    }
    const Abilities_AbilityLabel = AbilityLabel;
    const getRequirementLabel = ability => {
      if (ability.requirement.type === "hold") {
        return `Hold ${ability.requirement.address.slice(0, 6)}...`;
      }
      if (ability.requirement.type === "allowList") {
        return "Whitelisted";
      }
      return "";
    };
    const getAccountNameOrShortenedAddress = (accounts, address) => {
      const account = accounts[address];
      return account.ensName ?? account.shortenedAddress;
    };
    function AbilityCardHeader({ability}) {
      const accountsTotal = useBackgroundSelector(selectAccountTotalsForOverview);
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-372799694" + " " + "header"
      }, react.createElement(Abilities_AbilityLabel, {
        type: ability.type
      }), react.createElement("div", {
        className: "jsx-372799694" + " " + "requirement_info"
      }, react.createElement("span", {
        className: "jsx-372799694"
      }, getRequirementLabel(ability)), react.createElement("span", {
        className: "jsx-372799694"
      }, getAccountNameOrShortenedAddress(accountsTotal, ability.address)))), react.createElement(style_default(), {
        id: "372799694"
      }, '.header.jsx-372799694{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}.requirement_info.jsx-372799694{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-left:8px;width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;font-family:"Segment";font-style:normal;font-weight:500;font-size:14px;line-height:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;color:var(--c-text-muted);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvQWJpbGl0aWVzL0FiaWxpdHlDYXJkSGVhZGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQ2tCLEFBR3dCLEFBT0EsMEVBTkYsQUFPUSxXQU5BLDBEQU9ILFdBTkcsS0FPUixXQUNtQiw2RUFQSCxzQ0FRTCxzQkFDSixrQkFDRixnQkFDRCxXQVZqQixJQVdtQixpQkFDRSw2RkFDRyx5R0FDSSwwQkFDNUIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9BYmlsaXRpZXMvQWJpbGl0eUNhcmRIZWFkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1xuICBBY2NvdW50VG90YWxMaXN0LFxuICBzZWxlY3RBY2NvdW50VG90YWxzRm9yT3ZlcnZpZXcsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvcmVkdXgtc2xpY2VzL3NlbGVjdG9yc1wiXG5pbXBvcnQgeyBBYmlsaXR5IH0gZnJvbSBcIkBxZXZtL3F3YWwtYmFja2dyb3VuZC9hYmlsaXRpZXNcIlxuaW1wb3J0IEFiaWxpdHlMYWJlbCBmcm9tIFwiLi9BYmlsaXR5TGFiZWxcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcblxuY29uc3QgZ2V0UmVxdWlyZW1lbnRMYWJlbCA9IChhYmlsaXR5OiBBYmlsaXR5KTogc3RyaW5nID0+IHtcbiAgaWYgKGFiaWxpdHkucmVxdWlyZW1lbnQudHlwZSA9PT0gXCJob2xkXCIpIHtcbiAgICByZXR1cm4gYEhvbGQgJHthYmlsaXR5LnJlcXVpcmVtZW50LmFkZHJlc3Muc2xpY2UoMCwgNil9Li4uYFxuICB9XG5cbiAgaWYgKGFiaWxpdHkucmVxdWlyZW1lbnQudHlwZSA9PT0gXCJhbGxvd0xpc3RcIikge1xuICAgIHJldHVybiBcIldoaXRlbGlzdGVkXCJcbiAgfVxuICByZXR1cm4gXCJcIlxufVxuXG5jb25zdCBnZXRBY2NvdW50TmFtZU9yU2hvcnRlbmVkQWRkcmVzcyA9IChcbiAgYWNjb3VudHM6IEFjY291bnRUb3RhbExpc3QsXG4gIGFkZHJlc3M6IHN0cmluZyxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGFjY291bnQgPSBhY2NvdW50c1thZGRyZXNzXVxuICByZXR1cm4gYWNjb3VudC5lbnNOYW1lID8/IGFjY291bnQuc2hvcnRlbmVkQWRkcmVzc1xufVxuXG5mdW5jdGlvbiBBYmlsaXR5Q2FyZEhlYWRlcih7IGFiaWxpdHkgfTogeyBhYmlsaXR5OiBBYmlsaXR5IH0pOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCBhY2NvdW50c1RvdGFsID0gdXNlQmFja2dyb3VuZFNlbGVjdG9yKHNlbGVjdEFjY291bnRUb3RhbHNGb3JPdmVydmlldylcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRlclwiPlxuICAgICAgICA8QWJpbGl0eUxhYmVsIHR5cGU9e2FiaWxpdHkudHlwZX0gLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZXF1aXJlbWVudF9pbmZvXCI+XG4gICAgICAgICAgPHNwYW4+e2dldFJlcXVpcmVtZW50TGFiZWwoYWJpbGl0eSl9PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge2dldEFjY291bnROYW1lT3JTaG9ydGVuZWRBZGRyZXNzKGFjY291bnRzVG90YWwsIGFiaWxpdHkuYWRkcmVzcyl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuaGVhZGVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgLnJlcXVpcmVtZW50X2luZm8ge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICBmb250LWZhbWlseTogXCJTZWdtZW50XCI7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFiaWxpdHlDYXJkSGVhZGVyXG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityCardHeader.tsx */'));
    }
    const Abilities_AbilityCardHeader = AbilityCardHeader;
    const AbilityRemovalConfirm_RADIO_NAME = "spamReason";
    const AbilityRemovalConfirm_KEY_PREFIX = "abilities.deleteSlideUpMenu";
    const AbilityRemovalConfirm_RADIO_BTNS = [ {
      value: "spam",
      label: i18next.t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamReason.spam`)
    }, {
      value: "inaccurate information",
      label: i18next.t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamReason.inaccurateInfo`)
    }, {
      value: "copyright violation",
      label: i18next.t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamReason.copyright`)
    }, {
      value: "scam",
      label: i18next.t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamReason.scam`)
    }, {
      value: "duplicate",
      label: i18next.t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamReason.duplicate`)
    } ];
    function AbilityRemovalConfirm({ability, close}) {
      const dispatch = useBackgroundDispatch();
      const {t} = useTranslation("translation");
      const [showSpamReasons, setShowSpamReasons] = (0, react.useState)(false);
      const [spamReason, setSpamReason] = (0, react.useState)(undefined);
      (0, react.useEffect)((() => {
        if (!showSpamReasons) {
          setSpamReason(undefined);
        }
      }), [ showSpamReasons ]);
      const handleDeleteAbility = async () => {
        if (spamReason) {
          await dispatch(reportAndRemoveAbility({
            address: ability.address,
            abilitySlug: ability.slug,
            abilityId: ability.abilityId,
            reason: spamReason
          }));
        } else {
          await dispatch(removeAbility({
            address: ability.address,
            abilityId: ability.abilityId
          }));
        }
        dispatch(setSnackbarMessage(t(`${AbilityRemovalConfirm_KEY_PREFIX}.snackbar`)));
        close();
      };
      return react.createElement("div", {
        className: "jsx-3030990380" + " " + "remove_ability_option"
      }, react.createElement("div", {
        className: "jsx-3030990380" + " " + "content_container"
      }, react.createElement("div", {
        className: "jsx-3030990380" + " " + "header"
      }, t(`${AbilityRemovalConfirm_KEY_PREFIX}.title`)), react.createElement("div", {
        className: "jsx-3030990380" + " " + "remove_ability_details"
      }, t(`${AbilityRemovalConfirm_KEY_PREFIX}.desc`)), react.createElement("div", {
        className: "jsx-3030990380" + " " + "spam_container"
      }, react.createElement("div", {
        className: "jsx-3030990380" + " " + "spam_header"
      }, react.createElement("div", {
        className: "jsx-3030990380" + " " + "spam_prompt"
      }, t(`${AbilityRemovalConfirm_KEY_PREFIX}.spamPrompt`)), react.createElement(SharedButton, {
        type: "tertiary",
        size: "small",
        onClick: e => {
          e.stopPropagation();
          setShowSpamReasons((prevState => !prevState));
        }
      }, showSpamReasons ? t("shared.cancelBtn") : t(`${AbilityRemovalConfirm_KEY_PREFIX}.reportSpamBtn`))), react.createElement("div", {
        className: "jsx-3030990380" + " " + (classnames_default()("spam_reasons", {
          visible: showSpamReasons
        }) || "")
      }, react.createElement("div", {
        className: "jsx-3030990380" + " " + "spam_title simple_text"
      }, t(`${AbilityRemovalConfirm_KEY_PREFIX}.selectSpamReason`)), AbilityRemovalConfirm_RADIO_BTNS.map((({value, label}) => react.createElement(SharedRadio, {
        key: value,
        id: `radio_${value}`,
        name: AbilityRemovalConfirm_RADIO_NAME,
        value: spamReason === value,
        label,
        onChange: () => setSpamReason(value)
      })))))), react.createElement("div", {
        className: "jsx-3030990380" + " " + "button_container"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        isDisabled: showSpamReasons ? !spamReason : false,
        onClick: e => {
          e.stopPropagation();
          handleDeleteAbility();
        }
      }, t(`${AbilityRemovalConfirm_KEY_PREFIX}.${showSpamReasons ? "submitSpamBtn" : "submitBtn"}`)), react.createElement(SharedButton, {
        type: "tertiary",
        size: "medium",
        onClick: e => {
          e.stopPropagation();
          close();
        }
      }, t("shared.cancelBtn"))), react.createElement(style_default(), {
        id: "3030990380"
      }, ".header.jsx-3030990380{height:24px;font-family:'Segment';font-style:normal;font-weight:600;font-size:18px;line-height:24px;color:var(--c-text);}.remove_ability_option.jsx-3030990380{margin:0 24px 24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:24px;height:95%;font-family:'Segment';font-style:normal;font-weight:500;font-size:16px;line-height:24px;color:var(--c-text-tertiary);}.remove_ability_details.jsx-3030990380{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:24px;font-size:16px;}.button_container.jsx-3030990380{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.spam_header.jsx-3030990380{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.spam_prompt.jsx-3030990380{font-family:'Segment';font-style:normal;font-weight:500;font-size:16px;line-height:24px;color:var(--c-text);}.content_container.jsx-3030990380{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.spam_container.jsx-3030990380{padding:8px 12px;background-color:var(--c-bg-alt);}.spam_reasons.jsx-3030990380{opacity:0;max-height:0px;overflow:hidden;-webkit-transition:max-height 500ms,opacity 130ms ease-in;transition:max-height 500ms,opacity 130ms ease-in;}.spam_reasons.visible.jsx-3030990380{opacity:1;max-height:212px;-webkit-transition:max-height 500ms ease-in,opacity 130ms ease-in;transition:max-height 500ms ease-in,opacity 130ms ease-in;}.spam_title.jsx-3030990380{margin:14 0 8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityRemovalConfirm.tsx */"));
    }
    const DAYS = 30;
    const KEY_PREFIX_TIME_DETAILS = "abilities.timeDetails";
    const AbilityCard_getMessage = (dateStr, keyPrefix) => {
      const cutOffDate = new Date;
      cutOffDate.setHours(0, 0, 0, 0);
      const date = new Date(dateStr);
      const diffInMs = date.getTime() - cutOffDate.getTime();
      const days = Math.floor(diffInMs / DAY);
      if (days >= 1 && days <= DAYS) {
        return i18next.t(`${KEY_PREFIX_TIME_DETAILS}.${keyPrefix}`, {
          count: days
        });
      }
      return "";
    };
    const getTimeDetails = ability => {
      if (ability.closeAt) {
        return AbilityCard_getMessage(ability.closeAt, "timeClosesDays");
      }
      if (ability.openAt) {
        return AbilityCard_getMessage(ability.openAt, "timeStartingDays");
      }
      return "";
    };
    function AbilityCard({ability}) {
      const {t} = useTranslation("translation", {
        keyPrefix: "abilities"
      });
      const [showRemoveAbilityConfirm, setShowRemoveAbilityConfirm] = (0, react.useState)(false);
      const accountsTotal = useBackgroundSelector(selectAccountTotalsForOverview);
      const dispatch = useBackgroundDispatch();
      const timeDetails = getTimeDetails(ability);
      if (!accountsTotal[ability.address]) return null;
      return react.createElement(react.Fragment, null, react.createElement("div", {
        className: "jsx-2707165639" + " " + "ability_card"
      }, react.createElement(SharedSlideUpMenu, {
        size: "auto",
        isOpen: showRemoveAbilityConfirm,
        close: e => {
          e?.stopPropagation();
          setShowRemoveAbilityConfirm(false);
        }
      }, react.createElement("div", {
        role: "presentation",
        onClick: e => e.stopPropagation(),
        style: {
          cursor: "default"
        },
        className: "jsx-2707165639"
      }, react.createElement(AbilityRemovalConfirm, {
        ability,
        close: () => setShowRemoveAbilityConfirm(false)
      }))), react.createElement(Abilities_AbilityCardHeader, {
        ability
      }), react.createElement("div", {
        title: ability.title,
        className: "jsx-2707165639" + " " + "title"
      }, ability.title), timeDetails && react.createElement("div", {
        className: "jsx-2707165639" + " " + "time_details"
      }, react.createElement(SharedIcon, {
        color: "var(--c-text-tertiary)",
        width: 16,
        icon: "time.svg"
      }), react.createElement("div", {
        className: "jsx-2707165639" + " " + "simple_text"
      }, timeDetails)), ability.description && react.createElement("div", {
        className: "jsx-2707165639" + " " + "description"
      }, ability.description), ability.imageUrl && react.createElement("img", {
        alt: "logo",
        src: ability.imageUrl,
        className: "jsx-2707165639" + " " + "image"
      }), react.createElement("div", {
        className: "jsx-2707165639" + " " + "controls"
      }, react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        iconSmall: "new-tab",
        onClick: () => {
          window.open(ability.linkUrl, "_blank")?.focus();
        }
      }, t("viewWebsiteBtn")), react.createElement("div", {
        className: "jsx-2707165639" + " " + "button_container"
      }, react.createElement(SharedTooltip, {
        horizontalPosition: "center",
        width: 144,
        verticalPosition: "bottom",
        type: "dark",
        disabled: ability.completed,
        IconComponent: () => react.createElement(SharedIcon, {
          height: 16,
          width: 16,
          icon: "icons/s/mark-read.svg",
          color: "var(--c-text-tertiary)",
          style: {
            marginRight: 8
          },
          hoverColor: "var(--c-success)",
          disabled: ability.completed,
          onClick: async () => {
            await dispatch(completeAbility({
              address: ability.address,
              abilityId: ability.abilityId
            }));
            dispatch(setSnackbarMessage(t("snackbar")));
          }
        })
      }, t("markBtn")), react.createElement("div", {
        className: "jsx-2707165639" + " " + "line"
      }), react.createElement(SharedTooltip, {
        horizontalPosition: "center",
        width: 50,
        verticalPosition: "bottom",
        type: "dark",
        isOpen: showRemoveAbilityConfirm,
        disabled: ability.removedFromUi,
        IconComponent: () => react.createElement(SharedIcon, {
          height: 16,
          width: 16,
          icon: "icons/s/garbage.svg",
          color: "var(--c-text-tertiary)",
          hoverColor: "var(--c-error)",
          disabled: ability.removedFromUi,
          onClick: () => {
            setShowRemoveAbilityConfirm(true);
          }
        })
      }, t("deleteBtn"))))), react.createElement(style_default(), {
        id: "2707165639"
      }, ".ability_card.jsx-2707165639{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;padding:16px;width:320px;max-height:355px;background:rgba(4,20,20,0.4);border-radius:12px;margin-bottom:16px;}.button_container.jsx-2707165639{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;gap:8px;}.title.jsx-2707165639{font-family:Segment;overflow:hidden;text-overflow:ellipsis;width:100%;white-space:nowrap;font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;margin-top:8px;}.description.jsx-2707165639{margin-top:4px;height:48px;width:100%;overflow:hidden;text-overflow:ellipsis;font-family:'Segment';font-style:normal;font-weight:500;font-size:16px;line-height:24px;color:var(--c-text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}.image.jsx-2707165639{width:100%;height:115px;border-radius:4px;object-fit:cover;margin-top:16px;}.controls.jsx-2707165639{margin-top:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;}.line.jsx-2707165639{border:1px solid var(--c-bg-inset);height:24px;}.time_details.jsx-2707165639{margin-top:4px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityCard.tsx */"));
    }
    const Abilities_AbilityCard = AbilityCard;
    function AbilityFilterCard({type, description, checked, onChange}) {
      return react.createElement("div", {
        className: style_default().dynamic([ [ "2296696071", [ ABILITY_TYPE_COLOR[type] ] ] ]) + " " + "content"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2296696071", [ ABILITY_TYPE_COLOR[type] ] ] ]) + " " + "header"
      }, react.createElement("div", {
        className: style_default().dynamic([ [ "2296696071", [ ABILITY_TYPE_COLOR[type] ] ] ]) + " " + "title"
      }, textUtils_capitalize(type)), react.createElement(SharedToggleButton, {
        onChange,
        value: checked
      })), react.createElement("div", {
        className: style_default().dynamic([ [ "2296696071", [ ABILITY_TYPE_COLOR[type] ] ] ]) + " " + "simple_text"
      }, description), react.createElement(style_default(), {
        id: "2296696071",
        dynamic: [ ABILITY_TYPE_COLOR[type] ]
      }, `.content.__jsx-style-dynamic-selector{background:var(--c-bg-alt);border-radius:6px;padding:16px;}.header.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px;}.title.__jsx-style-dynamic-selector{color:${ABILITY_TYPE_COLOR[type]};font-weight:600;font-size:18px;line-height:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvQWJpbGl0aWVzL0FiaWxpdHlGaWx0ZXJDYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2QlMsQUFHd0MsQUFLZCxBQUtzQiwyQkFUakIsUUFVRixVQVRILE1BVUUsT0FUakIsUUFVbUIsUUFQYSxTQVFoQywwR0FQb0Isa0JBQ3BCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvQWJpbGl0aWVzL0FiaWxpdHlGaWx0ZXJDYXJkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFiaWxpdHlUeXBlLFxuICBBQklMSVRZX1RZUEVfQ09MT1IsXG59IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvYWJpbGl0aWVzXCJcbmltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNoYXJlZFRvZ2dsZUJ1dHRvbiBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkVG9nZ2xlQnV0dG9uXCJcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGV4dFV0aWxzXCJcblxudHlwZSBBYmlsaXR5RmlsdGVyQ2FyZFByb3BzID0ge1xuICB0eXBlOiBBYmlsaXR5VHlwZVxuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGNoZWNrZWQ6IGJvb2xlYW5cbiAgb25DaGFuZ2U6ICh0b2dnbGVWYWx1ZTogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5mdW5jdGlvbiBBYmlsaXR5RmlsdGVyQ2FyZCh7XG4gIHR5cGUsXG4gIGRlc2NyaXB0aW9uLFxuICBjaGVja2VkLFxuICBvbkNoYW5nZSxcbn06IEFiaWxpdHlGaWx0ZXJDYXJkUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPntjYXBpdGFsaXplKHR5cGUpfTwvZGl2PlxuICAgICAgICA8U2hhcmVkVG9nZ2xlQnV0dG9uIG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e2NoZWNrZWR9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2ltcGxlX3RleHRcIj57ZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICA8c3R5bGUganN4PlxuICAgICAgICB7YFxuICAgICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWMtYmctYWx0KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiAke0FCSUxJVFlfVFlQRV9DT0xPUlt0eXBlXX07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBYmlsaXR5RmlsdGVyQ2FyZFxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityFilterCard.tsx */`));
    }
    const Abilities_AbilityFilterCard = AbilityFilterCard;
    const AbilityFilter_RADIO_NAME = "sortType";
    const AbilityFilter_KEY_PREFIX = "abilities.filters";
    const AbilityFilter_RADIO_BTNS = [ {
      value: "open",
      label: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityState.open`)
    }, {
      value: "completed",
      label: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityState.completed`)
    }, {
      value: "expired",
      label: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityState.expired`)
    }, {
      value: "deleted",
      label: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityState.deleted`)
    }, {
      value: "all",
      label: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityState.all`)
    } ];
    const ABILITY_TYPE_DESC = {
      vote: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.vote`),
      claim: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.claim`),
      airdrop: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.airdrop`),
      mint: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.mint`),
      access: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.access`),
      product: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.product`),
      event: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.event`),
      article: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.article`),
      result: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.result`),
      misc: i18next.t(`${AbilityFilter_KEY_PREFIX}.abilityTypeDesc.misc`)
    };
    function AbilityFilter() {
      const {t} = useTranslation("translation", {
        keyPrefix: "abilities.filters"
      });
      const state = useBackgroundSelector(selectAbilityFilterState);
      const types = useBackgroundSelector(selectAbilityFilterTypes);
      const accounts = useBackgroundSelector(selectAbilityFilterAccounts);
      const accountTotals = useBackgroundSelector(selectAccountTotals);
      const filteredAccountTotals = accountTotals.filter((({accountType}) => accountType !== AccountType.ReadOnly));
      const dispatch = useBackgroundDispatch();
      const handleUpdateState = (0, react.useCallback)((value => {
        dispatch(updateState(value));
      }), [ dispatch ]);
      const handleUpdateType = (0, react.useCallback)(((value, isEnabled) => {
        if (isEnabled) {
          dispatch(addType(value));
        } else {
          dispatch(deleteType(value));
        }
      }), [ dispatch ]);
      const handleUpdateAccount = (0, react.useCallback)(((value, isEnabled) => {
        if (isEnabled) {
          dispatch(addAccount(value));
        } else {
          dispatch(abilities_deleteAccount(value));
        }
      }), [ dispatch ]);
      return react.createElement(SharedSlideUpMenuPanel, {
        header: t("title")
      }, react.createElement("div", {
        className: "jsx-323149858" + " " + "filter"
      }, react.createElement("div", {
        className: "jsx-323149858" + " " + "simple_text"
      }, react.createElement("span", {
        className: "jsx-323149858" + " " + "filter_title"
      }, t("abilityStateTitle")), AbilityFilter_RADIO_BTNS.map((({value, label}) => react.createElement(SharedRadio, {
        key: value,
        id: `radio_${value}`,
        name: AbilityFilter_RADIO_NAME,
        value: state === value,
        label,
        onChange: () => handleUpdateState(value)
      })))), react.createElement("div", {
        className: "jsx-323149858" + " " + "simple_text"
      }, react.createElement("span", {
        className: "jsx-323149858" + " " + "filter_title"
      }, t("abilitiesTypesTitle")), react.createElement("div", {
        className: "jsx-323149858" + " " + "filter_list"
      }, ABILITY_TYPES.map((type => react.createElement(Abilities_AbilityFilterCard, {
        key: type,
        type,
        description: ABILITY_TYPE_DESC[type],
        checked: types.includes(type),
        onChange: toggleValue => handleUpdateType(type, toggleValue)
      }))))), react.createElement("div", {
        className: "jsx-323149858" + " " + "simple_text"
      }, react.createElement("span", {
        className: "jsx-323149858" + " " + "filter_title"
      }, t("accountsTitle")), react.createElement("div", {
        className: "jsx-323149858" + " " + "filter_list"
      }, filteredAccountTotals.length > 0 ? filteredAccountTotals.map((({address, name, avatarURL}) => react.createElement(SharedToggleItem, {
        key: address,
        label: name || address,
        thumbnailURL: avatarURL,
        checked: accounts.includes(address),
        onChange: toggleValue => handleUpdateAccount(address, toggleValue)
      }))) : react.createElement("span", {
        className: "jsx-323149858" + " " + "no_accounts"
      }, t("noAccounts")))), react.createElement("span", {
        className: "jsx-323149858" + " " + "accounts_info"
      }, react.createElement(SharedIcon, {
        width: 24,
        color: "var(--c-accent)",
        icon: "icons/m/notif-announcement.svg",
        style: {
          flexShrink: 0,
          marginRight: 18
        }
      }), react.createElement("span", {
        className: "jsx-323149858"
      }, t("accountsReadOnlyInfo")))), react.createElement(style_default(), {
        id: "323149858"
      }, ".filter.jsx-323149858{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;height:471px;overflow-y:scroll;padding:0 24px 8px;}.filter_list.jsx-323149858{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.filter_title.jsx-323149858{display:inline-block;margin-bottom:8px;width:100%;}.accounts_info.jsx-323149858{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 16px 0 4px;color:var(--c-text-secondary);font-weight:500;font-size:14px;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;}.no_accounts.jsx-323149858{font-size:18px;color:var(--c-text-secondary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities/AbilityFilter.tsx */"));
    }
    function Abilities() {
      const {t} = useTranslation("translation", {
        keyPrefix: "abilities"
      });
      const [openFilterMenu, setOpenFilterMenu] = (0, react.useState)(false);
      const abilities = useBackgroundSelector(selectFilteredAbilities);
      const handleToggleClick = (0, react.useCallback)((() => {
        setOpenFilterMenu((currentlyOpen => !currentlyOpen));
      }), []);
      return react.createElement("section", {
        className: "jsx-963512875" + " " + "standard_width_padded"
      }, react.createElement(SharedSlideUpMenu, {
        isOpen: openFilterMenu,
        close: handleToggleClick
      }, react.createElement(AbilityFilter, null)), react.createElement("div", {
        className: "jsx-963512875" + " " + "content"
      }, react.createElement("div", {
        className: "jsx-963512875" + " " + "header"
      }, react.createElement("div", {
        className: "jsx-963512875" + " " + "icon_tail logo"
      }), react.createElement("h1", {
        className: "jsx-963512875"
      }, t("header")), react.createElement(SharedFilterTooltip, {
        keyPrefix: "abilities",
        isOpen: openFilterMenu,
        setIsOpen: setOpenFilterMenu
      })), abilities.length > 0 ? abilities.map(((ability, id) => {
        const key = `${ability.abilityId}-${id}`;
        return react.createElement(Abilities_AbilityCard, {
          key,
          ability
        });
      })) : react.createElement("div", {
        className: "jsx-963512875" + " " + "empty_page"
      }, react.createElement("div", {
        className: "jsx-963512875" + " " + "icon_tail"
      }), react.createElement("div", {
        className: "jsx-963512875" + " " + "title"
      }, t("emptyState.title")), react.createElement("div", {
        className: "jsx-963512875" + " " + "desc"
      }, t("emptyState.desc")), react.createElement(SharedButton, {
        type: "secondary",
        size: "medium",
        iconSmall: "add",
        iconPosition: "left",
        onClick: () => {
          window.open(ONBOARDING_ROOT);
          window.close();
        }
      }, t("emptyState.addBtn")))), react.createElement(style_default(), {
        id: "963512875"
      }, '.header.jsx-963512875{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}h1.jsx-963512875{font-weight:500;font-size:22px;line-height:32px;}section.jsx-963512875{height:544px;width:100%;background: radial-gradient( 103.39% 72.17% at -5.73% -7.67%, rgb(247,103,52,0.5) 0%, rgba(19,48,46,0) 100% ), radial-gradient( 78.69% 248.21% at 114.77% 133.93%, rgba(9,86,72,0.85) 0%, rgba(0,37,34,0) 100% );padding:0;overflow:hidden;}.content.jsx-963512875{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column;-ms-flex-flow:column;flex-flow:column;padding:0px 16px;height:100%;overflow-y:scroll;overflow-x:hidden;position:relative;}.empty_page.jsx-963512875{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:24px;}.title.jsx-963512875{font-family:"Geist";font-style:normal;font-weight:500;font-size:36px;line-height:42px;}.desc.jsx-963512875{font-family:Segment;font-style:normal;font-weight:500;font-size:16px;line-height:24px;color:var(--c-text-secondary);text-align:center;}.icon_tail.jsx-963512875{background:url("./images/tail.svg");background-size:82px 82px;width:82px;height:82px;border-radius:24px;}.logo.jsx-963512875{background-size:32px 32px;width:32px;height:32px;margin-right:16px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Abilities.tsx */'));
    }
    const intersperseWith = (items, getItem) => {
      const result = [];
      for (let i = 0; i < items.length; i += 1) {
        const element = items[i];
        result.push(element);
        if (i < items.length - 1) {
          result.push(getItem(i));
        }
      }
      return result;
    };
    const lists = {};
    function SettingsCustomNetworks() {
      const {t} = useTranslation("translation", {
        keyPrefix: "settings.customNetworksSettings"
      });
      const {t: sharedT} = useTranslation("translation");
      const dispatch = useBackgroundDispatch();
      const allCustomNetworks = useBackgroundSelector(selectCustomNetworks);
      const customNetworksListItems = intersperseWith(allCustomNetworks, (() => "spacer"));
      const [showConfirmDelete, setShowConfirmDelete] = (0, react.useState)(false);
      const [networkToDelete, setNetworkToDelete] = (0, react.useState)(null);
      const handleModalConfirm = () => {
        if (networkToDelete) {
          dispatch(removeCustomChain(networkToDelete.chainID));
          setShowConfirmDelete(false);
          setNetworkToDelete(null);
        }
      };
      const handleModalCancel = () => {
        setShowConfirmDelete(false);
        setNetworkToDelete(null);
      };
      return react.createElement("div", {
        className: "jsx-4028807278" + " " + "standard_width_padded wrapper"
      }, react.createElement(SharedSlideUpMenu, {
        isOpen: showConfirmDelete,
        close: () => handleModalCancel(),
        size: "custom",
        customSize: "228px"
      }, react.createElement("div", {
        className: "jsx-4028807278" + " " + "confirm_menu"
      }, react.createElement("h3", {
        className: "jsx-4028807278"
      }, t("deleteModal.title")), react.createElement("p", {
        className: "jsx-4028807278" + " " + "confirm_menu_description"
      }, react.createElement(Trans, {
        t,
        i18nKey: "deleteModal.desc",
        components: {
          name: react.createElement("span", {
            title: networkToDelete?.name,
            className: "jsx-4028807278" + " " + "confirm_menu_network_name"
          })
        },
        values: {
          name: networkToDelete?.name
        }
      })), react.createElement("div", {
        className: "jsx-4028807278" + " " + "confirm_menu_actions"
      }, react.createElement(SharedButton, {
        size: "medium",
        type: "secondary",
        onClick: handleModalCancel
      }, sharedT("shared.cancelBtn")), react.createElement(SharedButton, {
        size: "medium",
        type: "primary",
        onClick: handleModalConfirm
      }, t("deleteModal.confirm"))))), react.createElement(style_default(), {
        id: "1024477350"
      }, ".confirm_menu.jsx-4028807278{padding:0 26px 24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;height:100%;box-sizing:border-box;}.confirm_menu.jsx-4028807278 h3.jsx-4028807278{margin:0;font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;}.confirm_menu_description.jsx-4028807278{font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;margin:0;color:var(--c-text-tertiary);-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.confirm_menu_actions.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-top:-20px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.confirm_menu_network_name.jsx-4028807278{color:var(--c-text);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsCustomNetworks.tsx */"), react.createElement(SharedPageHeader, {
        withoutBackText: true
      }, t("title")), customNetworksListItems.length > 0 && react.createElement("section", {
        className: "jsx-4028807278" + " " + "content"
      }, react.createElement("h2", {
        className: "jsx-4028807278" + " " + "subheader"
      }, t("subtitleAdded")), react.createElement("ul", {
        className: "jsx-4028807278" + " " + "custom_networks_list"
      }, customNetworksListItems.map(((item, index) => {
        if (item === "spacer") {
          return react.createElement("li", {
            role: "presentation",
            key: `spacer-${index.toString()}`,
            className: "jsx-4028807278" + " " + "spacer"
          });
        }
        return react.createElement("li", {
          key: item.chainID,
          className: "jsx-4028807278" + " " + "custom_network_item"
        }, react.createElement(SharedNetworkIcon, {
          size: 42,
          network: item
        }), react.createElement("div", {
          className: "jsx-4028807278" + " " + "network_label"
        }, react.createElement("span", {
          title: item.name,
          className: "jsx-4028807278" + " " + "network_name"
        }, item.name), react.createElement("span", {
          className: "jsx-4028807278" + " " + "network_type"
        }, t("networksList.typeCustom"))), react.createElement("div", {
          className: "jsx-4028807278" + " " + "actions"
        }, react.createElement(SharedIcon, {
          width: 16,
          onClick: () => {
            setShowConfirmDelete(true);
            setNetworkToDelete(item);
          },
          icon: "icons/s/garbage.svg",
          color: "var(--c-text-tertiary)",
          hoverColor: "var(--c-error)"
        })));
      })))), react.createElement("section", {
        className: "jsx-4028807278" + " " + "content"
      }, react.createElement("h2", {
        className: "jsx-4028807278" + " " + "subheader"
      }, t("subtitleAddMore")), react.createElement("div", {
        className: "jsx-4028807278" + " " + "chain_add_options"
      }, react.createElement("div", {
        className: "jsx-4028807278" + " " + "custom_rpc_wrap"
      }, react.createElement("span", {
        className: "jsx-4028807278" + " " + "simple_text"
      }, t("customRPC.description")), react.createElement(SharedButton, {
        type: "tertiary",
        size: "medium",
        iconSmall: "new-tab",
        onClick: () => {}
      }, t("customRPC.addBtn"))))), react.createElement(style_default(), {
        id: "2182894273"
      }, '.wrapper.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:32px;}.spacer.jsx-4028807278{width:100%;border:0.5px solid var(--c-bg-alt);}.subheader.jsx-4028807278{font-family:Segment;font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;color:var(--c-text-secondary);margin:0;}.custom_networks_list.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.custom_network_item.jsx-4028807278 .actions.jsx-4028807278{margin-left:auto;}.custom_network_item.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:12px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.network_label.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.network_name.jsx-4028807278{font-family:Segment;font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;color:var(--c-text);overflow-x:hidden;text-overflow:ellipsis;white-space:pre;max-width:200px;}.network_type.jsx-4028807278{font-family:Segment;font-size:16px;font-weight:400;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;color:var(--c-text-tertiary);}.content.jsx-4028807278{padding:0 24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}.chain_list_wrap.jsx-4028807278{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.chain_add_options.jsx-4028807278{gap:32px;}.separator.jsx-4028807278{border:none;border-top:1px solid var(--c-bg);margin:32px 0;}.icon.jsx-4028807278{background:url("./images/chain_list.svg") center no-repeat;width:132px;height:32px;}.custom_rpc_wrap.jsx-4028807278{padding-bottom:32px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsCustomNetworks.tsx */'));
    }
    function NewCustomNetworkRequest() {
      const parsedQueryString = new URLSearchParams(window.location.search);
      const {requestId} = Object.fromEntries(parsedQueryString.entries());
      const [networkDetails, setNetworkDetails] = (0, react.useState)(null);
      const {t} = useTranslation();
      const dispatch = useBackgroundDispatch();
      (0, react.useEffect)((() => {
        dispatch(getAddNetworkRequestDetails(requestId)).then((chainDetails => setNetworkDetails(chainDetails)));
      }), [ dispatch, requestId ]);
      const allNetworks = useBackgroundSelector(selectQEVMNetworks);
      if (!networkDetails) {
        return null;
      }
      const existingNetwork = allNetworks.find((network => network.chainID === networkDetails.chainId));
      const {chainId: chainID, chainName, nativeCurrency, iconUrl, rpcUrls, blockExplorerUrl, favicon, siteTitle} = networkDetails;
      function handleUserResponse(success) {
        dispatch(addNetworkUserResponse([ requestId, success ])).then((() => window.close()));
      }
      return react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "standard_width"
      }, react.createElement(style_default(), {
        id: "338436001"
      }, "main{background-color:var(--c-bg) !important;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/NewCustomNetworkRequest.tsx */"), react.createElement("form", {
        action: "#",
        onSubmit: e => {
          e.preventDefault();
          handleUserResponse(true);
        },
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, react.createElement("header", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, react.createElement("h1", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, react.createElement("img", {
        style: {
          objectFit: "contain",
          objectPosition: "center"
        },
        height: 24,
        width: 24,
        alt: siteTitle,
        src: favicon,
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }), siteTitle), react.createElement("p", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.subtitle"))), react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "details_container"
      }, react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "add_chain_imgs"
      }, react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "new_chain_logo_wrapper"
      }, iconUrl ? react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "new_chain_logo"
      }) : react.createElement(SharedNetworkIcon, {
        size: 50,
        network: existingNetwork || {
          name: chainName,
          chainID,
          family: "QEVM",
          baseAsset: {
            ...nativeCurrency,
            chainID
          }
        }
      })), react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "plus_wrapper"
      }, react.createElement(SharedIcon, {
        width: 14,
        height: 14,
        color: "var(--c-accent)",
        style: {
          margin: 2
        },
        icon: "plus@2x.png"
      })), react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "qwal_logo"
      })), react.createElement("dl", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "chain_details"
      }, existingNetwork ? react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "network_exists_warning"
      }, react.createElement("p", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.warnAlreadyExistsHeader")), react.createElement("span", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.warnAlreadyExistsBody"))) : react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "chain_info"
      }, react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "row"
      }, react.createElement("dt", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.name")), react.createElement("dd", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, chainName)), react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "row"
      }, react.createElement("dt", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.chainId")), react.createElement("dd", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, chainID)), react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "row"
      }, react.createElement("dt", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.currency")), react.createElement("dd", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, nativeCurrency.symbol)), react.createElement("dt", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.rpc")), react.createElement("dd", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "rpc_url"
      }, rpcUrls[0]), react.createElement("dt", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, t("addNewChain.explorer")), react.createElement("dd", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, blockExplorerUrl)))), react.createElement("footer", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ])
      }, existingNetwork ? react.createElement("div", {
        className: "jsx-338436001 " + style_default().dynamic([ [ "379252870", [ iconUrl ] ] ]) + " " + "center_horizontal"
      }, react.createElement(SharedButton, {
        size: "large",
        type: "primary",
        isFormSubmit: true
      }, t("shared.close"))) : react.createElement(react.Fragment, null, react.createElement(SharedButton, {
        size: "large",
        type: "secondary",
        onClick: () => handleUserResponse(false)
      }, t("addNewChain.cancel")), react.createElement(SharedButton, {
        id: "addNewChain",
        size: "large",
        type: "primary",
        isFormSubmit: true
      }, t("addNewChain.submit"))))), react.createElement(style_default(), {
        id: "379252870",
        dynamic: [ iconUrl ]
      }, `.network_exists_warning.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}.network_exists_warning.__jsx-style-dynamic-selector span.__jsx-style-dynamic-selector{font-family:Segment;font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;display:block;color:var(--c-text-tertiary);}.network_exists_warning.__jsx-style-dynamic-selector p.__jsx-style-dynamic-selector{font-family:Segment;font-size:22px;font-weight:500;line-height:32px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;margin:0;}.add_chain_imgs.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:24px;border-bottom:1px solid var(--c-text);max-width:calc(100% - 44px);margin:0 auto;}.new_chain_logo_wrapper.__jsx-style-dynamic-selector{width:50px;height:50px;border-radius:8px;overflow:hidden;}.new_chain_logo.__jsx-style-dynamic-selector{width:56px;height:56px;border-radius:8px;background:url("${iconUrl}") center / contain no-repeat;}.qwal_logo.__jsx-style-dynamic-selector{background:url("./images/wallet-svgrepo-com.svg") center / 65px no-repeat;height:56px;width:56px;border-radius:16px;}.plus_wrapper.__jsx-style-dynamic-selector{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;position:relative;border:4px solid var(--c-bg-alt);border-radius:50%;background-color:var(--c-bg);padding:4px;margin-right:-4px;margin-left:-4px;z-index:1;}form.__jsx-style-dynamic-selector{padding-top:20px;}header.__jsx-style-dynamic-selector{margin:14px 0 34px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}header.__jsx-style-dynamic-selector h1.__jsx-style-dynamic-selector{margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-family:Segment;font-size:18px;font-weight:600;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;gap:6px;}header.__jsx-style-dynamic-selector p.__jsx-style-dynamic-selector{font-family:Segment;font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;margin:0;}.details_container.__jsx-style-dynamic-selector{background:var(--c-bg-alt);border-radius:16px;padding:24px 0;margin-bottom:16px;}.chain_details.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;margin:24px 0 0;}.chain_info.__jsx-style-dynamic-selector{padding:0 24px;}.row.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}dt.__jsx-style-dynamic-selector,dd.__jsx-style-dynamic-selector{margin:0;}dt.__jsx-style-dynamic-selector{color:var(--c-text-tertiary);font-family:Segment;font-size:14px;font-weight:500;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;text-align:left;}dd.__jsx-style-dynamic-selector{color:var(--c-text);font-family:Segment;font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;}.row.__jsx-style-dynamic-selector dd.__jsx-style-dynamic-selector{text-align:right;}.rpc_url.__jsx-style-dynamic-selector{word-break:break-all;}footer.__jsx-style-dynamic-selector{padding-top:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/NewCustomNetworkRequest.tsx */`));
    }
    function SharedLink({text, children, url, styles = {}, type = "link"}) {
      return react.createElement("a", {
        style: styles,
        href: url,
        target: "_blank",
        rel: "noreferrer",
        className: "jsx-4030726218" + " " + (classnames_default()("link", {
          button: type === "button",
          tooltip: type === "tooltip"
        }) || "")
      }, text ?? children, react.createElement(style_default(), {
        id: "4030726218"
      }, ".link.jsx-4030726218{color:var(--link-color,var(--c-accent));}.link.jsx-4030726218:hover{color:var(--hover-color,var(--c-accent-wash));}.button.jsx-4030726218{padding:4px;display:inline-block;}.link.tooltip.jsx-4030726218{-webkit-text-decoration:underline;text-decoration:underline;color:var(--c-bg);padding:0px;}.link.tooltip.jsx-4030726218:hover{color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkTGluay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEJrQixBQUdvRCxBQUdNLEFBR25DLEFBSWMsQUFLRyxZQVJSLGlCQVN2QixJQVJBLE9BUEEsTUFHQSxjQU9vQixrQkFDTixZQUNkIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkTGluay50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcblxudHlwZSBQcm9wcyA9IHtcbiAgdXJsOiBzdHJpbmdcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgdGV4dD86IHN0cmluZ1xuICB0eXBlPzogXCJsaW5rXCIgfCBcImJ1dHRvblwiIHwgXCJ0b29sdGlwXCJcbiAgc3R5bGVzPzogUmVhY3QuQ1NTUHJvcGVydGllcyAmIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVkTGluayh7XG4gIHRleHQsXG4gIGNoaWxkcmVuLFxuICB1cmwsXG4gIHN0eWxlcyA9IHt9LFxuICB0eXBlID0gXCJsaW5rXCIsXG59OiBQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIHN0eWxlPXtzdHlsZXN9XG4gICAgICBocmVmPXt1cmx9XG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaW5rXCIsIHtcbiAgICAgICAgYnV0dG9uOiB0eXBlID09PSBcImJ1dHRvblwiLFxuICAgICAgICB0b29sdGlwOiB0eXBlID09PSBcInRvb2x0aXBcIixcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIHt0ZXh0ID8/IGNoaWxkcmVufVxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAubGluayB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IsIHZhcigtLWMtYWNjZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgLmxpbms6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ob3Zlci1jb2xvciwgdmFyKC0tYy1hY2NlbnQtd2FzaCkpO1xuICAgICAgICB9XG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLmxpbmsudG9vbHRpcCB7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtYmcpO1xuICAgICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgfVxuICAgICAgICAubGluay50b29sdGlwOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXRlcnRpYXJ5KTtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvYT5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedLink.tsx */"));
    }
    const SettingsAddCustomAsset_MAX_SYMBOL_LENGTH = 10;
    const HELPDESK_CUSTOM_TOKENS_LINK = "https://quantumevm.com/start/";
    function PlaceholderIcon() {
      return react.createElement("div", {
        className: "jsx-2646128616"
      }, react.createElement("i", {
        className: "jsx-2646128616"
      }), react.createElement(style_default(), {
        id: "2646128616"
      }, 'i.jsx-2646128616{-webkit-mask-image:url("/images/placeholder.svg");mask-image:url("/images/placeholder.svg");-webkit-mask-size:cover;mask-size:cover;display:block;width:24px;height:24px;background-color:var(--c-text-secondary);}div.jsx-2646128616{border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--c-border);width:40px;color:var(--c-text-secondary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsAddCustomAsset.tsx */'));
    }
    function SettingsAddCustomAsset() {
      const {t} = useTranslation("translation", {
        keyPrefix: "settings.addCustomAssetSettings"
      });
      const {t: sharedT} = useTranslation("translation");
      const history = useHistory();
      const [{isLoadingAssetDetails, hasAssetDetailLoadError, assetData}, setState] = useSetState({
        isLoadingAssetDetails: false,
        hasAssetDetailLoadError: false,
        assetData: null
      });
      const [tokenAddress, setTokenAddress] = (0, react.useState)("");
      const dispatch = useBackgroundDispatch();
      const currentNetwork = useBackgroundSelector(selectCurrentNetwork);
      const allNetworks = useBackgroundSelector(selectQEVMNetworks);
      const showTestNetworks = useBackgroundSelector(selectShowTestNetworks);
      const mainCurrencySign = useBackgroundSelector(selectMainCurrencySign);
      const networks = allNetworks.filter((network => !TEST_NETWORK_BY_CHAIN_ID.has(network.chainID) || showTestNetworks && TEST_NETWORK_BY_CHAIN_ID.has(network.chainID)));
      const [chosenNetwork, setChosenNetwork] = (0, react.useState)(currentNetwork);
      const [isNetworkSelectOpen, setNetworkSelectOpen] = (0, react.useState)(false);
      const [isImportingToken, setIsImportingToken] = (0, react.useState)(false);
      const requestIdRef = (0, react.useRef)(0);
      const handleTokenInfoChange = async (addressLike, network) => {
        requestIdRef.current += 1;
        const callId = requestIdRef.current;
        const contractAddress = addressLike.trim();
        if (contractAddress.length < 1) {
          setState({
            isLoadingAssetDetails: false,
            assetData: null,
            hasAssetDetailLoadError: false
          });
          return;
        }
        if (!isProbablyQEVMAddress(contractAddress)) {
          setState({
            isLoadingAssetDetails: false,
            assetData: null,
            hasAssetDetailLoadError: true
          });
          return;
        }
        const details = await dispatch(checkTokenContractDetails({
          contractAddress: normalizeQEVMAddress(contractAddress),
          network
        }));
        if (requestIdRef.current === callId) {
          setState({
            isLoadingAssetDetails: false,
            assetData: details,
            hasAssetDetailLoadError: details === null
          });
        }
      };
      const handleFormSubmit = async event => {
        event.preventDefault();
        if (!assetData) {
          return;
        }
        setIsImportingToken(true);
        const {success} = await dispatch(importCustomToken({
          asset: assetData.asset
        }));
        if (success) {
          await dispatch(setSnackbarMessage(t("snackbar.success")));
          setIsImportingToken(false);
          history.push("/");
        } else {
          await dispatch(setSnackbarMessage(t("snackbar.failed")));
          setIsImportingToken(false);
        }
      };
      const hideDustEnabled = useBackgroundSelector(selectHideDust);
      const showWarningAboutDust = hideDustEnabled && assetData?.mainCurrencyAmount !== 0 && assetData?.mainCurrencyAmount !== undefined && assetData?.mainCurrencyAmount < userValueDustThreshold;
      const warningOptions = {
        amount: userValueDustThreshold,
        sign: mainCurrencySign
      };
      const renderWarningText = () => {
        if (showWarningAboutDust) {
          return t("warning.alreadyExists.desc.dust", {
            ...warningOptions,
            settings: sharedT("settings.hideSmallAssetBalance", warningOptions)
          });
        }
        if (assetData?.mainCurrencyAmount === 0) {
          return t("warning.alreadyExists.desc.noBalance", warningOptions);
        }
        return t("warning.alreadyExists.desc.visibility");
      };
      const isTrusted = assetData?.asset && isTrustedAsset(assetData.asset);
      const shouldDisplayAsset = assetData?.exists && isTrusted;
      return react.createElement("div", {
        className: "jsx-2909445178" + " " + "standard_width_padded wrapper"
      }, react.createElement(SharedPageHeader, {
        withoutBackText: true
      }, t("title")), react.createElement(style_default(), {
        id: "3565069281"
      }, ".tooltip_wrap.jsx-2909445178{position:absolute;top:16px;right:16px;}.input_container.jsx-2909445178{position:relative;--input-padding:0 32px 0 16px;}.network_select.jsx-2909445178 ul.jsx-2909445178{overflow-y:auto;max-height:460px;}.network_select.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;padding:0 16px;}.network_select_title.jsx-2909445178{font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsAddCustomAsset.tsx */"), react.createElement(SharedSlideUpMenu, {
        isOpen: isNetworkSelectOpen,
        isScrollable: true,
        style: {
          display: "flex",
          flexDirection: "column"
        },
        close: () => setNetworkSelectOpen(false)
      }, react.createElement("div", {
        className: "jsx-2909445178" + " " + "network_select"
      }, react.createElement("div", {
        className: "jsx-2909445178" + " " + "network_select_title"
      }, t("networkSelect.title")), react.createElement("ul", {
        className: "jsx-2909445178"
      }, networks.map((network => react.createElement(TopMenuProtocolListItem, {
        key: network.chainID,
        network,
        isSelected: chosenNetwork.chainID === network.chainID,
        onSelect: selectedNetwork => {
          setChosenNetwork(selectedNetwork);
          setNetworkSelectOpen(false);
          handleTokenInfoChange(tokenAddress, selectedNetwork);
        },
        showSelectedText: false,
        info: productionNetworkInfo[network.chainID] || sharedT("protocol.compatibleChain")
      })))))), react.createElement(style_default(), {
        id: "4039103890"
      }, ".network_select_input.jsx-2909445178:hover{--icon-color:var(--c-text);}.network_select_input.jsx-2909445178{border:2px solid var(--c-border);border-radius:4px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:8px 16px;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsAddCustomAsset.tsx */"), react.createElement("form", {
        onSubmit: handleFormSubmit,
        className: "jsx-2909445178"
      }, react.createElement("div", {
        role: "button",
        onClick: () => setNetworkSelectOpen(true),
        onKeyUp: () => setNetworkSelectOpen(true),
        tabIndex: -1,
        className: "jsx-2909445178" + " " + "network_select_input"
      }, react.createElement(SharedNetworkIcon, {
        network: chosenNetwork,
        size: 16
      }), react.createElement("span", {
        className: "jsx-2909445178"
      }, chosenNetwork.name), react.createElement(SharedIcon, {
        width: 16,
        height: 8,
        icon: "chevron_down.svg",
        color: "var(--icon-color, var(--c-text))",
        style: {
          marginLeft: "auto"
        }
      })), react.createElement("div", {
        className: "jsx-2909445178" + " " + "input_container"
      }, react.createElement(SharedInput, {
        label: t("input.contractAddress.label"),
        errorMessage: hasAssetDetailLoadError ? t("error.invalidToken") : "",
        onChange: addressLike => {
          setTokenAddress(addressLike);
          handleTokenInfoChange(addressLike, chosenNetwork);
        }
      }), react.createElement("div", {
        className: "jsx-2909445178" + " " + "tooltip_wrap"
      }, react.createElement(SharedTooltip, {
        width: 219,
        horizontalShift: 100,
        style: {
          "--tooltip-icon-color": "var(--c-text-secondary)"
        }
      }, react.createElement(Trans, {
        t,
        i18nKey: "input.tooltip",
        components: {
          url: react.createElement(SharedLink, {
            type: "tooltip",
            url: HELPDESK_CUSTOM_TOKENS_LINK
          })
        }
      })))), react.createElement("div", {
        className: "jsx-2909445178" + " " + "form_controls"
      }, react.createElement("div", {
        className: "jsx-2909445178" + " " + "token_details_container"
      }, assetData && !isLoadingAssetDetails ? react.createElement(SharedAssetIcon, {
        size: 40,
        logoURL: assetData?.asset.metadata?.logoURL,
        symbol: assetData.asset.symbol
      }) : react.createElement(PlaceholderIcon, null), react.createElement("div", {
        className: "jsx-2909445178" + " " + "token_details"
      }, react.createElement("div", {
        className: "jsx-2909445178" + " " + "balance"
      }, react.createElement("strong", {
        title: String(assetData?.balance),
        className: "jsx-2909445178"
      }, assetData?.balance ?? t("asset.label.balance")), react.createElement("span", {
        className: "jsx-2909445178" + " " + "symbol"
      }, assetData?.asset?.symbol ? trimWithEllipsis(assetData.asset.symbol, SettingsAddCustomAsset_MAX_SYMBOL_LENGTH) : t("asset.label.symbol"))), react.createElement("span", {
        className: "jsx-2909445178" + " " + "network_name"
      }, chosenNetwork.name))), react.createElement(SharedButton, {
        type: "primary",
        size: "medium",
        isFormSubmit: true,
        isDisabled: !assetData || isLoadingAssetDetails || hasAssetDetailLoadError || shouldDisplayAsset || isImportingToken,
        isLoading: isLoadingAssetDetails || isImportingToken
      }, t("submit"))), shouldDisplayAsset ? react.createElement("div", {
        className: "jsx-2909445178" + " " + "alert"
      }, react.createElement(SharedIcon, {
        color: "var(--c-success)",
        width: 24,
        style: {
          minWidth: 24
        },
        icon: "icons/m/notif-correct.svg"
      }), react.createElement("div", {
        className: "jsx-2909445178" + " " + "alert_content"
      }, react.createElement("div", {
        className: "jsx-2909445178" + " " + "title"
      }, t("warning.alreadyExists.title")), react.createElement("div", {
        className: "jsx-2909445178" + " " + "desc"
      }, renderWarningText()))) : showWarningAboutDust && react.createElement("div", {
        className: "jsx-2909445178" + " " + "alert"
      }, react.createElement(SharedIcon, {
        color: "var(--c-warning)",
        width: 24,
        style: {
          minWidth: 24
        },
        icon: "icons/m/notif-attention.svg"
      }), react.createElement("div", {
        className: "jsx-2909445178" + " " + "alert_content"
      }, react.createElement("div", {
        style: {
          color: "var(--c-warning)"
        },
        className: "jsx-2909445178" + " " + "title"
      }, t("warning.dust.title", warningOptions))))), react.createElement(style_default(), {
        id: "333288711"
      }, ".alert.jsx-2909445178{background:var(--c-bg-alt);border-radius:8px;padding:8px;padding-right:24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;}.alert.jsx-2909445178 .title.jsx-2909445178{color:var(--c-success);font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;}.alert.jsx-2909445178 .desc.jsx-2909445178{font-size:16px;font-weight:500;line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsAddCustomAsset.tsx */"), react.createElement("footer", {
        className: "jsx-2909445178"
      }, react.createElement(SharedLink, {
        text: t("footer.hint"),
        url: HELPDESK_CUSTOM_TOKENS_LINK,
        styles: {
          "--link-color": "var(--c-text-tertiary)"
        }
      })), react.createElement(style_default(), {
        id: "1087150055"
      }, "form.jsx-2909445178{all:unset;max-width:100%;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:32px;}.form_controls.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.network_name.jsx-2909445178{font-size:14px;font-weight:500;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;text-align:left;color:var(--c-text-tertiary);overflow:hidden;text-overflow:ellipsis;max-width:140px;white-space:pre;}.token_details_container.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16px;}.token_details.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.balance.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:4px;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;}.balance.jsx-2909445178 strong.jsx-2909445178{font-style:normal;font-weight:600;font-size:18px;line-height:24px;color:var(--c-text);text-overflow:ellipsis;overflow-x:hidden;white-space:pre;max-width:100px;}.symbol.jsx-2909445178{font-style:normal;font-weight:500;font-size:14px;line-height:16px;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;}.wrapper.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:32px;height:100%;margin-bottom:24px;}footer.jsx-2909445178{margin-top:auto;font-style:normal;font-weight:500;font-size:16px;line-height:24px;}.content.jsx-2909445178{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:32px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Settings/SettingsAddCustomAsset.tsx */"));
    }
    const pageList = [ {
      path: "/internal-signer/set-password",
      Component: InternalSignerSetPassword,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/internal-signer/unlock",
      Component: InternalSignerUnlock,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/singleAsset",
      Component: SingleAsset,
      hasTabBar: true,
      hasTopBar: true,
      persistOnClose: true
    }, {
      path: "/sign-transaction",
      Component: SignTransaction,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/add-evm-chain",
      Component: NewCustomNetworkRequest,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/sign-data",
      Component: SignData,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/personal-sign",
      Component: PersonalSignData,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/portfolio",
      Component: Overview,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/settings/export-logs",
      Component: SettingsExportLogs,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/settings/connected-websites",
      Component: SettingsConnectedWebsites,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/settings/custom-networks",
      Component: SettingsCustomNetworks,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/settings/add-custom-asset",
      Component: SettingsAddCustomAsset,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/settings",
      Component: Settings,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/abilities",
      Component: Abilities,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/send",
      Component: Send,
      hasTabBar: true,
      hasTopBar: true,
      persistOnClose: true
    }, {
      path: "/nfts",
      Component: NFTs,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: true
    }, {
      path: "/dapp-permission",
      Component: DAppConnectRequest,
      hasTabBar: false,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/dev/feature-flags",
      Component: FeatureFlagsPanel,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/dev",
      Component: HiddenDevPanel,
      hasTabBar: true,
      hasTopBar: false,
      persistOnClose: false
    }, {
      path: "/",
      Component: Wallet,
      hasTabBar: true,
      hasTopBar: true,
      persistOnClose: true
    } ];
    const routes = pageList;
    const pagePreferences = Object.fromEntries(routes.map((({path, hasTabBar, hasTopBar, persistOnClose}) => [ path, {
      hasTabBar,
      hasTopBar,
      persistOnClose
    } ])));
    function transformLocation(inputLocation, isTransactionPendingSignature, hasAccounts) {
      const params = new URLSearchParams(window.location.search);
      const maybePage = params.get("page");
      let {pathname} = inputLocation;
      if (hasAccounts && isAllowedQueryParamPage(maybePage) && !inputLocation.pathname.includes("/internal-signer/")) {
        pathname = maybePage;
      }
      if (isTransactionPendingSignature) {
        pathname = "/sign-transaction";
      }
      return {
        ...inputLocation,
        pathname
      };
    }
    function useConnectPopupMonitor() {
      (0, react.useEffect)((() => {
        const port = browser_polyfill.runtime.connect(undefined, {
          name: POPUP_MONITOR_PORT_NAME
        });
        return () => {
          port.disconnect();
        };
      }), []);
    }
    function Main() {
      const dispatch = useBackgroundDispatch();
      const currentAccount = useBackgroundSelector(selectCurrentAddressNetwork);
      (0, react.useEffect)((() => {
        dispatch(userActivityEncountered(currentAccount));
      }));
      const isDappPopup = useIsDappPopup();
      const [isDirectionRight, setIsDirectionRight] = (0, react.useState)(true);
      const pendingDirectionRef = (0, react.useRef)(isDirectionRight);
      const [directionTick, setDirectionTick] = (0, react.useState)(0);
      const routeHistoryEntries = useBackgroundSelector((state => state.ui.routeHistoryEntries));
      function saveHistoryEntries(routeHistoryEntities) {
        const entries = routeHistoryEntities.reduce(((agg, entity) => {
          const {...entityCopy} = entity;
          delete entityCopy.hash;
          delete entityCopy.key;
          agg.push(entityCopy);
          return agg;
        }), []).reverse();
        if (JSON.stringify(routeHistoryEntries) !== JSON.stringify(entries)) {
          dispatch(setRouteHistoryEntries(entries));
        }
      }
      const isTransactionPendingSignature = useBackgroundSelector(selectIsTransactionPendingSignature);
      const hasAccounts = useBackgroundSelector((state => getAddressCount(state) > 0));
      useConnectPopupMonitor();
      useValidateSession();
      (0, react.useEffect)((() => {
        setIsDirectionRight(pendingDirectionRef.current);
      }), [ directionTick ]);
      return react.createElement(react.Fragment, null, react.createElement(MemoryRouter, {
        initialEntries: routeHistoryEntries
      }, react.createElement(Route, {
        render: routeProps => {
          const transformedLocation = transformLocation(routeProps.location, isTransactionPendingSignature, hasAccounts);
          const normalizedPathname = pagePreferences[transformedLocation.pathname] ? transformedLocation.pathname : "/";
          if (pagePreferences[normalizedPathname]?.persistOnClose === true && routeProps.history.action === "PUSH") {
            saveHistoryEntries(routeProps.history.entries);
          }
          setAnimationConditions(routeProps, (next => {
            if (pendingDirectionRef.current !== next) {
              pendingDirectionRef.current = next;
              queueMicrotask((() => setDirectionTick((t => t + 1))));
            }
          }));
          return react.createElement(esm_TransitionGroup, null, react.createElement(esm_CSSTransition, {
            timeout: 300,
            classNames: "page-transition",
            key: routeProps.location.pathname.includes("onboarding") || routeProps.location.pathname.includes("internal-signer") ? "" : transformedLocation.key
          }, react.createElement("div", {
            className: style_default().dynamic([ [ "949165496", [ animationStyles(isDirectionRight), isDappPopup && `\n            body {\n              height: 100%;\n            }\n           ` ] ] ])
          }, react.createElement(Switch, {
            location: transformedLocation
          }, routes.map((({path, Component, hasTopBar, hasTabBar}) => react.createElement(Route, {
            path,
            key: path
          }, react.createElement(CorePage, {
            hasTopBar,
            hasTabBar
          }, react.createElement(react_error_boundary_umd.ErrorBoundary, {
            FallbackComponent: ErrorFallback
          }, react.createElement(Component, {
            location: transformedLocation,
            className: style_default().dynamic([ [ "949165496", [ animationStyles(isDirectionRight), isDappPopup && `\n            body {\n              height: 100%;\n            }\n           ` ] ] ])
          }))))))))));
        }
      })), react.createElement(style_default(), {
        id: "949165496",
        dynamic: [ animationStyles(isDirectionRight), isDappPopup && `\n            body {\n              height: 100%;\n            }\n           ` ]
      }, `{${isDappPopup && `\n            body {\n              height: 100%;\n            }\n           `};}::-webkit-scrollbar{width:0px;background:transparent;}${animationStyles(isDirectionRight)} .hide{opacity:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Popup.tsx */`));
    }
    function Popup({store}) {
      return react.createElement(components_Provider, {
        store
      }, react.createElement(Main, null));
    }
    var _JSXStyle;
    var BrowserTabContainer_React;
    function BrowserTabContainer({children}) {
      return BrowserTabContainer_React.createElement(BrowserTabContainer_React.Fragment, null, BrowserTabContainer_React.createElement("div", {
        className: "jsx-1471231782" + " " + "container"
      }, BrowserTabContainer_React.createElement("div", {
        className: "jsx-1471231782" + " " + "wrapper"
      }, children)), BrowserTabContainer_React.createElement(_JSXStyle, {
        id: "1471231782"
      }, ".container.jsx-1471231782{height:100%;background:var(--c-bg);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.wrapper.jsx-1471231782{height:100%;width:100%;position:relative;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ccm93c2VyVGFiL0Jyb3dzZXJUYWJDb250YWluZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFrQixBQUd1QixBQVFBLFlBUFcsQUFRWixXQUNPLFlBUkwsTUFTZixvRUFSd0IsOEVBQ0gsNkZBQ3JCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9Ccm93c2VyVGFiL0Jyb3dzZXJUYWJDb250YWluZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5cbmZ1bmN0aW9uIEJyb3dzZXJUYWJDb250YWluZXIoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSk6IFJlYWN0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid3JhcHBlclwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnKTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC53cmFwcGVyIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQnJvd3NlclRhYkNvbnRhaW5lclxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/BrowserTab/BrowserTabContainer.tsx */"));
    }
    const BrowserTab_BrowserTabContainer = null && BrowserTabContainer;
    var OnboardingTip_JSXStyle;
    var OnboardingTip_React;
    function OnboardingTip({children}) {
      return OnboardingTip_React.createElement("div", {
        className: "jsx-2121947597" + " " + "tip-container"
      }, OnboardingTip_React.createElement("div", {
        className: "jsx-2121947597" + " " + "tip-content"
      }, OnboardingTip_React.createElement("span", {
        className: "jsx-2121947597" + " " + "tip-icon"
      }, "i"), OnboardingTip_React.createElement("q", {
        className: "jsx-2121947597"
      }, children)), OnboardingTip_React.createElement(OnboardingTip_JSXStyle, {
        id: "2121947597"
      }, ".tip-container.jsx-2121947597{max-width:420px;margin:8px auto 0;}.tip-content.jsx-2121947597{background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;padding:14px 16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;}.tip-icon.jsx-2121947597{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--c-bg-inset);color:var(--c-accent);font-size:14px;font-weight:700;font-style:italic;font-family:serif;}q.jsx-2121947597{font-size:14px;font-weight:500;line-height:20px;color:var(--c-text-secondary);text-align:left;-webkit-flex:1;-ms-flex:1;flex:1;}q.jsx-2121947597::before,q.jsx-2121947597::after{content:none;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvT25ib2FyZGluZ1RpcC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY1MsQUFHNkIsQUFLVyxBQVViLEFBZ0JDLEFBVUYsYUFDZixFQVZrQixDQS9CRSxXQUtzQixJQTJCdkIsR0EvQm5CLGNBZ0NnQyxRQWxCakIsV0FUSyxXQTRCRixPQTNCRSxTQTRCWCxTQTNCTSx3QkE0QmYsR0FwQnFCLCtDQVBBLDhDQVFJLCtDQVBkLFNBQ1gsMkNBT2EsV0FDQyxZQUNNLGtCQUNXLDZCQUNQLHNCQUNQLGVBQ0MsZ0JBQ0Usa0JBQ0Esa0JBQ3BCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvT25ib2FyZGluZ1RpcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT25ib2FyZGluZ1RpcCh7XG4gIGNoaWxkcmVuLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KTogSlNYLkVsZW1lbnQge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGlwLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXAtY29udGVudFwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aXAtaWNvblwiPmk8L3NwYW4+XG4gICAgICAgIDxxPntjaGlsZHJlbn08L3E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdHlsZSBqc3g+XG4gICAgICAgIHtgXG4gICAgICAgICAgLnRpcC1jb250YWluZXIge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0MjBweDtcbiAgICAgICAgICAgIG1hcmdpbjogOHB4IGF1dG8gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAudGlwLWNvbnRlbnQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYy1iZy1hbHQpO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXItYWNjZW50KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC50aXAtaWNvbiB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWMtYmctaW5zZXQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWMtYWNjZW50KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBmb250LWZhbWlseTogc2VyaWY7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBxOjpiZWZvcmUsXG4gICAgICAgICAgcTo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/OnboardingTip.tsx */"));
    }
    var AddWalletOptions_JSXStyle;
    var AddWalletOptions_React;
    var AddWalletOptions_useMemo;
    var AddWalletOptions_useTranslation;
    var AddWalletOptions_OnboardingRoutes;
    var AddWalletOptions_intersperseWith;
    var AddWalletOptions_SharedButton;
    var AddWalletOptions_SharedIcon;
    function AddWalletRow({id, icon, url, label, onClick}) {
      return AddWalletOptions_React.createElement(AddWalletOptions_SharedButton, {
        id,
        style: {
          width: "100%"
        },
        type: "unstyled",
        size: "medium",
        linkTo: url,
        onClick
      }, AddWalletOptions_React.createElement("div", {
        className: "jsx-2076540737" + " " + "wallet_row"
      }, AddWalletOptions_React.createElement("div", {
        className: "jsx-2076540737" + " " + "icon_container"
      }, AddWalletOptions_React.createElement(AddWalletOptions_SharedIcon, {
        icon,
        width: 24,
        color: "currentColor"
      })), AddWalletOptions_React.createElement("span", {
        className: "jsx-2076540737" + " " + "label"
      }, label), AddWalletOptions_React.createElement("div", {
        className: "jsx-2076540737" + " " + "arrow_container"
      }, AddWalletOptions_React.createElement("svg", {
        width: "16",
        height: "16",
        viewBox: "0 0 20 20",
        className: "jsx-2076540737"
      }, AddWalletOptions_React.createElement("path", {
        d: "M7 4 L13 10 L7 16",
        fill: "none",
        stroke: "currentColor",
        strokeWidth: "2",
        strokeLinecap: "round",
        strokeLinejoin: "round",
        className: "jsx-2076540737"
      })))), AddWalletOptions_React.createElement(AddWalletOptions_JSXStyle, {
        id: "2076540737"
      }, ".wallet_row.jsx-2076540737{width:100%;padding:14px 16px;border-radius:8px;font-size:16px;font-weight:600;text-align:left;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;background:var(--c-bg-alt);color:var(--c-text);border:1px solid var(--c-border-accent);-webkit-transition: background-color 0.2s, border-color 0.2s;transition: background-color 0.2s, border-color 0.2s;}.wallet_row.jsx-2076540737:hover{background:var(--c-accent-a8);border-color:var(--c-accent-a30);}.icon_container.jsx-2076540737{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:40px;height:40px;border-radius:8px;background:var(--c-bg-inset);color:var(--c-accent);}.label.jsx-2076540737{-webkit-flex:1;-ms-flex:1;flex:1;font-weight:600;}.arrow_container.jsx-2076540737{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:var(--c-text-tertiary);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/AddWalletOptions.tsx */"));
    }
    function AddWalletOptions() {
      const {t} = AddWalletOptions_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet"
      });
      const optionsWithSpacer = AddWalletOptions_useMemo((() => {
        const options = [ {
          id: "importMnemonics",
          label: t("options.importMnemonics"),
          icon: "key-light.svg",
          url: AddWalletOptions_OnboardingRoutes.IMPORT_MNEMONICS,
          isAvailable: true
        } ].filter((item => item.isAvailable));
        return AddWalletOptions_intersperseWith(options, (i => `spacer-${i}`));
      }), [ t ]);
      return AddWalletOptions_React.createElement(AddWalletOptions_React.Fragment, null, optionsWithSpacer.map((option => {
        if (typeof option === "string") {
          return AddWalletOptions_React.createElement("li", {
            key: option,
            role: "presentation",
            className: "jsx-995825326" + " " + "spacer"
          });
        }
        const {id, label, icon, url} = option;
        return AddWalletOptions_React.createElement("li", {
          key: url,
          className: "jsx-995825326"
        }, AddWalletOptions_React.createElement(AddWalletRow, {
          id,
          icon,
          url,
          label
        }));
      })), AddWalletOptions_React.createElement(AddWalletOptions_JSXStyle, {
        id: "995825326"
      }, "li.jsx-995825326{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.spacer.jsx-995825326{width:100%;border:0.5px solid var(--c-bg-alt);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/AddWalletOptions.tsx */"));
    }
    var OnboardingAdditionalWallet_JSXStyle;
    var OnboardingAdditionalWallet_React;
    var OnboardingAdditionalWallet_useTranslation;
    var OnboardingAdditionalWallet_OnboardingRoutes;
    var OnboardingAdditionalWallet_AddWalletOptions;
    var OnboardingAdditionalWallet_AddWalletRow;
    function OnboardingAdditionalWallet() {
      const {t} = OnboardingAdditionalWallet_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet"
      });
      return OnboardingAdditionalWallet_React.createElement("section", {
        className: "jsx-878472503" + " " + "fade_in"
      }, OnboardingAdditionalWallet_React.createElement("header", {
        className: "jsx-878472503"
      }, OnboardingAdditionalWallet_React.createElement("div", {
        className: "jsx-878472503" + " " + "bottom_content"
      }, OnboardingAdditionalWallet_React.createElement("h1", {
        className: "jsx-878472503" + " " + "bottom_title"
      }, t("titleExisting")))), OnboardingAdditionalWallet_React.createElement("div", {
        className: "jsx-878472503" + " " + "actions_container"
      }, OnboardingAdditionalWallet_React.createElement("div", {
        className: "jsx-878472503" + " " + "list_wrapper"
      }, OnboardingAdditionalWallet_React.createElement("span", {
        className: "jsx-878472503"
      }, t("existingListTitle")), OnboardingAdditionalWallet_React.createElement("ul", {
        className: "jsx-878472503" + " " + "list_container"
      }, OnboardingAdditionalWallet_React.createElement(OnboardingAdditionalWallet_AddWalletOptions, null))), OnboardingAdditionalWallet_React.createElement("div", {
        className: "jsx-878472503" + " " + "list_wrapper"
      }, OnboardingAdditionalWallet_React.createElement("span", {
        className: "jsx-878472503"
      }, t("newWalletTitle")), OnboardingAdditionalWallet_React.createElement("ul", {
        className: "jsx-878472503" + " " + "list_container"
      }, OnboardingAdditionalWallet_React.createElement("li", {
        className: "jsx-878472503"
      }, OnboardingAdditionalWallet_React.createElement(OnboardingAdditionalWallet_AddWalletRow, {
        id: "newSeed",
        icon: "icons/m/wallet.svg",
        label: t("options.createNew"),
        url: OnboardingAdditionalWallet_OnboardingRoutes.NEW_SEED
      }))))), OnboardingAdditionalWallet_React.createElement(OnboardingAdditionalWallet_JSXStyle, {
        id: "878472503"
      }, '.list_wrapper.jsx-878472503{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;}.list_wrapper.jsx-878472503 span.jsx-878472503{font-size:13px;font-weight:500;text-align:center;color:var(--c-text-secondary);text-transform:uppercase;}.list_container.jsx-878472503{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:8px;padding:16px;gap:8px;}section.jsx-878472503{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;--fade-in-duration:300ms;}header.jsx-878472503{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:42px;}header.jsx-878472503 h1.jsx-878472503{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0;}.actions_container.jsx-878472503{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:28px;width:100%;max-width:348px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/OnboardingAdditionalWallet.tsx */'));
    }
    var AddWallet_JSXStyle;
    var AddWallet_React;
    var AddWallet_useTranslation;
    var AddWallet_OnboardingTip;
    var AddWallet_useIsOnboarding;
    var AddWallet_OnboardingAdditionalWallet;
    var AddWallet_AddWalletOptions;
    function OnboardingAddWallet() {
      const {t} = AddWallet_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet"
      });
      return AddWallet_React.createElement("section", {
        className: "jsx-2436641940" + " " + "fade_in"
      }, AddWallet_React.createElement("header", {
        className: "jsx-2436641940"
      }, AddWallet_React.createElement("div", {
        className: "jsx-2436641940" + " " + "bottom_content"
      }, AddWallet_React.createElement("h1", {
        className: "jsx-2436641940"
      }, t("title")))), AddWallet_React.createElement("div", {
        className: "jsx-2436641940" + " " + "actions_container"
      }, AddWallet_React.createElement("div", {
        className: "jsx-2436641940" + " " + "list_container"
      }, AddWallet_React.createElement(AddWallet_AddWalletOptions, null))), AddWallet_React.createElement(AddWallet_OnboardingTip, null, t("tip")), AddWallet_React.createElement(AddWallet_JSXStyle, {
        id: "2436641940"
      }, 'section.jsx-2436641940{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px;--fade-in-duration:300ms;}header.jsx-2436641940{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}header.jsx-2436641940 h1.jsx-2436641940{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0;color:var(--c-text);}.actions_container.jsx-2436641940{width:100%;max-width:400px;}.list_container.jsx-2436641940{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvQWRkV2FsbGV0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQlMsQUFHMEIsQUFRQSxBQU9PLEFBU1QsQUFLRSxXQUpHLFNBVEEsT0FVbEIsU0FUaUIsZUFDRSxpQkFDUixNQWxCYSxBQVFBLEFBcUJBLEdBVkYsb0JBQ3RCLHVEQW5CcUIsQUFRVixBQXFCRCxRQUNWLENBckJxQixvRkFSVixTQUNnQixBQVEzQix5QkFQQSIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL09uYm9hcmRpbmcvVGFiYmVkL0FkZFdhbGxldC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IE9uYm9hcmRpbmdUaXAgZnJvbSBcIi4vT25ib2FyZGluZ1RpcFwiXG5pbXBvcnQgeyB1c2VJc09uYm9hcmRpbmcgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3NcIlxuaW1wb3J0IE9uYm9hcmRpbmdBZGRpdGlvbmFsV2FsbGV0IGZyb20gXCIuL09uYm9hcmRpbmdBZGRpdGlvbmFsV2FsbGV0XCJcbmltcG9ydCBBZGRXYWxsZXRPcHRpb25zIGZyb20gXCIuL0FkZFdhbGxldE9wdGlvbnNcIlxuXG5mdW5jdGlvbiBPbmJvYXJkaW5nQWRkV2FsbGV0KCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcIm9uYm9hcmRpbmcudGFiYmVkLmFkZFdhbGxldFwiLFxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwiZmFkZV9pblwiPlxuICAgICAgPGhlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3R0b21fY29udGVudFwiPlxuICAgICAgICAgIDxoMT57dChcInRpdGxlXCIpfTwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9oZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFjdGlvbnNfY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGlzdF9jb250YWluZXJcIj5cbiAgICAgICAgICA8QWRkV2FsbGV0T3B0aW9ucyAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPE9uYm9hcmRpbmdUaXA+e3QoXCJ0aXBcIil9PC9PbmJvYXJkaW5nVGlwPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogMjRweDtcbiAgICAgICAgICAgIC0tZmFkZS1pbi1kdXJhdGlvbjogMzAwbXM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoZWFkZXIgaDEge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiR2Vpc3RcIjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jLXRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5hY3Rpb25zX2NvbnRhaW5lciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmxpc3RfY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8L3NlY3Rpb24+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQWRkV2FsbGV0KCk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgaXNPbmJvYXJkaW5nID0gdXNlSXNPbmJvYXJkaW5nKClcblxuICBpZiAoaXNPbmJvYXJkaW5nKSByZXR1cm4gPE9uYm9hcmRpbmdBZGRXYWxsZXQgLz5cblxuICByZXR1cm4gPE9uYm9hcmRpbmdBZGRpdGlvbmFsV2FsbGV0IC8+XG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/AddWallet.tsx */'));
    }
    function AddWallet() {
      const isOnboarding = AddWallet_useIsOnboarding();
      if (isOnboarding) return AddWallet_React.createElement(OnboardingAddWallet, null);
      return AddWallet_React.createElement(AddWallet_OnboardingAdditionalWallet, null);
    }
    var WalletShortcut_JSXStyle;
    var WalletShortcut_useState;
    var WalletShortcut_useEffect;
    var WalletShortcut_React;
    var WalletShortcut_useTranslation;
    var popup_browser;
    var WalletShortcut_useTheme;
    function WalletShortcut() {
      const [os, setOS] = WalletShortcut_useState("windows");
      const {t} = WalletShortcut_useTranslation("translation");
      const {isDark} = WalletShortcut_useTheme();
      WalletShortcut_useEffect((() => {
        const controller = new AbortController;
        popup_browser.runtime.getPlatformInfo().then((platformInfo => {
          if (!controller.signal.aborted) {
            setOS(platformInfo.os);
          }
        }));
        return () => controller.abort();
      }), []);
      const [tPressed, setTPressed] = WalletShortcut_useState(false);
      const [altPressed, setAltPressed] = WalletShortcut_useState(false);
      WalletShortcut_useEffect((() => {
        function downListener(e) {
          if (e.altKey || e.key === "Alt") {
            setAltPressed(true);
          }
          if (e.key === "t") {
            setTPressed(true);
          }
        }
        function upListener(e) {
          if (e.altKey || e.key === "Alt") {
            setAltPressed(false);
          }
          if (e.key === "t") {
            setTPressed(false);
          }
        }
        window.addEventListener("keydown", downListener);
        window.addEventListener("keyup", upListener);
        return () => {
          window.removeEventListener("keydown", downListener);
          window.removeEventListener("keyup", upListener);
        };
      }));
      return WalletShortcut_React.createElement("div", {
        className: WalletShortcut_JSXStyle.dynamic([ [ "2161169933", [ isDark ? "none" : "brightness(0.25)" ] ] ]) + " " + "wallet_shortcut"
      }, WalletShortcut_React.createElement("span", {
        className: WalletShortcut_JSXStyle.dynamic([ [ "2161169933", [ isDark ? "none" : "brightness(0.25)" ] ] ])
      }, t("onboarding.tabbed.walletShortcut")), WalletShortcut_React.createElement("img", {
        height: "38",
        src: os === "mac" ? `/images/mac-shortcut${altPressed ? "-option" : ""}${tPressed ? "-t" : ""}.svg` : `/images/windows-shortcut${altPressed ? "-alt" : ""}${tPressed ? "-t" : ""}.svg`,
        alt: os === "mac" ? "option + T" : "alt + T",
        className: WalletShortcut_JSXStyle.dynamic([ [ "2161169933", [ isDark ? "none" : "brightness(0.25)" ] ] ]) + " " + "indicator"
      }), WalletShortcut_React.createElement(WalletShortcut_JSXStyle, {
        id: "2161169933",
        dynamic: [ isDark ? "none" : "brightness(0.25)" ]
      }, `.wallet_shortcut.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:22px;}.wallet_shortcut.__jsx-style-dynamic-selector>span.__jsx-style-dynamic-selector{text-align:center;}.indicator.__jsx-style-dynamic-selector{-webkit-filter:${isDark ? "none" : "brightness(0.25)"};filter:${isDark ? "none" : "brightness(0.25)"};}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9PbmJvYXJkaW5nL1dhbGxldFNob3J0Y3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RWtCLEFBR3dCLEFBT0ssQUFJa0Isa0JBSHRDLHdEQVB3QixNQVd4Qix3RUFWcUIsNkZBQ1YsU0FDWCIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvT25ib2FyZGluZy9XYWxsZXRTaG9ydGN1dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCBicm93c2VyIGZyb20gXCJ3ZWJleHRlbnNpb24tcG9seWZpbGxcIlxuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGhlbWVcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXYWxsZXRTaG9ydGN1dCgpOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtvcywgc2V0T1NdID0gdXNlU3RhdGUoXCJ3aW5kb3dzXCIpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiKVxuICBjb25zdCB7IGlzRGFyayB9ID0gdXNlVGhlbWUoKVxuXG4gIC8vIEZldGNoIHRoZSBPUyB1c2luZyB0aGUgZXh0ZW5zaW9uIEFQSSB0byBkZWNpZGUgd2hhdCBzaG9ydGN1dCB0byBzaG93XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgYnJvd3Nlci5ydW50aW1lLmdldFBsYXRmb3JtSW5mbygpLnRoZW4oKHBsYXRmb3JtSW5mbykgPT4ge1xuICAgICAgaWYgKCFjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHNldE9TKHBsYXRmb3JtSW5mby5vcylcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKVxuICB9LCBbXSlcblxuICAvLyBzdGF0ZSBmb3IgYWx0LCB0LCBhbmQgb3B0aW9uIGtleSBzdGF0dXNcbiAgY29uc3QgW3RQcmVzc2VkLCBzZXRUUHJlc3NlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2FsdFByZXNzZWQsIHNldEFsdFByZXNzZWRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gYWRkIGtleWRvd24vdXAgbGlzdGVuZXJzIGZvciBvdXIgc2hvcnRjdXQgY29kZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGRvd25MaXN0ZW5lcihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoZS5hbHRLZXkgfHwgZS5rZXkgPT09IFwiQWx0XCIpIHtcbiAgICAgICAgc2V0QWx0UHJlc3NlZCh0cnVlKVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSBcInRcIikge1xuICAgICAgICBzZXRUUHJlc3NlZCh0cnVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwTGlzdGVuZXIoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgaWYgKGUuYWx0S2V5IHx8IGUua2V5ID09PSBcIkFsdFwiKSB7XG4gICAgICAgIHNldEFsdFByZXNzZWQoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09IFwidFwiKSB7XG4gICAgICAgIHNldFRQcmVzc2VkKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBkb3duTGlzdGVuZXIpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCB1cExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBkb3duTGlzdGVuZXIpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHVwTGlzdGVuZXIpXG4gICAgfVxuICB9KVxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2FsbGV0X3Nob3J0Y3V0XCI+XG4gICAgICA8c3Bhbj57dChcIm9uYm9hcmRpbmcudGFiYmVkLndhbGxldFNob3J0Y3V0XCIpfTwvc3Bhbj5cbiAgICAgIDxpbWdcbiAgICAgICAgaGVpZ2h0PVwiMzhcIlxuICAgICAgICBjbGFzc05hbWU9XCJpbmRpY2F0b3JcIlxuICAgICAgICBzcmM9e1xuICAgICAgICAgIG9zID09PSBcIm1hY1wiXG4gICAgICAgICAgICA/IGAvaW1hZ2VzL21hYy1zaG9ydGN1dCR7YWx0UHJlc3NlZCA/IFwiLW9wdGlvblwiIDogXCJcIn0ke1xuICAgICAgICAgICAgICAgIHRQcmVzc2VkID8gXCItdFwiIDogXCJcIlxuICAgICAgICAgICAgICB9LnN2Z2BcbiAgICAgICAgICAgIDogYC9pbWFnZXMvd2luZG93cy1zaG9ydGN1dCR7YWx0UHJlc3NlZCA/IFwiLWFsdFwiIDogXCJcIn0ke1xuICAgICAgICAgICAgICAgIHRQcmVzc2VkID8gXCItdFwiIDogXCJcIlxuICAgICAgICAgICAgICB9LnN2Z2BcbiAgICAgICAgfVxuICAgICAgICBhbHQ9e29zID09PSBcIm1hY1wiID8gXCJvcHRpb24gKyBUXCIgOiBcImFsdCArIFRcIn1cbiAgICAgIC8+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC53YWxsZXRfc2hvcnRjdXQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMjJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC53YWxsZXRfc2hvcnRjdXQgPiBzcGFuIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaW5kaWNhdG9yIHtcbiAgICAgICAgICBmaWx0ZXI6ICR7aXNEYXJrID8gXCJub25lXCIgOiBcImJyaWdodG5lc3MoMC4yNSlcIn07XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Onboarding/WalletShortcut.tsx */`));
    }
    var Done_JSXStyle;
    var Done_getAllAddresses;
    var Done_React;
    var Done_useTranslation;
    var Done_WalletShortcut;
    var Done_useBackgroundSelector;
    const Done_styles = new String("section.jsx-561817461{text-align:center;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:40px 24px;box-sizing:border-box;--fade-in-duration:300ms;}header.jsx-561817461{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}header.jsx-561817461 div.jsx-561817461{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}header.jsx-561817461 h1.jsx-561817461{font-weight:500;font-size:36px;line-height:42px;margin:0;color:var(--c-text);}header.jsx-561817461 span.jsx-561817461{font-size:16px;font-weight:500;line-height:24px;color:var(--c-text-secondary);}header.jsx-561817461 img.jsx-561817461{border-radius:22px;}.wrapper.jsx-561817461{background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;padding:48px 40px;max-width:480px;width:100%;}.shortcut_container.jsx-561817461{background:var(--c-bg-alt);border:1px solid var(--c-border-accent);padding:32px;max-width:480px;width:100%;margin:24px auto 0;border-radius:8px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/Done.tsx */");
    Done_styles.__hash = "561817461";
    function Done() {
      const {t} = Done_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.complete"
      });
      const firstAddress = Done_useBackgroundSelector(Done_getAllAddresses).length === 1;
      if (!firstAddress) {
        return Done_React.createElement("section", {
          className: `jsx-${Done_styles.__hash}` + " " + "fade_in"
        }, Done_React.createElement("div", {
          className: `jsx-${Done_styles.__hash}` + " " + "wrapper"
        }, Done_React.createElement("header", {
          className: `jsx-${Done_styles.__hash}`
        }, Done_React.createElement("div", {
          className: `jsx-${Done_styles.__hash}`
        }, Done_React.createElement("h1", {
          className: `jsx-${Done_styles.__hash}`
        }, t("titleExisting"))))), Done_React.createElement("div", {
          className: `jsx-${Done_styles.__hash}` + " " + "shortcut_container"
        }, Done_React.createElement(Done_WalletShortcut, null)), Done_React.createElement(Done_JSXStyle, {
          id: Done_styles.__hash
        }, Done_styles));
      }
      return Done_React.createElement("section", {
        className: `jsx-${Done_styles.__hash}` + " " + "fade_in"
      }, Done_React.createElement("div", {
        className: `jsx-${Done_styles.__hash}` + " " + "wrapper"
      }, Done_React.createElement("header", {
        className: `jsx-${Done_styles.__hash}`
      }, Done_React.createElement("div", {
        className: `jsx-${Done_styles.__hash}`
      }, Done_React.createElement("h1", {
        className: `jsx-${Done_styles.__hash}`
      }, t("title")), Done_React.createElement("span", {
        className: `jsx-${Done_styles.__hash}`
      }, t("subtitle"))))), Done_React.createElement("div", {
        className: `jsx-${Done_styles.__hash}` + " " + "shortcut_container"
      }, Done_React.createElement(Done_WalletShortcut, null)), Done_React.createElement(Done_JSXStyle, {
        id: Done_styles.__hash
      }, Done_styles));
    }
    var SharedSeedInput_JSXStyle;
    var SharedSeedInput_useState;
    var SharedSeedInput_useEffect;
    var SharedSeedInput_React;
    function SharedSeedInput(props) {
      const {onChange, label = "", errorMessage = null} = props;
      const [seed, setSeed] = SharedSeedInput_useState("");
      SharedSeedInput_useEffect((() => {
        onChange(seed);
      }), [ seed, onChange ]);
      return SharedSeedInput_React.createElement(SharedSeedInput_React.Fragment, null, SharedSeedInput_React.createElement("div", {
        className: "jsx-3049734030" + " " + "input_wrap"
      }, SharedSeedInput_React.createElement("div", {
        id: "recovery_phrase",
        role: "textbox",
        "aria-labelledby": "recovery_label",
        tabIndex: 0,
        contentEditable: true,
        "data-empty": seed.length < 1,
        spellCheck: "false",
        onPaste: e => {
          e.preventDefault();
          const text = e.clipboardData.getData("text/plain").trim();
          e.currentTarget.innerText = text;
          setSeed(text);
        },
        onDrop: e => {
          e.preventDefault();
          const text = e.dataTransfer.getData("text/plain").trim();
          e.currentTarget.innerText = text;
          setSeed(text);
        },
        onInput: e => {
          setSeed(e.currentTarget.innerText.trim());
        },
        className: "jsx-3049734030"
      }), SharedSeedInput_React.createElement("div", {
        id: "recovery_label",
        className: "jsx-3049734030" + " " + "recovery_label"
      }, label), errorMessage && SharedSeedInput_React.createElement("p", {
        className: "jsx-3049734030" + " " + "error"
      }, errorMessage)), SharedSeedInput_React.createElement(SharedSeedInput_JSXStyle, {
        id: "3049734030"
      }, '.input_wrap.jsx-3049734030{position:relative;width:100%;max-width:400px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;}.recovery_label.jsx-3049734030{position:absolute;font-size:12px;line-height:16px;font-weight:600;-webkit-letter-spacing:0.03em;-moz-letter-spacing:0.03em;-ms-letter-spacing:0.03em;letter-spacing:0.03em;text-transform:uppercase;-webkit-transition:all 0.3s ease;transition:all 0.3s ease;pointer-events:none;z-index:1;}#recovery_phrase[data-empty="true"].jsx-3049734030:not(:focus)~.recovery_label.jsx-3049734030{font-size:15px;line-height:24px;font-weight:500;text-transform:none;-webkit-letter-spacing:0;-moz-letter-spacing:0;-ms-letter-spacing:0;letter-spacing:0;top:16px;left:18px;color:var(--c-text-muted);}#recovery_phrase[data-empty="false"].jsx-3049734030~.recovery_label.jsx-3049734030{padding:0 8px;color:var(--c-accent);background:var(--c-bg);top:-10px;left:14px;}#recovery_phrase.jsx-3049734030{width:100%;max-width:100%;box-sizing:border-box;height:120px;border-radius:12px;border:2px solid var(--c-accent-a30);background:var(--c-bg);padding:16px 18px;white-space:pre-wrap;word-wrap:break-word;color:var(--c-text);font-family:"Segment",sans-serif;font-size:15px;line-height:22px;overflow-y:auto;-webkit-transition:all 0.3s ease;transition:all 0.3s ease;box-shadow:inset 0 2px 8px rgba(0,0,0,0.04);}#recovery_phrase.jsx-3049734030::-webkit-scrollbar{width:6px;}#recovery_phrase.jsx-3049734030::-webkit-scrollbar-track{background:var(--c-accent-a8);border-radius:3px;}#recovery_phrase.jsx-3049734030::-webkit-scrollbar-thumb{background:var(--c-accent-a30);border-radius:3px;}#recovery_phrase.jsx-3049734030::-webkit-scrollbar-thumb.jsx-3049734030:hover{background:var(--c-accent-a50);}#recovery_phrase.jsx-3049734030 *.jsx-3049734030{word-wrap:break-word;color:var(--c-text);font-family:inherit;}#recovery_phrase.jsx-3049734030:hover{border-color:var(--c-accent-a40);}#recovery_phrase.jsx-3049734030:focus~.recovery_label.jsx-3049734030{top:-10px;left:14px;padding:0 8px;color:var(--c-accent);background:var(--c-bg);-webkit-transition:all 0.3s ease;transition:all 0.3s ease;z-index:2;}#recovery_phrase.jsx-3049734030:focus{border:2px solid var(--c-accent-a60);outline:0;background:var(--c-bg);box-shadow: inset 0 2px 8px rgba(0,0,0,0.03), 0 0 0 3px var(--c-accent-a12);}.error.jsx-3049734030{color:var(--c-error-text);font-size:13px;margin-top:8px;font-weight:500;padding-left:4px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedSeedInput.tsx */'));
    }
    var ImportForm_JSXStyle;
    var ImportForm_React;
    function ImportForm(props) {
      const {children, title, subtitle} = props;
      return ImportForm_React.createElement(ImportForm_React.Fragment, null, ImportForm_React.createElement("div", {
        className: "jsx-3709418438" + " " + "centered fade_in"
      }, ImportForm_React.createElement("form", {
        onSubmit: event => {
          event.preventDefault();
        },
        className: "jsx-3709418438" + " " + "centered"
      }, ImportForm_React.createElement("div", {
        className: "jsx-3709418438" + " " + "section"
      }, ImportForm_React.createElement("h1", {
        className: "jsx-3709418438" + " " + "serif_header"
      }, title), ImportForm_React.createElement("div", {
        className: "jsx-3709418438" + " " + "info"
      }, subtitle)), children)), ImportForm_React.createElement(ImportForm_JSXStyle, {
        id: "3709418438"
      }, '.fade_in.jsx-3709418438{--fade-in-duration:300ms;}form.jsx-3709418438{all:unset;}.serif_header.jsx-3709418438{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0 0 8px 0;width:100%;max-width:500px;text-align:center;color:var(--c-text);}.centered.jsx-3709418438{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;max-width:450px;margin:auto;padding:0 20px;}h1.jsx-3709418438{margin:unset;}.section.jsx-3709418438{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}.info.jsx-3709418438{margin-bottom:32px;width:100%;max-width:400px;text-align:center;font-size:15px;line-height:22px;color:var(--c-text-secondary);font-weight:500;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvSW1wb3J0Rm9ybS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJrQixBQUdvQyxBQUlmLEFBSVUsQUFZUCxBQVdBLEFBSUEsQUFPTSxVQXJDckIsR0EyQkEsTUFXYSxDQWxDSyxLQVJsQixLQTJDa0IsTUFsQ0QsVUFtQ0csS0FsQ0QsYUFtQ0YsSUFsQ0UsTUFTRSxBQWVHLEtBV0wsTUFsQ04sV0FDSyxBQWtDYyxnQkFqQ1osY0FrQ0YsSUFqQ0ksWUFrQ3RCLFFBakNBLEVBb0JxQixlQWZHLDhFQUNRLEFBZW5CLFdBQ2Isd0dBZmEsV0FDSyxnQkFDSixZQUNHLGVBQ2pCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvSW1wb3J0Rm9ybS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcblxudHlwZSBQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZ1xuICBzdWJ0aXRsZTogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdEVsZW1lbnRcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSW1wb3J0Rm9ybShwcm9wczogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IGNoaWxkcmVuLCB0aXRsZSwgc3VidGl0bGUgfSA9IHByb3BzXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2VudGVyZWQgZmFkZV9pblwiPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgIGNsYXNzTmFtZT1cImNlbnRlcmVkXCJcbiAgICAgICAgICBvblN1Ym1pdD17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInNlcmlmX2hlYWRlclwiPnt0aXRsZX08L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvXCI+e3N1YnRpdGxlfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3R5bGUganN4PntgXG4gICAgICAgIC5mYWRlX2luIHtcbiAgICAgICAgICAtLWZhZGUtaW4tZHVyYXRpb246IDMwMG1zO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybSB7XG4gICAgICAgICAgYWxsOiB1bnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZXJpZl9oZWFkZXIge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIkdlaXN0XCI7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBmb250LXNpemU6IDM2cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDQycHg7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgOHB4IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2VudGVyZWQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IDQ1MHB4O1xuICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBoMSB7XG4gICAgICAgICAgbWFyZ2luOiB1bnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWN0aW9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbmZvIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYy10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ImportForm.tsx */'));
    }
    var ImportSeed_JSXStyle;
    var ImportSeed_useState;
    var useCallback;
    var ImportSeed_React;
    var ImportSeed_importSigner;
    var ImportSeed_useHistory;
    var ImportSeed_Redirect;
    var ImportSeed_isEnabled;
    var ImportSeed_FeatureFlags;
    var ImportSeed_useTranslation;
    var ImportSeed_SignerSourceTypes;
    var ImportSeed_SignerImportSource;
    var ImportSeed_SharedButton;
    var ImportSeed_useAreInternalSignersUnlocked;
    var ImportSeed_useBackgroundDispatch;
    var ImportSeed_OnboardingRoutes;
    var ImportSeed_SharedSeedInput;
    var ImportSeed_ImportForm;
    function ImportSeed_normalizeSeedPhrase(phrase) {
      return phrase.trim().toLowerCase().replace(/[^a-z\s]/g, "").replace(/\s+/g, " ");
    }
    function ImportSeed(props) {
      const {nextPage} = props;
      const areInternalSignersUnlocked = ImportSeed_useAreInternalSignersUnlocked(false);
      const [recoveryPhrase, setRecoveryPhrase] = ImportSeed_useState("");
      const [errorMessage, setErrorMessage] = ImportSeed_useState("");
      const [isImporting, setIsImporting] = ImportSeed_useState(false);
      const {t} = ImportSeed_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.importSeed"
      });
      const dispatch = ImportSeed_useBackgroundDispatch();
      const history = ImportSeed_useHistory();
      const onInputChange = useCallback((seed => {
        setRecoveryPhrase(seed);
        setErrorMessage("");
      }), []);
      const importWallet = useCallback((async () => {
        const plainRecoveryPhrase = ImportSeed_normalizeSeedPhrase(recoveryPhrase);
        const splitTrimmedRecoveryPhrase = plainRecoveryPhrase.split(" ");
        if (splitTrimmedRecoveryPhrase.length !== 24) {
          setErrorMessage(t("errors.phraseLengthError"));
        } else {
          setIsImporting(true);
          const {success} = await dispatch(ImportSeed_importSigner({
            type: ImportSeed_SignerSourceTypes.keyPair,
            mnemonic: plainRecoveryPhrase,
            source: ImportSeed_SignerImportSource.import
          }));
          if (success) {
            history.push(nextPage);
          } else {
            setIsImporting(false);
            setErrorMessage(t("errors.invalidPhraseError"));
          }
        }
      }), [ dispatch, recoveryPhrase, t, history, nextPage ]);
      if (!areInternalSignersUnlocked) return ImportSeed_React.createElement(ImportSeed_Redirect, {
        to: {
          pathname: ImportSeed_OnboardingRoutes.SET_PASSWORD,
          state: {
            nextPage: ImportSeed_OnboardingRoutes.IMPORT_SEED
          }
        }
      });
      return ImportSeed_React.createElement(ImportSeed_React.Fragment, null, ImportSeed_React.createElement(ImportSeed_ImportForm, {
        title: t("title"),
        subtitle: t("subtitle")
      }, ImportSeed_React.createElement(ImportSeed_React.Fragment, null, ImportSeed_isEnabled(ImportSeed_FeatureFlags.SHOW_IMPORT_DERIVATION_PATH), ImportSeed_React.createElement(ImportSeed_SharedSeedInput, {
        onChange: onInputChange,
        label: t("inputLabel"),
        errorMessage
      }), ImportSeed_React.createElement("div", {
        className: "jsx-2137506282" + " " + "bottom"
      }, ImportSeed_React.createElement(ImportSeed_SharedButton, {
        id: "import",
        style: {
          width: "100%",
          boxSizing: "border-box"
        },
        size: ImportSeed_isEnabled(ImportSeed_FeatureFlags.SHOW_IMPORT_DERIVATION_PATH) ? "large" : "medium",
        type: "primary",
        isDisabled: !recoveryPhrase || isImporting,
        onClick: importWallet,
        center: true
      }, t("submit")), ImportSeed_isEnabled(ImportSeed_FeatureFlags.SHOW_IMPORT_DERIVATION_PATH) && ImportSeed_React.createElement("button", {
        type: "button",
        onClick: () => {},
        className: "jsx-2137506282" + " " + "help_button"
      }, "How do I find the recovery phrase?")))), ImportSeed_React.createElement(ImportSeed_JSXStyle, {
        id: "2137506282"
      }, ".bottom.jsx-2137506282{width:100%;max-width:400px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:32px;margin-bottom:24px;}.help_button.jsx-2137506282{width:100%;text-align:center;font-size:14px;line-height:20px;color:var(--c-text-secondary);font-weight:500;margin-top:16px;cursor:pointer;background:none;border:none;padding:8px;-webkit-transition:color 0.2s;transition:color 0.2s;}.help_button.jsx-2137506282:hover{color:var(--c-accent);}.select_wrapper.jsx-2137506282{width:100%;margin-bottom:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ImportSeed.tsx */"));
    }
    var WalletDefaultToggle_JSXStyle;
    var WalletDefaultToggle_selectDefaultWallet;
    var WalletDefaultToggle_setNewDefaultWalletValue;
    var WalletDefaultToggle_useState;
    var WalletDefaultToggle_useRef;
    var WalletDefaultToggle_React;
    var WalletDefaultToggle_useTranslation;
    var WalletDefaultToggle_useDispatch;
    var WalletDefaultToggle_useBackgroundSelector;
    var WalletDefaultToggle_SharedToggleButton;
    function WalletDefaultToggle() {
      const {t} = WalletDefaultToggle_useTranslation("translation", {
        keyPrefix: "wallet.defaultToggle"
      });
      const dispatch = WalletDefaultToggle_useDispatch();
      const isDefaultWallet = WalletDefaultToggle_useBackgroundSelector(WalletDefaultToggle_selectDefaultWallet);
      const [showTooltip, setShowTooltip] = WalletDefaultToggle_useState(false);
      const tooltipTimeout = WalletDefaultToggle_useRef();
      const toggleDefaultWallet = defaultWalletValue => {
        dispatch(WalletDefaultToggle_setNewDefaultWalletValue(defaultWalletValue));
        if (tooltipTimeout.current !== undefined) {
          clearTimeout(tooltipTimeout.current);
        }
        setShowTooltip(true);
        tooltipTimeout.current = window.setTimeout((() => {
          setShowTooltip(false);
          tooltipTimeout.current = undefined;
        }), 2500);
      };
      return WalletDefaultToggle_React.createElement("div", {
        className: "jsx-2690361375" + " " + "toggle_wrap"
      }, WalletDefaultToggle_React.createElement(WalletDefaultToggle_SharedToggleButton, {
        onChange: toggleValue => toggleDefaultWallet(toggleValue),
        value: isDefaultWallet
      }), showTooltip && WalletDefaultToggle_React.createElement("div", {
        className: "jsx-2690361375" + " " + "tooltip"
      }, t("snackbar")), WalletDefaultToggle_React.createElement(WalletDefaultToggle_JSXStyle, {
        id: "2690361375"
      }, '.toggle_wrap.jsx-2690361375{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.tooltip.jsx-2690361375{position:absolute;bottom:calc(100% + 8px);right:0;background:var(--green-120,#003330);color:var(--green-20,#d1e3e2);font-size:13px;font-weight:500;line-height:1.4;white-space:nowrap;padding:7px 10px;border-radius:6px;pointer-events:none;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,0.18);}.tooltip.jsx-2690361375::after{content:"";position:absolute;top:100%;right:12px;border:5px solid transparent;border-top-color:var(--green-120,#003330);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9XYWxsZXQvV2FsbGV0RGVmYXVsdFRvZ2dsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0NrQixBQUc2QixBQU1BLEFBaUJQLFdBQ08sT0F2QkwsQUFNVyxXQWtCZixTQUNFLElBbEJILE9BbUJxQixDQWxCUSw0QkFtQk0sUUFsQlosTUFSWix3QkFTSixJQWtCakIsV0FqQmtCLGdCQUNBLGdCQUNHLG1CQUNGLEdBWm5CLGNBYW9CLGtCQUNFLG9CQUNULFdBQzhCLHNDQUMzQyIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL2NvbXBvbmVudHMvV2FsbGV0L1dhbGxldERlZmF1bHRUb2dnbGUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2VsZWN0RGVmYXVsdFdhbGxldCxcbiAgc2V0TmV3RGVmYXVsdFdhbGxldFZhbHVlLFxufSBmcm9tIFwiQHFldm0vcXdhbC1iYWNrZ3JvdW5kL3JlZHV4LXNsaWNlcy91aVwiXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIlxuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIlxuaW1wb3J0IHsgdXNlQmFja2dyb3VuZFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uL2hvb2tzXCJcbmltcG9ydCBTaGFyZWRUb2dnbGVCdXR0b24gZnJvbSBcIi4uL1NoYXJlZC9TaGFyZWRUb2dnbGVCdXR0b25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXYWxsZXREZWZhdWx0VG9nZ2xlKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oXCJ0cmFuc2xhdGlvblwiLCB7XG4gICAga2V5UHJlZml4OiBcIndhbGxldC5kZWZhdWx0VG9nZ2xlXCIsXG4gIH0pXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKVxuICBjb25zdCBpc0RlZmF1bHRXYWxsZXQgPSB1c2VCYWNrZ3JvdW5kU2VsZWN0b3Ioc2VsZWN0RGVmYXVsdFdhbGxldClcblxuICBjb25zdCBbc2hvd1Rvb2x0aXAsIHNldFNob3dUb29sdGlwXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sdGlwVGltZW91dCA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KClcblxuICBjb25zdCB0b2dnbGVEZWZhdWx0V2FsbGV0ID0gKGRlZmF1bHRXYWxsZXRWYWx1ZTogYm9vbGVhbikgPT4ge1xuICAgIGRpc3BhdGNoKHNldE5ld0RlZmF1bHRXYWxsZXRWYWx1ZShkZWZhdWx0V2FsbGV0VmFsdWUpKVxuXG4gICAgaWYgKHRvb2x0aXBUaW1lb3V0LmN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRvb2x0aXBUaW1lb3V0LmN1cnJlbnQpXG4gICAgfVxuICAgIHNldFNob3dUb29sdGlwKHRydWUpXG4gICAgdG9vbHRpcFRpbWVvdXQuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNob3dUb29sdGlwKGZhbHNlKVxuICAgICAgdG9vbHRpcFRpbWVvdXQuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgIH0sIDI1MDApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidG9nZ2xlX3dyYXBcIj5cbiAgICAgIDxTaGFyZWRUb2dnbGVCdXR0b25cbiAgICAgICAgb25DaGFuZ2U9eyh0b2dnbGVWYWx1ZSkgPT4gdG9nZ2xlRGVmYXVsdFdhbGxldCh0b2dnbGVWYWx1ZSl9XG4gICAgICAgIHZhbHVlPXtpc0RlZmF1bHRXYWxsZXR9XG4gICAgICAvPlxuICAgICAge3Nob3dUb29sdGlwICYmIDxkaXYgY2xhc3NOYW1lPVwidG9vbHRpcFwiPnt0KFwic25hY2tiYXJcIil9PC9kaXY+fVxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAudG9nZ2xlX3dyYXAge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAudG9vbHRpcCB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgOHB4KTtcbiAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmVlbi0xMjAsICMwMDMzMzApO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ncmVlbi0yMCwgI2QxZTNlMik7XG4gICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b29sdGlwOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICAgIHJpZ2h0OiAxMnB4O1xuICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWdyZWVuLTEyMCwgIzAwMzMzMCk7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Wallet/WalletDefaultToggle.tsx */'));
    }
    var SetPassword_JSXStyle;
    var SetPassword_useState;
    var SetPassword_useEffect;
    var SetPassword_React;
    var SetPassword_createPassword;
    var SetPassword_unlockInternalSigners;
    var SetPassword_useHistory;
    var SetPassword_useLocation;
    var SetPassword_Redirect;
    var SetPassword_Trans;
    var SetPassword_useTranslation;
    var SetPassword_selectInternalSignerStatus;
    var SetPassword_useAreInternalSignersUnlocked;
    var SetPassword_useBackgroundDispatch;
    var SetPassword_useBackgroundSelector;
    var SetPassword_useIsOnboarding;
    var SetPassword_SharedButton;
    var SetPassword_PasswordStrengthBar;
    var SetPassword_PasswordInput;
    var SetPassword_WalletDefaultToggle;
    var SetPassword_OnboardingRoutes;
    function SetPassword() {
      const [password, setPassword] = SetPassword_useState("");
      const [passwordErrorMessage, setPasswordErrorMessage] = SetPassword_useState("");
      const [passwordConfirmation, setPasswordConfirmation] = SetPassword_useState("");
      const history = SetPassword_useHistory();
      const {t} = SetPassword_useTranslation();
      const {state: {nextPage} = {}} = SetPassword_useLocation();
      const areInternalSignersUnlocked = SetPassword_useAreInternalSignersUnlocked(false);
      const dispatch = SetPassword_useBackgroundDispatch();
      SetPassword_useEffect((() => {
        if (nextPage && areInternalSignersUnlocked) {
          history.replace(nextPage);
        }
      }), [ areInternalSignersUnlocked, history, nextPage ]);
      const validatePassword = () => {
        if (password.length < 8) {
          setPasswordErrorMessage(t("keyring.setPassword.error.characterCount"));
          return false;
        }
        if (password !== passwordConfirmation) {
          setPasswordErrorMessage(t("keyring.setPassword.error.noMatch"));
          return false;
        }
        return true;
      };
      const handleInputChange = f => value => {
        setPasswordErrorMessage("");
        return f(value);
      };
      const dispatchCreatePassword = () => {
        if (validatePassword()) {
          dispatch(SetPassword_createPassword(password));
        }
      };
      const lockStatus = SetPassword_useBackgroundSelector(SetPassword_selectInternalSignerStatus);
      const isOnboarding = SetPassword_useIsOnboarding();
      if (!nextPage) {
        return SetPassword_React.createElement(SetPassword_Redirect, {
          to: SetPassword_OnboardingRoutes.ONBOARDING_START
        });
      }
      if (!isOnboarding && lockStatus === "locked") {
        const handleAttemptUnlock = async event => {
          const {currentTarget: form} = event;
          event.preventDefault();
          const input = form.elements.namedItem("password");
          const {success} = await dispatch(SetPassword_unlockInternalSigners(input.value));
          if (success) {
            history.replace(nextPage);
          } else {
            setPasswordErrorMessage(t("keyring.unlock.error.incorrect"));
          }
        };
        return SetPassword_React.createElement("section", {
          className: "fade_in"
        }, SetPassword_React.createElement("header", {
          className: "jsx-3940728427" + " " + "center_text"
        }, SetPassword_React.createElement("img", {
          alt: t("onboarding.tabbed.unlockWallet.title"),
          width: "183",
          src: "./images/illustration_unlock@2x.png",
          className: "jsx-3940728427"
        }), SetPassword_React.createElement(SetPassword_JSXStyle, {
          id: "3940728427"
        }, 'header.jsx-3940728427{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:20px;margin-bottom:32px;}header.jsx-3940728427 h1.jsx-3940728427{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0em;}img.jsx-3940728427{margin:0 auto 24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/SetPassword.tsx */'), SetPassword_React.createElement("h1", {
          className: "jsx-3940728427"
        }, t("onboarding.tabbed.unlockWallet.title"))), SetPassword_React.createElement("form", {
          onSubmit: handleAttemptUnlock,
          className: "jsx-2066841314"
        }, SetPassword_React.createElement(SetPassword_PasswordInput, {
          label: t("onboarding.tabbed.unlockWallet.passwordInput"),
          name: "password",
          errorMessage: passwordErrorMessage
        }), SetPassword_React.createElement(SetPassword_SharedButton, {
          type: "primary",
          size: "medium",
          isFormSubmit: true
        }, t("onboarding.tabbed.unlockWallet.submit")), SetPassword_React.createElement(SetPassword_JSXStyle, {
          id: "2066841314"
        }, "form.jsx-2066841314{max-width:290px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;gap:40px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/SetPassword.tsx */")));
      }
      return SetPassword_React.createElement("section", {
        className: "fade_in"
      }, SetPassword_React.createElement("header", null, SetPassword_React.createElement("h1", {
        className: "center_text"
      }, SetPassword_React.createElement(SetPassword_Trans, {
        t,
        i18nKey: "onboarding.setPassword.title"
      }))), SetPassword_React.createElement("div", {
        className: "jsx-1994095046" + " " + "password_section"
      }, SetPassword_React.createElement("form", {
        name: "password",
        onSubmit: event => {
          event.preventDefault();
          dispatchCreatePassword();
        },
        className: "jsx-1994095046"
      }, SetPassword_React.createElement("div", {
        className: "jsx-1994095046" + " " + "input_wrap"
      }, SetPassword_React.createElement(SetPassword_PasswordInput, {
        id: "password",
        label: "Password",
        name: "password",
        onChange: handleInputChange(setPassword),
        errorMessage: passwordErrorMessage
      })), SetPassword_React.createElement("div", {
        className: "jsx-1994095046" + " " + "strength_bar_wrap"
      }, !passwordErrorMessage && SetPassword_React.createElement(SetPassword_PasswordStrengthBar, {
        password
      })), SetPassword_React.createElement("div", {
        className: "jsx-1994095046" + " " + "input_wrap repeat_password_wrap"
      }, SetPassword_React.createElement(SetPassword_PasswordInput, {
        id: "passwordConfirm",
        name: "confirm_password",
        label: "Repeat Password",
        onChange: handleInputChange(setPasswordConfirmation),
        errorMessage: passwordErrorMessage
      })), SetPassword_React.createElement("div", {
        className: "jsx-1994095046" + " " + "set_as_default_ask"
      }, SetPassword_React.createElement("span", {
        className: "jsx-1994095046" + " " + "default-text"
      }, t("onboarding.setPassword.setAsDefault")), SetPassword_React.createElement(SetPassword_WalletDefaultToggle, null)), SetPassword_React.createElement(SetPassword_SharedButton, {
        id: "confirm",
        type: "primary",
        size: "large",
        showLoadingOnClick: !passwordErrorMessage,
        isFormSubmit: true
      }, SetPassword_React.createElement("span", {
        className: "jsx-1994095046" + " " + "submit_button"
      }, t("onboarding.setPassword.submit")))), SetPassword_React.createElement(SetPassword_JSXStyle, {
        id: "1994095046"
      }, ".password_section.jsx-1994095046{text-align:center;width:100%;max-width:400px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}form.jsx-1994095046{max-width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;padding:32px;}.input_wrap.jsx-1994095046{width:100%;}.strength_bar_wrap.jsx-1994095046{width:100%;height:26px;box-sizing:border-box;padding-top:10px;margin-bottom:28px;}.repeat_password_wrap.jsx-1994095046{margin-bottom:36px;}.set_as_default_ask.jsx-1994095046{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:8px;padding:16px 20px;margin-bottom:32px;}.default-text.jsx-1994095046{color:var(--c-text);font-size:15px;line-height:20px;font-weight:500;}.warning_wrap.jsx-1994095046{margin-top:16px;margin-bottom:24px;}.warning_content.jsx-1994095046{color:var(--c-warning);font-weight:500;font-size:16px;line-height:24px;}.submit_button.jsx-1994095046{font-size:18px;line-height:24px;font-weight:600;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/SetPassword.tsx */")));
    }
    var OnboardingStepsIndicator_JSXStyle;
    var OnboardingStepsIndicator_React;
    var classNames;
    var OnboardingStepsIndicator_useTranslation;
    function OnboardingStep({label, isActive = false, stepNumber}) {
      return OnboardingStepsIndicator_React.createElement("li", {
        className: "jsx-1955710973" + " " + (classNames({
          active: isActive
        }) || "")
      }, OnboardingStepsIndicator_React.createElement("div", {
        className: "jsx-1955710973" + " " + "step-circle"
      }, OnboardingStepsIndicator_React.createElement("span", {
        className: "jsx-1955710973" + " " + "step-number"
      }, stepNumber + 1)), OnboardingStepsIndicator_React.createElement("span", {
        className: "jsx-1955710973" + " " + "step-label"
      }, label), OnboardingStepsIndicator_React.createElement(OnboardingStepsIndicator_JSXStyle, {
        id: "1955710973"
      }, 'li.jsx-1955710973{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;-webkit-flex:1;-ms-flex:1;flex:1;position:relative;}.step-circle.jsx-1955710973{width:32px;height:32px;border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background:var(--c-bg-alt);border:2px solid var(--c-border-accent);-webkit-transition: background-color 0.2s, border-color 0.2s;transition: background-color 0.2s, border-color 0.2s;}.active.jsx-1955710973 .step-circle.jsx-1955710973{background:var(--c-accent);border-color:var(--c-accent);}.step-number.jsx-1955710973{font-size:14px;font-weight:700;color:var(--c-text-secondary);line-height:1;}.active.jsx-1955710973 .step-number.jsx-1955710973{color:var(--c-text-on-accent);}.step-label.jsx-1955710973{font-size:13px;font-weight:600;line-height:16px;text-align:center;text-transform:uppercase;color:var(--c-text-secondary);}.active.jsx-1955710973 .step-label.jsx-1955710973{color:var(--c-text);}li.jsx-1955710973:not(:last-child)::after{content:"";position:absolute;top:16px;left:calc(50% + 24px);width:calc(100% - 48px);height:2px;background:var(--c-border-accent);z-index:-1;}.active.jsx-1955710973:not(:last-child)::after{background:var(--c-accent);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Onboarding/OnboardingStepsIndicator.tsx */'));
    }
    function OnboardingStepsIndicator(props) {
      const {t} = OnboardingStepsIndicator_useTranslation("translation", {
        keyPrefix: "onboarding.steps"
      });
      const {activeStep} = props;
      return OnboardingStepsIndicator_React.createElement("div", {
        className: "jsx-447626826" + " " + "steps-container"
      }, OnboardingStepsIndicator_React.createElement("ul", {
        className: "jsx-447626826"
      }, OnboardingStepsIndicator_React.createElement(OnboardingStep, {
        label: t("create"),
        isActive: activeStep === 0,
        stepNumber: 0
      }), OnboardingStepsIndicator_React.createElement(OnboardingStep, {
        label: t("save"),
        isActive: activeStep === 1,
        stepNumber: 1
      }), OnboardingStepsIndicator_React.createElement(OnboardingStep, {
        label: t("verify"),
        isActive: activeStep === 2,
        stepNumber: 2
      })), OnboardingStepsIndicator_React.createElement(OnboardingStepsIndicator_JSXStyle, {
        id: "447626826"
      }, ".steps-container.jsx-447626826{max-width:400px;margin:0 auto 32px;padding:16px;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;}ul.jsx-447626826{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;position:relative;padding:0;margin:0;list-style:none;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Onboarding/OnboardingStepsIndicator.tsx */"));
    }
    var NewSeedIntro_JSXStyle;
    var NewSeedIntro_React;
    var NewSeedIntro_Trans;
    var NewSeedIntro_useTranslation;
    var NewSeedIntro_SharedButton;
    var NewSeedIntro_OnboardingTip;
    function NewSeedIntro({onAccept}) {
      const {t} = NewSeedIntro_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.newWalletIntro"
      });
      return NewSeedIntro_React.createElement("section", {
        className: "jsx-3138559594" + " " + "step_content fade_in"
      }, NewSeedIntro_React.createElement("h1", {
        style: {
          textAlign: "center"
        },
        className: "jsx-3138559594" + " " + "center_text"
      }, t("title")), NewSeedIntro_React.createElement("div", {
        className: "jsx-3138559594" + " " + "message"
      }, NewSeedIntro_React.createElement("div", {
        className: "jsx-3138559594" + " " + "message_header"
      }, NewSeedIntro_React.createElement("img", {
        src: "./images/message_warning.png",
        alt: "warning",
        className: "jsx-3138559594" + " " + "message_icon"
      })), NewSeedIntro_React.createElement("p", {
        className: "jsx-3138559594"
      }, NewSeedIntro_React.createElement(NewSeedIntro_Trans, {
        t,
        i18nKey: "warning",
        components: {
          u: NewSeedIntro_React.createElement("u", {
            className: "jsx-3138559594"
          })
        }
      }))), NewSeedIntro_React.createElement("div", {
        className: "jsx-3138559594" + " " + "cta"
      }, NewSeedIntro_React.createElement(NewSeedIntro_SharedButton, {
        type: "primary",
        size: "large",
        onClick: onAccept,
        center: true
      }, t("submit"))), NewSeedIntro_React.createElement(NewSeedIntro_OnboardingTip, null, t("tip")), NewSeedIntro_React.createElement(NewSeedIntro_JSXStyle, {
        id: "3138559594"
      }, '.step_content.jsx-3138559594{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;max-width:400px;width:100%;margin:0 auto;--fade-in-duration:300ms;}section.jsx-3138559594 h1.jsx-3138559594{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:45px 0 32px;color:var(--c-text);}.message.jsx-3138559594{background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;padding:24px;margin:15px 0 24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.message.jsx-3138559594 p.jsx-3138559594{margin:0;font-weight:600;font-size:18px;line-height:24px;color:var(--c-text-secondary);text-align:left;}.message_header.jsx-3138559594{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-weight:600;font-size:18px;color:var(--c-warning);}.message_icon.jsx-3138559594{height:54px;margin:10px auto;}.cta.jsx-3138559594{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-bottom:40px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedIntro.tsx */'));
    }
    var NewSeedReview_JSXStyle;
    var NewSeedReview_setSnackbarMessage;
    var NewSeedReview_React;
    var NewSeedReview_useTranslation;
    var NewSeedReview_SharedButton;
    var NewSeedReview_useBackgroundDispatch;
    function NewSeedReview({onReview, mnemonic}) {
      const {t} = NewSeedReview_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.newWalletReview"
      });
      const {t: sharedT} = NewSeedReview_useTranslation("translation", {
        keyPrefix: "shared"
      });
      const dispatch = NewSeedReview_useBackgroundDispatch();
      return NewSeedReview_React.createElement("section", {
        className: "jsx-317807540" + " " + "fade_in"
      }, NewSeedReview_React.createElement("div", {
        className: "jsx-317807540" + " " + "header-container"
      }, NewSeedReview_React.createElement("h1", {
        className: "jsx-317807540"
      }, t("title"))), NewSeedReview_React.createElement("div", {
        className: "jsx-317807540" + " " + "step_content"
      }, NewSeedReview_React.createElement("div", {
        className: "jsx-317807540" + " " + "seed_phrase"
      }, mnemonic.map(((word, i) => {
        const key = `${word}-${i}`;
        return NewSeedReview_React.createElement("div", {
          key,
          className: "jsx-317807540" + " " + "word"
        }, NewSeedReview_React.createElement("span", {
          className: "jsx-317807540" + " " + "word-number"
        }, i + 1), NewSeedReview_React.createElement("span", {
          className: "jsx-317807540" + " " + "word-text"
        }, word));
      }))), NewSeedReview_React.createElement("div", {
        className: "jsx-317807540" + " " + "actions"
      }, NewSeedReview_React.createElement(NewSeedReview_SharedButton, {
        type: "secondary",
        size: "medium",
        onClick: () => {
          navigator.clipboard.writeText(mnemonic?.join(" ") ?? "");
          dispatch(NewSeedReview_setSnackbarMessage(sharedT("copyTextSnackbar")));
        },
        center: true
      }, t("copyAddressAction")), NewSeedReview_React.createElement(NewSeedReview_SharedButton, {
        type: "primary",
        size: "large",
        onClick: onReview,
        center: true
      }, t("submit")))), NewSeedReview_React.createElement(NewSeedReview_JSXStyle, {
        id: "317807540"
      }, 'section.jsx-317807540{max-width:500px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;--fade-in-duration:300ms;}.header-container.jsx-317807540{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;margin-bottom:32px;}h1.jsx-317807540{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;color:var(--c-text);text-align:center;margin:0;}.step_content.jsx-317807540{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;}.seed_phrase.jsx-317807540{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:24px;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;}.word.jsx-317807540{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:6px;}.word-number.jsx-317807540{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;min-width:22px;height:22px;font-size:12px;font-weight:700;color:var(--c-text-secondary);background:var(--c-bg-inset);border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.word-text.jsx-317807540{font-size:14px;font-weight:600;color:var(--c-text);-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;}.actions.jsx-317807540{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedReview.tsx */'));
    }
    var NewSeedVerify_JSXStyle;
    var NewSeedVerify_classNames;
    var NewSeedVerify_React;
    var NewSeedVerify_useMemo;
    var NewSeedVerify_useState;
    var NewSeedVerify_Trans;
    var NewSeedVerify_useTranslation;
    var NewSeedVerify_Link;
    var NewSeedVerify_SharedButton;
    var NewSeedVerify_OnboardingTip;
    var NewSeedVerify_OnboardingRoutes;
    function SeedWord(props) {
      const {index, word, isActive = false, onSubmit} = props;
      return NewSeedVerify_React.createElement(NewSeedVerify_React.Fragment, null, NewSeedVerify_React.createElement("div", {
        onClick: () => onSubmit(),
        tabIndex: 0,
        onKeyDown: e => {
          if (e.key === "Enter") {
            onSubmit();
          }
        },
        role: "button",
        "data-testid": "verify_seed_word_placeholder",
        className: "jsx-3561696541" + " " + (NewSeedVerify_classNames("word_container", {
          is_active: isActive,
          is_filled: !!word
        }) || "")
      }, NewSeedVerify_React.createElement("span", {
        className: "jsx-3561696541" + " " + "word_index"
      }, index + 1), NewSeedVerify_React.createElement("div", {
        className: "jsx-3561696541" + " " + "word_box"
      }, word && NewSeedVerify_React.createElement(NewSeedVerify_React.Fragment, null, NewSeedVerify_React.createElement("span", {
        className: "jsx-3561696541" + " " + "word_text"
      }, word), NewSeedVerify_React.createElement("span", {
        className: "jsx-3561696541" + " " + "close_icon"
      }, "×")))), NewSeedVerify_React.createElement(NewSeedVerify_JSXStyle, {
        id: "3561696541"
      }, ".word_container.jsx-3561696541{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-transition:background-color 0.2s;transition:background-color 0.2s;}.word_index.jsx-3561696541{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;min-width:26px;height:26px;font-size:12px;font-weight:700;background:var(--c-bg-inset);border-radius:4px;color:var(--c-text-secondary);}.word_container.is_active.jsx-3561696541 .word_index.jsx-3561696541{background:var(--c-accent);color:var(--c-text-on-accent);}.word_container.is_filled.jsx-3561696541 .word_index.jsx-3561696541{background:var(--c-bg-inset);color:var(--c-accent);}.word_box.jsx-3561696541{-webkit-flex:1;-ms-flex:1;flex:1;min-height:36px;padding:6px 12px;background:var(--c-bg);border:1px solid var(--c-border-accent);border-radius:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:8px;-webkit-transition:border-color 0.2s;transition:border-color 0.2s;}.word_container.is_active.jsx-3561696541 .word_box.jsx-3561696541{border-color:var(--c-accent);}.word_container.is_filled.jsx-3561696541 .word_box.jsx-3561696541{background:var(--c-bg-alt);border-color:var(--c-accent);}.word_text.jsx-3561696541{font-size:14px;font-weight:600;color:var(--c-text);}.close_icon.jsx-3561696541{color:var(--c-text-secondary);font-size:16px;line-height:1;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.word_container.jsx-3561696541:hover .close_icon.jsx-3561696541{color:var(--c-error);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx */"));
    }
    function NewSeedVerify({onVerify, mnemonic}) {
      const {t} = NewSeedVerify_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.newWalletVerify"
      });
      const SEED_WORDS_TO_VERIFY = 8;
      const randomIndexes = NewSeedVerify_useMemo((() => mnemonic.map(((_, index) => index)).sort((() => Math.random() - .5)).slice(0, SEED_WORDS_TO_VERIFY)), [ mnemonic ]);
      const [placeholderList, setPlaceholders] = NewSeedVerify_useState((() => {
        const randomSeedWords = randomIndexes.map((index => ({
          wordIndex: index,
          word: mnemonic[index]
        }))).sort((({wordIndex: a}, {wordIndex: b}) => a - b));
        return randomSeedWords.map((({wordIndex, word}) => ({
          correctWord: word,
          selectedWord: undefined,
          key: `${word}-${wordIndex}`,
          wordIndex
        })));
      }));
      const [activePlaceholder, setActivePlaceholder] = NewSeedVerify_useState(0);
      const [remainingWords, setRemainingWords] = NewSeedVerify_useState((() => randomIndexes.map((index => mnemonic[index]))));
      const [submitted, setSubmitted] = NewSeedVerify_useState(false);
      const [isValidSeed, setIsValidSeed] = NewSeedVerify_useState(false);
      const handleVerification = () => {
        const isValid = placeholderList.every((({correctWord, selectedWord}) => correctWord === selectedWord));
        setSubmitted(true);
        setIsValidSeed(isValid);
      };
      const handleAdd = wordIndex => {
        const position = activePlaceholder >= 0 ? activePlaceholder : placeholderList.findIndex((word => word.selectedWord === undefined));
        if (position >= 0) {
          const newSelectedWords = placeholderList.map(((word, index) => index === position ? {
            ...word,
            selectedWord: remainingWords[wordIndex]
          } : word));
          setPlaceholders(newSelectedWords);
          setRemainingWords((words => words.filter(((_, i) => i !== wordIndex))));
          const nextActivePlaceholder = newSelectedWords.findIndex((word => word.selectedWord === undefined));
          setActivePlaceholder(nextActivePlaceholder);
          if (submitted && nextActivePlaceholder === -1) {
            const isValid = newSelectedWords.every((({correctWord, selectedWord}) => correctWord === selectedWord));
            setIsValidSeed(isValid);
          }
        }
      };
      const handlePlaceholderClick = position => {
        if (isValidSeed) return;
        const {selectedWord} = placeholderList[position];
        if (selectedWord) {
          setRemainingWords((words => [ ...words, selectedWord ]));
          setPlaceholders((words => words.map(((word, i) => i === position ? {
            ...word,
            selectedWord: undefined
          } : word))));
        }
        setActivePlaceholder(position);
      };
      return NewSeedVerify_React.createElement("section", {
        className: "jsx-3366259756" + " " + "verify_section fade_in"
      }, NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "header-container"
      }, NewSeedVerify_React.createElement("h1", {
        className: "jsx-3366259756"
      }, t("title")), NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "subtitle"
      }, t("subtitle"))), NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "words_list"
      }, placeholderList.map((({selectedWord, key, wordIndex}, i) => NewSeedVerify_React.createElement(SeedWord, {
        key,
        index: wordIndex,
        word: selectedWord,
        isActive: activePlaceholder === i,
        onSubmit: () => handlePlaceholderClick(i)
      })))), NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "actions"
      }, remainingWords?.length === 0 ? NewSeedVerify_React.createElement(NewSeedVerify_React.Fragment, null, NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "verify_and_submit"
      }, submitted ? NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + (NewSeedVerify_classNames("status_badge", {
          valid: isValidSeed,
          invalid: !isValidSeed
        }) || "")
      }, isValidSeed ? `✓ ${t("validState")}` : `✗ ${t("invalidState")}`) : NewSeedVerify_React.createElement(NewSeedVerify_SharedButton, {
        type: "secondary",
        size: "medium",
        onClick: handleVerification,
        center: true
      }, t("verifyValidState")), NewSeedVerify_React.createElement(NewSeedVerify_SharedButton, {
        type: "primary",
        size: "large",
        isDisabled: !submitted || !isValidSeed,
        onClick: () => onVerify(mnemonic),
        center: true
      }, t("submit"))), submitted && !isValidSeed && NewSeedVerify_React.createElement("div", {
        className: "jsx-3366259756" + " " + "error"
      }, t("invalidStateMsg"))) : NewSeedVerify_React.createElement("ul", {
        className: "jsx-3366259756" + " " + "remaining_word_list"
      }, remainingWords.map(((word, i) => {
        const key = `${word}-${i}`;
        return NewSeedVerify_React.createElement("li", {
          key,
          className: "jsx-3366259756"
        }, NewSeedVerify_React.createElement(NewSeedVerify_SharedButton, {
          type: "primary",
          size: "small",
          onClick: () => handleAdd(i)
        }, word));
      })))), NewSeedVerify_React.createElement(NewSeedVerify_OnboardingTip, null, NewSeedVerify_React.createElement(NewSeedVerify_Trans, {
        t,
        i18nKey: "tip",
        components: {
          url: NewSeedVerify_React.createElement(NewSeedVerify_Link, {
            component: ({navigate, children}) => NewSeedVerify_React.createElement("span", {
              role: "link",
              tabIndex: 0,
              onKeyUp: navigate,
              onClick: navigate,
              className: "jsx-3366259756" + " " + "reset_seed_link"
            }, children),
            replace: true,
            to: NewSeedVerify_OnboardingRoutes.NEW_SEED
          })
        }
      })), NewSeedVerify_React.createElement(NewSeedVerify_JSXStyle, {
        id: "3366259756"
      }, '.verify_section.jsx-3366259756{max-width:520px;width:100%;margin:0 auto;--fade-in-duration:300ms;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}.header-container.jsx-3366259756{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:32px;}h1.jsx-3366259756{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;color:var(--c-text);text-align:center;margin:0;}.subtitle.jsx-3366259756{font-size:15px;line-height:22px;color:var(--c-text-secondary);text-align:center;max-width:400px;}.words_list.jsx-3366259756{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 20px;background:var(--c-bg-alt);border:1px solid var(--c-border-accent);border-radius:8px;padding:24px;margin-bottom:24px;min-height:296px;-webkit-align-content:start;-ms-flex-line-pack:start;align-content:start;box-sizing:border-box;}.actions.jsx-3366259756{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;margin-bottom:24px;min-height:96px;}.verify_and_submit.jsx-3366259756{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;}.status_badge.jsx-3366259756{text-align:center;padding:10px 16px;border-radius:4px;font-size:14px;font-weight:600;}.status_badge.valid.jsx-3366259756{color:var(--c-success);background:var(--c-success-bg);}.status_badge.invalid.jsx-3366259756{color:var(--c-error);background:var(--c-error-bg);}.remaining_word_list.jsx-3366259756{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;width:100%;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start;}.error.jsx-3366259756{width:100%;font-size:14px;line-height:20px;color:var(--c-error);text-align:center;padding:10px;background:var(--c-error-bg);border-radius:4px;}.reset_seed_link.jsx-3366259756{cursor:pointer;color:var(--c-accent);-webkit-text-decoration:underline;text-decoration:underline;font-weight:600;}.reset_seed_link.jsx-3366259756:hover{color:var(--c-accent-light);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx */'));
    }
    var NewSeed_JSXStyle;
    var NewSeed_generateNewMnemonics;
    var NewSeed_importSigner;
    var NewSeed_setMnemonicsToVerify;
    var NewSeed_React;
    var NewSeed_useHistory;
    var NewSeed_useRouteMatch;
    var NewSeed_Redirect;
    var NewSeed_Switch;
    var NewSeed_Route;
    var NewSeed_SignerSourceTypes;
    var NewSeed_SignerImportSource;
    var NewSeed_OnboardingStepsIndicator;
    var NewSeed_useBackgroundDispatch;
    var NewSeed_useBackgroundSelector;
    var NewSeed_useAreInternalSignersUnlocked;
    var NewSeed_NewSeedIntro;
    var NewSeed_NewSeedReview;
    var NewSeed_NewSeedVerify;
    var NewSeed_OnboardingRoutes;
    function StepContainer({children, step}) {
      return NewSeed_React.createElement("div", {
        className: "jsx-2260197920" + " " + "steps_section"
      }, NewSeed_React.createElement("div", {
        className: "jsx-2260197920" + " " + "steps_indicator"
      }, NewSeed_React.createElement(NewSeed_OnboardingStepsIndicator, {
        activeStep: step
      })), children, NewSeed_React.createElement(NewSeed_JSXStyle, {
        id: "2260197920"
      }, ".steps_section.jsx-2260197920{width:100%;max-width:520px;margin:0 auto;box-sizing:border-box;}.steps_indicator.jsx-2260197920{max-width:200px;margin:auto;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/NewSeed.tsx */"));
    }
    const NewSeedRoutes = {
      START: Routes.NEW_SEED,
      REVIEW_SEED: `${Routes.NEW_SEED}/new`,
      VERIFY_SEED: `${Routes.NEW_SEED}/verify`
    };
    function NewSeed() {
      const dispatch = NewSeed_useBackgroundDispatch();
      const mnemonic = NewSeed_useBackgroundSelector((state => state.internalSigner.mnemonicsToVerify));
      const areInternalSignersUnlocked = NewSeed_useAreInternalSignersUnlocked(false);
      const history = NewSeed_useHistory();
      const {path} = NewSeed_useRouteMatch();
      const showNewSeedPhrase = () => {
        dispatch(NewSeed_generateNewMnemonics()).then((() => history.push(NewSeedRoutes.REVIEW_SEED)));
      };
      const showSeedVerification = () => {
        history.replace(NewSeedRoutes.VERIFY_SEED);
      };
      const onVerifySuccess = async verifiedMnemonic => {
        const {success} = await dispatch(NewSeed_importSigner({
          type: NewSeed_SignerSourceTypes.keyPair,
          mnemonic: verifiedMnemonic.join(" "),
          source: NewSeed_SignerImportSource.internal
        }));
        if (success) {
          dispatch(NewSeed_setMnemonicsToVerify(mnemonic));
          history.push(NewSeed_OnboardingRoutes.ONBOARDING_COMPLETE);
        }
      };
      if (!areInternalSignersUnlocked) return NewSeed_React.createElement(NewSeed_Redirect, {
        to: {
          pathname: NewSeed_OnboardingRoutes.SET_PASSWORD,
          state: {
            nextPage: path
          }
        }
      });
      return NewSeed_React.createElement(NewSeed_Switch, null, NewSeed_React.createElement(NewSeed_Route, {
        path: NewSeedRoutes.START,
        exact: true
      }, NewSeed_React.createElement(StepContainer, {
        step: 0
      }, NewSeed_React.createElement(NewSeed_NewSeedIntro, {
        onAccept: showNewSeedPhrase
      }))), mnemonic && NewSeed_React.createElement(NewSeed_Route, {
        path: NewSeedRoutes.REVIEW_SEED
      }, NewSeed_React.createElement(StepContainer, {
        step: 1
      }, NewSeed_React.createElement(NewSeed_NewSeedReview, {
        mnemonic: mnemonic?.mnemonic,
        onReview: showSeedVerification
      }))), mnemonic && NewSeed_React.createElement(NewSeed_Route, {
        path: NewSeedRoutes.VERIFY_SEED
      }, NewSeed_React.createElement(StepContainer, {
        step: 2
      }, NewSeed_React.createElement(NewSeed_NewSeedVerify, {
        mnemonic: mnemonic?.mnemonic,
        onVerify: onVerifySuccess
      }))));
    }
    var Intro_JSXStyle;
    var Intro_React;
    var Intro_useTranslation;
    var Intro_SharedButton;
    var Intro_OnboardingRoutes;
    function Intro() {
      const {t} = Intro_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.intro"
      });
      return Intro_React.createElement("section", {
        className: "jsx-2115938012" + " " + "fade_in"
      }, Intro_React.createElement("img", {
        width: "80",
        height: "80",
        alt: "Quantum Wallet",
        src: "./images/icon-60.png",
        className: "jsx-2115938012"
      }), Intro_React.createElement("h1", {
        className: "jsx-2115938012"
      }, "Quantum Wallet"), Intro_React.createElement("div", {
        className: "jsx-2115938012" + " " + "actions"
      }, Intro_React.createElement(Intro_SharedButton, {
        id: "existingWallet",
        type: "primary",
        size: "large",
        linkTo: Intro_OnboardingRoutes.ADD_WALLET,
        center: true
      }, t("useExisting")), Intro_React.createElement(Intro_SharedButton, {
        id: "newWallet",
        type: "secondary",
        size: "large",
        linkTo: Intro_OnboardingRoutes.NEW_SEED,
        center: true
      }, t("createNew"))), Intro_React.createElement(Intro_JSXStyle, {
        id: "2115938012"
      }, 'section.jsx-2115938012{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px;--fade-in-duration:300ms;}h1.jsx-2115938012{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0;color:var(--c-text);}.actions.jsx-2115938012{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;width:320px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvSW50cm8udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlDa0IsQUFHc0IsQUFXUyxBQVNQLFdBbkJELFNBV0ksR0FWSCxhQVdFLGVBQ0UsaUJBQ1IsTUFNYSxHQUxGLG9CQWJFLEFBY3hCLHVEQUtXLFNBQ0csWUFDZCxFQXBCeUIsbUdBQ0osNkZBQ1YsU0FDZ0IseUJBQzNCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvSW50cm8udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCBTaGFyZWRCdXR0b24gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZEJ1dHRvblwiXG5pbXBvcnQgT25ib2FyZGluZ1JvdXRlcyBmcm9tIFwiLi9Sb3V0ZXNcIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbnRybygpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFwidHJhbnNsYXRpb25cIiwge1xuICAgIGtleVByZWZpeDogXCJvbmJvYXJkaW5nLnRhYmJlZC5pbnRyb1wiLFxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwiZmFkZV9pblwiPlxuICAgICAgPGltZ1xuICAgICAgICB3aWR0aD1cIjgwXCJcbiAgICAgICAgaGVpZ2h0PVwiODBcIlxuICAgICAgICBhbHQ9XCJRdWFudHVtIFdhbGxldFwiXG4gICAgICAgIHNyYz1cIi4vaW1hZ2VzL2ljb24tNjAucG5nXCJcbiAgICAgIC8+XG4gICAgICA8aDE+UXVhbnR1bSBXYWxsZXQ8L2gxPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgICBpZD1cImV4aXN0aW5nV2FsbGV0XCJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBsaW5rVG89e09uYm9hcmRpbmdSb3V0ZXMuQUREX1dBTExFVH1cbiAgICAgICAgICBjZW50ZXJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidXNlRXhpc3RpbmdcIil9XG4gICAgICAgIDwvU2hhcmVkQnV0dG9uPlxuXG4gICAgICAgIDxTaGFyZWRCdXR0b25cbiAgICAgICAgICBpZD1cIm5ld1dhbGxldFwiXG4gICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBsaW5rVG89e09uYm9hcmRpbmdSb3V0ZXMuTkVXX1NFRUR9XG4gICAgICAgICAgY2VudGVyXG4gICAgICAgID5cbiAgICAgICAgICB7dChcImNyZWF0ZU5ld1wiKX1cbiAgICAgICAgPC9TaGFyZWRCdXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAyNHB4O1xuICAgICAgICAgIC0tZmFkZS1pbi1kdXJhdGlvbjogMzAwbXM7XG4gICAgICAgIH1cblxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiR2Vpc3RcIjtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWMtdGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgICB3aWR0aDogMzIwcHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L3NlY3Rpb24+XG4gIClcbn1cbiJdfQ== */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/Intro.tsx */'));
    }
    var SharedAddressInput_JSXStyle;
    var SharedAddressInput_useState;
    var SharedAddressInput_useEffect;
    var SharedAddressInput_React;
    var SharedAddressInput_useDelayContentChange;
    var SharedAddressInput_useAddressOrNameValidation;
    var SharedAddressInput_SharedInput;
    var SharedAddressInput_SharedLoadingSpinner;
    function SharedAddressInput({value, label = "QEVM address or name", onAddressChange, onFocus, onKeyDown, id, placeholder, isEmpty}) {
      const [inputValue, setInputValue] = SharedAddressInput_useState(value ?? "");
      const debouncedValue = SharedAddressInput_useDelayContentChange(inputValue, !!inputValue.length, 500);
      const {errorMessage, handleInputChange, isValidating} = SharedAddressInput_useAddressOrNameValidation(onAddressChange);
      SharedAddressInput_useEffect((() => {
        handleInputChange(debouncedValue);
      }), [ debouncedValue, handleInputChange ]);
      return SharedAddressInput_React.createElement(SharedAddressInput_React.Fragment, null, SharedAddressInput_React.createElement(SharedAddressInput_SharedInput, {
        value: inputValue,
        label,
        onChange: setInputValue,
        onFocus,
        onKeyDown,
        errorMessage,
        id,
        placeholder,
        isEmpty
      }), isValidating && SharedAddressInput_React.createElement("div", {
        className: "jsx-2167188493" + " " + "validating_spinner"
      }, SharedAddressInput_React.createElement(SharedAddressInput_SharedLoadingSpinner, {
        size: "small"
      })), SharedAddressInput_React.createElement(SharedAddressInput_JSXStyle, {
        id: "2167188493"
      }, ".validating_spinner.jsx-2167188493{float:right;margin-top:-32px;margin-right:17px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQWRkcmVzc0lucHV0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErRGtCLEFBR3VCLFlBQ0ssaUJBQ0Msa0JBQ3BCIiwiZmlsZSI6Ii9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9TaGFyZWQvU2hhcmVkQWRkcmVzc0lucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhleFN0cmluZyB9IGZyb20gXCJAcWV2bS9xd2FsLWJhY2tncm91bmQvdHlwZXNcIlxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VEZWxheUNvbnRlbnRDaGFuZ2UgfSBmcm9tIFwiLi4vLi4vaG9va3NcIlxuaW1wb3J0IHsgdXNlQWRkcmVzc09yTmFtZVZhbGlkYXRpb24gfSBmcm9tIFwiLi4vLi4vaG9va3MvdmFsaWRhdGlvbi1ob29rc1wiXG5cbmltcG9ydCBTaGFyZWRJbnB1dCBmcm9tIFwiLi9TaGFyZWRJbnB1dFwiXG5pbXBvcnQgU2hhcmVkTG9hZGluZ1NwaW5uZXIgZnJvbSBcIi4vU2hhcmVkTG9hZGluZ1NwaW5uZXJcIlxuXG50eXBlIFByb3BzID0ge1xuICB2YWx1ZT86IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xuICBvbkFkZHJlc3NDaGFuZ2U6IChcbiAgICB2YWx1ZTogeyBhZGRyZXNzOiBIZXhTdHJpbmc7IG5hbWU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcbiAgKSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIG9uS2V5RG93bj86IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+XG4gIGlkPzogc3RyaW5nXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIGlzRW1wdHk/OiBib29sZWFuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlZEFkZHJlc3NJbnB1dCh7XG4gIHZhbHVlLFxuICBsYWJlbCA9IFwiUUVWTSBhZGRyZXNzIG9yIG5hbWVcIixcbiAgb25BZGRyZXNzQ2hhbmdlLFxuICBvbkZvY3VzLFxuICBvbktleURvd24sXG4gIGlkLFxuICBwbGFjZWhvbGRlcixcbiAgaXNFbXB0eSxcbn06IFByb3BzKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUodmFsdWUgPz8gXCJcIilcbiAgY29uc3QgZGVib3VuY2VkVmFsdWUgPSB1c2VEZWxheUNvbnRlbnRDaGFuZ2UoXG4gICAgaW5wdXRWYWx1ZSxcbiAgICAhIWlucHV0VmFsdWUubGVuZ3RoLFxuICAgIDUwMCxcbiAgKVxuXG4gIGNvbnN0IHsgZXJyb3JNZXNzYWdlLCBoYW5kbGVJbnB1dENoYW5nZSwgaXNWYWxpZGF0aW5nIH0gPVxuICAgIHVzZUFkZHJlc3NPck5hbWVWYWxpZGF0aW9uKG9uQWRkcmVzc0NoYW5nZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGhhbmRsZUlucHV0Q2hhbmdlKGRlYm91bmNlZFZhbHVlKVxuICB9LCBbZGVib3VuY2VkVmFsdWUsIGhhbmRsZUlucHV0Q2hhbmdlXSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U2hhcmVkSW5wdXRcbiAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgb25DaGFuZ2U9e3NldElucHV0VmFsdWV9XG4gICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICBlcnJvck1lc3NhZ2U9e2Vycm9yTWVzc2FnZX1cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAvPlxuICAgICAge2lzVmFsaWRhdGluZyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmFsaWRhdGluZ19zcGlubmVyXCI+XG4gICAgICAgICAgPFNoYXJlZExvYWRpbmdTcGlubmVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnZhbGlkYXRpbmdfc3Bpbm5lciB7XG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgIG1hcmdpbi10b3A6IC0zMnB4O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTdweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedAddressInput.tsx */"));
    }
    var ViewOnlyWallet_JSXStyle;
    var ViewOnlyWallet_useState;
    var ViewOnlyWallet_useCallback;
    var ViewOnlyWallet_React;
    var ViewOnlyWallet_Redirect;
    var ViewOnlyWallet_addAddressNetwork;
    var ViewOnlyWallet_setNewSelectedAccount;
    var ViewOnlyWallet_selectCurrentAccount;
    var ViewOnlyWallet_useTranslation;
    var ViewOnlyWallet_useBackgroundDispatch;
    var ViewOnlyWallet_useBackgroundSelector;
    var ViewOnlyWallet_SharedButton;
    var ViewOnlyWallet_SharedAddressInput;
    var ViewOnlyWallet_OnboardingTip;
    var ViewOnlyWallet_OnboardingRoutes;
    function ViewOnlyWallet() {
      const dispatch = ViewOnlyWallet_useBackgroundDispatch();
      const [redirect, setRedirect] = ViewOnlyWallet_useState(false);
      const [addressOnNetwork, setAddressOnNetwork] = ViewOnlyWallet_useState(undefined);
      const {t} = ViewOnlyWallet_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.viewOnly"
      });
      const {network} = ViewOnlyWallet_useBackgroundSelector(ViewOnlyWallet_selectCurrentAccount);
      const handleNewAddress = ViewOnlyWallet_useCallback((value => {
        if (value === undefined) {
          setAddressOnNetwork(undefined);
        } else {
          setAddressOnNetwork({
            address: value.address,
            network
          });
        }
      }), [ network ]);
      const handleSubmitViewOnlyAddress = ViewOnlyWallet_useCallback((async () => {
        if (addressOnNetwork === undefined) return;
        await dispatch(ViewOnlyWallet_addAddressNetwork(addressOnNetwork));
        dispatch(ViewOnlyWallet_setNewSelectedAccount(addressOnNetwork));
        setRedirect(true);
      }), [ dispatch, addressOnNetwork ]);
      const handleFormSubmitOnEnter = event => {
        if (event.key === "Enter") {
          event.preventDefault();
          handleSubmitViewOnlyAddress();
        }
      };
      const handleFormSubmitOnClick = event => {
        event.preventDefault();
        handleSubmitViewOnlyAddress();
      };
      if (redirect) {
        return ViewOnlyWallet_React.createElement(ViewOnlyWallet_Redirect, {
          to: ViewOnlyWallet_OnboardingRoutes.ONBOARDING_COMPLETE
        });
      }
      return ViewOnlyWallet_React.createElement("section", {
        className: "jsx-2524141030" + " " + "fade_in"
      }, ViewOnlyWallet_React.createElement("header", {
        className: "jsx-2524141030"
      }, ViewOnlyWallet_React.createElement("img", {
        width: "80",
        height: "80",
        alt: "QEVM Gold",
        src: "./images/doggo_readonly.svg",
        className: "jsx-2524141030"
      }), ViewOnlyWallet_React.createElement("div", {
        className: "jsx-2524141030"
      }, ViewOnlyWallet_React.createElement("h1", {
        className: "jsx-2524141030"
      }, t("title")), ViewOnlyWallet_React.createElement("div", {
        className: "jsx-2524141030" + " " + "subtitle"
      }, t("subtitle")))), ViewOnlyWallet_React.createElement("div", {
        className: "jsx-2524141030" + " " + "content"
      }, ViewOnlyWallet_React.createElement("form", {
        className: "jsx-2524141030"
      }, ViewOnlyWallet_React.createElement("div", {
        className: "jsx-2524141030" + " " + "input_wrap"
      }, ViewOnlyWallet_React.createElement(ViewOnlyWallet_SharedAddressInput, {
        onAddressChange: handleNewAddress,
        onKeyDown: handleFormSubmitOnEnter
      })), ViewOnlyWallet_React.createElement(ViewOnlyWallet_SharedButton, {
        type: "primary",
        size: "large",
        onClick: handleFormSubmitOnClick,
        isDisabled: addressOnNetwork === undefined,
        showLoadingOnClick: true,
        center: true
      }, t("submit"))), ViewOnlyWallet_React.createElement(ViewOnlyWallet_OnboardingTip, null, t("tip"))), ViewOnlyWallet_React.createElement(ViewOnlyWallet_JSXStyle, {
        id: "2524141030"
      }, 'header.jsx-2524141030{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:42px;}header.jsx-2524141030 img.jsx-2524141030{border-radius:22px;}header.jsx-2524141030>div.jsx-2524141030{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px;}header.jsx-2524141030 h1.jsx-2524141030{font-family:"Geist";font-weight:500;font-size:36px;line-height:42px;margin:0;}.subtitle.jsx-2524141030{color:var(--c-text-tertiary);max-width:307px;text-align:center;line-height:24px;}.content.jsx-2524141030{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}form.jsx-2524141030{margin-bottom:52px;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}.input_wrap.jsx-2524141030{width:320px;margin-bottom:40px;}.center_horizontal.jsx-2524141030{font-weight:500;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ViewOnlyWallet.tsx */'));
    }
    var ImportPrivateKey_JSXStyle;
    var ImportPrivateKey_importSigner;
    var ImportPrivateKey_SignerSourceTypes;
    var ImportPrivateKey_SignerImportSource;
    var ImportPrivateKey_useState;
    var ImportPrivateKey_useCallback;
    var ImportPrivateKey_React;
    var ImportPrivateKey_useTranslation;
    var ImportPrivateKey_SharedButton;
    var ImportPrivateKey_SharedSeedInput;
    var ImportPrivateKey_useBackgroundDispatch;
    function ImportPrivateKey(props) {
      const {setIsImporting, finalize} = props;
      const dispatch = ImportPrivateKey_useBackgroundDispatch();
      const [mnemonicString, setPrivateKey] = ImportPrivateKey_useState("");
      const [errorMessage, setErrorMessage] = ImportPrivateKey_useState("");
      const {t} = ImportPrivateKey_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.importMnemonics"
      });
      const onInputChange = ImportPrivateKey_useCallback((pk => {
        setPrivateKey(pk);
        setErrorMessage("");
      }), []);
      const importWallet = ImportPrivateKey_useCallback((async () => {
        const processedMnemonicString = mnemonicString.toLowerCase();
        setIsImporting(true);
        const {success} = await dispatch(ImportPrivateKey_importSigner({
          type: ImportPrivateKey_SignerSourceTypes.keyPair,
          mnemonic: processedMnemonicString,
          source: ImportPrivateKey_SignerImportSource.import
        }));
        if (success) {
          finalize();
        } else {
          setIsImporting(false);
          setErrorMessage(t("errorImport"));
        }
      }), [ dispatch, mnemonicString, setIsImporting, finalize, t ]);
      return ImportPrivateKey_React.createElement(ImportPrivateKey_React.Fragment, null, ImportPrivateKey_React.createElement("div", {
        className: "jsx-954159495" + " " + "form-container"
      }, ImportPrivateKey_React.createElement("div", {
        className: "jsx-954159495" + " " + "input-container"
      }, ImportPrivateKey_React.createElement(ImportPrivateKey_SharedSeedInput, {
        onChange: onInputChange,
        label: t("inputLabel"),
        errorMessage
      })), ImportPrivateKey_React.createElement("div", {
        className: "jsx-954159495" + " " + "button-wrapper"
      }, ImportPrivateKey_React.createElement(ImportPrivateKey_SharedButton, {
        style: {
          width: "100%",
          boxSizing: "border-box"
        },
        size: "medium",
        type: "primary",
        isDisabled: !mnemonicString,
        onClick: importWallet,
        center: true
      }, t("submit")))), ImportPrivateKey_React.createElement(ImportPrivateKey_JSXStyle, {
        id: "954159495"
      }, ".form-container.jsx-954159495{width:100%;max-width:400px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.input-container.jsx-954159495{width:100%;margin-bottom:20px;}.button-wrapper.jsx-954159495{width:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ImportPrivateKey.tsx */"));
    }
    var SharedFileInput_JSXStyle;
    var SharedFileInput_classNames;
    var SharedFileInput_useState;
    var SharedFileInput_useRef;
    var SharedFileInput_useCallback;
    var SharedFileInput_React;
    var SharedFileInput_Trans;
    var SharedFileInput_useTranslation;
    var SharedFileInput_SharedIcon;
    function SharedFileInput(props) {
      const {t} = SharedFileInput_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.importMnemonics"
      });
      const {onFileLoad, disabled = false, fileTypeLabel, style} = props;
      const [fileName, setFileName] = SharedFileInput_useState("");
      const [isLoading, setIsLoading] = SharedFileInput_useState(false);
      const [isUploaded, setIsUploaded] = SharedFileInput_useState(false);
      const [errorMessage, setErrorMessage] = SharedFileInput_useState("");
      const inputRef = SharedFileInput_useRef(null);
      const handleChange = SharedFileInput_useCallback((event => {
        const [file] = event.target?.files ?? [];
        setErrorMessage("");
        if (!file) {
          return;
        }
        const fileReader = new FileReader;
        setFileName(file.name);
        fileReader.readAsText(file, "UTF-8");
        fileReader.onloadstart = () => {
          setIsUploaded(false);
          setIsLoading(true);
          onFileLoad(null);
        };
        fileReader.onload = e => {
          setIsLoading(false);
          if (file.type && file.type !== "application/json") {
            setErrorMessage(t("wrongFile", {
              type: fileTypeLabel
            }));
          } else {
            setIsUploaded(true);
            onFileLoad(e.target);
          }
        };
        fileReader.onerror = () => {
          setIsLoading(false);
          setErrorMessage(t("uploadFail"));
          onFileLoad(null);
        };
      }), [ onFileLoad, fileTypeLabel, t ]);
      const handleRemove = () => {
        if (inputRef.current) {
          inputRef.current.value = "";
        }
        setErrorMessage("");
        setIsUploaded(false);
        setIsLoading(false);
        setFileName("");
        onFileLoad(null);
      };
      return SharedFileInput_React.createElement("div", {
        style,
        className: "jsx-3486079317" + " " + "file_input"
      }, SharedFileInput_React.createElement("div", {
        className: "jsx-3486079317" + " " + (SharedFileInput_classNames("file_drop", {
          hidden: fileName
        }) || "")
      }, SharedFileInput_React.createElement("div", {
        className: "jsx-3486079317" + " " + "file_img"
      }), SharedFileInput_React.createElement("div", {
        className: "jsx-3486079317" + " " + "file_text simple_text"
      }, SharedFileInput_React.createElement(SharedFileInput_Trans, {
        t,
        i18nKey: "browseFiles",
        values: {
          type: fileTypeLabel
        },
        components: {
          span: SharedFileInput_React.createElement("span", {
            className: "jsx-3486079317"
          })
        }
      })), SharedFileInput_React.createElement("input", {
        ref: inputRef,
        type: "file",
        onChange: e => handleChange(e),
        disabled,
        className: "jsx-3486079317"
      })), SharedFileInput_React.createElement("div", {
        "data-testid": "file_status",
        className: "jsx-3486079317" + " " + (SharedFileInput_classNames("file_status", {
          hidden: !fileName
        }) || "")
      }, isLoading && SharedFileInput_React.createElement(SharedFileInput_SharedIcon, {
        icon: "icons/m/import.svg",
        width: 24,
        color: "var(--c-warning)",
        style: {
          flexShrink: 0
        }
      }), !errorMessage && isUploaded && SharedFileInput_React.createElement(SharedFileInput_SharedIcon, {
        icon: "icons/m/notif-correct.svg",
        width: 24,
        color: "var(--c-success)",
        style: {
          flexShrink: 0
        }
      }), errorMessage && SharedFileInput_React.createElement(SharedFileInput_SharedIcon, {
        color: "var(--c-error)",
        width: 24,
        icon: "icons/m/notif-wrong.svg",
        style: {
          flexShrink: 0
        }
      }), SharedFileInput_React.createElement("div", {
        className: "jsx-3486079317" + " " + "ellipsis"
      }, errorMessage || fileName), SharedFileInput_React.createElement(SharedFileInput_SharedIcon, {
        color: "var(--c-text-tertiary)",
        width: 16,
        icon: "icons/s/close.svg",
        style: {
          flexShrink: 0,
          marginLeft: "auto"
        },
        onClick: handleRemove
      })), SharedFileInput_React.createElement(SharedFileInput_JSXStyle, {
        id: "3486079317"
      }, '.file_input.jsx-3486079317{width:100%;}.file_drop.jsx-3486079317{-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out;max-height:152px;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;background:var(--c-bg-alt);border:1px dashed var(--c-border);border-radius:8px;padding:16px 0 14px;}.file_drop.jsx-3486079317 input.jsx-3486079317{cursor:pointer;position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;}.file_img.jsx-3486079317{background:url("./images/json_file.svg");background-size:cover;width:46px;height:62px;margin-bottom:12px;}.file_text.jsx-3486079317{width:220px;text-align:center;color:var(--c-text-secondary);}.file_text.jsx-3486079317 span.jsx-3486079317{color:var(--c-accent);}.file_status.jsx-3486079317{-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out;max-height:42px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;color:var(--c-text);font-weight:600;font-size:18px;line-height:24px;border:1px solid var(--c-bg-inset);background:var(--c-border);border-radius:8px;padding:8px 12px;}.hidden.jsx-3486079317{opacity:0;margin:0;padding:0;max-height:0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/Shared/SharedFileInput.tsx */'));
    }
    var ImportPrivateKeyJSON_JSXStyle;
    var ImportPrivateKeyJSON_useState;
    var ImportPrivateKeyJSON_useCallback;
    var ImportPrivateKeyJSON_React;
    var ImportPrivateKeyJSON_useTranslation;
    var ImportPrivateKeyJSON_importSigner;
    var ImportPrivateKeyJSON_SignerSourceTypes;
    var ImportPrivateKeyJSON_classnames;
    var ImportPrivateKeyJSON_selectCurrentAccount;
    var ImportPrivateKeyJSON_SharedButton;
    var ImportPrivateKeyJSON_PasswordInput;
    var ImportPrivateKeyJSON_SharedFileInput;
    var ImportPrivateKeyJSON_SharedLoadingDoggo;
    var ImportPrivateKeyJSON_useBackgroundDispatch;
    var ImportPrivateKeyJSON_useBackgroundSelector;
    function ImportPrivateKeyJSON(props) {
      const {setIsImporting, isImporting, finalize} = props;
      const dispatch = ImportPrivateKeyJSON_useBackgroundDispatch();
      const selectedAccountAddress = ImportPrivateKeyJSON_useBackgroundSelector(ImportPrivateKeyJSON_selectCurrentAccount).address;
      const [file, setFile] = ImportPrivateKeyJSON_useState("");
      const [password, setPassword] = ImportPrivateKeyJSON_useState("");
      const [hasError, setHasError] = ImportPrivateKeyJSON_useState(false);
      const [isImported, setIsImported] = ImportPrivateKeyJSON_useState(false);
      const {t} = ImportPrivateKeyJSON_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.importMnemonics"
      });
      const onFileLoad = fileReader => {
        setFile(fileReader?.result?.toString() ?? "");
      };
      const importWallet = ImportPrivateKeyJSON_useCallback((async () => {
        if (!password || !file) {
          return;
        }
        setHasError(false);
        setIsImporting(true);
        const {success} = await dispatch(ImportPrivateKeyJSON_importSigner({
          type: ImportPrivateKeyJSON_SignerSourceTypes.jsonFile,
          jsonFile: file,
          password
        }));
        setIsImporting(false);
        if (success) {
          setIsImported(true);
          setHasError(false);
        } else {
          setHasError(true);
          setIsImported(false);
        }
      }), [ dispatch, file, password, setIsImporting ]);
      const showJSONForm = !isImporting && !isImported;
      return ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_React.Fragment, null, !showJSONForm && ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "wrapper"
      }, ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + (ImportPrivateKeyJSON_classnames("wrapper_content hidden_animation", {
          hidden: !isImporting
        }) || "")
      }, ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_SharedLoadingDoggo, {
        size: 70
      }), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "simple_text bold"
      }, t("decrypting"), "..."), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "simple_text"
      }, t("decryptingTime"))), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + (ImportPrivateKeyJSON_classnames("wrapper_content hidden_animation", {
          hidden: isImporting
        }) || "")
      }, ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "confetti"
      }, "🎉"), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "simple_text bold"
      }, t("completed")), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "simple_text"
      }, t("address")), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "simple_text address"
      }, selectedAccountAddress))), showJSONForm && ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "form_wrapper"
      }, ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_SharedFileInput, {
        onFileLoad,
        fileTypeLabel: t("json"),
        style: {
          marginBottom: "20px",
          width: "100%"
        }
      }), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "password-wrapper"
      }, ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_PasswordInput, {
        hasPreview: true,
        label: t("password"),
        onChange: value => setPassword(value),
        errorMessage: hasError ? t("wrongPassword") : ""
      })), ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "button-wrapper"
      }, ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_SharedButton, {
        style: {
          width: "100%",
          boxSizing: "border-box"
        },
        size: "medium",
        type: "primary",
        isDisabled: !(file && password) || isImporting,
        onClick: isImported ? finalize : importWallet,
        center: true
      }, t("decrypt")))), !showJSONForm && ImportPrivateKeyJSON_React.createElement("div", {
        className: "jsx-2156944236" + " " + "button-wrapper-finalize"
      }, ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_SharedButton, {
        style: {
          width: "100%",
          boxSizing: "border-box"
        },
        size: "medium",
        type: "primary",
        isDisabled: isImporting,
        onClick: finalize,
        center: true
      }, t("finalize"))), ImportPrivateKeyJSON_React.createElement(ImportPrivateKeyJSON_JSXStyle, {
        id: "2156944236"
      }, ".wrapper.jsx-2156944236{background:var(--c-bg-alt);border:1px solid var(--c-border-accent);width:100%;max-width:400px;border-radius:8px;min-height:200px;padding:24px;position:relative;}.wrapper_content.jsx-2156944236{position:absolute;top:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;width:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:24px;}.simple_text.jsx-2156944236{color:var(--c-text);text-align:center;}.simple_text.bold.jsx-2156944236{font-weight:600;font-size:18px;line-height:24px;margin-bottom:8px;}.simple_text.address.jsx-2156944236{color:var(--c-accent);font-weight:500;font-size:14px;word-wrap:break-word;text-align:center;width:90%;background:var(--c-bg);padding:12px;border-radius:8px;margin-top:8px;border:1px solid var(--c-border-accent);}.confetti.jsx-2156944236{font-size:48px;margin-bottom:12px;}.form_wrapper.jsx-2156944236{width:100%;max-width:388px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}.form_wrapper.jsx-2156944236 .file_input{width:100% !important;}.form_wrapper.jsx-2156944236 .input_wrap{width:100% !important;}.form_wrapper.jsx-2156944236 .file_input_container{width:100% !important;}.hidden_animation.jsx-2156944236{-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;}.hidden.jsx-2156944236{opacity:0;pointer-events:none;}.zero_height.jsx-2156944236{max-height:0;margin:0;padding:0;overflow:hidden;}.password-wrapper.jsx-2156944236{width:100%;}.button-wrapper.jsx-2156944236{width:100%;margin-top:20px;}.button-wrapper-finalize.jsx-2156944236{width:100%;max-width:400px;margin:20px auto 0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ImportPrivateKeyJSON.tsx */"));
    }
    var ImportPrivateKeyForm_JSXStyle;
    var ImportPrivateKeyForm_useState;
    var ImportPrivateKeyForm_React;
    var ImportPrivateKeyForm_useTranslation;
    var ImportPrivateKeyForm_useHistory;
    var ImportPrivateKeyForm_Redirect;
    var ImportPrivateKeyForm_SharedPanelSwitcher;
    var ImportPrivateKeyForm_useAreInternalSignersUnlocked;
    var ImportPrivateKeyForm_ImportForm;
    var ImportPrivateKeyForm_ImportPrivateKey;
    var ImportPrivateKeyForm_ImportPrivateKeyJSON;
    var ImportPrivateKeyForm_OnboardingRoutes;
    function ImportPrivateKeyForm(props) {
      const {nextPage} = props;
      const areInternalSignersUnlocked = ImportPrivateKeyForm_useAreInternalSignersUnlocked(false);
      const history = ImportPrivateKeyForm_useHistory();
      const [isImporting, setIsImporting] = ImportPrivateKeyForm_useState(false);
      const [panelNumber, setPanelNumber] = ImportPrivateKeyForm_useState(0);
      const {t} = ImportPrivateKeyForm_useTranslation("translation", {
        keyPrefix: "onboarding.tabbed.addWallet.importMnemonics"
      });
      const finalize = () => history.push(nextPage);
      if (!areInternalSignersUnlocked) return ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_Redirect, {
        to: {
          pathname: ImportPrivateKeyForm_OnboardingRoutes.SET_PASSWORD,
          state: {
            nextPage: ImportPrivateKeyForm_OnboardingRoutes.IMPORT_MNEMONICS
          }
        }
      });
      return ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_React.Fragment, null, ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_ImportForm, {
        title: t("title"),
        subtitle: t("subtitle")
      }, ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_React.Fragment, null, ImportPrivateKeyForm_React.createElement("div", {
        className: "jsx-521470667" + " " + "panel_wrapper"
      }, ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_SharedPanelSwitcher, {
        setPanelNumber,
        panelNumber,
        panelNames: [ t("mnemonics"), t("json") ]
      })), panelNumber === 0 ? ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_ImportPrivateKey, {
        setIsImporting,
        finalize
      }) : null, panelNumber === 1 ? ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_ImportPrivateKeyJSON, {
        setIsImporting,
        isImporting,
        finalize
      }) : null)), ImportPrivateKeyForm_React.createElement(ImportPrivateKeyForm_JSXStyle, {
        id: "521470667"
      }, ".panel_wrapper.jsx-521470667{width:100%;max-width:400px;margin-bottom:24px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvT25ib2FyZGluZy9UYWJiZWQvSW1wb3J0UHJpdmF0ZUtleUZvcm0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFa0IsQUFHc0IsV0FDSyxnQkFDRyxtQkFDckIiLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9wYWdlcy9PbmJvYXJkaW5nL1RhYmJlZC9JbXBvcnRQcml2YXRlS2V5Rm9ybS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCJcbmltcG9ydCB7IFJlZGlyZWN0LCB1c2VIaXN0b3J5IH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIlxuaW1wb3J0IFNoYXJlZFBhbmVsU3dpdGNoZXIgZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvU2hhcmVkL1NoYXJlZFBhbmVsU3dpdGNoZXJcIlxuaW1wb3J0IHsgdXNlQXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3NcIlxuaW1wb3J0IEltcG9ydEZvcm0gZnJvbSBcIi4vSW1wb3J0Rm9ybVwiXG5pbXBvcnQgSW1wb3J0UHJpdmF0ZUtleSBmcm9tIFwiLi9JbXBvcnRQcml2YXRlS2V5XCJcbmltcG9ydCBJbXBvcnRQcml2YXRlS2V5SlNPTiBmcm9tIFwiLi9JbXBvcnRQcml2YXRlS2V5SlNPTlwiXG5pbXBvcnQgT25ib2FyZGluZ1JvdXRlcyBmcm9tIFwiLi9Sb3V0ZXNcIlxuXG50eXBlIFByb3BzID0ge1xuICBuZXh0UGFnZTogc3RyaW5nXG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbXBvcnRQcml2YXRlS2V5Rm9ybShwcm9wczogUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuICBjb25zdCB7IG5leHRQYWdlIH0gPSBwcm9wc1xuXG4gIGNvbnN0IGFyZUludGVybmFsU2lnbmVyc1VubG9ja2VkID0gdXNlQXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQoZmFsc2UpXG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KClcblxuICBjb25zdCBbaXNJbXBvcnRpbmcsIHNldElzSW1wb3J0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGFuZWxOdW1iZXIsIHNldFBhbmVsTnVtYmVyXSA9IHVzZVN0YXRlKDApXG5cbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHtcbiAgICBrZXlQcmVmaXg6IFwib25ib2FyZGluZy50YWJiZWQuYWRkV2FsbGV0LmltcG9ydE1uZW1vbmljc1wiLFxuICB9KVxuXG4gIGNvbnN0IGZpbmFsaXplID0gKCkgPT4gaGlzdG9yeS5wdXNoKG5leHRQYWdlKVxuXG4gIGlmICghYXJlSW50ZXJuYWxTaWduZXJzVW5sb2NrZWQpXG4gICAgcmV0dXJuIChcbiAgICAgIDxSZWRpcmVjdFxuICAgICAgICB0bz17e1xuICAgICAgICAgIHBhdGhuYW1lOiBPbmJvYXJkaW5nUm91dGVzLlNFVF9QQVNTV09SRCxcbiAgICAgICAgICBzdGF0ZTogeyBuZXh0UGFnZTogT25ib2FyZGluZ1JvdXRlcy5JTVBPUlRfTU5FTU9OSUNTIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIClcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8SW1wb3J0Rm9ybSB0aXRsZT17dChcInRpdGxlXCIpfSBzdWJ0aXRsZT17dChcInN1YnRpdGxlXCIpfT5cbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxTaGFyZWRQYW5lbFN3aXRjaGVyXG4gICAgICAgICAgICAgIHNldFBhbmVsTnVtYmVyPXtzZXRQYW5lbE51bWJlcn1cbiAgICAgICAgICAgICAgcGFuZWxOdW1iZXI9e3BhbmVsTnVtYmVyfVxuICAgICAgICAgICAgICBwYW5lbE5hbWVzPXtbdChcIm1uZW1vbmljc1wiKSwgdChcImpzb25cIildfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cGFuZWxOdW1iZXIgPT09IDAgPyAoXG4gICAgICAgICAgICA8SW1wb3J0UHJpdmF0ZUtleVxuICAgICAgICAgICAgICBzZXRJc0ltcG9ydGluZz17c2V0SXNJbXBvcnRpbmd9XG4gICAgICAgICAgICAgIGZpbmFsaXplPXtmaW5hbGl6ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge3BhbmVsTnVtYmVyID09PSAxID8gKFxuICAgICAgICAgICAgPEltcG9ydFByaXZhdGVLZXlKU09OXG4gICAgICAgICAgICAgIHNldElzSW1wb3J0aW5nPXtzZXRJc0ltcG9ydGluZ31cbiAgICAgICAgICAgICAgaXNJbXBvcnRpbmc9e2lzSW1wb3J0aW5nfVxuICAgICAgICAgICAgICBmaW5hbGl6ZT17ZmluYWxpemV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgIDwvSW1wb3J0Rm9ybT5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLnBhbmVsX3dyYXBwZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/ImportPrivateKeyForm.tsx */"));
    }
    var Root_JSXStyle;
    var Root_React;
    var Root_useState;
    var Root_useLocation;
    var Root_matchPath;
    var Root_Switch;
    var Root_Redirect;
    var Root_Route;
    var Root_SharedBackButton;
    var Root_AddWallet;
    var Root_Done;
    var Root_ImportSeed;
    var Root_SetPassword;
    var Root_NewSeedRoutes;
    var Root_NewSeed;
    var InfoIntro;
    var Root_ViewOnlyWallet;
    var Root_OnboardingRoutes;
    var Root_useIsOnboarding;
    var Root_useValidateSession;
    var Root_ImportPrivateKeyForm;
    function Navigation({children, isOnboarding}) {
      const location = Root_useLocation();
      const ROUTES_WITHOUT_BACK_BUTTON = [ Root_OnboardingRoutes.ONBOARDING_START, Root_OnboardingRoutes.ONBOARDING_COMPLETE, Root_NewSeedRoutes.VERIFY_SEED, !isOnboarding && Root_OnboardingRoutes.ADD_WALLET ].filter((path => !!path));
      return Root_React.createElement("section", {
        className: "jsx-2303391802" + " " + "onboarding_container"
      }, Root_React.createElement(Root_JSXStyle, {
        id: "1082668036"
      }, "section.jsx-2303391802{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--c-bg);}.content_container.jsx-2303391802{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%;box-sizing:border-box;overflow-y:auto;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background:var(--c-bg);}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/Root.tsx */"), Root_React.createElement("div", {
        className: "jsx-2303391802" + " " + "content_container"
      }, !Root_matchPath(location.pathname, {
        path: ROUTES_WITHOUT_BACK_BUTTON,
        exact: true
      }) && Root_React.createElement("div", {
        className: "jsx-2303391802" + " " + "back_button"
      }, Root_React.createElement(Root_SharedBackButton, {
        withoutBackText: true,
        round: true
      })), children), Root_React.createElement(Root_JSXStyle, {
        id: "121076151"
      }, ".back_button.jsx-2303391802{position:absolute;top:24px;left:24px;z-index:10;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,  */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Onboarding/Tabbed/Root.tsx */"));
    }
    function Root() {
      const [isOnboarding] = Root_useState(Root_useIsOnboarding());
      Root_useValidateSession();
      return Root_React.createElement(Navigation, {
        isOnboarding
      }, Root_React.createElement(Root_Switch, null, !isOnboarding && Root_React.createElement(Root_Redirect, {
        to: Root_OnboardingRoutes.ADD_WALLET,
        from: Root_OnboardingRoutes.ONBOARDING_START,
        exact: true
      }), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.ONBOARDING_START,
        exact: true
      }, Root_React.createElement(InfoIntro, null)), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.ADD_WALLET
      }, Root_React.createElement(Root_AddWallet, null)), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.SET_PASSWORD
      }, Root_React.createElement(Root_SetPassword, null)), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.IMPORT_SEED
      }, Root_React.createElement(Root_ImportSeed, {
        nextPage: Root_OnboardingRoutes.ONBOARDING_COMPLETE
      })), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.IMPORT_MNEMONICS
      }, Root_React.createElement(Root_ImportPrivateKeyForm, {
        nextPage: Root_OnboardingRoutes.ONBOARDING_COMPLETE
      })), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.NEW_SEED
      }, Root_React.createElement(Root_NewSeed, null)), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.VIEW_ONLY_WALLET
      }, Root_React.createElement(Root_ViewOnlyWallet, null)), Root_React.createElement(Root_Route, {
        path: Root_OnboardingRoutes.ONBOARDING_COMPLETE
      }, Root_React.createElement(Root_Done, null))));
    }
    var TabNotFound_JSXStyle;
    var TabNotFound_React;
    var TabNotFound_useTranslation;
    function TabNotFound() {
      const {t} = TabNotFound_useTranslation();
      return TabNotFound_React.createElement(TabNotFound_React.Fragment, null, TabNotFound_React.createElement("div", {
        className: "jsx-557196143"
      }, TabNotFound_React.createElement("p", {
        className: "jsx-557196143"
      }, t("genericPages.pageDoesNotExist"))), TabNotFound_React.createElement(TabNotFound_JSXStyle, {
        id: "557196143"
      }, "div.jsx-557196143{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:100%;}p.jsx-557196143{margin:auto;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvVGFiTm90Rm91bmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVrQixBQUd3QixBQUlELFlBQ2QsOERBSmtCLGdCQUNsQiIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL1RhYk5vdEZvdW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRhYk5vdEZvdW5kKCk6IFJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57dChcImdlbmVyaWNQYWdlcy5wYWdlRG9lc05vdEV4aXN0XCIpfTwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICBkaXYge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICBwIHtcbiAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/TabNotFound.tsx */"));
    }
    var Tab_JSXStyle;
    var Tab_React;
    var Tab_Provider;
    var Tab_HashRouter;
    var Tab_Switch;
    var Tab_Route;
    var Container;
    var Tab_Snackbar;
    var TabbedOnboardingRoot;
    var Tab_TabNotFound;
    function Tab({store}) {
      return Tab_React.createElement(Tab_React.Fragment, null, Tab_React.createElement(Tab_Provider, {
        store
      }, Tab_React.createElement(Container, null, Tab_React.createElement(Tab_HashRouter, null, Tab_React.createElement(Tab_Switch, null, Tab_React.createElement(Tab_Route, {
        path: "/onboarding"
      }, Tab_React.createElement(TabbedOnboardingRoot, null)), Tab_React.createElement(Tab_Route, null, Tab_React.createElement(Tab_TabNotFound, null))))), Tab_React.createElement(Tab_Snackbar, {
        isTabbedOnboarding: true
      })), Tab_React.createElement(Tab_JSXStyle, {
        id: "4117729836"
      }, "body,#qwal-root{height:100%;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvcGFnZXMvVGFiLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ1MsQUFJeUIsWUFDZCIsImZpbGUiOiIvaG9tZS9rMG9kYS9Qcm9qZWN0cy9xZXh0ZW5zaW9uL3VpL3BhZ2VzL1RhYi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3RFbGVtZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7IEhhc2hSb3V0ZXIsIFJvdXRlLCBTd2l0Y2ggfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJ3ZWJleHQtcmVkdXhcIlxuaW1wb3J0IENvbnRhaW5lciBmcm9tIFwiLi4vY29tcG9uZW50cy9Ccm93c2VyVGFiL0Jyb3dzZXJUYWJDb250YWluZXJcIlxuaW1wb3J0IFNuYWNrYmFyIGZyb20gXCIuLi9jb21wb25lbnRzL1NuYWNrYmFyL1NuYWNrYmFyXCJcbmltcG9ydCBUYWJiZWRPbmJvYXJkaW5nUm9vdCBmcm9tIFwiLi9PbmJvYXJkaW5nL1RhYmJlZC9Sb290XCJcblxuaW1wb3J0IFRhYk5vdEZvdW5kIGZyb20gXCIuL1RhYk5vdEZvdW5kXCJcblxuLyoqXG4gKiBFbnRyeSBwb2ludCBmb3IgVUkgc2hvd24gaW4gYnJvd3NlciB0YWJzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUYWIoeyBzdG9yZSB9OiB7IHN0b3JlOiBTdG9yZSB9KTogUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIHsvKiBIYXNoUm91dGVyIHNlZW1zIHRoZSBvbmx5IGNob2ljZSBzdXBwb3J0aW5nIHNhZmUgcGFnZSByZWxvYWRzLiAqL31cbiAgICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgICA8SGFzaFJvdXRlcj5cbiAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL29uYm9hcmRpbmdcIj5cbiAgICAgICAgICAgICAgICA8VGFiYmVkT25ib2FyZGluZ1Jvb3QgLz5cbiAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgIDxUYWJOb3RGb3VuZCAvPlxuICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgPC9IYXNoUm91dGVyPlxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICAgPFNuYWNrYmFyIGlzVGFiYmVkT25ib2FyZGluZyAvPlxuICAgICAgPC9Qcm92aWRlcj5cbiAgICAgIDxzdHlsZSBqc3ggZ2xvYmFsPlxuICAgICAgICB7YFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgI3F3YWwtcm9vdCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/pages/Tab.tsx */"));
    }
    var ui_Tab;
    lib_logger.contextId = "UI";
    function setupSessionCleanup() {
      const handleBeforeUnload = () => {
        try {
          if (typeof window !== "undefined" && window.sessionStorage) {
            window.sessionStorage.removeItem("qwal_session");
            window.sessionStorage.removeItem("qwal_unlock_time");
          }
        } catch (error) {
          lib_logger.warn("Failed to cleanup session on unload:", error);
        }
      };
      const handleVisibilityChange = () => {
        if (document.visibilityState === "hidden") {}
      };
      window.addEventListener("beforeunload", handleBeforeUnload);
      document.addEventListener("visibilitychange", handleVisibilityChange);
    }
    async function attachUIToRootElement(component, store) {
      const rootElement = document.getElementById("qwal-root");
      if (!rootElement) {
        throw new Error("Failed to find #qwal-root element; page structure changed?");
      }
      const backgroundStore = store ?? await newProxyStore();
      setupSessionCleanup();
      const root = client.createRoot(rootElement);
      root.render(react.createElement(component, {
        store: backgroundStore
      }));
    }
    async function attachTabUIToRootElement() {
      await attachUIToRootElement(ui_Tab);
    }
    async function attachPopupUIToRootElement() {
      const store = await newProxyStore();
      const state = store.getState();
      if (accountsSelectors_getAllAddresses(state).length === 0) {
        const baseURL = browser_polyfill_default().runtime.getURL("tab.html");
        const tabs = (await browser_polyfill_default().tabs.query({
          url: baseURL
        })).filter((tab => tab?.url && tab.url.includes("onboarding")));
        if (tabs.length > 0 && tabs[0]?.id) {
          await browser_polyfill_default().tabs.update(tabs[0].id, {
            active: true
          });
        } else {
          await browser_polyfill_default().tabs.create({
            url: browser_polyfill_default().runtime.getURL(ONBOARDING_ROOT)
          });
        }
        window.close();
      }
      await attachUIToRootElement(Popup, store);
    }
    function GlobalError() {
      const {t} = useTranslation("translation", {
        keyPrefix: "globalError"
      });
      return react.createElement("section", {
        className: "jsx-3586630100" + " " + "standard_width"
      }, react.createElement("img", {
        src: "./images/empty_bowl@2x.png",
        alt: "",
        className: "jsx-3586630100" + " " + "bowl_image"
      }), react.createElement("h1", {
        className: "jsx-3586630100" + " " + "title"
      }, t("title")), react.createElement("p", {
        className: "jsx-3586630100" + " " + "simple_text description"
      }, t("desc")), react.createElement(SharedButton, {
        type: "primary",
        size: "large",
        onClick: () => window.location.reload()
      }, t("submitBtn")), react.createElement(style_default(), {
        id: "3586630100"
      }, "section.jsx-3586630100{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%;gap:25px;}.bowl_image.jsx-3586630100{width:90px;}.title.jsx-3586630100{color:var(--c-accent);margin:0;}.description.jsx-3586630100{width:65%;text-align:center;margin:0;margin-bottom:15px;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2swb2RhL1Byb2plY3RzL3FleHRlbnNpb24vdWkvY29tcG9uZW50cy9HbG9iYWxFcnJvci9HbG9iYWxFcnJvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JTLEFBRzBCLEFBU0YsQUFHVyxBQUlaLFVBQ1EsQ0FQcEIsV0FHVyxNQUtBLEdBSlgsTUFLcUIsbUJBQ3JCLGtCQW5Cd0IsOEVBQ0MsbUdBQ0osNkZBQ1IsV0FDQyxZQUNILFNBQ1giLCJmaWxlIjoiL2hvbWUvazBvZGEvUHJvamVjdHMvcWV4dGVuc2lvbi91aS9jb21wb25lbnRzL0dsb2JhbEVycm9yL0dsb2JhbEVycm9yLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiXG5pbXBvcnQgU2hhcmVkQnV0dG9uIGZyb20gXCIuLi9TaGFyZWQvU2hhcmVkQnV0dG9uXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR2xvYmFsRXJyb3IoKTogUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihcInRyYW5zbGF0aW9uXCIsIHsga2V5UHJlZml4OiBcImdsb2JhbEVycm9yXCIgfSlcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInN0YW5kYXJkX3dpZHRoXCI+XG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImJvd2xfaW1hZ2VcIiBzcmM9XCIuL2ltYWdlcy9lbXB0eV9ib3dsQDJ4LnBuZ1wiIGFsdD1cIlwiIC8+XG4gICAgICA8aDEgY2xhc3NOYW1lPVwidGl0bGVcIj57dChcInRpdGxlXCIpfTwvaDE+XG4gICAgICA8cCBjbGFzc05hbWU9XCJzaW1wbGVfdGV4dCBkZXNjcmlwdGlvblwiPnt0KFwiZGVzY1wiKX08L3A+XG4gICAgICA8U2hhcmVkQnV0dG9uXG4gICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfVxuICAgICAgPlxuICAgICAgICB7dChcInN1Ym1pdEJ0blwiKX1cbiAgICAgIDwvU2hhcmVkQnV0dG9uPlxuICAgICAgPHN0eWxlIGpzeD5cbiAgICAgICAge2BcbiAgICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBnYXA6IDI1cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5ib3dsX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiA5MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAudGl0bGUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWMtYWNjZW50KTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiA2NSU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIDwvc3R5bGU+XG4gICAgPC9zZWN0aW9uPlxuICApXG59XG4iXX0= */\n/*@ sourceURL=/home/k0oda/Projects/qextension/ui/components/GlobalError/GlobalError.tsx */"));
    }
    const RENDER_CHECK_TIMEOUT_MS = 4e3;
    const MAX_RELOAD_ATTEMPTS = 3;
    setTimeout((() => {
      const state = window.history?.state || {};
      let reloadCount = state?.reloadCount || 0;
      const navigationItem = performance.getEntriesByType("navigation")[0];
      if (navigationItem?.type?.toString() === "reload") {
        reloadCount += 1;
        state.reloadCount = reloadCount;
        window.history.replaceState(state, "", document.URL);
      } else if (reloadCount) {
        delete state.reloadCount;
        reloadCount = 0;
        window.history.replaceState(state, "", document.URL);
      }
      const isAppRendered = document.getElementsByTagName("main").length > 0;
      if (isAppRendered) {
        if (state.reloadCount) {
          delete state.reloadCount;
          window.history.replaceState(state, "", document.URL);
        }
        return;
      }
      if (reloadCount > MAX_RELOAD_ATTEMPTS) {
        attachUIToRootElement(GlobalError);
        delete state.reloadCount;
        window.history.replaceState(state, "", document.URL);
      } else {
        window.location.reload();
      }
    }), RENDER_CHECK_TIMEOUT_MS);
    const POPUP_WIDTH = 384;
    const POPUP_HEIGHT = 600;
    const missingWidth = POPUP_WIDTH - window.innerWidth;
    const missingHeight = POPUP_HEIGHT - window.innerHeight;
    window.resizeBy(missingWidth, missingHeight);
    attachPopupUIToRootElement();
  })();
})();
//# sourceMappingURL=popup.js.map