tenjin-cli 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +33 -0
- package/README.md +198 -18
- package/dist/{_esm-ZH2J4QEH.js → _esm-C5CRWCYU.js} +2 -2
- package/dist/_esm-FEASBWRP.js +881 -0
- package/dist/buy-U35DQ6XM.js +1598 -0
- package/dist/buy-U35DQ6XM.js.map +1 -0
- package/dist/candidate-RLYCQMF5.js +127 -0
- package/dist/candidate-RLYCQMF5.js.map +1 -0
- package/dist/{ccip-FXWZDDF5.js → ccip-NQXCEK2U.js} +6 -5
- package/dist/ccip-XR5NE5QK.js +19 -0
- package/dist/chunk-27ONARHV.js +171 -0
- package/dist/chunk-27ONARHV.js.map +1 -0
- package/dist/chunk-2I4QTOLB.js +11 -0
- package/dist/chunk-2I4QTOLB.js.map +1 -0
- package/dist/chunk-3OV7E5G5.js +18 -0
- package/dist/chunk-3OV7E5G5.js.map +1 -0
- package/dist/chunk-5CLSD5YN.js +209 -0
- package/dist/chunk-5CLSD5YN.js.map +1 -0
- package/dist/chunk-7KUW4MJD.js +59 -0
- package/dist/chunk-7KUW4MJD.js.map +1 -0
- package/dist/{doctor-MVLZRVPU.js → chunk-7PHSZKQS.js} +88 -93
- package/dist/chunk-7PHSZKQS.js.map +1 -0
- package/dist/chunk-CYOF7ROH.js +70 -0
- package/dist/chunk-CYOF7ROH.js.map +1 -0
- package/dist/chunk-HIVZG55D.js +204 -0
- package/dist/chunk-HIVZG55D.js.map +1 -0
- package/dist/chunk-HSDCI7OV.js +7806 -0
- package/dist/chunk-HSDCI7OV.js.map +1 -0
- package/dist/{chunk-LTTRND4A.js → chunk-IYLHQMT5.js} +85 -9
- package/dist/chunk-IYLHQMT5.js.map +1 -0
- package/dist/chunk-JPHG2JW3.js +96 -0
- package/dist/chunk-JPHG2JW3.js.map +1 -0
- package/dist/{chunk-ZPZFPVDN.js → chunk-MUBUQVC3.js} +1 -1
- package/dist/chunk-MUBUQVC3.js.map +1 -0
- package/dist/chunk-N62ROTMC.js +79 -0
- package/dist/chunk-N62ROTMC.js.map +1 -0
- package/dist/{chunk-SXQQ2ZSR.js → chunk-NCE5NSN6.js} +186 -18
- package/dist/chunk-NCE5NSN6.js.map +1 -0
- package/dist/{chunk-FIYZLITH.js → chunk-OYMYCW7J.js} +23 -4
- package/dist/{chunk-FIYZLITH.js.map → chunk-OYMYCW7J.js.map} +1 -1
- package/dist/chunk-QNP7H47L.js +152 -0
- package/dist/chunk-QNP7H47L.js.map +1 -0
- package/dist/{chunk-TX5T3LKJ.js → chunk-QVX5MWJZ.js} +21 -17
- package/dist/{chunk-TX5T3LKJ.js.map → chunk-QVX5MWJZ.js.map} +1 -1
- package/dist/{chunk-CPUZRZ2A.js → chunk-RBJPAZFI.js} +25 -170
- package/dist/chunk-RBJPAZFI.js.map +1 -0
- package/dist/chunk-RRN3YTK7.js +6199 -0
- package/dist/chunk-RRN3YTK7.js.map +1 -0
- package/dist/chunk-RY4XKNV3.js +140 -0
- package/dist/chunk-RY4XKNV3.js.map +1 -0
- package/dist/chunk-S3IGX57D.js +14682 -0
- package/dist/chunk-S3IGX57D.js.map +1 -0
- package/dist/{config-XVXZ3V2Q.js → chunk-TFGSOPWR.js} +117 -62
- package/dist/chunk-TFGSOPWR.js.map +1 -0
- package/dist/chunk-TLCMMYLY.js +126 -0
- package/dist/chunk-TLCMMYLY.js.map +1 -0
- package/dist/{chunk-PAAL45FJ.js → chunk-UGX7YPX2.js} +3446 -448
- package/dist/chunk-UGX7YPX2.js.map +1 -0
- package/dist/chunk-UO22YNY4.js +69 -0
- package/dist/chunk-UO22YNY4.js.map +1 -0
- package/dist/chunk-UPIEAMGH.js +160 -0
- package/dist/chunk-UPIEAMGH.js.map +1 -0
- package/dist/chunk-XJIW7USF.js +217 -0
- package/dist/chunk-XJIW7USF.js.map +1 -0
- package/dist/{chunk-F5DZJLU3.js → chunk-YALGASEU.js} +2065 -1258
- package/dist/chunk-YALGASEU.js.map +1 -0
- package/dist/chunk-YBMMV4Y4.js +51 -0
- package/dist/chunk-YBMMV4Y4.js.map +1 -0
- package/dist/chunk-YIYQ2ZNT.js +286 -0
- package/dist/chunk-YIYQ2ZNT.js.map +1 -0
- package/dist/{chunk-376LHMK2.js → chunk-YN5SHIXQ.js} +36 -10
- package/dist/chunk-YN5SHIXQ.js.map +1 -0
- package/dist/chunk-Z52RA3NC.js +137 -0
- package/dist/chunk-Z52RA3NC.js.map +1 -0
- package/dist/chunk-Z6MFJV5Z.js +1330 -0
- package/dist/chunk-Z6MFJV5Z.js.map +1 -0
- package/dist/chunk-ZABPQJ3M.js +83 -0
- package/dist/chunk-ZABPQJ3M.js.map +1 -0
- package/dist/{chunk-WOHCAMDQ.js → chunk-ZMHYXMO6.js} +1887 -1029
- package/dist/chunk-ZMHYXMO6.js.map +1 -0
- package/dist/{chunk-3IMLRUZE.js → chunk-ZXTAQYNA.js} +6 -2
- package/dist/{cli-LMHGCZ5S.js → cli-4NNBEQYH.js} +175 -179
- package/dist/cli-4NNBEQYH.js.map +1 -0
- package/dist/config-2VSXWWHK.js +21 -0
- package/dist/doctor-JJPNIBYH.js +20 -0
- package/dist/doctor-JJPNIBYH.js.map +1 -0
- package/dist/ethersCompat-Df4a6QIZ-3YZIAXDK.js +18 -0
- package/dist/ethersCompat-Df4a6QIZ-3YZIAXDK.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/inspect-JGYJWFDP.js +96 -0
- package/dist/inspect-JGYJWFDP.js.map +1 -0
- package/dist/install-ZQRMSRGW.js +378 -0
- package/dist/install-ZQRMSRGW.js.map +1 -0
- package/dist/lookup-WYVTOMVY.js +113 -0
- package/dist/lookup-WYVTOMVY.js.map +1 -0
- package/dist/{mine.wasm-GQECMSGN.js → mine.wasm-6PIT3DK6.js} +2 -2
- package/dist/outcome-HKKT6QIA.js +66 -0
- package/dist/outcome-HKKT6QIA.js.map +1 -0
- package/dist/publish-D76B3MBK.js +1480 -0
- package/dist/publish-D76B3MBK.js.map +1 -0
- package/dist/{secp256k1-35YNNB6F.js → secp256k1-N3ZHU7LB.js} +5 -4
- package/dist/secp256k1-N3ZHU7LB.js.map +1 -0
- package/dist/usdc-JIAJW4SV.js +22 -0
- package/dist/usdc-JIAJW4SV.js.map +1 -0
- package/dist/viemAdapter-By13KInL-ZZE6UV4Y.js +14 -0
- package/dist/viemAdapter-By13KInL-ZZE6UV4Y.js.map +1 -0
- package/dist/wallet-6QKS6UHW.js +179 -0
- package/dist/wallet-6QKS6UHW.js.map +1 -0
- package/dist/wallet-PA54CRBL.js +30 -0
- package/dist/wallet-PA54CRBL.js.map +1 -0
- package/package.json +20 -15
- package/skills/tenjin/SKILL.md +199 -0
- package/skills/tenjin-publish/SKILL.md +96 -0
- package/skills/tenjin-search/SKILL.md +122 -0
- package/dist/chunk-376LHMK2.js.map +0 -1
- package/dist/chunk-CPUZRZ2A.js.map +0 -1
- package/dist/chunk-F5DZJLU3.js.map +0 -1
- package/dist/chunk-LTTRND4A.js.map +0 -1
- package/dist/chunk-PAAL45FJ.js.map +0 -1
- package/dist/chunk-QHIEYBLV.js +0 -320
- package/dist/chunk-QHIEYBLV.js.map +0 -1
- package/dist/chunk-SXQQ2ZSR.js.map +0 -1
- package/dist/chunk-WOHCAMDQ.js.map +0 -1
- package/dist/chunk-ZPZFPVDN.js.map +0 -1
- package/dist/cli-LMHGCZ5S.js.map +0 -1
- package/dist/config-XVXZ3V2Q.js.map +0 -1
- package/dist/doctor-MVLZRVPU.js.map +0 -1
- package/dist/usdc-OQUOFF6R.js +0 -18
- package/dist/wallet-NRKWLKHX.js +0 -153
- package/dist/wallet-NRKWLKHX.js.map +0 -1
- package/dist/wallet-QUWK2PA4.js +0 -22
- /package/dist/{_esm-ZH2J4QEH.js.map → _esm-C5CRWCYU.js.map} +0 -0
- /package/dist/{ccip-FXWZDDF5.js.map → _esm-FEASBWRP.js.map} +0 -0
- /package/dist/{chunk-3IMLRUZE.js.map → ccip-NQXCEK2U.js.map} +0 -0
- /package/dist/{secp256k1-35YNNB6F.js.map → ccip-XR5NE5QK.js.map} +0 -0
- /package/dist/{usdc-OQUOFF6R.js.map → chunk-ZXTAQYNA.js.map} +0 -0
- /package/dist/{wallet-QUWK2PA4.js.map → config-2VSXWWHK.js.map} +0 -0
- /package/dist/{mine.wasm-GQECMSGN.js.map → mine.wasm-6PIT3DK6.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/identifiers.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/style.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-conv-api/transformers.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-conv-api/converter.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/emitcss.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/utilities.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/ast.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/circular-buffer.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/parser.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/stats.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/trace.js","../node_modules/.pnpm/apg-js@4.4.0/node_modules/apg-js/src/apg-lib/node-exports.js","../node_modules/.pnpm/@signinwithethereum+siwe@4.2.0_viem@2.55.2_typescript@6.0.3_zod@4.4.3_/node_modules/@signinwithethereum/siwe/dist/rolldown-runtime-CAFD8bLK.js","../node_modules/.pnpm/@signinwithethereum+siwe-parser@4.2.0/node_modules/@signinwithethereum/siwe-parser/dist/parsers.mjs","../node_modules/.pnpm/@signinwithethereum+siwe@4.2.0_viem@2.55.2_typescript@6.0.3_zod@4.4.3_/node_modules/@signinwithethereum/siwe/dist/utils-9-kzgPFC.js"],"sourcesContent":["/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module exposes a list of named identifiers, shared across the parser generator\n// and the parsers that are generated.\n\nmodule.exports = {\n // Identifies the operator type. Used by the generator\n // to indicate operator types in the grammar object.\n // Used by the [parser](./parser.html) when interpreting the grammar object.\n /* the original ABNF operators */\n ALT: 1 /* alternation */,\n CAT: 2 /* concatenation */,\n REP: 3 /* repetition */,\n RNM: 4 /* rule name */,\n TRG: 5 /* terminal range */,\n TBS: 6 /* terminal binary string, case sensitive */,\n TLS: 7 /* terminal literal string, case insensitive */,\n /* the super set, SABNF operators */\n UDT: 11 /* user-defined terminal */,\n AND: 12 /* positive look ahead */,\n NOT: 13 /* negative look ahead */,\n BKR: 14 /* back reference to a previously matched rule name */,\n BKA: 15 /* positive look behind */,\n BKN: 16 /* negative look behind */,\n ABG: 17 /* anchor - begin of string */,\n AEN: 18 /* anchor - end of string */,\n // Used by the parser and the user's `RNM` and `UDT` callback functions.\n // Identifies the parser state as it traverses the parse tree nodes.\n // - *ACTIVE* - indicates the downward direction through the parse tree node.\n // - *MATCH* - indicates the upward direction and a phrase, of length \\> 0, has been successfully matched\n // - *EMPTY* - indicates the upward direction and a phrase, of length = 0, has been successfully matched\n // - *NOMATCH* - indicates the upward direction and the parser failed to match any phrase at all\n ACTIVE: 100,\n MATCH: 101,\n EMPTY: 102,\n NOMATCH: 103,\n // Used by [`AST` translator](./ast.html) (semantic analysis) and the user's callback functions\n // to indicate the direction of flow through the `AST` nodes.\n // - *SEM_PRE* - indicates the downward (pre-branch) direction through the `AST` node.\n // - *SEM_POST* - indicates the upward (post-branch) direction through the `AST` node.\n SEM_PRE: 200,\n SEM_POST: 201,\n // Used by the user's callback functions to indicate to the `AST` translator (semantic analysis) how to proceed.\n // - *SEM_OK* - normal return value\n // - *SEM_SKIP* - if a callback function returns this value from the SEM_PRE state,\n // the translator will skip processing all `AST` nodes in the branch below the current node.\n // Ignored if returned from the SEM_POST state.\n SEM_OK: 300,\n SEM_SKIP: 301,\n // Used in attribute generation to distinguish the necessary attribute categories.\n // - *ATTR_N* - non-recursive\n // - *ATTR_R* - recursive\n // - *ATTR_MR* - belongs to a mutually-recursive set\n ATTR_N: 400,\n ATTR_R: 401,\n ATTR_MR: 402,\n // Look around values indicate whether the parser is in look ahead or look behind mode.\n // Used by the tracing facility to indicate the look around mode in the trace records display.\n // - *LOOKAROUND_NONE* - the parser is in normal parsing mode\n // - *LOOKAROUND_AHEAD* - the parse is in look-ahead mode, phrase matching for operator `AND(&)` or `NOT(!)`\n // - *LOOKAROUND_BEHIND* - the parse is in look-behind mode, phrase matching for operator `BKA(&&)` or `BKN(!!)`\n LOOKAROUND_NONE: 500,\n LOOKAROUND_AHEAD: 501,\n LOOKAROUND_BEHIND: 502,\n // Back reference rule mode indicators\n // - *BKR_MODE_UM* - the back reference is using universal mode\n // - *BKR_MODE_PM* - the back reference is using parent frame mode\n // - *BKR_MODE_CS* - the back reference is using case-sensitive phrase matching\n // - *BKR_MODE_CI* - the back reference is using case-insensitive phrase matching\n BKR_MODE_UM: 601,\n BKR_MODE_PM: 602,\n BKR_MODE_CS: 603,\n BKR_MODE_CI: 604,\n};\n","module.exports = {\n\n // Generated by apglib/style.js \n CLASS_MONOSPACE: 'apg-mono',\n CLASS_ACTIVE: 'apg-active',\n CLASS_EMPTY: 'apg-empty',\n CLASS_MATCH: 'apg-match',\n CLASS_NOMATCH: 'apg-nomatch',\n CLASS_LOOKAHEAD: 'apg-lh-match',\n CLASS_LOOKBEHIND: 'apg-lb-match',\n CLASS_REMAINDER: 'apg-remainder',\n CLASS_CTRLCHAR: 'apg-ctrl-char',\n CLASS_LINEEND: 'apg-line-end',\n CLASS_ERROR: 'apg-error',\n CLASS_PHRASE: 'apg-phrase',\n CLASS_EMPTYPHRASE: 'apg-empty-phrase',\n CLASS_STATE: 'apg-state',\n CLASS_STATS: 'apg-stats',\n CLASS_TRACE: 'apg-trace',\n CLASS_GRAMMAR: 'apg-grammar',\n CLASS_RULES: 'apg-rules',\n CLASS_RULESLINK: 'apg-rules-link',\n CLASS_ATTRIBUTES: 'apg-attrs',\n}\n","/* eslint-disable prefer-destructuring */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-bitwise */\n/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module contains the actual encoding and decoding algorithms.\n// Throws \"RangeError\" exceptions on characters or bytes out of range for the given encoding.\n\n'use strict;';\n\nconst { Buffer } = require('buffer');\n\n/* decoding error codes */\nconst NON_SHORTEST = 0xfffffffc;\nconst TRAILING = 0xfffffffd;\nconst RANGE = 0xfffffffe;\nconst ILL_FORMED = 0xffffffff;\n\n/* mask[n] = 2**n - 1, ie. mask[n] = n bits on. e.g. mask[6] = %b111111 */\nconst mask = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023];\n\n/* ascii[n] = 'HH', where 0xHH = n, eg. ascii[254] = 'FE' */\nconst ascii = [\n '00',\n '01',\n '02',\n '03',\n '04',\n '05',\n '06',\n '07',\n '08',\n '09',\n '0A',\n '0B',\n '0C',\n '0D',\n '0E',\n '0F',\n '10',\n '11',\n '12',\n '13',\n '14',\n '15',\n '16',\n '17',\n '18',\n '19',\n '1A',\n '1B',\n '1C',\n '1D',\n '1E',\n '1F',\n '20',\n '21',\n '22',\n '23',\n '24',\n '25',\n '26',\n '27',\n '28',\n '29',\n '2A',\n '2B',\n '2C',\n '2D',\n '2E',\n '2F',\n '30',\n '31',\n '32',\n '33',\n '34',\n '35',\n '36',\n '37',\n '38',\n '39',\n '3A',\n '3B',\n '3C',\n '3D',\n '3E',\n '3F',\n '40',\n '41',\n '42',\n '43',\n '44',\n '45',\n '46',\n '47',\n '48',\n '49',\n '4A',\n '4B',\n '4C',\n '4D',\n '4E',\n '4F',\n '50',\n '51',\n '52',\n '53',\n '54',\n '55',\n '56',\n '57',\n '58',\n '59',\n '5A',\n '5B',\n '5C',\n '5D',\n '5E',\n '5F',\n '60',\n '61',\n '62',\n '63',\n '64',\n '65',\n '66',\n '67',\n '68',\n '69',\n '6A',\n '6B',\n '6C',\n '6D',\n '6E',\n '6F',\n '70',\n '71',\n '72',\n '73',\n '74',\n '75',\n '76',\n '77',\n '78',\n '79',\n '7A',\n '7B',\n '7C',\n '7D',\n '7E',\n '7F',\n '80',\n '81',\n '82',\n '83',\n '84',\n '85',\n '86',\n '87',\n '88',\n '89',\n '8A',\n '8B',\n '8C',\n '8D',\n '8E',\n '8F',\n '90',\n '91',\n '92',\n '93',\n '94',\n '95',\n '96',\n '97',\n '98',\n '99',\n '9A',\n '9B',\n '9C',\n '9D',\n '9E',\n '9F',\n 'A0',\n 'A1',\n 'A2',\n 'A3',\n 'A4',\n 'A5',\n 'A6',\n 'A7',\n 'A8',\n 'A9',\n 'AA',\n 'AB',\n 'AC',\n 'AD',\n 'AE',\n 'AF',\n 'B0',\n 'B1',\n 'B2',\n 'B3',\n 'B4',\n 'B5',\n 'B6',\n 'B7',\n 'B8',\n 'B9',\n 'BA',\n 'BB',\n 'BC',\n 'BD',\n 'BE',\n 'BF',\n 'C0',\n 'C1',\n 'C2',\n 'C3',\n 'C4',\n 'C5',\n 'C6',\n 'C7',\n 'C8',\n 'C9',\n 'CA',\n 'CB',\n 'CC',\n 'CD',\n 'CE',\n 'CF',\n 'D0',\n 'D1',\n 'D2',\n 'D3',\n 'D4',\n 'D5',\n 'D6',\n 'D7',\n 'D8',\n 'D9',\n 'DA',\n 'DB',\n 'DC',\n 'DD',\n 'DE',\n 'DF',\n 'E0',\n 'E1',\n 'E2',\n 'E3',\n 'E4',\n 'E5',\n 'E6',\n 'E7',\n 'E8',\n 'E9',\n 'EA',\n 'EB',\n 'EC',\n 'ED',\n 'EE',\n 'EF',\n 'F0',\n 'F1',\n 'F2',\n 'F3',\n 'F4',\n 'F5',\n 'F6',\n 'F7',\n 'F8',\n 'F9',\n 'FA',\n 'FB',\n 'FC',\n 'FD',\n 'FE',\n 'FF',\n];\n\n/* vector of base 64 characters */\nconst base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split('');\n\n/* vector of base 64 character codes */\nconst base64codes = [];\nbase64chars.forEach((char) => {\n base64codes.push(char.charCodeAt(0));\n});\n\n// The UTF8 algorithms.\nexports.utf8 = {\n encode(chars) {\n const bytes = [];\n chars.forEach((char) => {\n if (char >= 0 && char <= 0x7f) {\n bytes.push(char);\n } else if (char <= 0x7ff) {\n bytes.push(0xc0 + ((char >> 6) & mask[5]));\n bytes.push(0x80 + (char & mask[6]));\n } else if (char < 0xd800 || (char > 0xdfff && char <= 0xffff)) {\n bytes.push(0xe0 + ((char >> 12) & mask[4]));\n bytes.push(0x80 + ((char >> 6) & mask[6]));\n bytes.push(0x80 + (char & mask[6]));\n } else if (char >= 0x10000 && char <= 0x10ffff) {\n const u = (char >> 16) & mask[5];\n bytes.push(0xf0 + (u >> 2));\n bytes.push(0x80 + ((u & mask[2]) << 4) + ((char >> 12) & mask[4]));\n bytes.push(0x80 + ((char >> 6) & mask[6]));\n bytes.push(0x80 + (char & mask[6]));\n } else {\n throw new RangeError(`utf8.encode: character out of range: char: ${char}`);\n }\n });\n return Buffer.from(bytes);\n },\n decode(buf, bom) {\n /* bytes functions return error for non-shortest forms & values out of range */\n function bytes2(b1, b2) {\n /* U+0080..U+07FF */\n /* 00000000 00000yyy yyxxxxxx | 110yyyyy 10xxxxxx */\n if ((b2 & 0xc0) !== 0x80) {\n return TRAILING;\n }\n const x = ((b1 & mask[5]) << 6) + (b2 & mask[6]);\n if (x < 0x80) {\n return NON_SHORTEST;\n }\n return x;\n }\n function bytes3(b1, b2, b3) {\n /* U+0800..U+FFFF */\n /* 00000000 zzzzyyyy yyxxxxxx | 1110zzzz 10yyyyyy 10xxxxxx */\n if ((b3 & 0xc0) !== 0x80 || (b2 & 0xc0) !== 0x80) {\n return TRAILING;\n }\n const x = ((b1 & mask[4]) << 12) + ((b2 & mask[6]) << 6) + (b3 & mask[6]);\n if (x < 0x800) {\n return NON_SHORTEST;\n }\n if (x >= 0xd800 && x <= 0xdfff) {\n return RANGE;\n }\n return x;\n }\n function bytes4(b1, b2, b3, b4) {\n /* U+10000..U+10FFFF */\n /* 000uuuuu zzzzyyyy yyxxxxxx | 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx */\n if ((b4 & 0xc0) !== 0x80 || (b3 & 0xc0) !== 0x80 || (b2 & 0xc0) !== 0x80) {\n return TRAILING;\n }\n const x =\n ((((b1 & mask[3]) << 2) + ((b2 >> 4) & mask[2])) << 16) +\n ((b2 & mask[4]) << 12) +\n ((b3 & mask[6]) << 6) +\n (b4 & mask[6]);\n if (x < 0x10000) {\n return NON_SHORTEST;\n }\n if (x > 0x10ffff) {\n return RANGE;\n }\n return x;\n }\n let c;\n let b1;\n let i1;\n let i2;\n let i3;\n let inc;\n const len = buf.length;\n let i = bom ? 3 : 0;\n const chars = [];\n while (i < len) {\n b1 = buf[i];\n c = ILL_FORMED;\n const TRUE = true;\n while (TRUE) {\n if (b1 >= 0 && b1 <= 0x7f) {\n /* U+0000..U+007F 00..7F */\n c = b1;\n inc = 1;\n break;\n }\n i1 = i + 1;\n if (i1 < len && b1 >= 0xc2 && b1 <= 0xdf) {\n /* U+0080..U+07FF C2..DF 80..BF */\n c = bytes2(b1, buf[i1]);\n inc = 2;\n break;\n }\n i2 = i + 2;\n if (i2 < len && b1 >= 0xe0 && b1 <= 0xef) {\n /* U+0800..U+FFFF */\n c = bytes3(b1, buf[i1], buf[i2]);\n inc = 3;\n break;\n }\n i3 = i + 3;\n if (i3 < len && b1 >= 0xf0 && b1 <= 0xf4) {\n /* U+10000..U+10FFFF */\n c = bytes4(b1, buf[i1], buf[i2], buf[i3]);\n inc = 4;\n break;\n }\n /* if we fall through to here, it is an ill-formed sequence */\n break;\n }\n if (c > 0x10ffff) {\n const at = `byte[${i}]`;\n if (c === ILL_FORMED) {\n throw new RangeError(`utf8.decode: ill-formed UTF8 byte sequence found at: ${at}`);\n }\n if (c === TRAILING) {\n throw new RangeError(`utf8.decode: illegal trailing byte found at: ${at}`);\n }\n if (c === RANGE) {\n throw new RangeError(`utf8.decode: code point out of range found at: ${at}`);\n }\n if (c === NON_SHORTEST) {\n throw new RangeError(`utf8.decode: non-shortest form found at: ${at}`);\n }\n throw new RangeError(`utf8.decode: unrecognized error found at: ${at}`);\n }\n chars.push(c);\n i += inc;\n }\n return chars;\n },\n};\n\n// The UTF16BE algorithms.\nexports.utf16be = {\n encode(chars) {\n const bytes = [];\n let char;\n let h;\n let l;\n for (let i = 0; i < chars.length; i += 1) {\n char = chars[i];\n if ((char >= 0 && char <= 0xd7ff) || (char >= 0xe000 && char <= 0xffff)) {\n bytes.push((char >> 8) & mask[8]);\n bytes.push(char & mask[8]);\n } else if (char >= 0x10000 && char <= 0x10ffff) {\n l = char - 0x10000;\n h = 0xd800 + (l >> 10);\n l = 0xdc00 + (l & mask[10]);\n bytes.push((h >> 8) & mask[8]);\n bytes.push(h & mask[8]);\n bytes.push((l >> 8) & mask[8]);\n bytes.push(l & mask[8]);\n } else {\n throw new RangeError(`utf16be.encode: UTF16BE value out of range: char[${i}]: ${char}`);\n }\n }\n return Buffer.from(bytes);\n },\n decode(buf, bom) {\n /* assumes caller has insured that buf is a Buffer of bytes */\n if (buf.length % 2 > 0) {\n throw new RangeError(`utf16be.decode: data length must be even multiple of 2: length: ${buf.length}`);\n }\n const chars = [];\n const len = buf.length;\n let i = bom ? 2 : 0;\n let j = 0;\n let c;\n let inc;\n let i1;\n let i3;\n let high;\n let low;\n while (i < len) {\n const TRUE = true;\n while (TRUE) {\n i1 = i + 1;\n if (i1 < len) {\n high = (buf[i] << 8) + buf[i1];\n if (high < 0xd800 || high > 0xdfff) {\n c = high;\n inc = 2;\n break;\n }\n i3 = i + 3;\n if (i3 < len) {\n low = (buf[i + 2] << 8) + buf[i3];\n if (high <= 0xdbff && low >= 0xdc00 && low <= 0xdfff) {\n c = 0x10000 + ((high - 0xd800) << 10) + (low - 0xdc00);\n inc = 4;\n break;\n }\n }\n }\n /* if we fall through to here, it is an ill-formed sequence */\n throw new RangeError(`utf16be.decode: ill-formed UTF16BE byte sequence found: byte[${i}]`);\n }\n chars[j++] = c;\n i += inc;\n }\n return chars;\n },\n};\n\n// The UTF16LE algorithms.\nexports.utf16le = {\n encode(chars) {\n const bytes = [];\n let char;\n let h;\n let l;\n for (let i = 0; i < chars.length; i += 1) {\n char = chars[i];\n if ((char >= 0 && char <= 0xd7ff) || (char >= 0xe000 && char <= 0xffff)) {\n bytes.push(char & mask[8]);\n bytes.push((char >> 8) & mask[8]);\n } else if (char >= 0x10000 && char <= 0x10ffff) {\n l = char - 0x10000;\n h = 0xd800 + (l >> 10);\n l = 0xdc00 + (l & mask[10]);\n bytes.push(h & mask[8]);\n bytes.push((h >> 8) & mask[8]);\n bytes.push(l & mask[8]);\n bytes.push((l >> 8) & mask[8]);\n } else {\n throw new RangeError(`utf16le.encode: UTF16LE value out of range: char[${i}]: ${char}`);\n }\n }\n return Buffer.from(bytes);\n },\n decode(buf, bom) {\n /* assumes caller has insured that buf is a Buffer of bytes */\n if (buf.length % 2 > 0) {\n throw new RangeError(`utf16le.decode: data length must be even multiple of 2: length: ${buf.length}`);\n }\n const chars = [];\n const len = buf.length;\n let i = bom ? 2 : 0;\n let j = 0;\n let c;\n let inc;\n let i1;\n let i3;\n let high;\n let low;\n while (i < len) {\n const TRUE = true;\n while (TRUE) {\n i1 = i + 1;\n if (i1 < len) {\n high = (buf[i1] << 8) + buf[i];\n if (high < 0xd800 || high > 0xdfff) {\n c = high;\n inc = 2;\n break;\n }\n i3 = i + 3;\n if (i3 < len) {\n low = (buf[i3] << 8) + buf[i + 2];\n if (high <= 0xdbff && low >= 0xdc00 && low <= 0xdfff) {\n c = 0x10000 + ((high - 0xd800) << 10) + (low - 0xdc00);\n inc = 4;\n break;\n }\n }\n }\n /* if we fall through to here, it is an ill-formed sequence */\n throw new RangeError(`utf16le.decode: ill-formed UTF16LE byte sequence found: byte[${i}]`);\n }\n chars[j++] = c;\n i += inc;\n }\n return chars;\n },\n};\n\n// The UTF32BE algorithms.\nexports.utf32be = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 4);\n let i = 0;\n chars.forEach((char) => {\n if ((char >= 0xd800 && char <= 0xdfff) || char > 0x10ffff) {\n throw new RangeError(`utf32be.encode: UTF32BE character code out of range: char[${i / 4}]: ${char}`);\n }\n buf[i++] = (char >> 24) & mask[8];\n buf[i++] = (char >> 16) & mask[8];\n buf[i++] = (char >> 8) & mask[8];\n buf[i++] = char & mask[8];\n });\n return buf;\n },\n decode(buf, bom) {\n /* caller to insure buf is a Buffer of bytes */\n if (buf.length % 4 > 0) {\n throw new RangeError(`utf32be.decode: UTF32BE byte length must be even multiple of 4: length: ${buf.length}`);\n }\n const chars = [];\n let i = bom ? 4 : 0;\n for (; i < buf.length; i += 4) {\n const char = (buf[i] << 24) + (buf[i + 1] << 16) + (buf[i + 2] << 8) + buf[i + 3];\n if ((char >= 0xd800 && char <= 0xdfff) || char > 0x10ffff) {\n throw new RangeError(`utf32be.decode: UTF32BE character code out of range: char[${i / 4}]: ${char}`);\n }\n chars.push(char);\n }\n return chars;\n },\n};\n\n// The UTF32LE algorithms.\nexports.utf32le = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 4);\n let i = 0;\n chars.forEach((char) => {\n if ((char >= 0xd800 && char <= 0xdfff) || char > 0x10ffff) {\n throw new RangeError(`utf32le.encode: UTF32LE character code out of range: char[${i / 4}]: ${char}`);\n }\n buf[i++] = char & mask[8];\n buf[i++] = (char >> 8) & mask[8];\n buf[i++] = (char >> 16) & mask[8];\n buf[i++] = (char >> 24) & mask[8];\n });\n return buf;\n },\n decode(buf, bom) {\n /* caller to insure buf is a Buffer of bytes */\n if (buf.length % 4 > 0) {\n throw new RangeError(`utf32be.decode: UTF32LE byte length must be even multiple of 4: length: ${buf.length}`);\n }\n const chars = [];\n let i = bom ? 4 : 0;\n for (; i < buf.length; i += 4) {\n const char = (buf[i + 3] << 24) + (buf[i + 2] << 16) + (buf[i + 1] << 8) + buf[i];\n if ((char >= 0xd800 && char <= 0xdfff) || char > 0x10ffff) {\n throw new RangeError(`utf32le.encode: UTF32LE character code out of range: char[${i / 4}]: ${char}`);\n }\n chars.push(char);\n }\n return chars;\n },\n};\n\n// The UINT7 algorithms. ASCII or 7-bit unsigned integers.\nexports.uint7 = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length);\n for (let i = 0; i < chars.length; i += 1) {\n if (chars[i] > 0x7f) {\n throw new RangeError(`uint7.encode: UINT7 character code out of range: char[${i}]: ${chars[i]}`);\n }\n buf[i] = chars[i];\n }\n return buf;\n },\n decode(buf) {\n const chars = [];\n for (let i = 0; i < buf.length; i += 1) {\n if (buf[i] > 0x7f) {\n throw new RangeError(`uint7.decode: UINT7 character code out of range: byte[${i}]: ${buf[i]}`);\n }\n chars[i] = buf[i];\n }\n return chars;\n },\n};\n\n// The UINT8 algorithms. BINARY, Latin 1 or 8-bit unsigned integers.\nexports.uint8 = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length);\n for (let i = 0; i < chars.length; i += 1) {\n if (chars[i] > 0xff) {\n throw new RangeError(`uint8.encode: UINT8 character code out of range: char[${i}]: ${chars[i]}`);\n }\n buf[i] = chars[i];\n }\n return buf;\n },\n decode(buf) {\n const chars = [];\n for (let i = 0; i < buf.length; i += 1) {\n chars[i] = buf[i];\n }\n return chars;\n },\n};\n\n// The UINT16BE algorithms. Big-endian 16-bit unsigned integers.\nexports.uint16be = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 2);\n let i = 0;\n chars.forEach((char) => {\n if (char > 0xffff) {\n throw new RangeError(`uint16be.encode: UINT16BE character code out of range: char[${i / 2}]: ${char}`);\n }\n buf[i++] = (char >> 8) & mask[8];\n buf[i++] = char & mask[8];\n });\n return buf;\n },\n decode(buf) {\n if (buf.length % 2 > 0) {\n throw new RangeError(`uint16be.decode: UINT16BE byte length must be even multiple of 2: length: ${buf.length}`);\n }\n const chars = [];\n for (let i = 0; i < buf.length; i += 2) {\n chars.push((buf[i] << 8) + buf[i + 1]);\n }\n return chars;\n },\n};\n\n// The UINT16LE algorithms. Little-endian 16-bit unsigned integers.\nexports.uint16le = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 2);\n let i = 0;\n chars.forEach((char) => {\n if (char > 0xffff) {\n throw new RangeError(`uint16le.encode: UINT16LE character code out of range: char[${i / 2}]: ${char}`);\n }\n buf[i++] = char & mask[8];\n buf[i++] = (char >> 8) & mask[8];\n });\n return buf;\n },\n decode(buf) {\n if (buf.length % 2 > 0) {\n throw new RangeError(`uint16le.decode: UINT16LE byte length must be even multiple of 2: length: ${buf.length}`);\n }\n const chars = [];\n for (let i = 0; i < buf.length; i += 2) {\n chars.push((buf[i + 1] << 8) + buf[i]);\n }\n return chars;\n },\n};\n\n// The UINT32BE algorithms. Big-endian 32-bit unsigned integers.\nexports.uint32be = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 4);\n let i = 0;\n chars.forEach((char) => {\n buf[i++] = (char >> 24) & mask[8];\n buf[i++] = (char >> 16) & mask[8];\n buf[i++] = (char >> 8) & mask[8];\n buf[i++] = char & mask[8];\n });\n return buf;\n },\n decode(buf) {\n if (buf.length % 4 > 0) {\n throw new RangeError(`uint32be.decode: UINT32BE byte length must be even multiple of 4: length: ${buf.length}`);\n }\n const chars = [];\n for (let i = 0; i < buf.length; i += 4) {\n chars.push((buf[i] << 24) + (buf[i + 1] << 16) + (buf[i + 2] << 8) + buf[i + 3]);\n }\n return chars;\n },\n};\n\n// The UINT32LE algorithms. Little-endian 32-bit unsigned integers.\nexports.uint32le = {\n encode(chars) {\n const buf = Buffer.alloc(chars.length * 4);\n let i = 0;\n chars.forEach((char) => {\n buf[i++] = char & mask[8];\n buf[i++] = (char >> 8) & mask[8];\n buf[i++] = (char >> 16) & mask[8];\n buf[i++] = (char >> 24) & mask[8];\n });\n return buf;\n },\n decode(buf) {\n /* caller to insure buf is a Buffer of bytes */\n if (buf.length % 4 > 0) {\n throw new RangeError(`uint32le.decode: UINT32LE byte length must be even multiple of 4: length: ${buf.length}`);\n }\n const chars = [];\n for (let i = 0; i < buf.length; i += 4) {\n chars.push((buf[i + 3] << 24) + (buf[i + 2] << 16) + (buf[i + 1] << 8) + buf[i]);\n }\n return chars;\n },\n};\n\n// The STRING algorithms. Converts JavaScript strings to Array of 32-bit integers and vice versa.\n// Uses the node.js Buffer's native \"utf16le\" capabilites.\nexports.string = {\n encode(chars) {\n return exports.utf16le.encode(chars).toString('utf16le');\n },\n decode(str) {\n return exports.utf16le.decode(Buffer.from(str, 'utf16le'), 0);\n },\n};\n\n// The ESCAPED algorithms.\n// Note that ESCAPED format contains only ASCII characters.\n// The characters are always in the form of a Buffer of bytes.\nexports.escaped = {\n // Encodes an Array of 32-bit integers into ESCAPED format.\n encode(chars) {\n const bytes = [];\n for (let i = 0; i < chars.length; i += 1) {\n const char = chars[i];\n if (char === 96) {\n bytes.push(char);\n bytes.push(char);\n } else if (char === 10) {\n bytes.push(char);\n } else if (char >= 32 && char <= 126) {\n bytes.push(char);\n } else {\n let str = '';\n if (char >= 0 && char <= 31) {\n str += `\\`x${ascii[char]}`;\n } else if (char >= 127 && char <= 255) {\n str += `\\`x${ascii[char]}`;\n } else if (char >= 0x100 && char <= 0xffff) {\n str += `\\`u${ascii[(char >> 8) & mask[8]]}${ascii[char & mask[8]]}`;\n } else if (char >= 0x10000 && char <= 0xffffffff) {\n str += '`u{';\n const digit = (char >> 24) & mask[8];\n if (digit > 0) {\n str += ascii[digit];\n }\n str += `${ascii[(char >> 16) & mask[8]] + ascii[(char >> 8) & mask[8]] + ascii[char & mask[8]]}}`;\n } else {\n throw new Error('escape.encode(char): char > 0xffffffff not allowed');\n }\n const buf = Buffer.from(str);\n buf.forEach((b) => {\n bytes.push(b);\n });\n }\n }\n return Buffer.from(bytes);\n },\n // Decodes ESCAPED format from a Buffer of bytes to an Array of 32-bit integers.\n decode(buf) {\n function isHex(hex) {\n if ((hex >= 48 && hex <= 57) || (hex >= 65 && hex <= 70) || (hex >= 97 && hex <= 102)) {\n return true;\n }\n return false;\n }\n function getx(i, len, bufArg) {\n const ret = { char: null, nexti: i + 2, error: true };\n if (i + 1 < len) {\n if (isHex(bufArg[i]) && isHex(bufArg[i + 1])) {\n const str = String.fromCodePoint(bufArg[i], bufArg[i + 1]);\n ret.char = parseInt(str, 16);\n if (!Number.isNaN(ret.char)) {\n ret.error = false;\n }\n }\n }\n return ret;\n }\n function getu(i, len, bufArg) {\n const ret = { char: null, nexti: i + 4, error: true };\n if (i + 3 < len) {\n if (isHex(bufArg[i]) && isHex(bufArg[i + 1]) && isHex(bufArg[i + 2]) && isHex(bufArg[i + 3])) {\n const str = String.fromCodePoint(bufArg[i], bufArg[i + 1], bufArg[i + 2], bufArg[i + 3]);\n ret.char = parseInt(str, 16);\n if (!Number.isNaN(ret.char)) {\n ret.error = false;\n }\n }\n }\n return ret;\n }\n function getU(i, len, bufArg) {\n const ret = { char: null, nexti: i + 4, error: true };\n let str = '';\n while (i < len && isHex(bufArg[i])) {\n str += String.fromCodePoint(bufArg[i]);\n // eslint-disable-next-line no-param-reassign\n i += 1;\n }\n ret.char = parseInt(str, 16);\n if (bufArg[i] === 125 && !Number.isNaN(ret.char)) {\n ret.error = false;\n }\n ret.nexti = i + 1;\n return ret;\n }\n const chars = [];\n const len = buf.length;\n let i1;\n let ret;\n let error;\n let i = 0;\n while (i < len) {\n const TRUE = true;\n while (TRUE) {\n error = true;\n if (buf[i] !== 96) {\n /* unescaped character */\n chars.push(buf[i]);\n i += 1;\n error = false;\n break;\n }\n i1 = i + 1;\n if (i1 >= len) {\n break;\n }\n if (buf[i1] === 96) {\n /* escaped grave accent */\n chars.push(96);\n i += 2;\n error = false;\n break;\n }\n if (buf[i1] === 120) {\n ret = getx(i1 + 1, len, buf);\n if (ret.error) {\n break;\n }\n /* escaped hex */\n chars.push(ret.char);\n i = ret.nexti;\n error = false;\n break;\n }\n if (buf[i1] === 117) {\n if (buf[i1 + 1] === 123) {\n ret = getU(i1 + 2, len, buf);\n if (ret.error) {\n break;\n }\n /* escaped utf-32 */\n chars.push(ret.char);\n i = ret.nexti;\n error = false;\n break;\n }\n ret = getu(i1 + 1, len, buf);\n if (ret.error) {\n break;\n }\n /* escaped utf-16 */\n chars.push(ret.char);\n i = ret.nexti;\n error = false;\n break;\n }\n break;\n }\n if (error) {\n throw new Error(`escaped.decode: ill-formed escape sequence at buf[${i}]`);\n }\n }\n return chars;\n },\n};\n\n// The line end conversion algorigthms.\nconst CR = 13;\nconst LF = 10;\nexports.lineEnds = {\n crlf(chars) {\n const lfchars = [];\n let i = 0;\n while (i < chars.length) {\n switch (chars[i]) {\n case CR:\n if (i + 1 < chars.length && chars[i + 1] === LF) {\n i += 2;\n } else {\n i += 1;\n }\n lfchars.push(CR);\n lfchars.push(LF);\n break;\n case LF:\n lfchars.push(CR);\n lfchars.push(LF);\n i += 1;\n break;\n default:\n lfchars.push(chars[i]);\n i += 1;\n break;\n }\n }\n if (lfchars.length > 0 && lfchars[lfchars.length - 1] !== LF) {\n lfchars.push(CR);\n lfchars.push(LF);\n }\n return lfchars;\n },\n lf(chars) {\n const lfchars = [];\n let i = 0;\n while (i < chars.length) {\n switch (chars[i]) {\n case CR:\n if (i + 1 < chars.length && chars[i + 1] === LF) {\n i += 2;\n } else {\n i += 1;\n }\n lfchars.push(LF);\n break;\n case LF:\n lfchars.push(LF);\n i += 1;\n break;\n default:\n lfchars.push(chars[i]);\n i += 1;\n break;\n }\n }\n if (lfchars.length > 0 && lfchars[lfchars.length - 1] !== LF) {\n lfchars.push(LF);\n }\n return lfchars;\n },\n};\n\n// The base 64 algorithms.\nexports.base64 = {\n encode(buf) {\n if (buf.length === 0) {\n return Buffer.alloc(0);\n }\n let i;\n let j;\n let n;\n let tail = buf.length % 3;\n tail = tail > 0 ? 3 - tail : 0;\n let units = (buf.length + tail) / 3;\n const base64 = Buffer.alloc(units * 4);\n if (tail > 0) {\n units -= 1;\n }\n i = 0;\n j = 0;\n for (let u = 0; u < units; u += 1) {\n n = buf[i++] << 16;\n n += buf[i++] << 8;\n n += buf[i++];\n base64[j++] = base64codes[(n >> 18) & mask[6]];\n base64[j++] = base64codes[(n >> 12) & mask[6]];\n base64[j++] = base64codes[(n >> 6) & mask[6]];\n base64[j++] = base64codes[n & mask[6]];\n }\n if (tail === 0) {\n return base64;\n }\n if (tail === 1) {\n n = buf[i++] << 16;\n n += buf[i] << 8;\n base64[j++] = base64codes[(n >> 18) & mask[6]];\n base64[j++] = base64codes[(n >> 12) & mask[6]];\n base64[j++] = base64codes[(n >> 6) & mask[6]];\n base64[j] = base64codes[64];\n return base64;\n }\n if (tail === 2) {\n n = buf[i] << 16;\n base64[j++] = base64codes[(n >> 18) & mask[6]];\n base64[j++] = base64codes[(n >> 12) & mask[6]];\n base64[j++] = base64codes[64];\n base64[j] = base64codes[64];\n return base64;\n }\n return undefined;\n },\n decode(codes) {\n /* remove white space and ctrl characters, validate & translate characters */\n function validate(buf) {\n const chars = [];\n let tail = 0;\n for (let i = 0; i < buf.length; i += 1) {\n const char = buf[i];\n const TRUE = true;\n while (TRUE) {\n if (char === 32 || char === 9 || char === 10 || char === 13) {\n break;\n }\n if (char >= 65 && char <= 90) {\n chars.push(char - 65);\n break;\n }\n if (char >= 97 && char <= 122) {\n chars.push(char - 71);\n break;\n }\n if (char >= 48 && char <= 57) {\n chars.push(char + 4);\n break;\n }\n if (char === 43) {\n chars.push(62);\n break;\n }\n if (char === 47) {\n chars.push(63);\n break;\n }\n if (char === 61) {\n chars.push(64);\n tail += 1;\n break;\n }\n /* invalid character */\n throw new RangeError(`base64.decode: invalid character buf[${i}]: ${char}`);\n }\n }\n /* validate length */\n if (chars.length % 4 > 0) {\n throw new RangeError(`base64.decode: string length not integral multiple of 4: ${chars.length}`);\n }\n /* validate tail */\n switch (tail) {\n case 0:\n break;\n case 1:\n if (chars[chars.length - 1] !== 64) {\n throw new RangeError('base64.decode: one tail character found: not last character');\n }\n break;\n case 2:\n if (chars[chars.length - 1] !== 64 || chars[chars.length - 2] !== 64) {\n throw new RangeError('base64.decode: two tail characters found: not last characters');\n }\n break;\n default:\n throw new RangeError(`base64.decode: more than two tail characters found: ${tail}`);\n }\n return { tail, buf: Buffer.from(chars) };\n }\n\n if (codes.length === 0) {\n return Buffer.alloc(0);\n }\n const val = validate(codes);\n const { tail } = val;\n const base64 = val.buf;\n let i;\n let j;\n let n;\n let units = base64.length / 4;\n const buf = Buffer.alloc(units * 3 - tail);\n if (tail > 0) {\n units -= 1;\n }\n j = 0;\n i = 0;\n for (let u = 0; u < units; u += 1) {\n n = base64[i++] << 18;\n n += base64[i++] << 12;\n n += base64[i++] << 6;\n n += base64[i++];\n buf[j++] = (n >> 16) & mask[8];\n buf[j++] = (n >> 8) & mask[8];\n buf[j++] = n & mask[8];\n }\n if (tail === 1) {\n n = base64[i++] << 18;\n n += base64[i++] << 12;\n n += base64[i] << 6;\n buf[j++] = (n >> 16) & mask[8];\n buf[j] = (n >> 8) & mask[8];\n }\n if (tail === 2) {\n n = base64[i++] << 18;\n n += base64[i++] << 12;\n buf[j] = (n >> 16) & mask[8];\n }\n return buf;\n },\n // Converts a base 64 Buffer of bytes to a JavaScript string with line breaks.\n toString(buf) {\n if (buf.length % 4 > 0) {\n throw new RangeError(`base64.toString: input buffer length not multiple of 4: ${buf.length}`);\n }\n let str = '';\n let lineLen = 0;\n function buildLine(c1, c2, c3, c4) {\n switch (lineLen) {\n case 76:\n str += `\\r\\n${c1}${c2}${c3}${c4}`;\n lineLen = 4;\n break;\n case 75:\n str += `${c1}\\r\\n${c2}${c3}${c4}`;\n lineLen = 3;\n break;\n case 74:\n str += `${c1 + c2}\\r\\n${c3}${c4}`;\n lineLen = 2;\n break;\n case 73:\n str += `${c1 + c2 + c3}\\r\\n${c4}`;\n lineLen = 1;\n break;\n default:\n str += c1 + c2 + c3 + c4;\n lineLen += 4;\n break;\n }\n }\n function validate(c) {\n if (c >= 65 && c <= 90) {\n return true;\n }\n if (c >= 97 && c <= 122) {\n return true;\n }\n if (c >= 48 && c <= 57) {\n return true;\n }\n if (c === 43) {\n return true;\n }\n if (c === 47) {\n return true;\n }\n if (c === 61) {\n return true;\n }\n return false;\n }\n for (let i = 0; i < buf.length; i += 4) {\n for (let j = i; j < i + 4; j += 1) {\n if (!validate(buf[j])) {\n throw new RangeError(`base64.toString: buf[${j}]: ${buf[j]} : not valid base64 character code`);\n }\n }\n buildLine(\n String.fromCharCode(buf[i]),\n String.fromCharCode(buf[i + 1]),\n String.fromCharCode(buf[i + 2]),\n String.fromCharCode(buf[i + 3])\n );\n }\n return str;\n },\n};\n","/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module exposes the public encoding, decoding and conversion functions.\n// Its private functions provide the disassembling and interpetation of the source and destination encoding types.\n// In the case of Unicode encodings, private functions determine the presence of Byte Order Marks (BOMs), if any.\n//\n// Throws \"TypeError\" exceptions on input errors.\n//\n\n'use strict;';\n\nconst { Buffer } = require('buffer');\n\nconst trans = require('./transformers');\n\n/* types */\nconst UTF8 = 'UTF8';\nconst UTF16 = 'UTF16';\nconst UTF16BE = 'UTF16BE';\nconst UTF16LE = 'UTF16LE';\nconst UTF32 = 'UTF32';\nconst UTF32BE = 'UTF32BE';\nconst UTF32LE = 'UTF32LE';\nconst UINT7 = 'UINT7';\nconst ASCII = 'ASCII';\nconst BINARY = 'BINARY';\nconst UINT8 = 'UINT8';\nconst UINT16 = 'UINT16';\nconst UINT16LE = 'UINT16LE';\nconst UINT16BE = 'UINT16BE';\nconst UINT32 = 'UINT32';\nconst UINT32LE = 'UINT32LE';\nconst UINT32BE = 'UINT32BE';\nconst ESCAPED = 'ESCAPED';\nconst STRING = 'STRING';\n\n/* private functions */\n// Find the UTF8 BOM, if any.\nconst bom8 = function bom8(src) {\n src.type = UTF8;\n const buf = src.data;\n src.bom = 0;\n if (buf.length >= 3) {\n if (buf[0] === 0xef && buf[1] === 0xbb && buf[2] === 0xbf) {\n src.bom = 3;\n }\n }\n};\n// Find the UTF16 BOM, if any, and determine the UTF16 type.\n// Defaults to UTF16BE.\n// Throws TypeError exception if BOM does not match the specified type.\nconst bom16 = function bom16(src) {\n const buf = src.data;\n src.bom = 0;\n switch (src.type) {\n case UTF16:\n src.type = UTF16BE;\n if (buf.length >= 2) {\n if (buf[0] === 0xfe && buf[1] === 0xff) {\n src.bom = 2;\n } else if (buf[0] === 0xff && buf[1] === 0xfe) {\n src.type = UTF16LE;\n src.bom = 2;\n }\n }\n break;\n case UTF16BE:\n src.type = UTF16BE;\n if (buf.length >= 2) {\n if (buf[0] === 0xfe && buf[1] === 0xff) {\n src.bom = 2;\n } else if (buf[0] === 0xff && buf[1] === 0xfe) {\n throw new TypeError(`src type: \"${UTF16BE}\" specified but BOM is for \"${UTF16LE}\"`);\n }\n }\n break;\n case UTF16LE:\n src.type = UTF16LE;\n if (buf.length >= 0) {\n if (buf[0] === 0xfe && buf[1] === 0xff) {\n throw new TypeError(`src type: \"${UTF16LE}\" specified but BOM is for \"${UTF16BE}\"`);\n } else if (buf[0] === 0xff && buf[1] === 0xfe) {\n src.bom = 2;\n }\n }\n break;\n default:\n throw new TypeError(`UTF16 BOM: src type \"${src.type}\" unrecognized`);\n }\n};\n// Find the UTF32 BOM, if any, and determine the UTF32 type.\n// Defaults to UTF32BE.\n// Throws exception if BOM does not match the specified type.\nconst bom32 = function bom32(src) {\n const buf = src.data;\n src.bom = 0;\n switch (src.type) {\n case UTF32:\n src.type = UTF32BE;\n if (buf.length >= 4) {\n if (buf[0] === 0 && buf[1] === 0 && buf[2] === 0xfe && buf[3] === 0xff) {\n src.bom = 4;\n }\n if (buf[0] === 0xff && buf[1] === 0xfe && buf[2] === 0 && buf[3] === 0) {\n src.type = UTF32LE;\n src.bom = 4;\n }\n }\n break;\n case UTF32BE:\n src.type = UTF32BE;\n if (buf.length >= 4) {\n if (buf[0] === 0 && buf[1] === 0 && buf[2] === 0xfe && buf[3] === 0xff) {\n src.bom = 4;\n }\n if (buf[0] === 0xff && buf[1] === 0xfe && buf[2] === 0 && buf[3] === 0) {\n throw new TypeError(`src type: ${UTF32BE} specified but BOM is for ${UTF32LE}\"`);\n }\n }\n break;\n case UTF32LE:\n src.type = UTF32LE;\n if (buf.length >= 4) {\n if (buf[0] === 0 && buf[1] === 0 && buf[2] === 0xfe && buf[3] === 0xff) {\n throw new TypeError(`src type: \"${UTF32LE}\" specified but BOM is for \"${UTF32BE}\"`);\n }\n if (buf[0] === 0xff && buf[1] === 0xfe && buf[2] === 0 && buf[3] === 0) {\n src.bom = 4;\n }\n }\n break;\n default:\n throw new TypeError(`UTF32 BOM: src type \"${src.type}\" unrecognized`);\n }\n};\n// Validates the source encoding type and matching data.\n// If the BASE64: prefix is present, the base 64 decoding is done here as the initial step.\n// - For type STRING, data must be a JavaScript string.\n// - For type BASE64:*, data may be a string or Buffer.\n// - For all other types, data must be a Buffer.\n// - The BASE64: prefix is not allowed for type STRING.\nconst validateSrc = function validateSrc(type, data) {\n function getType(typeArg) {\n const ret = {\n type: '',\n base64: false,\n };\n const rx = /^(base64:)?([a-zA-Z0-9]+)$/i;\n const result = rx.exec(typeArg);\n if (result) {\n if (result[2]) {\n ret.type = result[2].toUpperCase();\n }\n if (result[1]) {\n ret.base64 = true;\n }\n }\n return ret;\n }\n const ret = getType(type.toUpperCase());\n if (ret.base64) {\n /* handle base 64 */\n if (ret.type === STRING) {\n throw new TypeError(`type: \"${type} \"BASE64:\" prefix not allowed with type ${STRING}`);\n }\n if (Buffer.isBuffer(data)) {\n ret.data = trans.base64.decode(data);\n } else if (typeof data === 'string') {\n const buf = Buffer.from(data, 'ascii');\n ret.data = trans.base64.decode(buf);\n } else {\n throw new TypeError(`type: \"${type} unrecognized data type: typeof(data): ${typeof data}`);\n }\n } else {\n ret.data = data;\n }\n switch (ret.type) {\n case UTF8:\n bom8(ret);\n break;\n case UTF16:\n case UTF16BE:\n case UTF16LE:\n bom16(ret);\n break;\n case UTF32:\n case UTF32BE:\n case UTF32LE:\n bom32(ret);\n break;\n case UINT16:\n ret.type = UINT16BE;\n break;\n case UINT32:\n ret.type = UINT32BE;\n break;\n case ASCII:\n ret.type = UINT7;\n break;\n case BINARY:\n ret.type = UINT8;\n break;\n case UINT7:\n case UINT8:\n case UINT16LE:\n case UINT16BE:\n case UINT32LE:\n case UINT32BE:\n case STRING:\n case ESCAPED:\n break;\n default:\n throw new TypeError(`type: \"${type}\" not recognized`);\n }\n if (ret.type === STRING) {\n if (typeof ret.data !== 'string') {\n throw new TypeError(`type: \"${type}\" but data is not a string`);\n }\n } else if (!Buffer.isBuffer(ret.data)) {\n throw new TypeError(`type: \"${type}\" but data is not a Buffer`);\n }\n return ret;\n};\n// Disassembles and validates the destination type.\n// `chars` must be an Array of integers.\n// The :BASE64 suffix is not allowed for type STRING.\nconst validateDst = function validateDst(type, chars) {\n function getType(typeArg) {\n let fix;\n let rem;\n const ret = {\n crlf: false,\n lf: false,\n base64: false,\n type: '',\n };\n /* prefix, if any */\n const TRUE = true;\n while (TRUE) {\n rem = typeArg;\n fix = typeArg.slice(0, 5);\n if (fix === 'CRLF:') {\n ret.crlf = true;\n rem = typeArg.slice(5);\n break;\n }\n fix = typeArg.slice(0, 3);\n if (fix === 'LF:') {\n ret.lf = true;\n rem = typeArg.slice(3);\n break;\n }\n break;\n }\n /* suffix, if any */\n fix = rem.split(':');\n if (fix.length === 1) {\n // eslint-disable-next-line prefer-destructuring\n ret.type = fix[0];\n } else if (fix.length === 2 && fix[1] === 'BASE64') {\n ret.base64 = true;\n // eslint-disable-next-line prefer-destructuring\n ret.type = fix[0];\n }\n return ret;\n }\n if (!Array.isArray(chars)) {\n throw new TypeError(`dst chars: not array: \"${typeof chars}`);\n }\n if (typeof type !== 'string') {\n throw new TypeError(`dst type: not string: \"${typeof type}`);\n }\n const ret = getType(type.toUpperCase());\n switch (ret.type) {\n case UTF8:\n case UTF16BE:\n case UTF16LE:\n case UTF32BE:\n case UTF32LE:\n case UINT7:\n case UINT8:\n case UINT16LE:\n case UINT16BE:\n case UINT32LE:\n case UINT32BE:\n case ESCAPED:\n break;\n case STRING:\n if (ret.base64) {\n throw new TypeError(`\":BASE64\" suffix not allowed with type ${STRING}`);\n }\n break;\n case ASCII:\n ret.type = UINT7;\n break;\n case BINARY:\n ret.type = UINT8;\n break;\n case UTF16:\n ret.type = UTF16BE;\n break;\n case UTF32:\n ret.type = UTF32BE;\n break;\n case UINT16:\n ret.type = UINT16BE;\n break;\n case UINT32:\n ret.type = UINT32BE;\n break;\n default:\n throw new TypeError(`dst type unrecognized: \"${type}\" : must have form [crlf:|lf:]type[:base64]`);\n }\n return ret;\n};\n// Select and call the requested encoding function.\nconst encode = function encode(type, chars) {\n switch (type) {\n case UTF8:\n return trans.utf8.encode(chars);\n case UTF16BE:\n return trans.utf16be.encode(chars);\n case UTF16LE:\n return trans.utf16le.encode(chars);\n case UTF32BE:\n return trans.utf32be.encode(chars);\n case UTF32LE:\n return trans.utf32le.encode(chars);\n case UINT7:\n return trans.uint7.encode(chars);\n case UINT8:\n return trans.uint8.encode(chars);\n case UINT16BE:\n return trans.uint16be.encode(chars);\n case UINT16LE:\n return trans.uint16le.encode(chars);\n case UINT32BE:\n return trans.uint32be.encode(chars);\n case UINT32LE:\n return trans.uint32le.encode(chars);\n case STRING:\n return trans.string.encode(chars);\n case ESCAPED:\n return trans.escaped.encode(chars);\n default:\n throw new TypeError(`encode type \"${type}\" not recognized`);\n }\n};\n// Select and call the requested decoding function.\n// `src` contains BOM information as well as the source type and data.\nconst decode = function decode(src) {\n switch (src.type) {\n case UTF8:\n return trans.utf8.decode(src.data, src.bom);\n case UTF16LE:\n return trans.utf16le.decode(src.data, src.bom);\n case UTF16BE:\n return trans.utf16be.decode(src.data, src.bom);\n case UTF32BE:\n return trans.utf32be.decode(src.data, src.bom);\n case UTF32LE:\n return trans.utf32le.decode(src.data, src.bom);\n case UINT7:\n return trans.uint7.decode(src.data);\n case UINT8:\n return trans.uint8.decode(src.data);\n case UINT16BE:\n return trans.uint16be.decode(src.data);\n case UINT16LE:\n return trans.uint16le.decode(src.data);\n case UINT32BE:\n return trans.uint32be.decode(src.data);\n case UINT32LE:\n return trans.uint32le.decode(src.data);\n case STRING:\n return trans.string.decode(src.data);\n case ESCAPED:\n return trans.escaped.decode(src.data);\n default:\n throw new TypeError(`decode type \"${src.type}\" not recognized`);\n }\n};\n\n// The public decoding function. Returns an array of integers.\nexports.decode = function exportsDecode(type, data) {\n const src = validateSrc(type, data);\n return decode(src);\n};\n// The public encoding function. Returns a Buffer-typed byte array.\nexports.encode = function exportsEncode(type, chars) {\n let c;\n let buf;\n const dst = validateDst(type, chars);\n if (dst.crlf) {\n /* prefix with CRLF line end conversion, don't contaminate caller's chars array */\n c = trans.lineEnds.crlf(chars);\n buf = encode(dst.type, c);\n } else if (dst.lf) {\n /* prefix with LF line end conversion, don't contaminate caller's chars array */\n c = trans.lineEnds.lf(chars);\n buf = encode(dst.type, c);\n } else {\n buf = encode(dst.type, chars);\n }\n if (dst.base64) {\n /* post base 64 encoding */\n buf = trans.base64.encode(buf);\n }\n return buf;\n};\n// Converts data of type `srcType` to data of type `dstType`.\n// `srcData` may be a JavaScript String, or node.js Buffer, depending on the corresponding type.\nconst convert = function convert(srcType, srcData, dstType) {\n return exports.encode(dstType, exports.decode(srcType, srcData));\n};\nexports.convert = convert;\n","// This module has been developed programmatically in the `apg-lib` build process.\n// It is used to build web pages programatically on the fly without the need for <script> or <style> tags.\n\nmodule.exports = function emittcss(){\nreturn '/* This file automatically generated by jsonToless() and LESS. */\\n.apg-mono {\\n font-family: monospace;\\n}\\n.apg-active {\\n font-weight: bold;\\n color: #000000;\\n}\\n.apg-match {\\n font-weight: bold;\\n color: #264BFF;\\n}\\n.apg-empty {\\n font-weight: bold;\\n color: #0fbd0f;\\n}\\n.apg-nomatch {\\n font-weight: bold;\\n color: #FF4000;\\n}\\n.apg-lh-match {\\n font-weight: bold;\\n color: #1A97BA;\\n}\\n.apg-lb-match {\\n font-weight: bold;\\n color: #5F1687;\\n}\\n.apg-remainder {\\n font-weight: bold;\\n color: #999999;\\n}\\n.apg-ctrl-char {\\n font-weight: bolder;\\n font-style: italic;\\n font-size: 0.6em;\\n}\\n.apg-line-end {\\n font-weight: bold;\\n color: #000000;\\n}\\n.apg-error {\\n font-weight: bold;\\n color: #FF4000;\\n}\\n.apg-phrase {\\n color: #000000;\\n background-color: #8caae6;\\n}\\n.apg-empty-phrase {\\n color: #0fbd0f;\\n}\\ntable.apg-state {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: left;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-state th,\\ntable.apg-state td {\\n text-align: left;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-state th:nth-last-child(2),\\ntable.apg-state td:nth-last-child(2) {\\n text-align: right;\\n}\\ntable.apg-state caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-stats {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-stats th,\\ntable.apg-stats td {\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-stats caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-trace {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-trace caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-trace th,\\ntable.apg-trace td {\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-trace th:last-child,\\ntable.apg-trace th:nth-last-child(2),\\ntable.apg-trace td:last-child,\\ntable.apg-trace td:nth-last-child(2) {\\n text-align: left;\\n}\\ntable.apg-grammar {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-grammar caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-grammar th,\\ntable.apg-grammar td {\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-grammar th:last-child,\\ntable.apg-grammar td:last-child {\\n text-align: left;\\n}\\ntable.apg-rules {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-rules caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-rules th,\\ntable.apg-rules td {\\n text-align: right;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-rules a {\\n color: #003399 !important;\\n}\\ntable.apg-rules a:hover {\\n color: #8caae6 !important;\\n}\\ntable.apg-attrs {\\n font-family: monospace;\\n margin-top: 5px;\\n font-size: 11px;\\n line-height: 130%;\\n text-align: center;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-attrs caption {\\n font-size: 125%;\\n line-height: 130%;\\n font-weight: bold;\\n text-align: left;\\n}\\ntable.apg-attrs th,\\ntable.apg-attrs td {\\n text-align: center;\\n border: 1px solid black;\\n border-collapse: collapse;\\n}\\ntable.apg-attrs th:nth-child(1),\\ntable.apg-attrs th:nth-child(2),\\ntable.apg-attrs th:nth-child(3) {\\n text-align: right;\\n}\\ntable.apg-attrs td:nth-child(1),\\ntable.apg-attrs td:nth-child(2),\\ntable.apg-attrs td:nth-child(3) {\\n text-align: right;\\n}\\ntable.apg-attrs a {\\n color: #003399 !important;\\n}\\ntable.apg-attrs a:hover {\\n color: #8caae6 !important;\\n}\\n';\n}\n","/* eslint-disable func-names */\n/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module exports a variety of utility functions that support\n// [`apg`](https://github.com/ldthomas/apg-js2), [`apg-lib`](https://github.com/ldthomas/apg-js2-lib)\n// and the generated parser applications.\n\nconst style = require('./style');\nconst converter = require('../apg-conv-api/converter');\nconst emitCss = require('./emitcss');\nconst id = require('./identifiers');\n\nconst thisFileName = 'utilities.js: ';\n\n/* translate (implied) phrase beginning character and length to actual first and last character indexes */\n/* used by multiple phrase handling functions */\nconst getBounds = function (length, begArg, len) {\n let end;\n let beg = begArg;\n const TRUE = true;\n while (TRUE) {\n if (length <= 0) {\n beg = 0;\n end = 0;\n break;\n }\n if (typeof beg !== 'number') {\n beg = 0;\n end = length;\n break;\n }\n if (beg >= length) {\n beg = length;\n end = length;\n break;\n }\n if (typeof len !== 'number') {\n end = length;\n break;\n }\n end = beg + len;\n if (end > length) {\n end = length;\n break;\n }\n break;\n }\n return {\n beg,\n end,\n };\n};\n// Generates a complete, minimal HTML5 page, inserting the user's HTML text on the page.\n// - *html* - the page text in HTML format\n// - *title* - the HTML page `<title>` - defaults to `htmlToPage`.\nexports.htmlToPage = function (html, titleArg) {\n let title;\n if (typeof html !== 'string') {\n throw new Error(`${thisFileName}htmlToPage: input HTML is not a string`);\n }\n if (typeof titleArg !== 'string') {\n title = 'htmlToPage';\n } else {\n title = titleArg;\n }\n let page = '';\n page += '<!DOCTYPE html>\\n';\n page += '<html lang=\"en\">\\n';\n page += '<head>\\n';\n page += '<meta charset=\"utf-8\">\\n';\n page += `<title>${title}</title>\\n`;\n page += '<style>\\n';\n page += emitCss();\n page += '</style>\\n';\n page += '</head>\\n<body>\\n';\n page += `<p>${new Date()}</p>\\n`;\n page += html;\n page += '</body>\\n</html>\\n';\n return page;\n};\n// Formats the returned object from `parser.parse()`\n// into an HTML table.\n// ```\n// return {\n// success : sysData.success,\n// state : sysData.state,\n// length : charsLength,\n// matched : sysData.phraseLength,\n// maxMatched : maxMatched,\n// maxTreeDepth : maxTreeDepth,\n// nodeHits : nodeHits,\n// inputLength : chars.length,\n// subBegin : charsBegin,\n// subEnd : charsEnd,\n// subLength : charsLength\n// };\n// ```\nexports.parserResultToHtml = function (result, caption) {\n let cap = null;\n if (typeof caption === 'string' && caption !== '') {\n cap = caption;\n }\n let success;\n let state;\n if (result.success === true) {\n success = `<span class=\"${style.CLASS_MATCH}\">true</span>`;\n } else {\n success = `<span class=\"${style.CLASS_NOMATCH}\">false</span>`;\n }\n if (result.state === id.EMPTY) {\n state = `<span class=\"${style.CLASS_EMPTY}\">EMPTY</span>`;\n } else if (result.state === id.MATCH) {\n state = `<span class=\"${style.CLASS_MATCH}\">MATCH</span>`;\n } else if (result.state === id.NOMATCH) {\n state = `<span class=\"${style.CLASS_NOMATCH}\">NOMATCH</span>`;\n } else {\n state = `<span class=\"${style.CLASS_NOMATCH}\">unrecognized</span>`;\n }\n let html = '';\n html += `<table class=\"${style.CLASS_STATE}\">\\n`;\n if (cap) {\n html += `<caption>${cap}</caption>\\n`;\n }\n html += '<tr><th>state item</th><th>value</th><th>description</th></tr>\\n';\n html += `<tr><td>parser success</td><td>${success}</td>\\n`;\n html += `<td><span class=\"${style.CLASS_MATCH}\">true</span> if the parse succeeded,\\n`;\n html += ` <span class=\"${style.CLASS_NOMATCH}\">false</span> otherwise`;\n html += '<br><i>NOTE: for success, entire string must be matched</i></td></tr>\\n';\n html += `<tr><td>parser state</td><td>${state}</td>\\n`;\n html += `<td><span class=\"${style.CLASS_EMPTY}\">EMPTY</span>, `;\n html += `<span class=\"${style.CLASS_MATCH}\">MATCH</span> or \\n`;\n html += `<span class=\"${style.CLASS_NOMATCH}\">NOMATCH</span></td></tr>\\n`;\n html += `<tr><td>string length</td><td>${result.length}</td><td>length of the input (sub)string</td></tr>\\n`;\n html += `<tr><td>matched length</td><td>${result.matched}</td><td>number of input string characters matched</td></tr>\\n`;\n html += `<tr><td>max matched</td><td>${result.maxMatched}</td><td>maximum number of input string characters matched</td></tr>\\n`;\n html += `<tr><td>max tree depth</td><td>${result.maxTreeDepth}</td><td>maximum depth of the parse tree reached</td></tr>\\n`;\n html += `<tr><td>node hits</td><td>${result.nodeHits}</td><td>number of parse tree node hits (opcode function calls)</td></tr>\\n`;\n html += `<tr><td>input length</td><td>${result.inputLength}</td><td>length of full input string</td></tr>\\n`;\n html += `<tr><td>sub-string begin</td><td>${result.subBegin}</td><td>sub-string first character index</td></tr>\\n`;\n html += `<tr><td>sub-string end</td><td>${result.subEnd}</td><td>sub-string end-of-string index</td></tr>\\n`;\n html += `<tr><td>sub-string length</td><td>${result.subLength}</td><td>sub-string length</td></tr>\\n`;\n html += '</table>\\n';\n return html;\n};\n// Translates a sub-array of integer character codes into a string.\n// Very useful in callback functions to translate the matched phrases into strings.\nexports.charsToString = function (chars, phraseIndex, phraseLength) {\n let beg;\n let end;\n if (typeof phraseIndex === 'number') {\n if (phraseIndex >= chars.length) {\n return '';\n }\n beg = phraseIndex < 0 ? 0 : phraseIndex;\n } else {\n beg = 0;\n }\n if (typeof phraseLength === 'number') {\n if (phraseLength <= 0) {\n return '';\n }\n end = phraseLength > chars.length - beg ? chars.length : beg + phraseLength;\n } else {\n end = chars.length;\n }\n if (beg < end) {\n return converter.encode('UTF16LE', chars.slice(beg, end)).toString('utf16le');\n }\n return '';\n};\n// Translates a string into an array of integer character codes.\nexports.stringToChars = function (string) {\n return converter.decode('STRING', string);\n};\n// Translates an opcode identifier into a human-readable string.\nexports.opcodeToString = function (type) {\n let ret = 'unknown';\n switch (type) {\n case id.ALT:\n ret = 'ALT';\n break;\n case id.CAT:\n ret = 'CAT';\n break;\n case id.RNM:\n ret = 'RNM';\n break;\n case id.UDT:\n ret = 'UDT';\n break;\n case id.AND:\n ret = 'AND';\n break;\n case id.NOT:\n ret = 'NOT';\n break;\n case id.REP:\n ret = 'REP';\n break;\n case id.TRG:\n ret = 'TRG';\n break;\n case id.TBS:\n ret = 'TBS';\n break;\n case id.TLS:\n ret = 'TLS';\n break;\n case id.BKR:\n ret = 'BKR';\n break;\n case id.BKA:\n ret = 'BKA';\n break;\n case id.BKN:\n ret = 'BKN';\n break;\n case id.ABG:\n ret = 'ABG';\n break;\n case id.AEN:\n ret = 'AEN';\n break;\n default:\n throw new Error('unrecognized opcode');\n }\n return ret;\n};\n// Translates an state identifier into a human-readable string.\nexports.stateToString = function (state) {\n let ret = 'unknown';\n switch (state) {\n case id.ACTIVE:\n ret = 'ACTIVE';\n break;\n case id.MATCH:\n ret = 'MATCH';\n break;\n case id.EMPTY:\n ret = 'EMPTY';\n break;\n case id.NOMATCH:\n ret = 'NOMATCH';\n break;\n default:\n throw new Error('unrecognized state');\n }\n return ret;\n};\n// Array which translates all 128, 7-bit ASCII character codes to their respective HTML format.\nexports.asciiChars = [\n 'NUL',\n 'SOH',\n 'STX',\n 'ETX',\n 'EOT',\n 'ENQ',\n 'ACK',\n 'BEL',\n 'BS',\n 'TAB',\n 'LF',\n 'VT',\n 'FF',\n 'CR',\n 'SO',\n 'SI',\n 'DLE',\n 'DC1',\n 'DC2',\n 'DC3',\n 'DC4',\n 'NAK',\n 'SYN',\n 'ETB',\n 'CAN',\n 'EM',\n 'SUB',\n 'ESC',\n 'FS',\n 'GS',\n 'RS',\n 'US',\n ' ',\n '!',\n '"',\n '#',\n '$',\n '%',\n '&',\n ''',\n '(',\n ')',\n '*',\n '+',\n ',',\n '-',\n '.',\n '/',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ':',\n ';',\n '<',\n '=',\n '>',\n '?',\n '@',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n '[',\n '\',\n ']',\n '^',\n '_',\n '`',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n '{',\n '|',\n '}',\n '~',\n 'DEL',\n];\n// Translates a single character to hexadecimal with leading zeros for 2, 4, or 8 digit display.\nexports.charToHex = function (char) {\n let ch = char.toString(16).toUpperCase();\n switch (ch.length) {\n case 1:\n case 3:\n case 7:\n ch = `0${ch}`;\n break;\n case 2:\n case 6:\n ch = `00${ch}`;\n break;\n case 4:\n break;\n case 5:\n ch = `000${ch}`;\n break;\n default:\n throw new Error('unrecognized option');\n }\n return ch;\n};\n// Translates a sub-array of character codes to decimal display format.\nexports.charsToDec = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToDec: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n if (bounds.end > bounds.beg) {\n ret += chars[bounds.beg];\n for (let i = bounds.beg + 1; i < bounds.end; i += 1) {\n ret += `,${chars[i]}`;\n }\n }\n return ret;\n};\n// Translates a sub-array of character codes to hexadecimal display format.\nexports.charsToHex = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToHex: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n if (bounds.end > bounds.beg) {\n ret += `\\\\x${exports.charToHex(chars[bounds.beg])}`;\n for (let i = bounds.beg + 1; i < bounds.end; i += 1) {\n ret += `,\\\\x${exports.charToHex(chars[i])}`;\n }\n }\n return ret;\n};\nexports.charsToHtmlEntities = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToHex: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n if (bounds.end > bounds.beg) {\n for (let i = bounds.beg; i < bounds.end; i += 1) {\n ret += `&#x${chars[i].toString(16)};`;\n }\n }\n return ret;\n};\n// Translates a sub-array of character codes to Unicode display format.\nfunction isUnicode(char) {\n if (char >= 0xd800 && char <= 0xdfff) {\n return false;\n }\n if (char > 0x10ffff) {\n return false;\n }\n return true;\n}\nexports.charsToUnicode = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToUnicode: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n if (bounds.end > bounds.beg) {\n for (let i = bounds.beg; i < bounds.end; i += 1) {\n if (isUnicode(chars[i])) {\n ret += `&#${chars[i]};`;\n } else {\n ret += ` U+${exports.charToHex(chars[i])}`;\n }\n }\n }\n return ret;\n};\n// Translates a sub-array of character codes to JavaScript Unicode display format (`\\uXXXX`).\nexports.charsToJsUnicode = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToJsUnicode: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n if (bounds.end > bounds.beg) {\n ret += `\\\\u${exports.charToHex(chars[bounds.beg])}`;\n for (let i = bounds.beg + 1; i < bounds.end; i += 1) {\n ret += `,\\\\u${exports.charToHex(chars[i])}`;\n }\n }\n return ret;\n};\n// Translates a sub-array of character codes to printing ASCII character display format.\nexports.charsToAscii = function (chars, beg, len) {\n let ret = '';\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToAscii: input must be an array of integers`);\n }\n const bounds = getBounds(chars.length, beg, len);\n for (let i = bounds.beg; i < bounds.end; i += 1) {\n const char = chars[i];\n if (char >= 32 && char <= 126) {\n ret += String.fromCharCode(char);\n } else {\n ret += `\\\\x${exports.charToHex(char)}`;\n }\n }\n return ret;\n};\n// Translates a sub-array of character codes to HTML display format.\nexports.charsToAsciiHtml = function (chars, beg, len) {\n if (!Array.isArray(chars)) {\n throw new Error(`${thisFileName}charsToAsciiHtml: input must be an array of integers`);\n }\n let html = '';\n let char;\n const bounds = getBounds(chars.length, beg, len);\n for (let i = bounds.beg; i < bounds.end; i += 1) {\n char = chars[i];\n if (char < 32 || char === 127) {\n /* control characters */\n html += `<span class=\"${style.CLASS_CTRLCHAR}\">${exports.asciiChars[char]}</span>`;\n } else if (char > 127) {\n /* non-ASCII */\n html += `<span class=\"${style.CLASS_CTRLCHAR}\">U+${exports.charToHex(char)}</span>`;\n } else {\n /* printing ASCII, 32 <= char <= 126 */\n html += exports.asciiChars[char];\n }\n }\n return html;\n};\n// Translates a JavaScript string to HTML display format.\nexports.stringToAsciiHtml = function (str) {\n const chars = converter.decode('STRING', str);\n return this.charsToAsciiHtml(chars);\n};\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\n/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module is used by the parser to build an [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST).\n// The AST can be thought of as a subset of the full parse tree.\n// Each node of the AST holds the phrase that was matched at the corresponding, named parse tree node.\n// It is built as the parser successfully matches phrases to the rule names\n// (`RNM` operators) and `UDT`s as it parses an input string.\n// The user controls which `RNM` or `UDT` names to keep on the AST.\n// The user can also associate callback functions with some or all of the retained\n// AST nodes to be used to translate the node phrases. That is, associate semantic\n// actions to the matched phrases.\n// Translating the AST rather that attempting to apply semantic actions during\n// the parsing process, has the advantage that there is no backtracking and that the phrases\n// are known while traversing down tree as will as up.\n//\n// Let `ast` be an `ast.js` object. To identify a node to be kept on the AST:\n// ```\n// ast.callbacks[\"rulename\"] = true; (all nodes default to false)\n// ```\n// To associate a callback function with a node:\n// ```\n// ast.callbacks[\"rulename\"] = fn\n// ```\n// `rulename` is any `RNM` or `UDT` name defined by the associated grammar\n// and `fn` is a user-written callback function.\n// (See [`apg-examples`](https://github.com/ldthomas/apg-js2-examples/tree/master/ast) for examples of how to create an AST,\n// define the nodes and callback functions and attach it to a parser.)\nmodule.exports = function exportsAst() {\n const id = require('./identifiers');\n const utils = require('./utilities');\n\n const thisFileName = 'ast.js: ';\n const that = this;\n let rules = null;\n let udts = null;\n let chars = null;\n let nodeCount = 0;\n const nodesDefined = [];\n const nodeCallbacks = [];\n const stack = [];\n const records = [];\n this.callbacks = [];\n this.astObject = 'astObject';\n /* called by the parser to initialize the AST with the rules, UDTs and the input characters */\n this.init = function init(rulesIn, udtsIn, charsIn) {\n stack.length = 0;\n records.length = 0;\n nodesDefined.length = 0;\n nodeCount = 0;\n rules = rulesIn;\n udts = udtsIn;\n chars = charsIn;\n let i;\n const list = [];\n for (i = 0; i < rules.length; i += 1) {\n list.push(rules[i].lower);\n }\n for (i = 0; i < udts.length; i += 1) {\n list.push(udts[i].lower);\n }\n nodeCount = rules.length + udts.length;\n for (i = 0; i < nodeCount; i += 1) {\n nodesDefined[i] = false;\n nodeCallbacks[i] = null;\n }\n for (const index in that.callbacks) {\n const lower = index.toLowerCase();\n i = list.indexOf(lower);\n if (i < 0) {\n throw new Error(`${thisFileName}init: node '${index}' not a rule or udt name`);\n }\n if (typeof that.callbacks[index] === 'function') {\n nodesDefined[i] = true;\n nodeCallbacks[i] = that.callbacks[index];\n }\n if (that.callbacks[index] === true) {\n nodesDefined[i] = true;\n }\n }\n };\n /* AST node definitions - called by the parser's `RNM` operator */\n this.ruleDefined = function ruleDefined(index) {\n return nodesDefined[index] !== false;\n };\n /* AST node definitions - called by the parser's `UDT` operator */\n this.udtDefined = function udtDefined(index) {\n return nodesDefined[rules.length + index] !== false;\n };\n /* called by the parser's `RNM` & `UDT` operators */\n /* builds a record for the downward traversal of the node */\n this.down = function down(callbackIndex, name) {\n const thisIndex = records.length;\n stack.push(thisIndex);\n records.push({\n name,\n thisIndex,\n thatIndex: null,\n state: id.SEM_PRE,\n callbackIndex,\n phraseIndex: null,\n phraseLength: null,\n stack: stack.length,\n });\n return thisIndex;\n };\n /* called by the parser's `RNM` & `UDT` operators */\n /* builds a record for the upward traversal of the node */\n this.up = function up(callbackIndex, name, phraseIndex, phraseLength) {\n const thisIndex = records.length;\n const thatIndex = stack.pop();\n records.push({\n name,\n thisIndex,\n thatIndex,\n state: id.SEM_POST,\n callbackIndex,\n phraseIndex,\n phraseLength,\n stack: stack.length,\n });\n records[thatIndex].thatIndex = thisIndex;\n records[thatIndex].phraseIndex = phraseIndex;\n records[thatIndex].phraseLength = phraseLength;\n return thisIndex;\n };\n // Called by the user to translate the AST.\n // Translate means to associate or apply some semantic action to the\n // phrases that were syntactically matched to the AST nodes according\n // to the defining grammar.\n // ```\n // data - optional user-defined data\n // passed to the callback functions by the translator\n // ```\n this.translate = function translate(data) {\n let ret;\n let callback;\n let record;\n for (let i = 0; i < records.length; i += 1) {\n record = records[i];\n callback = nodeCallbacks[record.callbackIndex];\n if (record.state === id.SEM_PRE) {\n if (callback !== null) {\n ret = callback(id.SEM_PRE, chars, record.phraseIndex, record.phraseLength, data);\n if (ret === id.SEM_SKIP) {\n i = record.thatIndex;\n }\n }\n } else if (callback !== null) {\n callback(id.SEM_POST, chars, record.phraseIndex, record.phraseLength, data);\n }\n }\n };\n /* called by the parser to reset the length of the records array */\n /* necessary on backtracking */\n this.setLength = function setLength(length) {\n records.length = length;\n if (length > 0) {\n stack.length = records[length - 1].stack;\n } else {\n stack.length = 0;\n }\n };\n /* called by the parser to get the length of the records array */\n this.getLength = function getLength() {\n return records.length;\n };\n /* helper for XML display */\n function indent(n) {\n let ret = '';\n for (let i = 0; i < n; i += 1) {\n ret += ' ';\n }\n return ret;\n }\n // Generate an `XML` version of the AST.\n // Useful if you want to use a special or favorite XML parser to translate the\n // AST.\n // ```\n // mode - the display mode of the captured phrases\n // - default mode is \"ascii\"\n // - can be: \"ascii\"\n // \"decimal\"\n // \"hexadecimal\"\n // \"unicode\"\n // ```\n this.toXml = function toSml(modeArg) {\n let display = utils.charsToDec;\n let caption = 'decimal integer character codes';\n if (typeof modeArg === 'string' && modeArg.length >= 3) {\n const mode = modeArg.slice(0, 3).toLowerCase();\n if (mode === 'asc') {\n display = utils.charsToAscii;\n caption = 'ASCII for printing characters, hex for non-printing';\n } else if (mode === 'hex') {\n display = utils.charsToHex;\n caption = 'hexadecimal integer character codes';\n } else if (mode === 'uni') {\n display = utils.charsToUnicode;\n caption = 'Unicode UTF-32 integer character codes';\n }\n }\n let xml = '';\n let depth = 0;\n xml += '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n';\n xml += `<root nodes=\"${records.length / 2}\" characters=\"${chars.length}\">\\n`;\n xml += `<!-- input string, ${caption} -->\\n`;\n xml += indent(depth + 2);\n xml += display(chars);\n xml += '\\n';\n records.forEach((rec) => {\n if (rec.state === id.SEM_PRE) {\n depth += 1;\n xml += indent(depth);\n xml += `<node name=\"${rec.name}\" index=\"${rec.phraseIndex}\" length=\"${rec.phraseLength}\">\\n`;\n xml += indent(depth + 2);\n xml += display(chars, rec.phraseIndex, rec.phraseLength);\n xml += '\\n';\n } else {\n xml += indent(depth);\n xml += `</node><!-- name=\"${rec.name}\" -->\\n`;\n depth -= 1;\n }\n });\n\n xml += '</root>\\n';\n return xml;\n };\n /* generate a JavaScript object version of the AST */\n /* for the phrase-matching engine apg-exp */\n this.phrases = function phrases() {\n const obj = {};\n let i;\n let record;\n for (i = 0; i < records.length; i += 1) {\n record = records[i];\n if (record.state === id.SEM_PRE) {\n if (!Array.isArray(obj[record.name])) {\n obj[record.name] = [];\n }\n obj[record.name].push({\n index: record.phraseIndex,\n length: record.phraseLength,\n });\n }\n }\n return obj;\n };\n};\n","/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module acts as a \"circular buffer\". It is used to keep track\n// only the last N records in an array of records. If more than N records\n// are saved, each additional record overwrites the previously oldest record.\n// This module deals only with the record indexes and does not save\n// any actual records. It is used by [`trace.js`](./trace.html) for limiting the number of\n// trace records saved.\nmodule.exports = function exportsCircularBuffer() {\n 'use strict;';\n\n const thisFileName = 'circular-buffer.js: ';\n let itemIndex = -1;\n let maxListSize = 0;\n // Initialize buffer.<br>\n // *size* is `maxListSize`, the maximum number of records saved before overwriting begins.\n this.init = function init(size) {\n if (typeof size !== 'number' || size <= 0) {\n throw new Error(`${thisFileName}init: circular buffer size must an integer > 0`);\n }\n maxListSize = Math.ceil(size);\n itemIndex = -1;\n };\n // Call this to increment the number of records collected.<br>\n // Returns the array index number to store the next record in.\n this.increment = function increment() {\n itemIndex += 1;\n return (itemIndex + maxListSize) % maxListSize;\n };\n // Returns `maxListSize` - the maximum number of records to keep in the buffer.\n this.maxSize = function maxSize() {\n return maxListSize;\n };\n // Returns the highest number of items saved.<br>\n // (The number of items is the actual number of records processed\n // even though only `maxListSize` records are actually retained.)\n this.items = function items() {\n return itemIndex + 1;\n };\n // Returns the record number associated with this item index.\n this.getListIndex = function getListIndex(item) {\n if (itemIndex === -1) {\n return -1;\n }\n if (item < 0 || item > itemIndex) {\n return -1;\n }\n if (itemIndex - item >= maxListSize) {\n return -1;\n }\n return (item + maxListSize) % maxListSize;\n };\n // The iterator over the circular buffer.\n // The user's function, `fn`, will be called with arguments `fn(listIndex, itemIndex)`\n // where `listIndex` is the saved record index and `itemIndex` is the actual item index.\n this.forEach = function forEach(fn) {\n if (itemIndex === -1) {\n /* no records have been collected */\n return;\n }\n if (itemIndex < maxListSize) {\n /* fewer than maxListSize records have been collected - number of items = number of records */\n for (let i = 0; i <= itemIndex; i += 1) {\n fn(i, i);\n }\n return;\n }\n /* start with the oldest record saved and finish with the most recent record saved */\n for (let i = itemIndex - maxListSize + 1; i <= itemIndex; i += 1) {\n const listIndex = (i + maxListSize) % maxListSize;\n fn(listIndex, i);\n }\n };\n};\n","/* eslint-disable func-names */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable new-cap */\n/* eslint-disable guard-for-in */\n/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This is the primary object of `apg-lib`. Calling its `parse()` member function\n// walks the parse tree of opcodes, matching phrases from the input string as it goes.\n// The working code for all of the operators, `ALT`, `CAT`, etc. is in this module.\nmodule.exports = function parser() {\n const id = require('./identifiers');\n const utils = require('./utilities');\n\n const thisFileName = 'parser.js: ';\n const thisThis = this;\n let opExecute;\n this.ast = null;\n this.stats = null;\n this.trace = null;\n this.callbacks = [];\n let opcodes = null;\n let chars = null;\n let charsBegin;\n let charsLength;\n let charsEnd;\n let lookAround;\n let treeDepth = 0;\n let maxTreeDepth = 0;\n let nodeHits = 0;\n let ruleCallbacks = null;\n let udtCallbacks = null;\n let rules = null;\n let udts = null;\n let syntaxData = null;\n let maxMatched = 0;\n let limitTreeDepth = Infinity;\n let limitNodeHits = Infinity;\n // Evaluates any given rule. This can be called from the syntax callback\n // functions to evaluate any rule in the grammar's rule list. Great caution\n // should be used. Use of this function will alter the language that the\n // parser accepts.\n const evaluateRule = function evaluateRule(ruleIndex, phraseIndex, sysData) {\n const functionName = `${thisFileName}evaluateRule(): `;\n if (ruleIndex >= rules.length) {\n throw new Error(`${functionName}rule index: ${ruleIndex} out of range`);\n }\n if (phraseIndex >= charsEnd) {\n throw new Error(`${functionName}phrase index: ${phraseIndex} out of range`);\n }\n const { length } = opcodes;\n opcodes.push({\n type: id.RNM,\n index: ruleIndex,\n });\n opExecute(length, phraseIndex, sysData);\n opcodes.pop();\n };\n // Evaluates any given UDT. This can be called from the syntax callback\n // functions to evaluate any UDT in the grammar's UDT list. Great caution\n // should be used. Use of this function will alter the language that the\n // parser accepts.\n const evaluateUdt = function (udtIndex, phraseIndex, sysData) {\n const functionName = `${thisFileName}evaluateUdt(): `;\n if (udtIndex >= udts.length) {\n throw new Error(`${functionName}udt index: ${udtIndex} out of range`);\n }\n if (phraseIndex >= charsEnd) {\n throw new Error(`${functionName}phrase index: ${phraseIndex} out of range`);\n }\n const { length } = opcodes;\n opcodes.push({\n type: id.UDT,\n empty: udts[udtIndex].empty,\n index: udtIndex,\n });\n opExecute(length, phraseIndex, sysData);\n opcodes.pop();\n };\n /* Clears this object of any/all data that has been initialized or added to it. */\n /* Called by parse() on initialization, allowing this object to be re-used for multiple parsing calls. */\n const clear = function () {\n treeDepth = 0;\n maxTreeDepth = 0;\n nodeHits = 0;\n maxMatched = 0;\n lookAround = [\n {\n lookAround: id.LOOKAROUND_NONE,\n anchor: 0,\n charsEnd: 0,\n charsLength: 0,\n },\n ];\n rules = null;\n udts = null;\n chars = null;\n charsBegin = 0;\n charsLength = 0;\n charsEnd = 0;\n ruleCallbacks = null;\n udtCallbacks = null;\n syntaxData = null;\n opcodes = null;\n };\n /* object for maintaining a stack of back reference frames */\n const backRef = function () {\n const stack = [];\n const init = function () {\n const obj = {};\n rules.forEach((rule) => {\n if (rule.isBkr) {\n obj[rule.lower] = null;\n }\n });\n if (udts.length > 0) {\n udts.forEach((udt) => {\n if (udt.isBkr) {\n obj[udt.lower] = null;\n }\n });\n }\n stack.push(obj);\n };\n const copy = function () {\n const top = stack[stack.length - 1];\n const obj = {};\n /* // eslint-disable-next-line no-restricted-syntax */\n for (const name in top) {\n obj[name] = top[name];\n }\n return obj;\n };\n this.push = function push() {\n stack.push(copy());\n };\n this.pop = function pop(lengthArg) {\n let length = lengthArg;\n if (!length) {\n length = stack.length - 1;\n }\n if (length < 1 || length > stack.length) {\n throw new Error(`${thisFileName}backRef.pop(): bad length: ${length}`);\n }\n stack.length = length;\n return stack[stack.length - 1];\n };\n this.length = function length() {\n return stack.length;\n };\n this.savePhrase = function savePhrase(name, index, length) {\n stack[stack.length - 1][name] = {\n phraseIndex: index,\n phraseLength: length,\n };\n };\n this.getPhrase = function (name) {\n return stack[stack.length - 1][name];\n };\n /* constructor */\n init();\n };\n // The system data structure that relays system information to and from the rule and UDT callback functions.\n // - *state* - the state of the parser, ACTIVE, MATCH, EMPTY or NOMATCH (see the `identifiers` object in\n // [`apg-lib`](https://github.com/ldthomas/apg-js2-lib))\n // - *phraseLength* - the number of characters matched if the state is MATCHED or EMPTY\n // - *lookaround* - the top of the stack holds the current look around state,\n // LOOKAROUND_NONE, LOOKAROUND_AHEAD or LOOKAROUND_BEHIND,\n // - *uFrame* - the \"universal\" back reference frame.\n // Holds the last matched phrase for each of the back referenced rules and UDTs.\n // - *pFrame* - the stack of \"parent\" back reference frames.\n // Holds the matched phrase from the parent frame of each back referenced rules and UDTs.\n // - *evaluateRule* - a reference to this object's `evaluateRule()` function.\n // Can be called from a callback function (use with extreme caution!)\n // - *evaluateUdt* - a reference to this object's `evaluateUdt()` function.\n // Can be called from a callback function (use with extreme caution!)\n const systemData = function systemData() {\n const thisData = this;\n this.state = id.ACTIVE;\n this.phraseLength = 0;\n this.ruleIndex = 0;\n this.udtIndex = 0;\n this.lookAround = lookAround[lookAround.length - 1];\n this.uFrame = new backRef();\n this.pFrame = new backRef();\n this.evaluateRule = evaluateRule;\n this.evaluateUdt = evaluateUdt;\n /* refresh the parser state for the next operation */\n this.refresh = function refresh() {\n thisData.state = id.ACTIVE;\n thisData.phraseLength = 0;\n thisData.lookAround = lookAround[lookAround.length - 1];\n };\n };\n /* some look around helper functions */\n const lookAroundValue = function lookAroundValue() {\n return lookAround[lookAround.length - 1];\n };\n /* return true if parser is in look around (ahead or behind) state */\n const inLookAround = function inLookAround() {\n return lookAround.length > 1;\n };\n /* return true if parser is in look behind state */\n const inLookBehind = function () {\n return lookAround[lookAround.length - 1].lookAround === id.LOOKAROUND_BEHIND;\n };\n /* called by parse() to initialize the AST object, if one has been defined */\n const initializeAst = function () {\n const functionName = `${thisFileName}initializeAst(): `;\n const TRUE = true;\n while (TRUE) {\n if (thisThis.ast === undefined) {\n thisThis.ast = null;\n break;\n }\n if (thisThis.ast === null) {\n break;\n }\n if (thisThis.ast.astObject !== 'astObject') {\n throw new Error(`${functionName}ast object not recognized`);\n }\n break;\n }\n if (thisThis.ast !== null) {\n thisThis.ast.init(rules, udts, chars);\n }\n };\n /* called by parse() to initialize the trace object, if one has been defined */\n const initializeTrace = function () {\n const functionName = `${thisFileName}initializeTrace(): `;\n const TRUE = true;\n while (TRUE) {\n if (thisThis.trace === undefined) {\n thisThis.trace = null;\n break;\n }\n if (thisThis.trace === null) {\n break;\n }\n if (thisThis.trace.traceObject !== 'traceObject') {\n throw new Error(`${functionName}trace object not recognized`);\n }\n break;\n }\n if (thisThis.trace !== null) {\n thisThis.trace.init(rules, udts, chars);\n }\n };\n /* called by parse() to initialize the statistics object, if one has been defined */\n const initializeStats = function () {\n const functionName = `${thisFileName}initializeStats(): `;\n const TRUE = true;\n while (TRUE) {\n if (thisThis.stats === undefined) {\n thisThis.stats = null;\n break;\n }\n if (thisThis.stats === null) {\n break;\n }\n if (thisThis.stats.statsObject !== 'statsObject') {\n throw new Error(`${functionName}stats object not recognized`);\n }\n break;\n }\n if (thisThis.stats !== null) {\n thisThis.stats.init(rules, udts);\n }\n };\n /* called by parse() to initialize the rules & udts from the grammar object */\n /* (the grammar object generated previously by apg) */\n const initializeGrammar = function (grammar) {\n const functionName = `${thisFileName}initializeGrammar(): `;\n if (!grammar) {\n throw new Error(`${functionName}grammar object undefined`);\n }\n if (grammar.grammarObject !== 'grammarObject') {\n throw new Error(`${functionName}bad grammar object`);\n }\n rules = grammar.rules;\n udts = grammar.udts;\n };\n /* called by parse() to initialize the start rule */\n const initializeStartRule = function (startRule) {\n const functionName = `${thisFileName}initializeStartRule(): `;\n let start = null;\n if (typeof startRule === 'number') {\n if (startRule >= rules.length) {\n throw new Error(`${functionName}start rule index too large: max: ${rules.length}: index: ${startRule}`);\n }\n start = startRule;\n } else if (typeof startRule === 'string') {\n const lower = startRule.toLowerCase();\n for (let i = 0; i < rules.length; i += 1) {\n if (lower === rules[i].lower) {\n start = rules[i].index;\n break;\n }\n }\n if (start === null) {\n throw new Error(`${functionName}start rule name '${startRule}' not recognized`);\n }\n } else {\n throw new Error(`${functionName}type of start rule '${typeof startRule}' not recognized`);\n }\n return start;\n };\n /* called by parse() to initialize the array of characters codes representing the input string */\n const initializeInputChars = function initializeInputChars(inputArg, begArg, lenArg) {\n const functionName = `${thisFileName}initializeInputChars(): `;\n /* varify and normalize input */\n let input = inputArg;\n let beg = begArg;\n let len = lenArg;\n if (input === undefined) {\n throw new Error(`${functionName}input string is undefined`);\n }\n if (input === null) {\n throw new Error(`${functionName}input string is null`);\n }\n if (typeof input === 'string') {\n input = utils.stringToChars(input);\n } else if (!Array.isArray(input)) {\n throw new Error(`${functionName}input string is not a string or array`);\n }\n if (input.length > 0) {\n if (typeof input[0] !== 'number') {\n throw new Error(`${functionName}input string not an array of integers`);\n }\n }\n /* verify and normalize beginning index */\n if (typeof beg !== 'number') {\n beg = 0;\n } else {\n beg = Math.floor(beg);\n if (beg < 0 || beg > input.length) {\n throw new Error(`${functionName}input beginning index out of range: ${beg}`);\n }\n }\n /* verify and normalize input length */\n if (typeof len !== 'number') {\n len = input.length - beg;\n } else {\n len = Math.floor(len);\n if (len < 0 || len > input.length - beg) {\n throw new Error(`${functionName}input length out of range: ${len}`);\n }\n }\n chars = input;\n charsBegin = beg;\n charsLength = len;\n charsEnd = charsBegin + charsLength;\n };\n /* called by parse() to initialize the user-written, syntax callback functions, if any */\n const initializeCallbacks = function () {\n const functionName = `${thisFileName}initializeCallbacks(): `;\n let i;\n ruleCallbacks = [];\n udtCallbacks = [];\n for (i = 0; i < rules.length; i += 1) {\n ruleCallbacks[i] = null;\n }\n for (i = 0; i < udts.length; i += 1) {\n udtCallbacks[i] = null;\n }\n let func;\n const list = [];\n for (i = 0; i < rules.length; i += 1) {\n list.push(rules[i].lower);\n }\n for (i = 0; i < udts.length; i += 1) {\n list.push(udts[i].lower);\n }\n for (const index in thisThis.callbacks) {\n i = list.indexOf(index.toLowerCase());\n if (i < 0) {\n throw new Error(`${functionName}syntax callback '${index}' not a rule or udt name`);\n }\n func = thisThis.callbacks[index];\n if (!func) {\n func = null;\n }\n if (typeof func === 'function' || func === null) {\n if (i < rules.length) {\n ruleCallbacks[i] = func;\n } else {\n udtCallbacks[i - rules.length] = func;\n }\n } else {\n throw new Error(\n `${functionName}syntax callback[${index}] must be function reference or 'false' (false/null/undefined/etc.)`\n );\n }\n }\n /* make sure all udts have been defined - the parser can't work without them */\n for (i = 0; i < udts.length; i += 1) {\n if (udtCallbacks[i] === null) {\n throw new Error(\n `${functionName}all UDT callbacks must be defined. UDT callback[${udts[i].lower}] not a function reference`\n );\n }\n }\n };\n // Set the maximum parse tree depth allowed. The default is `Infinity`.\n // A limit is not normally needed, but can be used to protect against an\n // exponentual or \"catastrophically backtracking\" grammar.\n // <ul>\n // <li>\n // depth - max allowed parse tree depth. An exception is thrown if exceeded.\n // </li>\n // </ul>\n this.setMaxTreeDepth = function (depth) {\n if (typeof depth !== 'number') {\n throw new Error(`parser: max tree depth must be integer > 0: ${depth}`);\n }\n limitTreeDepth = Math.floor(depth);\n if (limitTreeDepth <= 0) {\n throw new Error(`parser: max tree depth must be integer > 0: ${depth}`);\n }\n };\n // Set the maximum number of node hits (parser unit steps or opcode function calls) allowed.\n // The default is `Infinity`.\n // A limit is not normally needed, but can be used to protect against an\n // exponentual or \"catastrophically backtracking\" grammar.\n // <ul>\n // <li>\n // hits - maximum number of node hits or parser unit steps allowed.\n // An exception thrown if exceeded.\n // </li>\n // </ul>\n this.setMaxNodeHits = function (hits) {\n if (typeof hits !== 'number') {\n throw new Error(`parser: max node hits must be integer > 0: ${hits}`);\n }\n limitNodeHits = Math.floor(hits);\n if (limitNodeHits <= 0) {\n throw new Error(`parser: max node hits must be integer > 0: ${hits}`);\n }\n };\n /* the main parser function */\n const privateParse = function (grammar, startRuleArg, callbackData) {\n let success;\n const functionName = `${thisFileName}parse(): `;\n initializeGrammar(grammar);\n const startRule = initializeStartRule(startRuleArg);\n initializeCallbacks();\n initializeTrace();\n initializeStats();\n initializeAst();\n const sysData = new systemData();\n if (!(callbackData === undefined || callbackData === null)) {\n syntaxData = callbackData;\n }\n /* create a dummy opcode for the start rule */\n opcodes = [\n {\n type: id.RNM,\n index: startRule,\n },\n ];\n /* execute the start rule */\n opExecute(0, charsBegin, sysData);\n opcodes = null;\n /* test and return the sysData */\n switch (sysData.state) {\n case id.ACTIVE:\n throw new Error(`${functionName}final state should never be 'ACTIVE'`);\n case id.NOMATCH:\n success = false;\n break;\n case id.EMPTY:\n case id.MATCH:\n if (sysData.phraseLength === charsLength) {\n success = true;\n } else {\n success = false;\n }\n break;\n default:\n throw new Error('unrecognized state');\n }\n return {\n success,\n state: sysData.state,\n length: charsLength,\n matched: sysData.phraseLength,\n maxMatched,\n maxTreeDepth,\n nodeHits,\n inputLength: chars.length,\n subBegin: charsBegin,\n subEnd: charsEnd,\n subLength: charsLength,\n };\n };\n\n // This form allows parsing of a sub-string of the full input string.\n // <ul>\n // <li>*inputIndex* - index of the first character in the sub-string</li>\n // <li>*inputLength* - length of the sub-string</li>\n // </ul>\n // All other parameters as for the above function `parse()`.\n this.parseSubstring = function parseSubstring(grammar, startRule, inputChars, inputIndex, inputLength, callbackData) {\n clear();\n initializeInputChars(inputChars, inputIndex, inputLength);\n return privateParse(grammar, startRule, callbackData);\n };\n // This is the main function, called to parse an input string.\n // <ul>\n // <li>*grammar* - an instantiated grammar object - the output of `apg` for a\n // specific SABNF grammar</li>\n // <li>*startRule* - the rule name or rule index to be used as the root of the\n // parse tree. This is usually the first rule, index = 0, of the grammar\n // but can be any rule defined in the above grammar object.</li>\n // <li>*inputChars* - the input string. Can be a string or an array of integer character codes representing the\n // string.</li>\n // <li>*callbackData* - user-defined data object to be passed to the user's\n // callback functions.\n // This is not used by the parser in any way, merely passed on to the user.\n // May be `null` or omitted.</li>\n // </ul>\n this.parse = function parse(grammar, startRule, inputChars, callbackData) {\n clear();\n initializeInputChars(inputChars, 0, inputChars.length);\n return privateParse(grammar, startRule, callbackData);\n };\n // The `ALT` operator.<br>\n // Executes its child nodes, from left to right, until it finds a match.\n // Fails if *all* of its child nodes fail.\n const opALT = function (opIndex, phraseIndex, sysData) {\n const op = opcodes[opIndex];\n for (let i = 0; i < op.children.length; i += 1) {\n opExecute(op.children[i], phraseIndex, sysData);\n if (sysData.state !== id.NOMATCH) {\n break;\n }\n }\n };\n // The `CAT` operator.<br>\n // Executes all of its child nodes, from left to right,\n // concatenating the matched phrases.\n // Fails if *any* child nodes fail.\n const opCAT = function (opIndex, phraseIndex, sysData) {\n let success;\n let astLength;\n let catCharIndex;\n let catPhrase;\n const op = opcodes[opIndex];\n const ulen = sysData.uFrame.length();\n const plen = sysData.pFrame.length();\n if (thisThis.ast) {\n astLength = thisThis.ast.getLength();\n }\n success = true;\n catCharIndex = phraseIndex;\n catPhrase = 0;\n for (let i = 0; i < op.children.length; i += 1) {\n opExecute(op.children[i], catCharIndex, sysData);\n if (sysData.state === id.NOMATCH) {\n success = false;\n break;\n } else {\n catCharIndex += sysData.phraseLength;\n catPhrase += sysData.phraseLength;\n }\n }\n if (success) {\n sysData.state = catPhrase === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = catPhrase;\n } else {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n /* reset the back referencing frames on failure */\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n if (thisThis.ast) {\n thisThis.ast.setLength(astLength);\n }\n }\n };\n // The `REP` operator.<br>\n // Repeatedly executes its single child node,\n // concatenating each of the matched phrases found.\n // The number of repetitions executed and its final sysData depends\n // on its `min` & `max` repetition values.\n const opREP = function (opIndex, phraseIndex, sysData) {\n let astLength;\n let repCharIndex;\n let repPhrase;\n let repCount;\n const op = opcodes[opIndex];\n if (op.max === 0) {\n // this is an empty-string acceptor\n // deprecated: use the TLS empty string operator, \"\", instead\n sysData.state = id.EMPTY;\n sysData.phraseLength = 0;\n return;\n }\n repCharIndex = phraseIndex;\n repPhrase = 0;\n repCount = 0;\n const ulen = sysData.uFrame.length();\n const plen = sysData.pFrame.length();\n if (thisThis.ast) {\n astLength = thisThis.ast.getLength();\n }\n const TRUE = true;\n while (TRUE) {\n if (repCharIndex >= charsEnd) {\n /* exit on end of input string */\n break;\n }\n opExecute(opIndex + 1, repCharIndex, sysData);\n if (sysData.state === id.NOMATCH) {\n /* always end if the child node fails */\n break;\n }\n if (sysData.state === id.EMPTY) {\n /* REP always succeeds when the child node returns an empty phrase */\n /* this may not seem obvious, but that's the way it works out */\n break;\n }\n repCount += 1;\n repPhrase += sysData.phraseLength;\n repCharIndex += sysData.phraseLength;\n if (repCount === op.max) {\n /* end on maxed out reps */\n break;\n }\n }\n /* evaluate the match count according to the min, max values */\n if (sysData.state === id.EMPTY) {\n sysData.state = repPhrase === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = repPhrase;\n } else if (repCount >= op.min) {\n sysData.state = repPhrase === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = repPhrase;\n } else {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n /* reset the back referencing frames on failure */\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n if (thisThis.ast) {\n thisThis.ast.setLength(astLength);\n }\n }\n };\n // Validate the callback function's returned sysData values.\n // It's the user's responsibility to get them right\n // but `RNM` fails if not.\n const validateRnmCallbackResult = function (rule, sysData, charsLeft, down) {\n if (sysData.phraseLength > charsLeft) {\n let str = `${thisFileName}opRNM(${rule.name}): callback function error: `;\n str += `sysData.phraseLength: ${sysData.phraseLength}`;\n str += ` must be <= remaining chars: ${charsLeft}`;\n throw new Error(str);\n }\n switch (sysData.state) {\n case id.ACTIVE:\n if (down !== true) {\n throw new Error(\n `${thisFileName}opRNM(${rule.name}): callback function return error. ACTIVE state not allowed.`\n );\n }\n break;\n case id.EMPTY:\n sysData.phraseLength = 0;\n break;\n case id.MATCH:\n if (sysData.phraseLength === 0) {\n sysData.state = id.EMPTY;\n }\n break;\n case id.NOMATCH:\n sysData.phraseLength = 0;\n break;\n default:\n throw new Error(\n `${thisFileName}opRNM(${rule.name}): callback function return error. Unrecognized return state: ${sysData.state}`\n );\n }\n };\n // The `RNM` operator.<br>\n // This operator will acts as a root node for a parse tree branch below and\n // returns the matched phrase to its parent.\n // However, its larger responsibility is handling user-defined callback functions, back references and `AST` nodes.\n // Note that the `AST` is a separate object, but `RNM` calls its functions to create its nodes.\n // See [`ast.js`](./ast.html) for usage.\n const opRNM = function (opIndex, phraseIndex, sysData) {\n let astLength;\n let astDefined;\n let savedOpcodes;\n let ulen;\n let plen;\n let saveFrame;\n const op = opcodes[opIndex];\n const rule = rules[op.index];\n const callback = ruleCallbacks[rule.index];\n const notLookAround = !inLookAround();\n /* ignore AST and back references in lookaround */\n if (notLookAround) {\n /* begin AST and back references */\n astDefined = thisThis.ast && thisThis.ast.ruleDefined(op.index);\n if (astDefined) {\n astLength = thisThis.ast.getLength();\n thisThis.ast.down(op.index, rules[op.index].name);\n }\n ulen = sysData.uFrame.length();\n plen = sysData.pFrame.length();\n sysData.uFrame.push();\n sysData.pFrame.push();\n saveFrame = sysData.pFrame;\n sysData.pFrame = new backRef();\n }\n if (callback === null) {\n /* no callback - just execute the rule */\n savedOpcodes = opcodes;\n opcodes = rule.opcodes;\n opExecute(0, phraseIndex, sysData);\n opcodes = savedOpcodes;\n } else {\n /* call user's callback */\n const charsLeft = charsEnd - phraseIndex;\n sysData.ruleIndex = rule.index;\n callback(sysData, chars, phraseIndex, syntaxData);\n validateRnmCallbackResult(rule, sysData, charsLeft, true);\n if (sysData.state === id.ACTIVE) {\n savedOpcodes = opcodes;\n opcodes = rule.opcodes;\n opExecute(0, phraseIndex, sysData);\n opcodes = savedOpcodes;\n sysData.ruleIndex = rule.index;\n callback(sysData, chars, phraseIndex, syntaxData);\n validateRnmCallbackResult(rule, sysData, charsLeft, false);\n } /* implied else clause: just accept the callback sysData - RNM acting as UDT */\n }\n if (notLookAround) {\n /* end AST */\n if (astDefined) {\n if (sysData.state === id.NOMATCH) {\n thisThis.ast.setLength(astLength);\n } else {\n thisThis.ast.up(op.index, rule.name, phraseIndex, sysData.phraseLength);\n }\n }\n /* end back reference */\n sysData.pFrame = saveFrame;\n if (sysData.state === id.NOMATCH) {\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n } else if (rule.isBkr) {\n /* save phrase on both the parent and universal frames */\n /* BKR operator will decide which to use later */\n sysData.pFrame.savePhrase(rule.lower, phraseIndex, sysData.phraseLength);\n sysData.uFrame.savePhrase(rule.lower, phraseIndex, sysData.phraseLength);\n }\n }\n };\n // Validate the callback function's returned sysData values.\n // It's the user's responsibility to get it right but `UDT` fails if not.\n const validateUdtCallbackResult = function (udt, sysData, charsLeft) {\n if (sysData.phraseLength > charsLeft) {\n let str = `${thisFileName}opUDT(${udt.name}): callback function error: `;\n str += `sysData.phraseLength: ${sysData.phraseLength}`;\n str += ` must be <= remaining chars: ${charsLeft}`;\n throw new Error(str);\n }\n switch (sysData.state) {\n case id.ACTIVE:\n throw new Error(`${thisFileName}opUDT(${udt.name}): callback function return error. ACTIVE state not allowed.`);\n case id.EMPTY:\n if (udt.empty === false) {\n throw new Error(`${thisFileName}opUDT(${udt.name}): callback function return error. May not return EMPTY.`);\n } else {\n sysData.phraseLength = 0;\n }\n break;\n case id.MATCH:\n if (sysData.phraseLength === 0) {\n if (udt.empty === false) {\n throw new Error(`${thisFileName}opUDT(${udt.name}): callback function return error. May not return EMPTY.`);\n } else {\n sysData.state = id.EMPTY;\n }\n }\n break;\n case id.NOMATCH:\n sysData.phraseLength = 0;\n break;\n default:\n throw new Error(\n `${thisFileName}opUDT(${udt.name}): callback function return error. Unrecognized return state: ${sysData.state}`\n );\n }\n };\n // The `UDT` operator.<br>\n // Simply calls the user's callback function, but operates like `RNM` with regard to the `AST`\n // and back referencing.\n // There is some ambiguity here. `UDT`s act as terminals for phrase recognition but as named rules\n // for `AST` nodes and back referencing.\n // See [`ast.js`](./ast.html) for usage.\n const opUDT = function (opIndex, phraseIndex, sysData) {\n let astLength;\n let astIndex;\n let astDefined;\n let ulen;\n let plen;\n let saveFrame;\n const op = opcodes[opIndex];\n const udt = udts[op.index];\n sysData.UdtIndex = udt.index;\n\n const notLookAround = !inLookAround();\n /* ignore AST and back references in lookaround */\n if (notLookAround) {\n /* begin AST and back reference */\n astDefined = thisThis.ast && thisThis.ast.udtDefined(op.index);\n if (astDefined) {\n astIndex = rules.length + op.index;\n astLength = thisThis.ast.getLength();\n thisThis.ast.down(astIndex, udt.name);\n }\n /* NOTE: push and pop of the back reference frame is normally not necessary */\n /* only in the case that the UDT calls evaluateRule() or evaluateUdt() */\n ulen = sysData.uFrame.length();\n plen = sysData.pFrame.length();\n sysData.uFrame.push();\n sysData.pFrame.push();\n saveFrame = sysData.pFrame;\n sysData.pFrame = new backRef();\n }\n /* call the UDT */\n const charsLeft = charsEnd - phraseIndex;\n udtCallbacks[op.index](sysData, chars, phraseIndex, syntaxData);\n validateUdtCallbackResult(udt, sysData, charsLeft);\n if (notLookAround) {\n /* end AST */\n if (astDefined) {\n if (sysData.state === id.NOMATCH) {\n thisThis.ast.setLength(astLength);\n } else {\n thisThis.ast.up(astIndex, udt.name, phraseIndex, sysData.phraseLength);\n }\n }\n /* end back reference */\n sysData.pFrame = saveFrame;\n if (sysData.state === id.NOMATCH) {\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n } else if (udt.isBkr) {\n /* save phrase on both the parent and universal frames */\n /* BKR operator will decide which to use later */\n sysData.pFrame.savePhrase(udt.lower, phraseIndex, sysData.phraseLength);\n sysData.uFrame.savePhrase(udt.lower, phraseIndex, sysData.phraseLength);\n }\n }\n };\n // The `AND` operator.<br>\n // This is the positive `look ahead` operator.\n // Executes its single child node, returning the EMPTY state\n // if it succeedsand NOMATCH if it fails.\n // *Always* backtracks on any matched phrase and returns EMPTY on success.\n const opAND = function (opIndex, phraseIndex, sysData) {\n lookAround.push({\n lookAround: id.LOOKAROUND_AHEAD,\n anchor: phraseIndex,\n charsEnd,\n charsLength,\n });\n charsEnd = chars.length;\n charsLength = chars.length - charsBegin;\n opExecute(opIndex + 1, phraseIndex, sysData);\n const pop = lookAround.pop();\n charsEnd = pop.charsEnd;\n charsLength = pop.charsLength;\n sysData.phraseLength = 0;\n switch (sysData.state) {\n case id.EMPTY:\n sysData.state = id.EMPTY;\n break;\n case id.MATCH:\n sysData.state = id.EMPTY;\n break;\n case id.NOMATCH:\n sysData.state = id.NOMATCH;\n break;\n default:\n throw new Error(`opAND: invalid state ${sysData.state}`);\n }\n };\n // The `NOT` operator.<br>\n // This is the negative `look ahead` operator.\n // Executes its single child node, returning the EMPTY state\n // if it *fails* and NOMATCH if it succeeds.\n // *Always* backtracks on any matched phrase and returns EMPTY\n // on success (failure of its child node).\n const opNOT = function (opIndex, phraseIndex, sysData) {\n lookAround.push({\n lookAround: id.LOOKAROUND_AHEAD,\n anchor: phraseIndex,\n charsEnd,\n charsLength,\n });\n charsEnd = chars.length;\n charsLength = chars.length - charsBegin;\n opExecute(opIndex + 1, phraseIndex, sysData);\n const pop = lookAround.pop();\n charsEnd = pop.charsEnd;\n charsLength = pop.charsLength;\n sysData.phraseLength = 0;\n switch (sysData.state) {\n case id.EMPTY:\n case id.MATCH:\n sysData.state = id.NOMATCH;\n break;\n case id.NOMATCH:\n sysData.state = id.EMPTY;\n break;\n default:\n throw new Error(`opNOT: invalid state ${sysData.state}`);\n }\n };\n // The `TRG` operator.<br>\n // Succeeds if the single first character of the phrase is\n // within the `min - max` range.\n const opTRG = function (opIndex, phraseIndex, sysData) {\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n if (phraseIndex < charsEnd) {\n if (op.min <= chars[phraseIndex] && chars[phraseIndex] <= op.max) {\n sysData.state = id.MATCH;\n sysData.phraseLength = 1;\n }\n }\n };\n // The `TBS` operator.<br>\n // Matches its pre-defined phrase against the input string.\n // All characters must match exactly.\n // Case-sensitive literal strings (`'string'` & `%s\"string\"`) are translated to `TBS`\n // operators by `apg`.\n // Phrase length of zero is not allowed.\n // Empty phrases can only be defined with `TLS` operators.\n const opTBS = function (opIndex, phraseIndex, sysData) {\n let i;\n const op = opcodes[opIndex];\n const len = op.string.length;\n sysData.state = id.NOMATCH;\n if (phraseIndex + len <= charsEnd) {\n for (i = 0; i < len; i += 1) {\n if (chars[phraseIndex + i] !== op.string[i]) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n } /* implied else NOMATCH */\n };\n // The `TLS` operator.<br>\n // Matches its pre-defined phrase against the input string.\n // A case-insensitive match is attempted for ASCII alphbetical characters.\n // `TLS` is the only operator that explicitly allows empty phrases.\n // `apg` will fail for empty `TBS`, case-sensitive strings (`''`) or\n // zero repetitions (`0*0RuleName` or `0RuleName`).\n const opTLS = function (opIndex, phraseIndex, sysData) {\n let i;\n let code;\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n const len = op.string.length;\n if (len === 0) {\n /* EMPTY match allowed for TLS */\n sysData.state = id.EMPTY;\n return;\n }\n if (phraseIndex + len <= charsEnd) {\n for (i = 0; i < len; i += 1) {\n code = chars[phraseIndex + i];\n if (code >= 65 && code <= 90) {\n code += 32;\n }\n if (code !== op.string[i]) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n } /* implied else NOMATCH */\n };\n // The `ABG` operator.<br>\n // This is an \"anchor\" for the beginning of the string, similar to the familiar regex `^` anchor.\n // An anchor matches a position rather than a phrase.\n // Returns EMPTY if `phraseIndex` is 0, NOMATCH otherwise.\n const opABG = function (opIndex, phraseIndex, sysData) {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n sysData.state = phraseIndex === 0 ? id.EMPTY : id.NOMATCH;\n };\n // The `AEN` operator.<br>\n // This is an \"anchor\" for the end of the string, similar to the familiar regex `$` anchor.\n // An anchor matches a position rather than a phrase.\n // Returns EMPTY if `phraseIndex` equals the input string length, NOMATCH otherwise.\n const opAEN = function (opIndex, phraseIndex, sysData) {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n sysData.state = phraseIndex === chars.length ? id.EMPTY : id.NOMATCH;\n };\n // The `BKR` operator.<br>\n // The back reference operator.\n // Matches the last matched phrase of the named rule or UDT against the input string.\n // For ASCII alphbetical characters the match may be case sensitive (`%s`) or insensitive (`%i`),\n // depending on the back reference definition.\n // For `universal` mode (`%u`) matches the last phrase found anywhere in the grammar.\n // For `parent frame` mode (`%p`) matches the last phrase found in the parent rule only.\n const opBKR = function (opIndex, phraseIndex, sysData) {\n let i;\n let code;\n let lmcode;\n let lower;\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n if (op.index < rules.length) {\n lower = rules[op.index].lower;\n } else {\n lower = udts[op.index - rules.length].lower;\n }\n const frame = op.bkrMode === id.BKR_MODE_PM ? sysData.pFrame.getPhrase(lower) : sysData.uFrame.getPhrase(lower);\n const insensitive = op.bkrCase === id.BKR_MODE_CI;\n if (frame === null) {\n return;\n }\n const lmIndex = frame.phraseIndex;\n const len = frame.phraseLength;\n if (len === 0) {\n sysData.state = id.EMPTY;\n return;\n }\n if (phraseIndex + len <= charsEnd) {\n if (insensitive) {\n /* case-insensitive match */\n for (i = 0; i < len; i += 1) {\n code = chars[phraseIndex + i];\n lmcode = chars[lmIndex + i];\n if (code >= 65 && code <= 90) {\n code += 32;\n }\n if (lmcode >= 65 && lmcode <= 90) {\n lmcode += 32;\n }\n if (code !== lmcode) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n } else {\n /* case-sensitive match */\n for (i = 0; i < len; i += 1) {\n code = chars[phraseIndex + i];\n lmcode = chars[lmIndex + i];\n if (code !== lmcode) {\n return;\n }\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n }\n };\n // The `BKA` operator.<br>\n // This is the positive `look behind` operator.\n // It's child node is parsed right-to-left.\n // Returns the EMPTY state if a match is found, NOMATCH otherwise.\n // Like the look ahead operators, it always backtracks to `phraseIndex`.\n const opBKA = function (opIndex, phraseIndex, sysData) {\n lookAround.push({\n lookAround: id.LOOKAROUND_BEHIND,\n anchor: phraseIndex,\n });\n opExecute(opIndex + 1, phraseIndex, sysData);\n lookAround.pop();\n sysData.phraseLength = 0;\n switch (sysData.state) {\n case id.EMPTY:\n sysData.state = id.EMPTY;\n break;\n case id.MATCH:\n sysData.state = id.EMPTY;\n break;\n case id.NOMATCH:\n sysData.state = id.NOMATCH;\n break;\n default:\n throw new Error(`opBKA: invalid state ${sysData.state}`);\n }\n };\n // The `BKN` operator.<br>\n // This is the negative `look behind` operator.\n // It's child node is parsed right-to-left.\n // Returns the EMPTY state if a match is *not* found, NOMATCH otherwise.\n // Like the look ahead operators, it always backtracks to `phraseIndex`.\n const opBKN = function (opIndex, phraseIndex, sysData) {\n // let op;\n // op = opcodes[opIndex];\n lookAround.push({\n lookAround: id.LOOKAROUND_BEHIND,\n anchor: phraseIndex,\n });\n opExecute(opIndex + 1, phraseIndex, sysData);\n lookAround.pop();\n sysData.phraseLength = 0;\n switch (sysData.state) {\n case id.EMPTY:\n case id.MATCH:\n sysData.state = id.NOMATCH;\n break;\n case id.NOMATCH:\n sysData.state = id.EMPTY;\n break;\n default:\n throw new Error(`opBKN: invalid state ${sysData.state}`);\n }\n };\n // The right-to-left `CAT` operator.<br>\n // Called for `CAT` operators when in look behind mode.\n // Calls its child nodes from right to left concatenating matched phrases right to left.\n const opCATBehind = function (opIndex, phraseIndex, sysData) {\n let success;\n let astLength;\n let catCharIndex;\n let catMatched;\n const op = opcodes[opIndex];\n const ulen = sysData.uFrame.length();\n const plen = sysData.pFrame.length();\n if (thisThis.ast) {\n astLength = thisThis.ast.getLength();\n }\n success = true;\n catCharIndex = phraseIndex;\n catMatched = 0;\n // catPhrase = 0;\n for (let i = op.children.length - 1; i >= 0; i -= 1) {\n opExecute(op.children[i], catCharIndex, sysData);\n catCharIndex -= sysData.phraseLength;\n catMatched += sysData.phraseLength;\n // catPhrase += sysData.phraseLength;\n if (sysData.state === id.NOMATCH) {\n success = false;\n break;\n }\n }\n if (success) {\n sysData.state = catMatched === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = catMatched;\n } else {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n if (thisThis.ast) {\n thisThis.ast.setLength(astLength);\n }\n }\n };\n // The right-to-left `REP` operator.<br>\n // Called for `REP` operators in look behind mode.\n // Makes repeated calls to its child node, concatenating matched phrases right to left.\n const opREPBehind = function (opIndex, phraseIndex, sysData) {\n let astLength;\n let repCharIndex;\n let repPhrase;\n let repCount;\n const op = opcodes[opIndex];\n repCharIndex = phraseIndex;\n repPhrase = 0;\n repCount = 0;\n const ulen = sysData.uFrame.length();\n const plen = sysData.pFrame.length();\n if (thisThis.ast) {\n astLength = thisThis.ast.getLength();\n }\n const TRUE = true;\n while (TRUE) {\n if (repCharIndex <= 0) {\n /* exit on end of input string */\n break;\n }\n opExecute(opIndex + 1, repCharIndex, sysData);\n if (sysData.state === id.NOMATCH) {\n /* always end if the child node fails */\n break;\n }\n if (sysData.state === id.EMPTY) {\n /* REP always succeeds when the child node returns an empty phrase */\n /* this may not seem obvious, but that's the way it works out */\n break;\n }\n repCount += 1;\n repPhrase += sysData.phraseLength;\n repCharIndex -= sysData.phraseLength;\n if (repCount === op.max) {\n /* end on maxed out reps */\n break;\n }\n }\n /* evaluate the match count according to the min, max values */\n if (sysData.state === id.EMPTY) {\n sysData.state = repPhrase === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = repPhrase;\n } else if (repCount >= op.min) {\n sysData.state = repPhrase === 0 ? id.EMPTY : id.MATCH;\n sysData.phraseLength = repPhrase;\n } else {\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n sysData.uFrame.pop(ulen);\n sysData.pFrame.pop(plen);\n if (thisThis.ast) {\n thisThis.ast.setLength(astLength);\n }\n }\n };\n // The right-to-left `TRG` operator.<br>\n // Called for `TRG` operators in look behind mode.\n // Matches a single character at `phraseIndex - 1` to the `min` - `max` range.\n const opTRGBehind = function (opIndex, phraseIndex, sysData) {\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n if (phraseIndex > 0) {\n const char = chars[phraseIndex - 1];\n if (op.min <= char && char <= op.max) {\n sysData.state = id.MATCH;\n sysData.phraseLength = 1;\n }\n }\n };\n // The right-to-left `TBS` operator.<br>\n // Called for `TBS` operators in look behind mode.\n // Matches the `TBS` phrase to the left of `phraseIndex`.\n const opTBSBehind = function (opIndex, phraseIndex, sysData) {\n let i;\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n const len = op.string.length;\n const beg = phraseIndex - len;\n if (beg >= 0) {\n for (i = 0; i < len; i += 1) {\n if (chars[beg + i] !== op.string[i]) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n }\n };\n // The right-to-left `TLS` operator.<br>\n // Called for `TLS` operators in look behind mode.\n // Matches the `TLS` phrase to the left of `phraseIndex`.\n const opTLSBehind = function (opIndex, phraseIndex, sysData) {\n let char;\n const op = opcodes[opIndex];\n sysData.state = id.NOMATCH;\n const len = op.string.length;\n if (len === 0) {\n /* EMPTY match allowed for TLS */\n sysData.state = id.EMPTY;\n return;\n }\n const beg = phraseIndex - len;\n if (beg >= 0) {\n for (let i = 0; i < len; i += 1) {\n char = chars[beg + i];\n if (char >= 65 && char <= 90) {\n char += 32;\n }\n if (char !== op.string[i]) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n }\n };\n // The right-to-left back reference operator.<br>\n // Matches the back referenced phrase to the left of `phraseIndex`.\n const opBKRBehind = function (opIndex, phraseIndex, sysData) {\n let i;\n let code;\n let lmcode;\n let lower;\n const op = opcodes[opIndex];\n /* NOMATCH default */\n sysData.state = id.NOMATCH;\n sysData.phraseLength = 0;\n if (op.index < rules.length) {\n lower = rules[op.index].lower;\n } else {\n lower = udts[op.index - rules.length].lower;\n }\n const frame = op.bkrMode === id.BKR_MODE_PM ? sysData.pFrame.getPhrase(lower) : sysData.uFrame.getPhrase(lower);\n const insensitive = op.bkrCase === id.BKR_MODE_CI;\n if (frame === null) {\n return;\n }\n const lmIndex = frame.phraseIndex;\n const len = frame.phraseLength;\n if (len === 0) {\n sysData.state = id.EMPTY;\n sysData.phraseLength = 0;\n return;\n }\n const beg = phraseIndex - len;\n if (beg >= 0) {\n if (insensitive) {\n /* case-insensitive match */\n for (i = 0; i < len; i += 1) {\n code = chars[beg + i];\n lmcode = chars[lmIndex + i];\n if (code >= 65 && code <= 90) {\n code += 32;\n }\n if (lmcode >= 65 && lmcode <= 90) {\n lmcode += 32;\n }\n if (code !== lmcode) {\n return;\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n } else {\n /* case-sensitive match */\n for (i = 0; i < len; i += 1) {\n code = chars[beg + i];\n lmcode = chars[lmIndex + i];\n if (code !== lmcode) {\n return;\n }\n }\n }\n sysData.state = id.MATCH;\n sysData.phraseLength = len;\n }\n };\n // Generalized execution function.<br>\n // Having a single, generalized function, allows a single location\n // for tracing and statistics gathering functions to be called.\n // Tracing and statistics are handled in separate objects.\n // However, the parser calls their API to build the object data records.\n // See [`trace.js`](./trace.html) and [`stats.js`](./stats.html) for their\n // usage.\n opExecute = function opExecuteFunc(opIndex, phraseIndex, sysData) {\n let ret = true;\n const op = opcodes[opIndex];\n nodeHits += 1;\n if (nodeHits > limitNodeHits) {\n throw new Error(`parser: maximum number of node hits exceeded: ${limitNodeHits}`);\n }\n treeDepth += 1;\n if (treeDepth > maxTreeDepth) {\n maxTreeDepth = treeDepth;\n if (maxTreeDepth > limitTreeDepth) {\n throw new Error(`parser: maximum parse tree depth exceeded: ${limitTreeDepth}`);\n }\n }\n sysData.refresh();\n if (thisThis.trace !== null) {\n /* collect the trace record for down the parse tree */\n const lk = lookAroundValue();\n thisThis.trace.down(op, sysData.state, phraseIndex, sysData.phraseLength, lk.anchor, lk.lookAround);\n }\n if (inLookBehind()) {\n switch (op.type) {\n case id.ALT:\n opALT(opIndex, phraseIndex, sysData);\n break;\n case id.CAT:\n opCATBehind(opIndex, phraseIndex, sysData);\n break;\n case id.REP:\n opREPBehind(opIndex, phraseIndex, sysData);\n break;\n case id.RNM:\n opRNM(opIndex, phraseIndex, sysData);\n break;\n case id.UDT:\n opUDT(opIndex, phraseIndex, sysData);\n break;\n case id.AND:\n opAND(opIndex, phraseIndex, sysData);\n break;\n case id.NOT:\n opNOT(opIndex, phraseIndex, sysData);\n break;\n case id.TRG:\n opTRGBehind(opIndex, phraseIndex, sysData);\n break;\n case id.TBS:\n opTBSBehind(opIndex, phraseIndex, sysData);\n break;\n case id.TLS:\n opTLSBehind(opIndex, phraseIndex, sysData);\n break;\n case id.BKR:\n opBKRBehind(opIndex, phraseIndex, sysData);\n break;\n case id.BKA:\n opBKA(opIndex, phraseIndex, sysData);\n break;\n case id.BKN:\n opBKN(opIndex, phraseIndex, sysData);\n break;\n case id.ABG:\n opABG(opIndex, phraseIndex, sysData);\n break;\n case id.AEN:\n opAEN(opIndex, phraseIndex, sysData);\n break;\n default:\n ret = false;\n break;\n }\n } else {\n switch (op.type) {\n case id.ALT:\n opALT(opIndex, phraseIndex, sysData);\n break;\n case id.CAT:\n opCAT(opIndex, phraseIndex, sysData);\n break;\n case id.REP:\n opREP(opIndex, phraseIndex, sysData);\n break;\n case id.RNM:\n opRNM(opIndex, phraseIndex, sysData);\n break;\n case id.UDT:\n opUDT(opIndex, phraseIndex, sysData);\n break;\n case id.AND:\n opAND(opIndex, phraseIndex, sysData);\n break;\n case id.NOT:\n opNOT(opIndex, phraseIndex, sysData);\n break;\n case id.TRG:\n opTRG(opIndex, phraseIndex, sysData);\n break;\n case id.TBS:\n opTBS(opIndex, phraseIndex, sysData);\n break;\n case id.TLS:\n opTLS(opIndex, phraseIndex, sysData);\n break;\n case id.BKR:\n opBKR(opIndex, phraseIndex, sysData);\n break;\n case id.BKA:\n opBKA(opIndex, phraseIndex, sysData);\n break;\n case id.BKN:\n opBKN(opIndex, phraseIndex, sysData);\n break;\n case id.ABG:\n opABG(opIndex, phraseIndex, sysData);\n break;\n case id.AEN:\n opAEN(opIndex, phraseIndex, sysData);\n break;\n default:\n ret = false;\n break;\n }\n }\n if (!inLookAround() && phraseIndex + sysData.phraseLength > maxMatched) {\n maxMatched = phraseIndex + sysData.phraseLength;\n }\n if (thisThis.stats !== null) {\n /* collect the statistics */\n thisThis.stats.collect(op, sysData);\n }\n if (thisThis.trace !== null) {\n /* collect the trace record for up the parse tree */\n const lk = lookAroundValue();\n thisThis.trace.up(op, sysData.state, phraseIndex, sysData.phraseLength, lk.anchor, lk.lookAround);\n }\n treeDepth -= 1;\n return ret;\n };\n};\n","/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module is the constructor for the statistics gathering object.\n// The statistics are nothing more than keeping a count of the\n// number of times each node in the parse tree is traversed.\n//\n// Counts are collected for each of the individual types of operators.\n// Additionally, counts are collected for each of the individually named\n// `RNM` and `UDT` operators.\nmodule.exports = function statsFunc() {\n const id = require('./identifiers');\n const utils = require('./utilities');\n const style = require('./style');\n\n const thisFileName = 'stats.js: ';\n let rules = [];\n let udts = [];\n const stats = [];\n let totals;\n const ruleStats = [];\n const udtStats = [];\n this.statsObject = 'statsObject';\n const nameId = 'stats';\n /* `Array.sort()` callback function for sorting `RNM` and `UDT` operators alphabetically by name. */\n const sortAlpha = function sortAlpha(lhs, rhs) {\n if (lhs.lower < rhs.lower) {\n return -1;\n }\n if (lhs.lower > rhs.lower) {\n return 1;\n }\n return 0;\n };\n /* `Array.sort()` callback function for sorting `RNM` and `UDT` operators by hit count. */\n const sortHits = function sortHits(lhs, rhs) {\n if (lhs.total < rhs.total) {\n return 1;\n }\n if (lhs.total > rhs.total) {\n return -1;\n }\n return sortAlpha(lhs, rhs);\n };\n /* `Array.sort()` callback function for sorting `RNM` and `UDT` operators by index */\n /* (in the order in which they appear in the SABNF grammar). */\n const sortIndex = function sortIndex(lhs, rhs) {\n if (lhs.index < rhs.index) {\n return -1;\n }\n if (lhs.index > rhs.index) {\n return 1;\n }\n return 0;\n };\n const EmptyStat = function EmptyStat() {\n this.empty = 0;\n this.match = 0;\n this.nomatch = 0;\n this.total = 0;\n };\n /* Zero out all stats */\n const clear = function clear() {\n stats.length = 0;\n totals = new EmptyStat();\n stats[id.ALT] = new EmptyStat();\n stats[id.CAT] = new EmptyStat();\n stats[id.REP] = new EmptyStat();\n stats[id.RNM] = new EmptyStat();\n stats[id.TRG] = new EmptyStat();\n stats[id.TBS] = new EmptyStat();\n stats[id.TLS] = new EmptyStat();\n stats[id.UDT] = new EmptyStat();\n stats[id.AND] = new EmptyStat();\n stats[id.NOT] = new EmptyStat();\n stats[id.BKR] = new EmptyStat();\n stats[id.BKA] = new EmptyStat();\n stats[id.BKN] = new EmptyStat();\n stats[id.ABG] = new EmptyStat();\n stats[id.AEN] = new EmptyStat();\n ruleStats.length = 0;\n for (let i = 0; i < rules.length; i += 1) {\n ruleStats.push({\n empty: 0,\n match: 0,\n nomatch: 0,\n total: 0,\n name: rules[i].name,\n lower: rules[i].lower,\n index: rules[i].index,\n });\n }\n if (udts.length > 0) {\n udtStats.length = 0;\n for (let i = 0; i < udts.length; i += 1) {\n udtStats.push({\n empty: 0,\n match: 0,\n nomatch: 0,\n total: 0,\n name: udts[i].name,\n lower: udts[i].lower,\n index: udts[i].index,\n });\n }\n }\n };\n /* increment the designated operator hit count by one */\n const incStat = function incStat(stat, state) {\n stat.total += 1;\n switch (state) {\n case id.EMPTY:\n stat.empty += 1;\n break;\n case id.MATCH:\n stat.match += 1;\n break;\n case id.NOMATCH:\n stat.nomatch += 1;\n break;\n default:\n throw new Error(`${thisFileName}collect(): incStat(): unrecognized state: ${state}`);\n }\n };\n /* helper for toHtml() */\n const displayRow = function displayRow(name, stat) {\n let html = '';\n html += '<tr>';\n html += `<td class=\"${style.CLASS_ACTIVE}\">${name}</td>`;\n html += `<td class=\"${style.CLASS_EMPTY}\">${stat.empty}</td>`;\n html += `<td class=\"${style.CLASS_MATCH}\">${stat.match}</td>`;\n html += `<td class=\"${style.CLASS_NOMATCH}\">${stat.nomatch}</td>`;\n html += `<td class=\"${style.CLASS_ACTIVE}\">${stat.total}</td>`;\n html += '</tr>\\n';\n return html;\n };\n const displayOpsOnly = function displayOpsOnly() {\n let html = '';\n html += displayRow('ALT', stats[id.ALT]);\n html += displayRow('CAT', stats[id.CAT]);\n html += displayRow('REP', stats[id.REP]);\n html += displayRow('RNM', stats[id.RNM]);\n html += displayRow('TRG', stats[id.TRG]);\n html += displayRow('TBS', stats[id.TBS]);\n html += displayRow('TLS', stats[id.TLS]);\n html += displayRow('UDT', stats[id.UDT]);\n html += displayRow('AND', stats[id.AND]);\n html += displayRow('NOT', stats[id.NOT]);\n html += displayRow('BKR', stats[id.BKR]);\n html += displayRow('BKA', stats[id.BKA]);\n html += displayRow('BKN', stats[id.BKN]);\n html += displayRow('ABG', stats[id.ABG]);\n html += displayRow('AEN', stats[id.AEN]);\n html += displayRow('totals', totals);\n return html;\n };\n /* helper for toHtml() */\n const displayRules = function displayRules() {\n let html = '';\n html += '<tr><th></th><th></th><th></th><th></th><th></th></tr>\\n';\n html += '<tr><th>rules</th><th></th><th></th><th></th><th></th></tr>\\n';\n for (let i = 0; i < rules.length; i += 1) {\n if (ruleStats[i].total > 0) {\n html += '<tr>';\n html += `<td class=\"${style.CLASS_ACTIVE}\">${ruleStats[i].name}</td>`;\n html += `<td class=\"${style.CLASS_EMPTY}\">${ruleStats[i].empty}</td>`;\n html += `<td class=\"${style.CLASS_MATCH}\">${ruleStats[i].match}</td>`;\n html += `<td class=\"${style.CLASS_NOMATCH}\">${ruleStats[i].nomatch}</td>`;\n html += `<td class=\"${style.CLASS_ACTIVE}\">${ruleStats[i].total}</td>`;\n html += '</tr>\\n';\n }\n }\n if (udts.length > 0) {\n html += '<tr><th></th><th></th><th></th><th></th><th></th></tr>\\n';\n html += '<tr><th>udts</th><th></th><th></th><th></th><th></th></tr>\\n';\n for (let i = 0; i < udts.length; i += 1) {\n if (udtStats[i].total > 0) {\n html += '<tr>';\n html += `<td class=\"${style.CLASS_ACTIVE}\">${udtStats[i].name}</td>`;\n html += `<td class=\"${style.CLASS_EMPTY}\">${udtStats[i].empty}</td>`;\n html += `<td class=\"${style.CLASS_MATCH}\">${udtStats[i].match}</td>`;\n html += `<td class=\"${style.CLASS_NOMATCH}\">${udtStats[i].nomatch}</td>`;\n html += `<td class=\"${style.CLASS_ACTIVE}\">${udtStats[i].total}</td>`;\n html += '</tr>\\n';\n }\n }\n }\n return html;\n };\n /* called only by the parser to validate a stats object */\n this.validate = function validate(name) {\n let ret = false;\n if (typeof name === 'string' && nameId === name) {\n ret = true;\n }\n return ret;\n };\n /* no verification of input - only called by parser() */\n this.init = function init(inputRules, inputUdts) {\n rules = inputRules;\n udts = inputUdts;\n clear();\n };\n /* This function is the main interaction with the parser. */\n /* The parser calls it after each node has been traversed. */\n this.collect = function collect(op, result) {\n incStat(totals, result.state, result.phraseLength);\n incStat(stats[op.type], result.state, result.phraseLength);\n if (op.type === id.RNM) {\n incStat(ruleStats[op.index], result.state, result.phraseLength);\n }\n if (op.type === id.UDT) {\n incStat(udtStats[op.index], result.state, result.phraseLength);\n }\n };\n // Display the statistics as an HTML table.\n // - *type*\n // - \"ops\" - (default) display only the total hit counts for all operator types.\n // - \"index\" - additionally, display the hit counts for the individual `RNM` and `UDT` operators ordered by index.\n // - \"hits\" - additionally, display the hit counts for the individual `RNM` and `UDT` operators by hit count.\n // - \"alpha\" - additionally, display the hit counts for the individual `RNM` and `UDT` operators by name alphabetically.\n // - *caption* - optional caption for the table\n this.toHtml = function toHtml(type, caption) {\n let html = '';\n html += `<table class=\"${style.CLASS_STATS}\">\\n`;\n if (typeof caption === 'string') {\n html += `<caption>${caption}</caption>\\n`;\n }\n html += `<tr><th class=\"${style.CLASS_ACTIVE}\">ops</th>\\n`;\n html += `<th class=\"${style.CLASS_EMPTY}\">EMPTY</th>\\n`;\n html += `<th class=\"${style.CLASS_MATCH}\">MATCH</th>\\n`;\n html += `<th class=\"${style.CLASS_NOMATCH}\">NOMATCH</th>\\n`;\n html += `<th class=\"${style.CLASS_ACTIVE}\">totals</th></tr>\\n`;\n const test = true;\n while (test) {\n if (type === undefined) {\n html += displayOpsOnly();\n break;\n }\n if (type === null) {\n html += displayOpsOnly();\n break;\n }\n if (type === 'ops') {\n html += displayOpsOnly();\n break;\n }\n if (type === 'index') {\n ruleStats.sort(sortIndex);\n if (udtStats.length > 0) {\n udtStats.sort(sortIndex);\n }\n html += displayOpsOnly();\n html += displayRules();\n break;\n }\n if (type === 'hits') {\n ruleStats.sort(sortHits);\n if (udtStats.length > 0) {\n udtStats.sort(sortIndex);\n }\n html += displayOpsOnly();\n html += displayRules();\n break;\n }\n if (type === 'alpha') {\n ruleStats.sort(sortAlpha);\n if (udtStats.length > 0) {\n udtStats.sort(sortAlpha);\n }\n html += displayOpsOnly();\n html += displayRules();\n break;\n }\n break;\n }\n html += '</table>\\n';\n return html;\n };\n // Display the stats table in a complete HTML5 page.\n this.toHtmlPage = function toHtmlPage(type, caption, title) {\n return utils.htmlToPage(this.toHtml(type, caption), title);\n };\n};\n","/* eslint-disable func-names */\n/* eslint-disable prefer-destructuring */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module provides a means of tracing the parser through the parse tree as it goes.\n// It is the primary debugging facility for debugging both the SABNF grammar syntax\n// and the input strings that are supposed to be valid grammar sentences.\n// It is also a very informative and educational tool for understanding\n// how a parser actually operates for a given language.\n//\n// Tracing is the process of generating and saving a record of information for each passage\n// of the parser through a parse tree node. And since it traverses each node twice, once down the tree\n// and once coming back up, there are two records for each node.\n// This, obviously, has the potential of generating lots of records.\n// And since these records are normally displayed on a web page\n// it is important to have a means to limit the actual number of records generated to\n// probably no more that a few thousand. This is almost always enough to find any errors.\n// The problem is to get the *right* few thousand records.\n// Therefore, this module has a number of ways of limiting and/or filtering, the number and type of records.\n// Considerable effort has been made to make this filtering of the trace output as simple\n// and intuitive as possible.\n//\n// However, the ability to filter the trace records, or for that matter even understand what they are\n// and the information they contain, does require a minimum amount of understanding of the APG parsing\n// method. The parse tree nodes are all represented by APG operators. They break down into two natural groups.\n// - The `RNM` operators and `UDT` operators are named phrases.\n// These are names chosen by the writer of the SABNF grammar to represent special phrases of interest.\n// - All others collect, concatenate and otherwise manipulate various intermediate phrases along the way.\n//\n// There are separate means of filtering which of these operators in each of these two groups get traced.\n// Let `trace` be an instantiated `trace.js` object.\n// Prior to parsing the string, filtering the rules and UDTs can be defined as follows:\n// ```\n// trace.filter.rules[\"rulename\"] = true;\n// /* trace rule name \"rulename\" */\n// trace.filter.rules[\"udtname\"] = true;\n// /* trace UDT name \"udtname\" */\n// trace.filter.rules[\"<ALL>\"] = true;\n// /* trace all rules and UDTs (the default) */\n// trace.filter.rules[\"<NONE>\"] = true;\n// /* trace no rules or UDTS */\n// ```\n// If any rule or UDT name other than \"<ALL>\" or \"<NONE>\" is specified, all other names are turned off.\n// Therefore, to be selective of rule names, a filter statement is required for each rule/UDT name desired.\n//\n// Filtering of the other operators follows a similar procedure.\n// ```\n// trace.filter.operators[\"TRG\"] = true;\n// /* trace the terminal range, TRG, operators */\n// trace.filter.operators[\"CAT\"] = true;\n// /* trace the concatenations, CAT, operators */\n// trace.filter.operators[\"<ALL>\"] = true;\n// /* trace all operators */\n// trace.filter.operators[\"<NONE>\"] = true;\n// /* trace no operators (the default) */\n// ```\n// If any operator name other than \"<ALL>\" or \"<NONE>\" is specified, all other names are turned off.\n// Therefore, to be selective of operator names, a filter statement is required for each name desired.\n//\n// There is, additionally, a means for limiting the total number of filtered or saved trace records.\n// See the function, `setMaxRecords(max)` below. This will result in only the last `max` records being saved.\n//\n// (See [`apg-examples`](https://github.com/ldthomas/apg-js-examples) for examples of using `trace.js`.)\nmodule.exports = function exportTrace() {\n const utils = require('./utilities');\n const style = require('./style');\n const circular = new (require('./circular-buffer'))();\n const id = require('./identifiers');\n\n const thisFileName = 'trace.js: ';\n const that = this;\n const MODE_HEX = 16;\n const MODE_DEC = 10;\n const MODE_ASCII = 8;\n const MODE_UNICODE = 32;\n const MAX_PHRASE = 80;\n const MAX_TLS = 5;\n const records = [];\n let maxRecords = 5000;\n let lastRecord = -1;\n let filteredRecords = 0;\n let treeDepth = 0;\n const recordStack = [];\n let chars = null;\n let rules = null;\n let udts = null;\n const operatorFilter = [];\n const ruleFilter = [];\n /* special trace table phrases */\n const PHRASE_END = `<span class=\"${style.CLASS_LINEEND}\">•</span>`;\n const PHRASE_CONTINUE = `<span class=\"${style.CLASS_LINEEND}\">…</span>`;\n const PHRASE_EMPTY = `<span class=\"${style.CLASS_EMPTY}\">𝜺</span>`;\n /* filter the non-RNM & non-UDT operators */\n const initOperatorFilter = function () {\n const setOperators = function (set) {\n operatorFilter[id.ALT] = set;\n operatorFilter[id.CAT] = set;\n operatorFilter[id.REP] = set;\n operatorFilter[id.TLS] = set;\n operatorFilter[id.TBS] = set;\n operatorFilter[id.TRG] = set;\n operatorFilter[id.AND] = set;\n operatorFilter[id.NOT] = set;\n operatorFilter[id.BKR] = set;\n operatorFilter[id.BKA] = set;\n operatorFilter[id.BKN] = set;\n operatorFilter[id.ABG] = set;\n operatorFilter[id.AEN] = set;\n };\n let items = 0;\n // eslint-disable-next-line no-unused-vars\n for (const name in that.filter.operators) {\n items += 1;\n }\n if (items === 0) {\n /* case 1: no operators specified: default: do not trace any operators */\n setOperators(false);\n return;\n }\n for (const name in that.filter.operators) {\n const upper = name.toUpperCase();\n if (upper === '<ALL>') {\n /* case 2: <all> operators specified: trace all operators ignore all other operator commands */\n setOperators(true);\n return;\n }\n if (upper === '<NONE>') {\n /* case 3: <none> operators specified: trace NO operators ignore all other operator commands */\n setOperators(false);\n return;\n }\n }\n setOperators(false);\n for (const name in that.filter.operators) {\n const upper = name.toUpperCase();\n /* case 4: one or more individual operators specified: trace 'true' operators only */\n if (upper === 'ALT') {\n operatorFilter[id.ALT] = that.filter.operators[name] === true;\n } else if (upper === 'CAT') {\n operatorFilter[id.CAT] = that.filter.operators[name] === true;\n } else if (upper === 'REP') {\n operatorFilter[id.REP] = that.filter.operators[name] === true;\n } else if (upper === 'AND') {\n operatorFilter[id.AND] = that.filter.operators[name] === true;\n } else if (upper === 'NOT') {\n operatorFilter[id.NOT] = that.filter.operators[name] === true;\n } else if (upper === 'TLS') {\n operatorFilter[id.TLS] = that.filter.operators[name] === true;\n } else if (upper === 'TBS') {\n operatorFilter[id.TBS] = that.filter.operators[name] === true;\n } else if (upper === 'TRG') {\n operatorFilter[id.TRG] = that.filter.operators[name] === true;\n } else if (upper === 'BKR') {\n operatorFilter[id.BKR] = that.filter.operators[name] === true;\n } else if (upper === 'BKA') {\n operatorFilter[id.BKA] = that.filter.operators[name] === true;\n } else if (upper === 'BKN') {\n operatorFilter[id.BKN] = that.filter.operators[name] === true;\n } else if (upper === 'ABG') {\n operatorFilter[id.ABG] = that.filter.operators[name] === true;\n } else if (upper === 'AEN') {\n operatorFilter[id.AEN] = that.filter.operators[name] === true;\n } else {\n throw new Error(\n `${thisFileName}initOpratorFilter: '${name}' not a valid operator name.` +\n ` Must be <all>, <none>, alt, cat, rep, tls, tbs, trg, and, not, bkr, bka or bkn`\n );\n }\n }\n };\n /* filter the rule and `UDT` named operators */\n const initRuleFilter = function () {\n const setRules = function (set) {\n operatorFilter[id.RNM] = set;\n operatorFilter[id.UDT] = set;\n const count = rules.length + udts.length;\n ruleFilter.length = 0;\n for (let i = 0; i < count; i += 1) {\n ruleFilter.push(set);\n }\n };\n let items;\n let i;\n const list = [];\n for (i = 0; i < rules.length; i += 1) {\n list.push(rules[i].lower);\n }\n for (i = 0; i < udts.length; i += 1) {\n list.push(udts[i].lower);\n }\n ruleFilter.length = 0;\n items = 0;\n // eslint-disable-next-line no-unused-vars\n for (const name in that.filter.rules) {\n items += 1;\n }\n if (items === 0) {\n /* case 1: default to all rules & udts */\n setRules(true);\n return;\n }\n for (const name in that.filter.rules) {\n const lower = name.toLowerCase();\n if (lower === '<all>') {\n /* case 2: trace all rules ignore all other rule commands */\n setRules(true);\n return;\n }\n if (lower === '<none>') {\n /* case 3: trace no rules */\n setRules(false);\n return;\n }\n }\n /* case 4: trace only individually specified rules */\n setRules(false);\n operatorFilter[id.RNM] = true;\n operatorFilter[id.UDT] = true;\n for (const name in that.filter.rules) {\n const lower = name.toLowerCase();\n i = list.indexOf(lower);\n if (i < 0) {\n throw new Error(`${thisFileName}initRuleFilter: '${name}' not a valid rule or udt name`);\n }\n ruleFilter[i] = that.filter.rules[name] === true;\n }\n };\n /* used by other APG components to verify that they have a valid trace object */\n this.traceObject = 'traceObject';\n this.filter = {\n operators: [],\n rules: [],\n };\n // Set the maximum number of records to keep (default = 5000).\n // Each record number larger than `maxRecords`\n // will result in deleting the previously oldest record.\n // - `max`: maximum number of records to retain (default = 5000)\n // - `last`: last record number to retain, (default = -1 for (unknown) actual last record)\n this.setMaxRecords = function (max, last) {\n lastRecord = -1;\n if (typeof max === 'number' && max > 0) {\n maxRecords = Math.ceil(max);\n } else {\n maxRecords = 0;\n return;\n }\n if (typeof last === 'number') {\n lastRecord = Math.floor(last);\n if (lastRecord < 0) {\n lastRecord = -1;\n }\n }\n };\n // Returns `maxRecords` to the caller.\n this.getMaxRecords = function () {\n return maxRecords;\n };\n // Returns `lastRecord` to the caller.\n this.getLastRecord = function () {\n return lastRecord;\n };\n /* Called only by the `parser.js` object. No verification of input. */\n this.init = function (rulesIn, udtsIn, charsIn) {\n records.length = 0;\n recordStack.length = 0;\n filteredRecords = 0;\n treeDepth = 0;\n chars = charsIn;\n rules = rulesIn;\n udts = udtsIn;\n initOperatorFilter();\n initRuleFilter();\n circular.init(maxRecords);\n };\n /* returns true if this records passes through the designated filter, false if the record is to be skipped */\n const filterOps = function (op) {\n let ret = false;\n if (op.type === id.RNM) {\n if (operatorFilter[op.type] && ruleFilter[op.index]) {\n ret = true;\n } else {\n ret = false;\n }\n } else if (op.type === id.UDT) {\n if (operatorFilter[op.type] && ruleFilter[rules.length + op.index]) {\n ret = true;\n } else {\n ret = false;\n }\n } else {\n ret = operatorFilter[op.type];\n }\n return ret;\n };\n const filterRecords = function (record) {\n if (lastRecord === -1) {\n return true;\n }\n if (record <= lastRecord) {\n return true;\n }\n return false;\n };\n /* Collect the \"down\" record. */\n this.down = function (op, state, offset, length, anchor, lookAround) {\n if (filterRecords(filteredRecords) && filterOps(op)) {\n recordStack.push(filteredRecords);\n records[circular.increment()] = {\n dirUp: false,\n depth: treeDepth,\n thisLine: filteredRecords,\n thatLine: undefined,\n opcode: op,\n state,\n phraseIndex: offset,\n phraseLength: length,\n lookAnchor: anchor,\n lookAround,\n };\n filteredRecords += 1;\n treeDepth += 1;\n }\n };\n /* Collect the \"up\" record. */\n this.up = function (op, state, offset, length, anchor, lookAround) {\n if (filterRecords(filteredRecords) && filterOps(op)) {\n const thisLine = filteredRecords;\n const thatLine = recordStack.pop();\n const thatRecord = circular.getListIndex(thatLine);\n if (thatRecord !== -1) {\n records[thatRecord].thatLine = thisLine;\n }\n treeDepth -= 1;\n records[circular.increment()] = {\n dirUp: true,\n depth: treeDepth,\n thisLine,\n thatLine,\n opcode: op,\n state,\n phraseIndex: offset,\n phraseLength: length,\n lookAnchor: anchor,\n lookAround,\n };\n filteredRecords += 1;\n }\n };\n /* convert the trace records to a tree of nodes */\n const toTreeObj = function () {\n /* private helper functions */\n function nodeOpcode(node, opcode) {\n let name;\n let casetype;\n let modetype;\n if (opcode) {\n node.op = { id: opcode.type, name: utils.opcodeToString(opcode.type) };\n node.opData = undefined;\n switch (opcode.type) {\n case id.RNM:\n node.opData = rules[opcode.index].name;\n break;\n case id.UDT:\n node.opData = udts[opcode.index].name;\n break;\n case id.BKR:\n if (opcode.index < rules.length) {\n name = rules[opcode.index].name;\n } else {\n name = udts[opcode.index - rules.length].name;\n }\n casetype = opcode.bkrCase === id.BKR_MODE_CI ? '%i' : '%s';\n modetype = opcode.bkrMode === id.BKR_MODE_UM ? '%u' : '%p';\n node.opData = `\\\\\\\\${casetype}${modetype}${name}`;\n break;\n case id.TLS:\n node.opData = [];\n for (let i = 0; i < opcode.string.length; i += 1) {\n node.opData.push(opcode.string[i]);\n }\n break;\n case id.TBS:\n node.opData = [];\n for (let i = 0; i < opcode.string.length; i += 1) {\n node.opData.push(opcode.string[i]);\n }\n break;\n case id.TRG:\n node.opData = [opcode.min, opcode.max];\n break;\n case id.REP:\n node.opData = [opcode.min, opcode.max];\n break;\n default:\n throw new Error('unrecognized opcode');\n }\n } else {\n node.op = { id: undefined, name: undefined };\n node.opData = undefined;\n }\n }\n function nodePhrase(state, index, length) {\n if (state === id.MATCH) {\n return {\n index,\n length,\n };\n }\n if (state === id.NOMATCH) {\n return {\n index,\n length: 0,\n };\n }\n if (state === id.EMPTY) {\n return {\n index,\n length: 0,\n };\n }\n return null;\n }\n let nodeId = -1;\n function nodeDown(parent, record, depth) {\n const node = {\n // eslint-disable-next-line no-plusplus\n id: nodeId++,\n branch: -1,\n parent,\n up: false,\n down: false,\n depth,\n children: [],\n };\n if (record) {\n node.down = true;\n node.state = { id: record.state, name: utils.stateToString(record.state) };\n node.phrase = null;\n nodeOpcode(node, record.opcode);\n } else {\n node.state = { id: undefined, name: undefined };\n node.phrase = nodePhrase();\n nodeOpcode(node, undefined);\n }\n return node;\n }\n function nodeUp(node, record) {\n if (record) {\n node.up = true;\n node.state = { id: record.state, name: utils.stateToString(record.state) };\n node.phrase = nodePhrase(record.state, record.phraseIndex, record.phraseLength);\n if (!node.down) {\n nodeOpcode(node, record.opcode);\n }\n }\n }\n /* walk the final tree: label branches and count leaf nodes */\n let leafNodes = 0;\n let depth = -1;\n let branchCount = 1;\n function walk(node) {\n depth += 1;\n node.branch = branchCount;\n if (depth > treeDepth) {\n treeDepth = depth;\n }\n if (node.children.length === 0) {\n leafNodes += 1;\n } else {\n for (let i = 0; i < node.children.length; i += 1) {\n if (i > 0) {\n branchCount += 1;\n }\n node.children[i].leftMost = false;\n node.children[i].rightMost = false;\n if (node.leftMost) {\n node.children[i].leftMost = i === 0;\n }\n if (node.rightMost) {\n node.children[i].rightMost = i === node.children.length - 1;\n }\n walk(node.children[i]);\n }\n }\n depth -= 1;\n }\n function display(node, offset) {\n let name;\n const obj = {};\n obj.id = node.id;\n obj.branch = node.branch;\n obj.leftMost = node.leftMost;\n obj.rightMost = node.rightMost;\n name = node.state.name ? node.state.name : 'ACTIVE';\n obj.state = { id: node.state.id, name };\n name = node.op.name ? node.op.name : '?';\n obj.op = { id: node.op.id, name };\n if (typeof node.opData === 'string') {\n obj.opData = node.opData;\n } else if (Array.isArray(node.opData)) {\n obj.opData = [];\n for (let i = 0; i < node.opData.length; i += 1) {\n obj.opData[i] = node.opData[i];\n }\n } else {\n obj.opData = undefined;\n }\n if (node.phrase) {\n obj.phrase = { index: node.phrase.index, length: node.phrase.length };\n } else {\n obj.phrase = null;\n }\n obj.depth = node.depth;\n obj.children = [];\n for (let i = 0; i < node.children.length; i += 1) {\n const c = i !== node.children.length - 1;\n obj.children[i] = display(node.children[i], offset, c);\n }\n return obj;\n }\n\n /* construct the tree beginning here */\n const branch = [];\n let root;\n let node;\n let parent;\n let record;\n let firstRecord = true;\n /* push a dummy node so the root node will have a non-null parent */\n const dummy = nodeDown(null, null, -1);\n branch.push(dummy);\n node = dummy;\n circular.forEach((lineIndex) => {\n record = records[lineIndex];\n if (firstRecord) {\n firstRecord = false;\n if (record.depth > 0) {\n /* push some dummy nodes to fill in for missing records */\n const num = record.dirUp ? record.depth + 1 : record.depth;\n for (let i = 0; i < num; i += 1) {\n parent = node;\n node = nodeDown(node, null, i);\n branch.push(node);\n parent.children.push(node);\n }\n }\n }\n if (record.dirUp) {\n /* handle the next record up */\n node = branch.pop();\n nodeUp(node, record);\n node = branch[branch.length - 1];\n } else {\n /* handle the next record down */\n parent = node;\n node = nodeDown(node, record, record.depth);\n branch.push(node);\n parent.children.push(node);\n }\n });\n\n /* if not at root, walk it up to root */\n while (branch.length > 1) {\n node = branch.pop();\n nodeUp(node, null);\n }\n /* maybe redundant or paranoid tests: these should never happen */\n if (dummy.children.length === 0) {\n throw new Error('trace.toTree(): parse tree has no nodes');\n }\n if (branch.length === 0) {\n throw new Error('trace.toTree(): integrity check: dummy root node disappeared?');\n }\n\n /* if no record for start rule: find the pseudo root node (first dummy node above a real node) */\n root = dummy.children[0];\n let prev = root;\n while (root && !root.down && !root.up) {\n prev = root;\n root = root.children[0];\n }\n root = prev;\n\n /* walk the tree of nodes: label brances and count leaves */\n root.leftMost = true;\n root.rightMost = true;\n walk(root);\n root.branch = 0;\n\n /* generate the exported object */\n const obj = {};\n obj.string = [];\n for (let i = 0; i < chars.length; i += 1) {\n obj.string[i] = chars[i];\n }\n /* generate the exported rule names */\n obj.rules = [];\n for (let i = 0; i < rules.length; i += 1) {\n obj.rules[i] = rules[i].name;\n }\n /* generate the exported UDT names */\n obj.udts = [];\n for (let i = 0; i < udts.length; i += 1) {\n obj.udts[i] = udts[i].name;\n }\n /* generate the ids */\n obj.id = {};\n obj.id.ALT = { id: id.ALT, name: 'ALT' };\n obj.id.CAT = { id: id.CAT, name: 'CAT' };\n obj.id.REP = { id: id.REP, name: 'REP' };\n obj.id.RNM = { id: id.RNM, name: 'RNM' };\n obj.id.TLS = { id: id.TLS, name: 'TLS' };\n obj.id.TBS = { id: id.TBS, name: 'TBS' };\n obj.id.TRG = { id: id.TRG, name: 'TRG' };\n obj.id.UDT = { id: id.UDT, name: 'UDT' };\n obj.id.AND = { id: id.AND, name: 'AND' };\n obj.id.NOT = { id: id.NOT, name: 'NOT' };\n obj.id.BKR = { id: id.BKR, name: 'BKR' };\n obj.id.BKA = { id: id.BKA, name: 'BKA' };\n obj.id.BKN = { id: id.BKN, name: 'BKN' };\n obj.id.ABG = { id: id.ABG, name: 'ABG' };\n obj.id.AEN = { id: id.AEN, name: 'AEN' };\n obj.id.ACTIVE = { id: id.ACTIVE, name: 'ACTIVE' };\n obj.id.MATCH = { id: id.MATCH, name: 'MATCH' };\n obj.id.EMPTY = { id: id.EMPTY, name: 'EMPTY' };\n obj.id.NOMATCH = { id: id.NOMATCH, name: 'NOMATCH' };\n /* generate the max tree depth */\n obj.treeDepth = treeDepth;\n /* generate the number of leaf nodes (branches) */\n obj.leafNodes = leafNodes;\n /* generate the types of the left- and right-most branches */\n let branchesIncomplete;\n if (root.down) {\n if (root.up) {\n branchesIncomplete = 'none';\n } else {\n branchesIncomplete = 'right';\n }\n } else if (root.up) {\n branchesIncomplete = 'left';\n } else {\n branchesIncomplete = 'both';\n }\n obj.branchesIncomplete = branchesIncomplete;\n obj.tree = display(root, root.depth, false);\n return obj;\n };\n // Returns the trace records as JSON parse tree object.\n // - stringify: if `true`, the object is 'stringified' before returning, otherwise, the object itself is returned.\n this.toTree = function (stringify) {\n const obj = toTreeObj();\n if (stringify) {\n return JSON.stringify(obj);\n }\n return obj;\n };\n // Translate the trace records to HTML format and create a complete HTML page for browser display.\n this.toHtmlPage = function (mode, caption, title) {\n return utils.htmlToPage(this.toHtml(mode, caption), title);\n };\n\n /* From here on down, these are just helper functions for `toHtml()`. */\n const htmlHeader = function (mode, caption) {\n /* open the page */\n /* write the HTML5 header with table style */\n /* open the <table> tag */\n let modeName;\n switch (mode) {\n case MODE_HEX:\n modeName = 'hexadecimal';\n break;\n case MODE_DEC:\n modeName = 'decimal';\n break;\n case MODE_ASCII:\n modeName = 'ASCII';\n break;\n case MODE_UNICODE:\n modeName = 'UNICODE';\n break;\n default:\n throw new Error(`${thisFileName}htmlHeader: unrecognized mode: ${mode}`);\n }\n let header = '';\n header += `<p>display mode: ${modeName}</p>\\n`;\n header += `<table class=\"${style.CLASS_TRACE}\">\\n`;\n if (typeof caption === 'string') {\n header += `<caption>${caption}</caption>`;\n }\n return header;\n };\n const htmlFooter = function () {\n let footer = '';\n /* close the </table> tag */\n footer += '</table>\\n';\n /* display a table legend */\n footer += `<p class=\"${style.CLASS_MONOSPACE}\">legend:<br>\\n`;\n footer += '(a) - line number<br>\\n';\n footer += '(b) - matching line number<br>\\n';\n footer += '(c) - phrase offset<br>\\n';\n footer += '(d) - phrase length<br>\\n';\n footer += '(e) - tree depth<br>\\n';\n footer += '(f) - operator state<br>\\n';\n footer += ` - <span class=\"${style.CLASS_ACTIVE}\">↓</span> phrase opened<br>\\n`;\n footer += ` - <span class=\"${style.CLASS_MATCH}\">↑M</span> phrase matched<br>\\n`;\n footer += ` - <span class=\"${style.CLASS_EMPTY}\">↑E</span> empty phrase matched<br>\\n`;\n footer += ` - <span class=\"${style.CLASS_NOMATCH}\">↑N</span> phrase not matched<br>\\n`;\n footer +=\n 'operator - ALT, CAT, REP, RNM, TRG, TLS, TBS<sup>†</sup>, UDT, AND, NOT, BKA, BKN, BKR, ABG, AEN<sup>‡</sup><br>\\n';\n footer += `phrase - up to ${MAX_PHRASE} characters of the phrase being matched<br>\\n`;\n footer += ` - <span class=\"${style.CLASS_MATCH}\">matched characters</span><br>\\n`;\n footer += ` - <span class=\"${style.CLASS_LOOKAHEAD}\">matched characters in look ahead mode</span><br>\\n`;\n footer += ` - <span class=\"${style.CLASS_LOOKBEHIND}\">matched characters in look behind mode</span><br>\\n`;\n footer += ` - <span class=\"${style.CLASS_REMAINDER}\">remainder characters(not yet examined by parser)</span><br>\\n`;\n footer += ` - <span class=\"${style.CLASS_CTRLCHAR}\">control characters, TAB, LF, CR, etc. (ASCII mode only)</span><br>\\n`;\n footer += ` - ${PHRASE_EMPTY} empty string<br>\\n`;\n footer += ` - ${PHRASE_END} end of input string<br>\\n`;\n footer += ` - ${PHRASE_CONTINUE} input string display truncated<br>\\n`;\n footer += '</p>\\n';\n footer += `<p class=\"${style.CLASS_MONOSPACE}\">\\n`;\n footer += '<sup>†</sup>original ABNF operators:<br>\\n';\n footer += 'ALT - alternation<br>\\n';\n footer += 'CAT - concatenation<br>\\n';\n footer += 'REP - repetition<br>\\n';\n footer += 'RNM - rule name<br>\\n';\n footer += 'TRG - terminal range<br>\\n';\n footer += 'TLS - terminal literal string (case insensitive)<br>\\n';\n footer += 'TBS - terminal binary string (case sensitive)<br>\\n';\n footer += '<br>\\n';\n footer += '<sup>‡</sup>super set SABNF operators:<br>\\n';\n footer += 'UDT - user-defined terminal<br>\\n';\n footer += 'AND - positive look ahead<br>\\n';\n footer += 'NOT - negative look ahead<br>\\n';\n footer += 'BKA - positive look behind<br>\\n';\n footer += 'BKN - negative look behind<br>\\n';\n footer += 'BKR - back reference<br>\\n';\n footer += 'ABG - anchor - begin of input string<br>\\n';\n footer += 'AEN - anchor - end of input string<br>\\n';\n footer += '</p>\\n';\n return footer;\n };\n this.indent = function (depth) {\n let html = '';\n for (let i = 0; i < depth; i += 1) {\n html += '.';\n }\n return html;\n };\n /* format the TRG operator */\n const displayTrg = function (mode, op) {\n let html = '';\n if (op.type === id.TRG) {\n if (mode === MODE_HEX || mode === MODE_UNICODE) {\n let hex = op.min.toString(16).toUpperCase();\n if (hex.length % 2 !== 0) {\n hex = `0${hex}`;\n }\n html += mode === MODE_HEX ? '%x' : 'U+';\n html += hex;\n hex = op.max.toString(16).toUpperCase();\n if (hex.length % 2 !== 0) {\n hex = `0${hex}`;\n }\n html += `–${hex}`;\n } else {\n html = `%d${op.min.toString(10)}–${op.max.toString(10)}`;\n }\n }\n return html;\n };\n /* format the REP operator */\n const displayRep = function (mode, op) {\n let html = '';\n if (op.type === id.REP) {\n if (mode === MODE_HEX) {\n let hex = op.min.toString(16).toUpperCase();\n if (hex.length % 2 !== 0) {\n hex = `0${hex}`;\n }\n html = `x${hex}`;\n if (op.max < Infinity) {\n hex = op.max.toString(16).toUpperCase();\n if (hex.length % 2 !== 0) {\n hex = `0${hex}`;\n }\n } else {\n hex = 'inf';\n }\n html += `–${hex}`;\n } else if (op.max < Infinity) {\n html = `${op.min.toString(10)}–${op.max.toString(10)}`;\n } else {\n html = `${op.min.toString(10)}–inf`;\n }\n }\n return html;\n };\n /* format the TBS operator */\n const displayTbs = function (mode, op) {\n let html = '';\n if (op.type === id.TBS) {\n const len = Math.min(op.string.length, MAX_TLS * 2);\n if (mode === MODE_HEX || mode === MODE_UNICODE) {\n html += mode === MODE_HEX ? '%x' : 'U+';\n for (let i = 0; i < len; i += 1) {\n let hex;\n if (i > 0) {\n html += '.';\n }\n hex = op.string[i].toString(16).toUpperCase();\n if (hex.length % 2 !== 0) {\n hex = `0${hex}`;\n }\n html += hex;\n }\n } else {\n html = '%d';\n for (let i = 0; i < len; i += 1) {\n if (i > 0) {\n html += '.';\n }\n html += op.string[i].toString(10);\n }\n }\n if (len < op.string.length) {\n html += PHRASE_CONTINUE;\n }\n }\n return html;\n };\n /* format the TLS operator */\n const displayTls = function (mode, op) {\n let html = '';\n if (op.type === id.TLS) {\n const len = Math.min(op.string.length, MAX_TLS);\n if (mode === MODE_HEX || mode === MODE_DEC) {\n let charu;\n let charl;\n let base;\n if (mode === MODE_HEX) {\n html = '%x';\n base = 16;\n } else {\n html = '%d';\n base = 10;\n }\n for (let i = 0; i < len; i += 1) {\n if (i > 0) {\n html += '.';\n }\n charl = op.string[i];\n if (charl >= 97 && charl <= 122) {\n charu = charl - 32;\n html += `${charu.toString(base)}/${charl.toString(base)}`.toUpperCase();\n } else if (charl >= 65 && charl <= 90) {\n charu = charl;\n charl += 32;\n html += `${charu.toString(base)}/${charl.toString(base)}`.toUpperCase();\n } else {\n html += charl.toString(base).toUpperCase();\n }\n }\n if (len < op.string.length) {\n html += PHRASE_CONTINUE;\n }\n } else {\n html = '\"';\n for (let i = 0; i < len; i += 1) {\n html += utils.asciiChars[op.string[i]];\n }\n if (len < op.string.length) {\n html += PHRASE_CONTINUE;\n }\n html += '\"';\n }\n }\n return html;\n };\n const subPhrase = function (mode, charsArg, index, length, prev) {\n if (length === 0) {\n return '';\n }\n let phrase = '';\n const comma = prev ? ',' : '';\n switch (mode) {\n case MODE_HEX:\n phrase = comma + utils.charsToHex(charsArg, index, length);\n break;\n case MODE_DEC:\n if (prev) {\n return `,${utils.charsToDec(charsArg, index, length)}`;\n }\n phrase = comma + utils.charsToDec(charsArg, index, length);\n break;\n case MODE_UNICODE:\n phrase = utils.charsToUnicode(charsArg, index, length);\n break;\n case MODE_ASCII:\n default:\n phrase = utils.charsToAsciiHtml(charsArg, index, length);\n break;\n }\n return phrase;\n };\n /* display phrases matched in look-behind mode */\n const displayBehind = function (mode, charsArg, state, index, length, anchor) {\n let html = '';\n let beg1;\n let len1;\n let beg2;\n let len2;\n let lastchar = PHRASE_END;\n const spanBehind = `<span class=\"${style.CLASS_LOOKBEHIND}\">`;\n const spanRemainder = `<span class=\"${style.CLASS_REMAINDER}\">`;\n const spanend = '</span>';\n let prev = false;\n switch (state) {\n case id.EMPTY:\n html += PHRASE_EMPTY;\n /* // eslint-disable-next-line no-fallthrough */\n case id.NOMATCH:\n case id.MATCH:\n case id.ACTIVE:\n beg1 = index - length;\n len1 = anchor - beg1;\n beg2 = anchor;\n len2 = charsArg.length - beg2;\n break;\n default:\n throw new Error('unrecognized state');\n }\n lastchar = PHRASE_END;\n if (len1 > MAX_PHRASE) {\n len1 = MAX_PHRASE;\n lastchar = PHRASE_CONTINUE;\n len2 = 0;\n } else if (len1 + len2 > MAX_PHRASE) {\n lastchar = PHRASE_CONTINUE;\n len2 = MAX_PHRASE - len1;\n }\n if (len1 > 0) {\n html += spanBehind;\n html += subPhrase(mode, charsArg, beg1, len1, prev);\n html += spanend;\n prev = true;\n }\n if (len2 > 0) {\n html += spanRemainder;\n html += subPhrase(mode, charsArg, beg2, len2, prev);\n html += spanend;\n }\n return html + lastchar;\n };\n const displayForward = function (mode, charsArg, state, index, length, spanAhead) {\n let html = '';\n let beg1;\n let len1;\n let beg2;\n let len2;\n let lastchar = PHRASE_END;\n const spanRemainder = `<span class=\"${style.CLASS_REMAINDER}\">`;\n const spanend = '</span>';\n let prev = false;\n switch (state) {\n case id.EMPTY:\n html += PHRASE_EMPTY;\n /* // eslint-disable-next-line no-fallthrough */\n case id.NOMATCH:\n case id.ACTIVE:\n beg1 = index;\n len1 = 0;\n beg2 = index;\n len2 = charsArg.length - beg2;\n break;\n case id.MATCH:\n beg1 = index;\n len1 = length;\n beg2 = index + len1;\n len2 = charsArg.length - beg2;\n break;\n default:\n throw new Error('unrecognized state');\n }\n lastchar = PHRASE_END;\n if (len1 > MAX_PHRASE) {\n len1 = MAX_PHRASE;\n lastchar = PHRASE_CONTINUE;\n len2 = 0;\n } else if (len1 + len2 > MAX_PHRASE) {\n lastchar = PHRASE_CONTINUE;\n len2 = MAX_PHRASE - len1;\n }\n if (len1 > 0) {\n html += spanAhead;\n html += subPhrase(mode, charsArg, beg1, len1, prev);\n html += spanend;\n prev = true;\n }\n if (len2 > 0) {\n html += spanRemainder;\n html += subPhrase(mode, charsArg, beg2, len2, prev);\n html += spanend;\n }\n return html + lastchar;\n };\n /* display phrases matched in look-ahead mode */\n const displayAhead = function (mode, charsArg, state, index, length) {\n const spanAhead = `<span class=\"${style.CLASS_LOOKAHEAD}\">`;\n return displayForward(mode, charsArg, state, index, length, spanAhead);\n };\n /* display phrases matched in normal parsing mode */\n const displayNone = function (mode, charsArg, state, index, length) {\n const spanAhead = `<span class=\"${style.CLASS_MATCH}\">`;\n return displayForward(mode, charsArg, state, index, length, spanAhead);\n };\n /* Returns the filtered records, formatted as an HTML table. */\n const htmlTable = function (mode) {\n if (rules === null) {\n return '';\n }\n let html = '';\n let thisLine;\n let thatLine;\n let lookAhead;\n let lookBehind;\n let lookAround;\n let anchor;\n html += '<tr><th>(a)</th><th>(b)</th><th>(c)</th><th>(d)</th><th>(e)</th><th>(f)</th>';\n html += '<th>operator</th><th>phrase</th></tr>\\n';\n circular.forEach((lineIndex) => {\n const line = records[lineIndex];\n thisLine = line.thisLine;\n thatLine = line.thatLine !== undefined ? line.thatLine : '--';\n lookAhead = false;\n lookBehind = false;\n lookAround = false;\n if (line.lookAround === id.LOOKAROUND_AHEAD) {\n lookAhead = true;\n lookAround = true;\n anchor = line.lookAnchor;\n }\n if (line.opcode.type === id.AND || line.opcode.type === id.NOT) {\n lookAhead = true;\n lookAround = true;\n anchor = line.phraseIndex;\n }\n if (line.lookAround === id.LOOKAROUND_BEHIND) {\n lookBehind = true;\n lookAround = true;\n anchor = line.lookAnchor;\n }\n if (line.opcode.type === id.BKA || line.opcode.type === id.BKN) {\n lookBehind = true;\n lookAround = true;\n anchor = line.phraseIndex;\n }\n html += '<tr>';\n html += `<td>${thisLine}</td><td>${thatLine}</td>`;\n html += `<td>${line.phraseIndex}</td>`;\n html += `<td>${line.phraseLength}</td>`;\n html += `<td>${line.depth}</td>`;\n html += '<td>';\n switch (line.state) {\n case id.ACTIVE:\n html += `<span class=\"${style.CLASS_ACTIVE}\">↓ </span>`;\n break;\n case id.MATCH:\n html += `<span class=\"${style.CLASS_MATCH}\">↑M</span>`;\n break;\n case id.NOMATCH:\n html += `<span class=\"${style.CLASS_NOMATCH}\">↑N</span>`;\n break;\n case id.EMPTY:\n html += `<span class=\"${style.CLASS_EMPTY}\">↑E</span>`;\n break;\n default:\n html += `<span class=\"${style.CLASS_ACTIVE}\">--</span>`;\n break;\n }\n html += '</td>';\n html += '<td>';\n html += that.indent(line.depth);\n if (lookAhead) {\n html += `<span class=\"${style.CLASS_LOOKAHEAD}\">`;\n } else if (lookBehind) {\n html += `<span class=\"${style.CLASS_LOOKBEHIND}\">`;\n }\n html += utils.opcodeToString(line.opcode.type);\n if (line.opcode.type === id.RNM) {\n html += `(${rules[line.opcode.index].name}) `;\n }\n if (line.opcode.type === id.BKR) {\n const casetype = line.opcode.bkrCase === id.BKR_MODE_CI ? '%i' : '%s';\n const modetype = line.opcode.bkrMode === id.BKR_MODE_UM ? '%u' : '%p';\n html += `(\\\\${casetype}${modetype}${rules[line.opcode.index].name}) `;\n }\n if (line.opcode.type === id.UDT) {\n html += `(${udts[line.opcode.index].name}) `;\n }\n if (line.opcode.type === id.TRG) {\n html += `(${displayTrg(mode, line.opcode)}) `;\n }\n if (line.opcode.type === id.TBS) {\n html += `(${displayTbs(mode, line.opcode)}) `;\n }\n if (line.opcode.type === id.TLS) {\n html += `(${displayTls(mode, line.opcode)}) `;\n }\n if (line.opcode.type === id.REP) {\n html += `(${displayRep(mode, line.opcode)}) `;\n }\n if (lookAround) {\n html += '</span>';\n }\n html += '</td>';\n html += '<td>';\n if (lookBehind) {\n html += displayBehind(mode, chars, line.state, line.phraseIndex, line.phraseLength, anchor);\n } else if (lookAhead) {\n html += displayAhead(mode, chars, line.state, line.phraseIndex, line.phraseLength);\n } else {\n html += displayNone(mode, chars, line.state, line.phraseIndex, line.phraseLength);\n }\n html += '</td></tr>\\n';\n });\n html += '<tr><th>(a)</th><th>(b)</th><th>(c)</th><th>(d)</th><th>(e)</th><th>(f)</th>';\n html += '<th>operator</th><th>phrase</th></tr>\\n';\n html += '</table>\\n';\n return html;\n };\n // Translate the trace records to HTML format.\n // - *modearg* - can be `\"ascii\"`, `\"decimal\"`, `\"hexadecimal\"` or `\"unicode\"`.\n // Determines the format of the string character code display.\n // - *caption* - optional caption for the HTML table.\n this.toHtml = function (modearg, caption) {\n /* writes the trace records as a table in a complete html page */\n let mode = MODE_ASCII;\n if (typeof modearg === 'string' && modearg.length >= 3) {\n const modein = modearg.toLowerCase().slice(0, 3);\n if (modein === 'hex') {\n mode = MODE_HEX;\n } else if (modein === 'dec') {\n mode = MODE_DEC;\n } else if (modein === 'uni') {\n mode = MODE_UNICODE;\n }\n }\n let html = '';\n html += htmlHeader(mode, caption);\n html += htmlTable(mode);\n html += htmlFooter();\n return html;\n };\n};\n","/* *************************************************************************************\n * copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved\n * license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)\n * ********************************************************************************* */\n// This module serves to export all library objects and object constructors with the `require(\"apg-lib\")` statement.\n// For example, to create a new parser in your program,\n// ````\n// let apglib = require(\"../apg-lib/node-exports\");\n// let my-parser = new apglib.parser();\n// ````\nmodule.exports = {\n ast: require('./ast'),\n circular: require('./circular-buffer'),\n ids: require('./identifiers'),\n parser: require('./parser'),\n stats: require('./stats'),\n trace: require('./trace'),\n utils: require('./utilities'),\n emitcss: require('./emitcss'),\n style: require('./style'),\n};\n","//#region \\0rolldown/runtime.js\nvar e = Object.defineProperty, t = (t, n) => {\n\tlet r = {};\n\tfor (var i in t) e(r, i, {\n\t\tget: t[i],\n\t\tenumerable: !0\n\t});\n\treturn n || e(r, Symbol.toStringTag, { value: \"Module\" }), r;\n};\n//#endregion\nexport { t };\n","import e from \"apg-js/src/apg-lib/node-exports.js\";\nimport { keccak_256 as t } from \"@noble/hashes/sha3\";\nimport { bytesToHex as n } from \"@noble/hashes/utils\";\n//#region lib/siwe-grammar.ts\nfunction r() {\n\tthis.grammarObject = \"grammarObject\", this.rules = [], this.rules[0] = {\n\t\tname: \"sign-in-with-ethereum\",\n\t\tlower: \"sign-in-with-ethereum\",\n\t\tindex: 0,\n\t\tisBkr: !1\n\t}, this.rules[1] = {\n\t\tname: \"ex-title\",\n\t\tlower: \"ex-title\",\n\t\tindex: 1,\n\t\tisBkr: !1\n\t}, this.rules[2] = {\n\t\tname: \"nb-title\",\n\t\tlower: \"nb-title\",\n\t\tindex: 2,\n\t\tisBkr: !1\n\t}, this.rules[3] = {\n\t\tname: \"ri-title\",\n\t\tlower: \"ri-title\",\n\t\tindex: 3,\n\t\tisBkr: !1\n\t}, this.rules[4] = {\n\t\tname: \"re-title\",\n\t\tlower: \"re-title\",\n\t\tindex: 4,\n\t\tisBkr: !1\n\t}, this.rules[5] = {\n\t\tname: \"oscheme\",\n\t\tlower: \"oscheme\",\n\t\tindex: 5,\n\t\tisBkr: !1\n\t}, this.rules[6] = {\n\t\tname: \"domain\",\n\t\tlower: \"domain\",\n\t\tindex: 6,\n\t\tisBkr: !1\n\t}, this.rules[7] = {\n\t\tname: \"address\",\n\t\tlower: \"address\",\n\t\tindex: 7,\n\t\tisBkr: !1\n\t}, this.rules[8] = {\n\t\tname: \"statement\",\n\t\tlower: \"statement\",\n\t\tindex: 8,\n\t\tisBkr: !1\n\t}, this.rules[9] = {\n\t\tname: \"empty-statement\",\n\t\tlower: \"empty-statement\",\n\t\tindex: 9,\n\t\tisBkr: !1\n\t}, this.rules[10] = {\n\t\tname: \"version\",\n\t\tlower: \"version\",\n\t\tindex: 10,\n\t\tisBkr: !1\n\t}, this.rules[11] = {\n\t\tname: \"nonce\",\n\t\tlower: \"nonce\",\n\t\tindex: 11,\n\t\tisBkr: !1\n\t}, this.rules[12] = {\n\t\tname: \"issued-at\",\n\t\tlower: \"issued-at\",\n\t\tindex: 12,\n\t\tisBkr: !1\n\t}, this.rules[13] = {\n\t\tname: \"expiration-time\",\n\t\tlower: \"expiration-time\",\n\t\tindex: 13,\n\t\tisBkr: !1\n\t}, this.rules[14] = {\n\t\tname: \"not-before\",\n\t\tlower: \"not-before\",\n\t\tindex: 14,\n\t\tisBkr: !1\n\t}, this.rules[15] = {\n\t\tname: \"request-id\",\n\t\tlower: \"request-id\",\n\t\tindex: 15,\n\t\tisBkr: !1\n\t}, this.rules[16] = {\n\t\tname: \"chain-id\",\n\t\tlower: \"chain-id\",\n\t\tindex: 16,\n\t\tisBkr: !1\n\t}, this.rules[17] = {\n\t\tname: \"resources\",\n\t\tlower: \"resources\",\n\t\tindex: 17,\n\t\tisBkr: !1\n\t}, this.rules[18] = {\n\t\tname: \"resource\",\n\t\tlower: \"resource\",\n\t\tindex: 18,\n\t\tisBkr: !1\n\t}, this.rules[19] = {\n\t\tname: \"URI\",\n\t\tlower: \"uri\",\n\t\tindex: 19,\n\t\tisBkr: !1\n\t}, this.rules[20] = {\n\t\tname: \"hier-part\",\n\t\tlower: \"hier-part\",\n\t\tindex: 20,\n\t\tisBkr: !1\n\t}, this.rules[21] = {\n\t\tname: \"scheme\",\n\t\tlower: \"scheme\",\n\t\tindex: 21,\n\t\tisBkr: !1\n\t}, this.rules[22] = {\n\t\tname: \"authority\",\n\t\tlower: \"authority\",\n\t\tindex: 22,\n\t\tisBkr: !1\n\t}, this.rules[23] = {\n\t\tname: \"path-abempty\",\n\t\tlower: \"path-abempty\",\n\t\tindex: 23,\n\t\tisBkr: !1\n\t}, this.rules[24] = {\n\t\tname: \"path-absolute\",\n\t\tlower: \"path-absolute\",\n\t\tindex: 24,\n\t\tisBkr: !1\n\t}, this.rules[25] = {\n\t\tname: \"path-rootless\",\n\t\tlower: \"path-rootless\",\n\t\tindex: 25,\n\t\tisBkr: !1\n\t}, this.rules[26] = {\n\t\tname: \"path-empty\",\n\t\tlower: \"path-empty\",\n\t\tindex: 26,\n\t\tisBkr: !1\n\t}, this.rules[27] = {\n\t\tname: \"userinfo-at\",\n\t\tlower: \"userinfo-at\",\n\t\tindex: 27,\n\t\tisBkr: !1\n\t}, this.rules[28] = {\n\t\tname: \"userinfo\",\n\t\tlower: \"userinfo\",\n\t\tindex: 28,\n\t\tisBkr: !1\n\t}, this.rules[29] = {\n\t\tname: \"host\",\n\t\tlower: \"host\",\n\t\tindex: 29,\n\t\tisBkr: !1\n\t}, this.rules[30] = {\n\t\tname: \"IP-literal\",\n\t\tlower: \"ip-literal\",\n\t\tindex: 30,\n\t\tisBkr: !1\n\t}, this.rules[31] = {\n\t\tname: \"IPvFuture\",\n\t\tlower: \"ipvfuture\",\n\t\tindex: 31,\n\t\tisBkr: !1\n\t}, this.rules[32] = {\n\t\tname: \"IPv6address\",\n\t\tlower: \"ipv6address\",\n\t\tindex: 32,\n\t\tisBkr: !1\n\t}, this.rules[33] = {\n\t\tname: \"nodcolon\",\n\t\tlower: \"nodcolon\",\n\t\tindex: 33,\n\t\tisBkr: !1\n\t}, this.rules[34] = {\n\t\tname: \"dcolon\",\n\t\tlower: \"dcolon\",\n\t\tindex: 34,\n\t\tisBkr: !1\n\t}, this.rules[35] = {\n\t\tname: \"h16\",\n\t\tlower: \"h16\",\n\t\tindex: 35,\n\t\tisBkr: !1\n\t}, this.rules[36] = {\n\t\tname: \"h16c\",\n\t\tlower: \"h16c\",\n\t\tindex: 36,\n\t\tisBkr: !1\n\t}, this.rules[37] = {\n\t\tname: \"h16n\",\n\t\tlower: \"h16n\",\n\t\tindex: 37,\n\t\tisBkr: !1\n\t}, this.rules[38] = {\n\t\tname: \"h16cn\",\n\t\tlower: \"h16cn\",\n\t\tindex: 38,\n\t\tisBkr: !1\n\t}, this.rules[39] = {\n\t\tname: \"IPv4address\",\n\t\tlower: \"ipv4address\",\n\t\tindex: 39,\n\t\tisBkr: !1\n\t}, this.rules[40] = {\n\t\tname: \"dec-octet\",\n\t\tlower: \"dec-octet\",\n\t\tindex: 40,\n\t\tisBkr: !1\n\t}, this.rules[41] = {\n\t\tname: \"dec-digit\",\n\t\tlower: \"dec-digit\",\n\t\tindex: 41,\n\t\tisBkr: !1\n\t}, this.rules[42] = {\n\t\tname: \"reg-name\",\n\t\tlower: \"reg-name\",\n\t\tindex: 42,\n\t\tisBkr: !1\n\t}, this.rules[43] = {\n\t\tname: \"reg-name-char\",\n\t\tlower: \"reg-name-char\",\n\t\tindex: 43,\n\t\tisBkr: !1\n\t}, this.rules[44] = {\n\t\tname: \"port\",\n\t\tlower: \"port\",\n\t\tindex: 44,\n\t\tisBkr: !1\n\t}, this.rules[45] = {\n\t\tname: \"query\",\n\t\tlower: \"query\",\n\t\tindex: 45,\n\t\tisBkr: !1\n\t}, this.rules[46] = {\n\t\tname: \"fragment\",\n\t\tlower: \"fragment\",\n\t\tindex: 46,\n\t\tisBkr: !1\n\t}, this.rules[47] = {\n\t\tname: \"URI-r\",\n\t\tlower: \"uri-r\",\n\t\tindex: 47,\n\t\tisBkr: !1\n\t}, this.rules[48] = {\n\t\tname: \"hier-part-r\",\n\t\tlower: \"hier-part-r\",\n\t\tindex: 48,\n\t\tisBkr: !1\n\t}, this.rules[49] = {\n\t\tname: \"scheme-r\",\n\t\tlower: \"scheme-r\",\n\t\tindex: 49,\n\t\tisBkr: !1\n\t}, this.rules[50] = {\n\t\tname: \"query-r\",\n\t\tlower: \"query-r\",\n\t\tindex: 50,\n\t\tisBkr: !1\n\t}, this.rules[51] = {\n\t\tname: \"fragment-r\",\n\t\tlower: \"fragment-r\",\n\t\tindex: 51,\n\t\tisBkr: !1\n\t}, this.rules[52] = {\n\t\tname: \"authority-d\",\n\t\tlower: \"authority-d\",\n\t\tindex: 52,\n\t\tisBkr: !1\n\t}, this.rules[53] = {\n\t\tname: \"userinfo-d\",\n\t\tlower: \"userinfo-d\",\n\t\tindex: 53,\n\t\tisBkr: !1\n\t}, this.rules[54] = {\n\t\tname: \"host-d\",\n\t\tlower: \"host-d\",\n\t\tindex: 54,\n\t\tisBkr: !1\n\t}, this.rules[55] = {\n\t\tname: \"port-d\",\n\t\tlower: \"port-d\",\n\t\tindex: 55,\n\t\tisBkr: !1\n\t}, this.rules[56] = {\n\t\tname: \"path-abempty-r\",\n\t\tlower: \"path-abempty-r\",\n\t\tindex: 56,\n\t\tisBkr: !1\n\t}, this.rules[57] = {\n\t\tname: \"path-absolute-r\",\n\t\tlower: \"path-absolute-r\",\n\t\tindex: 57,\n\t\tisBkr: !1\n\t}, this.rules[58] = {\n\t\tname: \"path-rootless-r\",\n\t\tlower: \"path-rootless-r\",\n\t\tindex: 58,\n\t\tisBkr: !1\n\t}, this.rules[59] = {\n\t\tname: \"path-empty-r\",\n\t\tlower: \"path-empty-r\",\n\t\tindex: 59,\n\t\tisBkr: !1\n\t}, this.rules[60] = {\n\t\tname: \"segment\",\n\t\tlower: \"segment\",\n\t\tindex: 60,\n\t\tisBkr: !1\n\t}, this.rules[61] = {\n\t\tname: \"segment-nz\",\n\t\tlower: \"segment-nz\",\n\t\tindex: 61,\n\t\tisBkr: !1\n\t}, this.rules[62] = {\n\t\tname: \"pchar\",\n\t\tlower: \"pchar\",\n\t\tindex: 62,\n\t\tisBkr: !1\n\t}, this.rules[63] = {\n\t\tname: \"pct-encoded\",\n\t\tlower: \"pct-encoded\",\n\t\tindex: 63,\n\t\tisBkr: !1\n\t}, this.rules[64] = {\n\t\tname: \"date-fullyear\",\n\t\tlower: \"date-fullyear\",\n\t\tindex: 64,\n\t\tisBkr: !1\n\t}, this.rules[65] = {\n\t\tname: \"date-month\",\n\t\tlower: \"date-month\",\n\t\tindex: 65,\n\t\tisBkr: !1\n\t}, this.rules[66] = {\n\t\tname: \"date-mday\",\n\t\tlower: \"date-mday\",\n\t\tindex: 66,\n\t\tisBkr: !1\n\t}, this.rules[67] = {\n\t\tname: \"time-hour\",\n\t\tlower: \"time-hour\",\n\t\tindex: 67,\n\t\tisBkr: !1\n\t}, this.rules[68] = {\n\t\tname: \"time-minute\",\n\t\tlower: \"time-minute\",\n\t\tindex: 68,\n\t\tisBkr: !1\n\t}, this.rules[69] = {\n\t\tname: \"time-second\",\n\t\tlower: \"time-second\",\n\t\tindex: 69,\n\t\tisBkr: !1\n\t}, this.rules[70] = {\n\t\tname: \"time-secfrac\",\n\t\tlower: \"time-secfrac\",\n\t\tindex: 70,\n\t\tisBkr: !1\n\t}, this.rules[71] = {\n\t\tname: \"time-numoffset\",\n\t\tlower: \"time-numoffset\",\n\t\tindex: 71,\n\t\tisBkr: !1\n\t}, this.rules[72] = {\n\t\tname: \"time-offset\",\n\t\tlower: \"time-offset\",\n\t\tindex: 72,\n\t\tisBkr: !1\n\t}, this.rules[73] = {\n\t\tname: \"partial-time\",\n\t\tlower: \"partial-time\",\n\t\tindex: 73,\n\t\tisBkr: !1\n\t}, this.rules[74] = {\n\t\tname: \"full-date\",\n\t\tlower: \"full-date\",\n\t\tindex: 74,\n\t\tisBkr: !1\n\t}, this.rules[75] = {\n\t\tname: \"full-time\",\n\t\tlower: \"full-time\",\n\t\tindex: 75,\n\t\tisBkr: !1\n\t}, this.rules[76] = {\n\t\tname: \"date-time\",\n\t\tlower: \"date-time\",\n\t\tindex: 76,\n\t\tisBkr: !1\n\t}, this.rules[77] = {\n\t\tname: \"ALPHA\",\n\t\tlower: \"alpha\",\n\t\tindex: 77,\n\t\tisBkr: !1\n\t}, this.rules[78] = {\n\t\tname: \"LF\",\n\t\tlower: \"lf\",\n\t\tindex: 78,\n\t\tisBkr: !1\n\t}, this.rules[79] = {\n\t\tname: \"DIGIT\",\n\t\tlower: \"digit\",\n\t\tindex: 79,\n\t\tisBkr: !1\n\t}, this.rules[80] = {\n\t\tname: \"HEXDIG\",\n\t\tlower: \"hexdig\",\n\t\tindex: 80,\n\t\tisBkr: !1\n\t}, this.udts = [], this.rules[0].opcodes = [], this.rules[0].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t17,\n\t\t\t18,\n\t\t\t19,\n\t\t\t20,\n\t\t\t21,\n\t\t\t22,\n\t\t\t23,\n\t\t\t24,\n\t\t\t25,\n\t\t\t26,\n\t\t\t27,\n\t\t\t28,\n\t\t\t29,\n\t\t\t30,\n\t\t\t31,\n\t\t\t36,\n\t\t\t41,\n\t\t\t46\n\t\t]\n\t}, this.rules[0].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 5\n\t}, this.rules[0].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 6\n\t}, this.rules[0].opcodes[3] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t32,\n\t\t\t119,\n\t\t\t97,\n\t\t\t110,\n\t\t\t116,\n\t\t\t115,\n\t\t\t32,\n\t\t\t121,\n\t\t\t111,\n\t\t\t117,\n\t\t\t32,\n\t\t\t116,\n\t\t\t111,\n\t\t\t32,\n\t\t\t115,\n\t\t\t105,\n\t\t\t103,\n\t\t\t110,\n\t\t\t32,\n\t\t\t105,\n\t\t\t110,\n\t\t\t32,\n\t\t\t119,\n\t\t\t105,\n\t\t\t116,\n\t\t\t104,\n\t\t\t32,\n\t\t\t121,\n\t\t\t111,\n\t\t\t117,\n\t\t\t114,\n\t\t\t32,\n\t\t\t69,\n\t\t\t116,\n\t\t\t104,\n\t\t\t101,\n\t\t\t114,\n\t\t\t101,\n\t\t\t117,\n\t\t\t109,\n\t\t\t32,\n\t\t\t97,\n\t\t\t99,\n\t\t\t99,\n\t\t\t111,\n\t\t\t117,\n\t\t\t110,\n\t\t\t116,\n\t\t\t58\n\t\t]\n\t}, this.rules[0].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 7\n\t}, this.rules[0].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[7] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t8,\n\t\t\t13,\n\t\t\t14\n\t\t]\n\t}, this.rules[0].opcodes[8] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12\n\t\t]\n\t}, this.rules[0].opcodes[9] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[10] = {\n\t\ttype: 4,\n\t\tindex: 8\n\t}, this.rules[0].opcodes[11] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[12] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[13] = {\n\t\ttype: 4,\n\t\tindex: 9\n\t}, this.rules[0].opcodes[14] = {\n\t\ttype: 2,\n\t\tchildren: [15, 16]\n\t}, this.rules[0].opcodes[15] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[16] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[17] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t85,\n\t\t\t82,\n\t\t\t73,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[0].opcodes[18] = {\n\t\ttype: 4,\n\t\tindex: 19\n\t}, this.rules[0].opcodes[19] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[20] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t86,\n\t\t\t101,\n\t\t\t114,\n\t\t\t115,\n\t\t\t105,\n\t\t\t111,\n\t\t\t110,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[0].opcodes[21] = {\n\t\ttype: 4,\n\t\tindex: 10\n\t}, this.rules[0].opcodes[22] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[23] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t67,\n\t\t\t104,\n\t\t\t97,\n\t\t\t105,\n\t\t\t110,\n\t\t\t32,\n\t\t\t73,\n\t\t\t68,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[0].opcodes[24] = {\n\t\ttype: 4,\n\t\tindex: 16\n\t}, this.rules[0].opcodes[25] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[26] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t78,\n\t\t\t111,\n\t\t\t110,\n\t\t\t99,\n\t\t\t101,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[0].opcodes[27] = {\n\t\ttype: 4,\n\t\tindex: 11\n\t}, this.rules[0].opcodes[28] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[29] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t73,\n\t\t\t115,\n\t\t\t115,\n\t\t\t117,\n\t\t\t101,\n\t\t\t100,\n\t\t\t32,\n\t\t\t65,\n\t\t\t116,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[0].opcodes[30] = {\n\t\ttype: 4,\n\t\tindex: 12\n\t}, this.rules[0].opcodes[31] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[0].opcodes[32] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t33,\n\t\t\t34,\n\t\t\t35\n\t\t]\n\t}, this.rules[0].opcodes[33] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[34] = {\n\t\ttype: 4,\n\t\tindex: 1\n\t}, this.rules[0].opcodes[35] = {\n\t\ttype: 4,\n\t\tindex: 13\n\t}, this.rules[0].opcodes[36] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[0].opcodes[37] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t38,\n\t\t\t39,\n\t\t\t40\n\t\t]\n\t}, this.rules[0].opcodes[38] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[39] = {\n\t\ttype: 4,\n\t\tindex: 2\n\t}, this.rules[0].opcodes[40] = {\n\t\ttype: 4,\n\t\tindex: 14\n\t}, this.rules[0].opcodes[41] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[0].opcodes[42] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t43,\n\t\t\t44,\n\t\t\t45\n\t\t]\n\t}, this.rules[0].opcodes[43] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[44] = {\n\t\ttype: 4,\n\t\tindex: 3\n\t}, this.rules[0].opcodes[45] = {\n\t\ttype: 4,\n\t\tindex: 15\n\t}, this.rules[0].opcodes[46] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[0].opcodes[47] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t48,\n\t\t\t49,\n\t\t\t50\n\t\t]\n\t}, this.rules[0].opcodes[48] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[0].opcodes[49] = {\n\t\ttype: 4,\n\t\tindex: 4\n\t}, this.rules[0].opcodes[50] = {\n\t\ttype: 4,\n\t\tindex: 17\n\t}, this.rules[1].opcodes = [], this.rules[1].opcodes[0] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t69,\n\t\t\t120,\n\t\t\t112,\n\t\t\t105,\n\t\t\t114,\n\t\t\t97,\n\t\t\t116,\n\t\t\t105,\n\t\t\t111,\n\t\t\t110,\n\t\t\t32,\n\t\t\t84,\n\t\t\t105,\n\t\t\t109,\n\t\t\t101,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[2].opcodes = [], this.rules[2].opcodes[0] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t78,\n\t\t\t111,\n\t\t\t116,\n\t\t\t32,\n\t\t\t66,\n\t\t\t101,\n\t\t\t102,\n\t\t\t111,\n\t\t\t114,\n\t\t\t101,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[3].opcodes = [], this.rules[3].opcodes[0] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t82,\n\t\t\t101,\n\t\t\t113,\n\t\t\t117,\n\t\t\t101,\n\t\t\t115,\n\t\t\t116,\n\t\t\t32,\n\t\t\t73,\n\t\t\t68,\n\t\t\t58,\n\t\t\t32\n\t\t]\n\t}, this.rules[4].opcodes = [], this.rules[4].opcodes[0] = {\n\t\ttype: 6,\n\t\tstring: [\n\t\t\t82,\n\t\t\t101,\n\t\t\t115,\n\t\t\t111,\n\t\t\t117,\n\t\t\t114,\n\t\t\t99,\n\t\t\t101,\n\t\t\t115,\n\t\t\t58\n\t\t]\n\t}, this.rules[5].opcodes = [], this.rules[5].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[5].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t9\n\t\t]\n\t}, this.rules[5].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[5].opcodes[3] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[5].opcodes[4] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8\n\t\t]\n\t}, this.rules[5].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[5].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[5].opcodes[7] = {\n\t\ttype: 6,\n\t\tstring: [43]\n\t}, this.rules[5].opcodes[8] = {\n\t\ttype: 5,\n\t\tmin: 45,\n\t\tmax: 46\n\t}, this.rules[5].opcodes[9] = {\n\t\ttype: 7,\n\t\tstring: [\n\t\t\t58,\n\t\t\t47,\n\t\t\t47\n\t\t]\n\t}, this.rules[6].opcodes = [], this.rules[6].opcodes[0] = {\n\t\ttype: 4,\n\t\tindex: 52\n\t}, this.rules[7].opcodes = [], this.rules[7].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[7].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [48, 120]\n\t}, this.rules[7].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 40,\n\t\tmax: 40\n\t}, this.rules[7].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[8].opcodes = [], this.rules[8].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[8].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12,\n\t\t\t13\n\t\t]\n\t}, this.rules[8].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[8].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[8].opcodes[4] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[8].opcodes[5] = {\n\t\ttype: 5,\n\t\tmin: 32,\n\t\tmax: 33\n\t}, this.rules[8].opcodes[6] = {\n\t\ttype: 5,\n\t\tmin: 35,\n\t\tmax: 36\n\t}, this.rules[8].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 59\n\t}, this.rules[8].opcodes[8] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[8].opcodes[9] = {\n\t\ttype: 5,\n\t\tmin: 63,\n\t\tmax: 64\n\t}, this.rules[8].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [91]\n\t}, this.rules[8].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [93]\n\t}, this.rules[8].opcodes[12] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[8].opcodes[13] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[9].opcodes = [], this.rules[9].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t]\n\t}, this.rules[9].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[9].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[9].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[10].opcodes = [], this.rules[10].opcodes[0] = {\n\t\ttype: 7,\n\t\tstring: [49]\n\t}, this.rules[11].opcodes = [], this.rules[11].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 8,\n\t\tmax: Infinity\n\t}, this.rules[11].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [2, 3]\n\t}, this.rules[11].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[11].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[12].opcodes = [], this.rules[12].opcodes[0] = {\n\t\ttype: 4,\n\t\tindex: 76\n\t}, this.rules[13].opcodes = [], this.rules[13].opcodes[0] = {\n\t\ttype: 4,\n\t\tindex: 76\n\t}, this.rules[14].opcodes = [], this.rules[14].opcodes[0] = {\n\t\ttype: 4,\n\t\tindex: 76\n\t}, this.rules[15].opcodes = [], this.rules[15].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[15].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[16].opcodes = [], this.rules[16].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[16].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[17].opcodes = [], this.rules[17].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[17].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [2, 3]\n\t}, this.rules[17].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 78\n\t}, this.rules[17].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 18\n\t}, this.rules[18].opcodes = [], this.rules[18].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[18].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [45, 32]\n\t}, this.rules[18].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 47\n\t}, this.rules[19].opcodes = [], this.rules[19].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t8\n\t\t]\n\t}, this.rules[19].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 21\n\t}, this.rules[19].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[19].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 20\n\t}, this.rules[19].opcodes[4] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[19].opcodes[5] = {\n\t\ttype: 2,\n\t\tchildren: [6, 7]\n\t}, this.rules[19].opcodes[6] = {\n\t\ttype: 7,\n\t\tstring: [63]\n\t}, this.rules[19].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 45\n\t}, this.rules[19].opcodes[8] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[19].opcodes[9] = {\n\t\ttype: 2,\n\t\tchildren: [10, 11]\n\t}, this.rules[19].opcodes[10] = {\n\t\ttype: 7,\n\t\tstring: [35]\n\t}, this.rules[19].opcodes[11] = {\n\t\ttype: 4,\n\t\tindex: 46\n\t}, this.rules[20].opcodes = [], this.rules[20].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[20].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[20].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [47, 47]\n\t}, this.rules[20].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 22\n\t}, this.rules[20].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 23\n\t}, this.rules[20].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 24\n\t}, this.rules[20].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 25\n\t}, this.rules[20].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 26\n\t}, this.rules[21].opcodes = [], this.rules[21].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[21].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[21].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[21].opcodes[3] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[21].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[21].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[21].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [43]\n\t}, this.rules[21].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 45,\n\t\tmax: 46\n\t}, this.rules[22].opcodes = [], this.rules[22].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[22].opcodes[1] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[22].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 27\n\t}, this.rules[22].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 29\n\t}, this.rules[22].opcodes[4] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[22].opcodes[5] = {\n\t\ttype: 2,\n\t\tchildren: [6, 7]\n\t}, this.rules[22].opcodes[6] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[22].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 44\n\t}, this.rules[23].opcodes = [], this.rules[23].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[23].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [2, 3]\n\t}, this.rules[23].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[23].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[24].opcodes = [], this.rules[24].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[24].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[24].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[24].opcodes[3] = {\n\t\ttype: 2,\n\t\tchildren: [4, 5]\n\t}, this.rules[24].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 61\n\t}, this.rules[24].opcodes[5] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[24].opcodes[6] = {\n\t\ttype: 2,\n\t\tchildren: [7, 8]\n\t}, this.rules[24].opcodes[7] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[24].opcodes[8] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[25].opcodes = [], this.rules[25].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[25].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 61\n\t}, this.rules[25].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[25].opcodes[3] = {\n\t\ttype: 2,\n\t\tchildren: [4, 5]\n\t}, this.rules[25].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[25].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[26].opcodes = [], this.rules[26].opcodes[0] = {\n\t\ttype: 7,\n\t\tstring: []\n\t}, this.rules[27].opcodes = [], this.rules[27].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[27].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 28\n\t}, this.rules[27].opcodes[2] = {\n\t\ttype: 6,\n\t\tstring: [64]\n\t}, this.rules[28].opcodes = [], this.rules[28].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[28].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12\n\t\t]\n\t}, this.rules[28].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[28].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[28].opcodes[4] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[28].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 63\n\t}, this.rules[28].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [33]\n\t}, this.rules[28].opcodes[7] = {\n\t\ttype: 6,\n\t\tstring: [36]\n\t}, this.rules[28].opcodes[8] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 46\n\t}, this.rules[28].opcodes[9] = {\n\t\ttype: 5,\n\t\tmin: 58,\n\t\tmax: 59\n\t}, this.rules[28].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[28].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[28].opcodes[12] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[29].opcodes = [], this.rules[29].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t6\n\t\t]\n\t}, this.rules[29].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 30\n\t}, this.rules[29].opcodes[2] = {\n\t\ttype: 2,\n\t\tchildren: [3, 4]\n\t}, this.rules[29].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 39\n\t}, this.rules[29].opcodes[4] = { type: 13 }, this.rules[29].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 43\n\t}, this.rules[29].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 42\n\t}, this.rules[30].opcodes = [], this.rules[30].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t5\n\t\t]\n\t}, this.rules[30].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [91]\n\t}, this.rules[30].opcodes[2] = {\n\t\ttype: 1,\n\t\tchildren: [3, 4]\n\t}, this.rules[30].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 32\n\t}, this.rules[30].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 31\n\t}, this.rules[30].opcodes[5] = {\n\t\ttype: 7,\n\t\tstring: [93]\n\t}, this.rules[31].opcodes = [], this.rules[31].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t4,\n\t\t\t5\n\t\t]\n\t}, this.rules[31].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [118]\n\t}, this.rules[31].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[31].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[31].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [46]\n\t}, this.rules[31].opcodes[5] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[31].opcodes[6] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12,\n\t\t\t13,\n\t\t\t14,\n\t\t\t15,\n\t\t\t16\n\t\t]\n\t}, this.rules[31].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[31].opcodes[8] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[31].opcodes[9] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[31].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [33]\n\t}, this.rules[31].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [36]\n\t}, this.rules[31].opcodes[12] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 46\n\t}, this.rules[31].opcodes[13] = {\n\t\ttype: 5,\n\t\tmin: 58,\n\t\tmax: 59\n\t}, this.rules[31].opcodes[14] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[31].opcodes[15] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[31].opcodes[16] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[32].opcodes = [], this.rules[32].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [1, 2]\n\t}, this.rules[32].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 33\n\t}, this.rules[32].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 34\n\t}, this.rules[33].opcodes = [], this.rules[33].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 5]\n\t}, this.rules[33].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [2, 3]\n\t}, this.rules[33].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 37\n\t}, this.rules[33].opcodes[3] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[33].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 38\n\t}, this.rules[33].opcodes[5] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[33].opcodes[6] = {\n\t\ttype: 2,\n\t\tchildren: [7, 8]\n\t}, this.rules[33].opcodes[7] = {\n\t\ttype: 6,\n\t\tstring: [58]\n\t}, this.rules[33].opcodes[8] = {\n\t\ttype: 4,\n\t\tindex: 39\n\t}, this.rules[34].opcodes = [], this.rules[34].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[34].opcodes[1] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[34].opcodes[2] = {\n\t\ttype: 2,\n\t\tchildren: [3, 4]\n\t}, this.rules[34].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 35\n\t}, this.rules[34].opcodes[4] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[34].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 36\n\t}, this.rules[34].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [58, 58]\n\t}, this.rules[34].opcodes[7] = {\n\t\ttype: 1,\n\t\tchildren: [8, 17]\n\t}, this.rules[34].opcodes[8] = {\n\t\ttype: 2,\n\t\tchildren: [9, 13]\n\t}, this.rules[34].opcodes[9] = {\n\t\ttype: 2,\n\t\tchildren: [10, 11]\n\t}, this.rules[34].opcodes[10] = {\n\t\ttype: 4,\n\t\tindex: 37\n\t}, this.rules[34].opcodes[11] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[34].opcodes[12] = {\n\t\ttype: 4,\n\t\tindex: 38\n\t}, this.rules[34].opcodes[13] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[34].opcodes[14] = {\n\t\ttype: 2,\n\t\tchildren: [15, 16]\n\t}, this.rules[34].opcodes[15] = {\n\t\ttype: 6,\n\t\tstring: [58]\n\t}, this.rules[34].opcodes[16] = {\n\t\ttype: 4,\n\t\tindex: 39\n\t}, this.rules[34].opcodes[17] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[34].opcodes[18] = {\n\t\ttype: 4,\n\t\tindex: 39\n\t}, this.rules[35].opcodes = [], this.rules[35].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: 4\n\t}, this.rules[35].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[36].opcodes = [], this.rules[36].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[36].opcodes[1] = {\n\t\ttype: 6,\n\t\tstring: [58]\n\t}, this.rules[36].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: 4\n\t}, this.rules[36].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[37].opcodes = [], this.rules[37].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 3]\n\t}, this.rules[37].opcodes[1] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: 4\n\t}, this.rules[37].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[37].opcodes[3] = { type: 13 }, this.rules[37].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [46]\n\t}, this.rules[38].opcodes = [], this.rules[38].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t4\n\t\t]\n\t}, this.rules[38].opcodes[1] = {\n\t\ttype: 6,\n\t\tstring: [58]\n\t}, this.rules[38].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: 4\n\t}, this.rules[38].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[38].opcodes[4] = { type: 13 }, this.rules[38].opcodes[5] = {\n\t\ttype: 6,\n\t\tstring: [46]\n\t}, this.rules[39].opcodes = [], this.rules[39].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[39].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 40\n\t}, this.rules[39].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [46]\n\t}, this.rules[39].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 40\n\t}, this.rules[39].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [46]\n\t}, this.rules[39].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 40\n\t}, this.rules[39].opcodes[6] = {\n\t\ttype: 7,\n\t\tstring: [46]\n\t}, this.rules[39].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 40\n\t}, this.rules[40].opcodes = [], this.rules[40].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: 3\n\t}, this.rules[40].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 41\n\t}, this.rules[41].opcodes = [], this.rules[41].opcodes[0] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[42].opcodes = [], this.rules[42].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[42].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 43\n\t}, this.rules[43].opcodes = [], this.rules[43].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11\n\t\t]\n\t}, this.rules[43].opcodes[1] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[43].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[43].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[43].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 63\n\t}, this.rules[43].opcodes[5] = {\n\t\ttype: 6,\n\t\tstring: [33]\n\t}, this.rules[43].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [36]\n\t}, this.rules[43].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 46\n\t}, this.rules[43].opcodes[8] = {\n\t\ttype: 6,\n\t\tstring: [59]\n\t}, this.rules[43].opcodes[9] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[43].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[43].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[44].opcodes = [], this.rules[44].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[44].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[45].opcodes = [], this.rules[45].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[45].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[45].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[45].opcodes[3] = {\n\t\ttype: 6,\n\t\tstring: [47]\n\t}, this.rules[45].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [63]\n\t}, this.rules[46].opcodes = [], this.rules[46].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[46].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[46].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[46].opcodes[3] = {\n\t\ttype: 6,\n\t\tstring: [47]\n\t}, this.rules[46].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [63]\n\t}, this.rules[47].opcodes = [], this.rules[47].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t8\n\t\t]\n\t}, this.rules[47].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 49\n\t}, this.rules[47].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[47].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 48\n\t}, this.rules[47].opcodes[4] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[47].opcodes[5] = {\n\t\ttype: 2,\n\t\tchildren: [6, 7]\n\t}, this.rules[47].opcodes[6] = {\n\t\ttype: 7,\n\t\tstring: [63]\n\t}, this.rules[47].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 50\n\t}, this.rules[47].opcodes[8] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[47].opcodes[9] = {\n\t\ttype: 2,\n\t\tchildren: [10, 11]\n\t}, this.rules[47].opcodes[10] = {\n\t\ttype: 7,\n\t\tstring: [35]\n\t}, this.rules[47].opcodes[11] = {\n\t\ttype: 4,\n\t\tindex: 51\n\t}, this.rules[48].opcodes = [], this.rules[48].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[48].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[48].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [47, 47]\n\t}, this.rules[48].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 52\n\t}, this.rules[48].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 56\n\t}, this.rules[48].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 57\n\t}, this.rules[48].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 58\n\t}, this.rules[48].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 59\n\t}, this.rules[49].opcodes = [], this.rules[49].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[49].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[49].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[49].opcodes[3] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7\n\t\t]\n\t}, this.rules[49].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 77\n\t}, this.rules[49].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[49].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [43]\n\t}, this.rules[49].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 45,\n\t\tmax: 46\n\t}, this.rules[50].opcodes = [], this.rules[50].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[50].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[50].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[50].opcodes[3] = {\n\t\ttype: 6,\n\t\tstring: [47]\n\t}, this.rules[50].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [63]\n\t}, this.rules[51].opcodes = [], this.rules[51].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[51].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4\n\t\t]\n\t}, this.rules[51].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[51].opcodes[3] = {\n\t\ttype: 6,\n\t\tstring: [47]\n\t}, this.rules[51].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [63]\n\t}, this.rules[52].opcodes = [], this.rules[52].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t5,\n\t\t\t6\n\t\t]\n\t}, this.rules[52].opcodes[1] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[52].opcodes[2] = {\n\t\ttype: 2,\n\t\tchildren: [3, 4]\n\t}, this.rules[52].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 53\n\t}, this.rules[52].opcodes[4] = {\n\t\ttype: 6,\n\t\tstring: [64]\n\t}, this.rules[52].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 54\n\t}, this.rules[52].opcodes[6] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[52].opcodes[7] = {\n\t\ttype: 2,\n\t\tchildren: [8, 9]\n\t}, this.rules[52].opcodes[8] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[52].opcodes[9] = {\n\t\ttype: 4,\n\t\tindex: 55\n\t}, this.rules[53].opcodes = [], this.rules[53].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[53].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12\n\t\t]\n\t}, this.rules[53].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[53].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[53].opcodes[4] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[53].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 63\n\t}, this.rules[53].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [33]\n\t}, this.rules[53].opcodes[7] = {\n\t\ttype: 6,\n\t\tstring: [36]\n\t}, this.rules[53].opcodes[8] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 46\n\t}, this.rules[53].opcodes[9] = {\n\t\ttype: 5,\n\t\tmin: 58,\n\t\tmax: 59\n\t}, this.rules[53].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[53].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[53].opcodes[12] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[54].opcodes = [], this.rules[54].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t6\n\t\t]\n\t}, this.rules[54].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 30\n\t}, this.rules[54].opcodes[2] = {\n\t\ttype: 2,\n\t\tchildren: [3, 4]\n\t}, this.rules[54].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 39\n\t}, this.rules[54].opcodes[4] = { type: 13 }, this.rules[54].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 43\n\t}, this.rules[54].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 42\n\t}, this.rules[55].opcodes = [], this.rules[55].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[55].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[56].opcodes = [], this.rules[56].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[56].opcodes[1] = {\n\t\ttype: 2,\n\t\tchildren: [2, 3]\n\t}, this.rules[56].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[56].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[57].opcodes = [], this.rules[57].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[57].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[57].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[57].opcodes[3] = {\n\t\ttype: 2,\n\t\tchildren: [4, 5]\n\t}, this.rules[57].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 61\n\t}, this.rules[57].opcodes[5] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[57].opcodes[6] = {\n\t\ttype: 2,\n\t\tchildren: [7, 8]\n\t}, this.rules[57].opcodes[7] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[57].opcodes[8] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[58].opcodes = [], this.rules[58].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[58].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 61\n\t}, this.rules[58].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[58].opcodes[3] = {\n\t\ttype: 2,\n\t\tchildren: [4, 5]\n\t}, this.rules[58].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [47]\n\t}, this.rules[58].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 60\n\t}, this.rules[59].opcodes = [], this.rules[59].opcodes[0] = {\n\t\ttype: 7,\n\t\tstring: []\n\t}, this.rules[60].opcodes = [], this.rules[60].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: Infinity\n\t}, this.rules[60].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[61].opcodes = [], this.rules[61].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[61].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 62\n\t}, this.rules[62].opcodes = [], this.rules[62].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6,\n\t\t\t7,\n\t\t\t8,\n\t\t\t9,\n\t\t\t10,\n\t\t\t11,\n\t\t\t12\n\t\t]\n\t}, this.rules[62].opcodes[1] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[62].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[62].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[62].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 63\n\t}, this.rules[62].opcodes[5] = {\n\t\ttype: 6,\n\t\tstring: [33]\n\t}, this.rules[62].opcodes[6] = {\n\t\ttype: 6,\n\t\tstring: [36]\n\t}, this.rules[62].opcodes[7] = {\n\t\ttype: 5,\n\t\tmin: 38,\n\t\tmax: 46\n\t}, this.rules[62].opcodes[8] = {\n\t\ttype: 5,\n\t\tmin: 58,\n\t\tmax: 59\n\t}, this.rules[62].opcodes[9] = {\n\t\ttype: 6,\n\t\tstring: [61]\n\t}, this.rules[62].opcodes[10] = {\n\t\ttype: 6,\n\t\tstring: [64]\n\t}, this.rules[62].opcodes[11] = {\n\t\ttype: 6,\n\t\tstring: [95]\n\t}, this.rules[62].opcodes[12] = {\n\t\ttype: 6,\n\t\tstring: [126]\n\t}, this.rules[63].opcodes = [], this.rules[63].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t]\n\t}, this.rules[63].opcodes[1] = {\n\t\ttype: 6,\n\t\tstring: [37]\n\t}, this.rules[63].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[63].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 80\n\t}, this.rules[64].opcodes = [], this.rules[64].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 4,\n\t\tmax: 4\n\t}, this.rules[64].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[65].opcodes = [], this.rules[65].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 2,\n\t\tmax: 2\n\t}, this.rules[65].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[66].opcodes = [], this.rules[66].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 2,\n\t\tmax: 2\n\t}, this.rules[66].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[67].opcodes = [], this.rules[67].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 2,\n\t\tmax: 2\n\t}, this.rules[67].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[68].opcodes = [], this.rules[68].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 2,\n\t\tmax: 2\n\t}, this.rules[68].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[69].opcodes = [], this.rules[69].opcodes[0] = {\n\t\ttype: 3,\n\t\tmin: 2,\n\t\tmax: 2\n\t}, this.rules[69].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[70].opcodes = [], this.rules[70].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[70].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [46]\n\t}, this.rules[70].opcodes[2] = {\n\t\ttype: 3,\n\t\tmin: 1,\n\t\tmax: Infinity\n\t}, this.rules[70].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 79\n\t}, this.rules[71].opcodes = [], this.rules[71].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6\n\t\t]\n\t}, this.rules[71].opcodes[1] = {\n\t\ttype: 1,\n\t\tchildren: [2, 3]\n\t}, this.rules[71].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [43]\n\t}, this.rules[71].opcodes[3] = {\n\t\ttype: 7,\n\t\tstring: [45]\n\t}, this.rules[71].opcodes[4] = {\n\t\ttype: 4,\n\t\tindex: 67\n\t}, this.rules[71].opcodes[5] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[71].opcodes[6] = {\n\t\ttype: 4,\n\t\tindex: 68\n\t}, this.rules[72].opcodes = [], this.rules[72].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [1, 2]\n\t}, this.rules[72].opcodes[1] = {\n\t\ttype: 7,\n\t\tstring: [122]\n\t}, this.rules[72].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 71\n\t}, this.rules[73].opcodes = [], this.rules[73].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5,\n\t\t\t6\n\t\t]\n\t}, this.rules[73].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 67\n\t}, this.rules[73].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[73].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 68\n\t}, this.rules[73].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [58]\n\t}, this.rules[73].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 69\n\t}, this.rules[73].opcodes[6] = {\n\t\ttype: 3,\n\t\tmin: 0,\n\t\tmax: 1\n\t}, this.rules[73].opcodes[7] = {\n\t\ttype: 4,\n\t\tindex: 70\n\t}, this.rules[74].opcodes = [], this.rules[74].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3,\n\t\t\t4,\n\t\t\t5\n\t\t]\n\t}, this.rules[74].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 64\n\t}, this.rules[74].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [45]\n\t}, this.rules[74].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 65\n\t}, this.rules[74].opcodes[4] = {\n\t\ttype: 7,\n\t\tstring: [45]\n\t}, this.rules[74].opcodes[5] = {\n\t\ttype: 4,\n\t\tindex: 66\n\t}, this.rules[75].opcodes = [], this.rules[75].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [1, 2]\n\t}, this.rules[75].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 73\n\t}, this.rules[75].opcodes[2] = {\n\t\ttype: 4,\n\t\tindex: 72\n\t}, this.rules[76].opcodes = [], this.rules[76].opcodes[0] = {\n\t\ttype: 2,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t]\n\t}, this.rules[76].opcodes[1] = {\n\t\ttype: 4,\n\t\tindex: 74\n\t}, this.rules[76].opcodes[2] = {\n\t\ttype: 7,\n\t\tstring: [116]\n\t}, this.rules[76].opcodes[3] = {\n\t\ttype: 4,\n\t\tindex: 75\n\t}, this.rules[77].opcodes = [], this.rules[77].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [1, 2]\n\t}, this.rules[77].opcodes[1] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 90\n\t}, this.rules[77].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 122\n\t}, this.rules[78].opcodes = [], this.rules[78].opcodes[0] = {\n\t\ttype: 6,\n\t\tstring: [10]\n\t}, this.rules[79].opcodes = [], this.rules[79].opcodes[0] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[80].opcodes = [], this.rules[80].opcodes[0] = {\n\t\ttype: 1,\n\t\tchildren: [\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t]\n\t}, this.rules[80].opcodes[1] = {\n\t\ttype: 5,\n\t\tmin: 48,\n\t\tmax: 57\n\t}, this.rules[80].opcodes[2] = {\n\t\ttype: 5,\n\t\tmin: 65,\n\t\tmax: 70\n\t}, this.rules[80].opcodes[3] = {\n\t\ttype: 5,\n\t\tmin: 97,\n\t\tmax: 102\n\t}, this.toString = function() {\n\t\tlet e = \"\";\n\t\treturn e += \"; LDT 05/06/2024 \\r\\n\", e += \"; modified in several significant ways\\r\\n\", e += \"; 1) Literal strings are replaced with numbers and ranges (%d32 & %d32-126, etc.) when possible.\\r\\n\", e += \"; TRB and especially TRG operators are much more efficient than TLS operators.\\r\\n\", e += \"; 2) Two rules, authority and URI, are used multiple times in different contexts. These rules will be reproduced and renamed\\r\\n\", e += \"; in order to a) recognize the context and b) remove unneccary callback functions for certain contexts.\\r\\n\", e += \"; This will simiplify recognizing contexts AND remove unneccesary callbacks\\r\\n\", e += \"; 2.a) domain is defined as authority-d which is identical to authority except that there will be no\\r\\n\", e += \"; callback functions defined on authority-d or any of its *-d components.\\r\\n\", e += \"; 2.b) The resource URI is defined as URI-r and its components defined as *-r.\\r\\n\", e += \"; In this way, callback functions can be defined on URI and is components while\\r\\n\", e += \"; leaving URI-r to be parsed identically with no unnecessary callback functions to slow it down.\\r\\n\", e += \"; 3) IPv6address does not work because of APG's \\\"first-success disambiguation\\\" and \\\"greedy\\\" repetitions.\\r\\n\", e += \"; IPv6address redefined and validations moved to callback functions (semantic vs syntactic validation)\\r\\n\", e += \"; Redefinition requires negative look-ahead operators, https://en.wikipedia.org/wiki/Syntactic_predicate\\r\\n\", e += \"; That is SABNF instead of simple ABNF.\\r\\n\", e += \"; 4) IPv4address fails because of \\\"first-success disambiguation\\\".\\r\\n\", e += \"; This could be fixed with rearrangement of the alternative terms. However, it would still not\\r\\n\", e += \"; accept zero-padded (leading zeros) decimal octets.\\r\\n\", e += \"; Therefore, IPv4address is also done with callback functions and semantic validation.\\r\\n\", e += \"; 5) The negative look-ahead operator is also needed in the definition of host to\\r\\n\", e += \"; prevent failure with a reg-name that begins with an IPv4 address.\\r\\n\", e += \"; 6) NOTE: host = 1.1.1.256 is a valid host name even though it is an invalid IPv4address.\\r\\n\", e += \"; The IPv4address alternative fails but the reg-name alternative succeeds.\\r\\n\", e += \"; 7) The Ethereum spec (https://eips.ethereum.org/EIPS/eip-4361) message format ABNF\\r\\n\", e += \"; allows for empty statements. Because of the \\\"first success disambiguation\\\" of APG\\r\\n\", e += \"; the an explicit \\\"empty-statement\\\" rule is required to match the spec's intent.\\r\\n\", e += \"\\r\\n\", e += \"\\r\\n\", e += \"sign-in-with-ethereum =\\r\\n\", e += \" oscheme domain %s\\\" wants you to sign in with your Ethereum account:\\\" LF\\r\\n\", e += \" address LF\\r\\n\", e += \" ((LF statement LF LF) / empty-statement / (LF LF))\\r\\n\", e += \" %s\\\"URI: \\\" URI LF\\r\\n\", e += \" %s\\\"Version: \\\" version LF\\r\\n\", e += \" %s\\\"Chain ID: \\\" chain-id LF\\r\\n\", e += \" %s\\\"Nonce: \\\" nonce LF\\r\\n\", e += \" %s\\\"Issued At: \\\" issued-at\\r\\n\", e += \" [ LF ex-title expiration-time ]\\r\\n\", e += \" [ LF nb-title not-before ]\\r\\n\", e += \" [ LF ri-title request-id ]\\r\\n\", e += \" [ LF re-title resources ]\\r\\n\", e += \"ex-title = %s\\\"Expiration Time: \\\"\\r\\n\", e += \"nb-title = %s\\\"Not Before: \\\"\\r\\n\", e += \"ri-title = %s\\\"Request ID: \\\"\\r\\n\", e += \"re-title = %s\\\"Resources:\\\"\\r\\n\", e += \"oscheme = [ ALPHA *( ALPHA / DIGIT / %d43 / %d45-46 ) \\\"://\\\" ]\\r\\n\", e += \"domain = authority-d\\r\\n\", e += \"address = \\\"0x\\\" 40*40HEXDIG\\r\\n\", e += \" ; Must also conform to captilization\\r\\n\", e += \" ; checksum encoding specified in EIP-55\\r\\n\", e += \" ; where applicable (EOAs).\\r\\n\", e += \"\\r\\n\", e += \"statement = 1*( %d97-122 / %d65-90 / %d48-57 / %d32-33 / %d35-36 / %d38-59 / %d61 / %d63-64 / %d91 / %d93 / %d95 / %d126)\\r\\n\", e += \" ; The purpose is to exclude LF (line breaks).\\r\\n\", e += \" ; LDT 10/04/2023: Do you mean %d32-126? All printing characters\\r\\n\", e += \"empty-statement = LF LF LF\\r\\n\", e += \"version = \\\"1\\\"\\r\\n\", e += \"nonce = 8*( ALPHA / DIGIT )\\r\\n\", e += \"issued-at = date-time\\r\\n\", e += \"expiration-time = date-time\\r\\n\", e += \"not-before = date-time\\r\\n\", e += \"request-id = *pchar\\r\\n\", e += \"chain-id = 1*DIGIT\\r\\n\", e += \" ; See EIP-155 for valid CHAIN_IDs.\\r\\n\", e += \"resources = *( LF resource )\\r\\n\", e += \"resource = \\\"- \\\" URI-r\\r\\n\", e += \"\\r\\n\", e += \"; ------------------------------------------------------------------------------\\r\\n\", e += \"; RFC 3986\\r\\n\", e += \"\\r\\n\", e += \"URI = scheme \\\":\\\" hier-part [ \\\"?\\\" query ] [ \\\"#\\\" fragment ]\\r\\n\", e += \"hier-part = \\\"//\\\" authority path-abempty\\r\\n\", e += \" / path-absolute\\r\\n\", e += \" / path-rootless\\r\\n\", e += \" / path-empty\\r\\n\", e += \"scheme = ALPHA *( ALPHA / DIGIT / %d43 / %d45-46 )\\r\\n\", e += \"authority = [ userinfo-at ] host [ \\\":\\\" port ]\\r\\n\", e += \"path-abempty = *( \\\"/\\\" segment )\\r\\n\", e += \"path-absolute = \\\"/\\\" [ segment-nz *( \\\"/\\\" segment ) ]\\r\\n\", e += \"path-rootless = segment-nz *( \\\"/\\\" segment )\\r\\n\", e += \"path-empty = \\\"\\\"\\r\\n\", e += \"userinfo-at = userinfo %d64\\r\\n\", e += \" ; userinfo redefined to include the \\\"@\\\" so that it will fail without it\\r\\n\", e += \" ; otherwise userinfo can match host and then the parser will backtrack\\r\\n\", e += \" ; incorrectly keeping the captured userinfo phrase\\r\\n\", e += \"userinfo = *(%d97-122 / %d65-90 / %d48-57 / pct-encoded / %d33 / %d36 / %d38-46 / %d58-59 / %d61 / %d95 / %d126)\\r\\n\", e += \"host = IP-literal / (IPv4address !reg-name-char) / reg-name\\r\\n\", e += \" ; negative look-ahead required to prevent IPv4address from being recognized as first part of reg-name\\r\\n\", e += \" ; same fix as https://github.com/garycourt/uri-js/issues/4\\r\\n\", e += \"IP-literal = \\\"[\\\" ( IPv6address / IPvFuture ) \\\"]\\\"\\r\\n\", e += \"IPvFuture = \\\"v\\\" 1*HEXDIG \\\".\\\" 1*( %d97-122 / %d65-90 / %d48-57 / %d33 / %d36 /%d38-46 / %d58-59 /%d61 /%d95 / %d126 )\\r\\n\", e += \"IPv6address = nodcolon / dcolon\\r\\n\", e += \"nodcolon = (h16n *h16cn) [%d58 IPv4address]\\r\\n\", e += \"dcolon = [h16 *h16c] %d58.58 (((h16n *h16cn) [%d58 IPv4address]) / [IPv4address])\\r\\n\", e += \"h16 = 1*4HEXDIG\\r\\n\", e += \"h16c = %d58 1*4HEXDIG\\r\\n\", e += \"h16n = 1*4HEXDIG !%d46\\r\\n\", e += \"h16cn = %d58 1*4HEXDIG !%d46\\r\\n\", e += \"IPv4address = dec-octet \\\".\\\" dec-octet \\\".\\\" dec-octet \\\".\\\" dec-octet\\r\\n\", e += \"; Here we will will use callback functions to evaluate and validate the (possibly zero-padded) dec-octet.\\r\\n\", e += \"dec-octet = 1*3dec-digit\\r\\n\", e += \"dec-digit = %d48-57\\r\\n\", e += \"reg-name = *reg-name-char\\r\\n\", e += \"reg-name-char = %d97-122 / %d65-90 / %d48-57 / pct-encoded / %d33 / %d36 / %d38-46 / %d59 / %d61 /%d95 / %d126\\r\\n\", e += \"port = *DIGIT\\r\\n\", e += \"query = *(pchar / %d47 / %d63)\\r\\n\", e += \"fragment = *(pchar / %d47 / %d63)\\r\\n\", e += \"\\r\\n\", e += \"; URI-r is a redefiniton of URI but without the callback functions attached to it\\r\\n\", e += \"; it reuses athority-d from domain \\r\\n\", e += \"URI-r = scheme-r \\\":\\\" hier-part-r [ \\\"?\\\" query-r ] [ \\\"#\\\" fragment-r ]\\r\\n\", e += \"hier-part-r = \\\"//\\\" authority-d path-abempty-r\\r\\n\", e += \" / path-absolute-r\\r\\n\", e += \" / path-rootless-r\\r\\n\", e += \" / path-empty-r\\r\\n\", e += \"scheme-r = ALPHA *( ALPHA / DIGIT / %d43 / %d45-46 )\\r\\n\", e += \"query-r = *(pchar / %d47 / %d63)\\r\\n\", e += \"fragment-r = *(pchar / %d47 / %d63)\\r\\n\", e += \"\\r\\n\", e += \"; authority-d is a redefinition of authority for capturing the domian phrase\\r\\n\", e += \"; but without callback functions \\r\\n\", e += \"; it is reused for URI- for the same reason \\r\\n\", e += \"authority-d = [ userinfo-d %d64 ] host-d [ \\\":\\\" port-d ]\\r\\n\", e += \"userinfo-d = *(%d97-122 / %d65-90 / %d48-57 / pct-encoded / %d33 / %d36 / %d38-46 / %d58-59 / %d61 / %d95 / %d126)\\r\\n\", e += \"host-d = IP-literal / (IPv4address !reg-name-char) / reg-name\\r\\n\", e += \"port-d = *DIGIT\\r\\n\", e += \"\\r\\n\", e += \"; for use with URI-r\\r\\n\", e += \"path-abempty-r = *( \\\"/\\\" segment )\\r\\n\", e += \"path-absolute-r = \\\"/\\\" [ segment-nz *( \\\"/\\\" segment ) ]\\r\\n\", e += \"path-rootless-r = segment-nz *( \\\"/\\\" segment )\\r\\n\", e += \"path-empty-r = \\\"\\\"\\r\\n\", e += \"segment = *pchar\\r\\n\", e += \"segment-nz = 1*pchar\\r\\n\", e += \"pchar = (%d97-122 / %d65-90 / %d48-57 / pct-encoded / %d33 / %d36 / %d38-46 /%d58-59 / %d61 / %d64 / %d95 / %d126)\\r\\n\", e += \"pct-encoded = %d37 HEXDIG HEXDIG\\r\\n\", e += \"\\r\\n\", e += \"; no longer needed - expanded for all usage for fewer branches in the parse there\\r\\n\", e += \"; and more efficient use of the TBS & TRG operators in place of TLS and rule names\\r\\n\", e += \"; does not work with APG probably because of \\\"first-success disambiguation\\\" and greedy repetitions.\\r\\n\", e += \"; will replace with semantic checking of valid number of h16s\\r\\n\", e += \";IPv6address = 6( h16 \\\":\\\" ) ls32\\r\\n\", e += \"; / \\\"::\\\" 5( h16 \\\":\\\" ) ls32\\r\\n\", e += \"; / [ h16 ] \\\"::\\\" 4( h16 \\\":\\\" ) ls32\\r\\n\", e += \"; / [ *1( h16 \\\":\\\" ) h16 ] \\\"::\\\" 3( h16 \\\":\\\" ) ls32\\r\\n\", e += \"; / [ *2( h16 \\\":\\\" ) h16 ] \\\"::\\\" 2( h16 \\\":\\\" ) ls32\\r\\n\", e += \"; / [ *3( h16 \\\":\\\" ) h16 ] \\\"::\\\" h16 \\\":\\\" ls32\\r\\n\", e += \"; / [ *4( h16 \\\":\\\" ) h16 ] \\\"::\\\" ls32\\r\\n\", e += \"; / [ *5( h16 \\\":\\\" ) h16 ] \\\"::\\\" h16\\r\\n\", e += \"; / [ *6( h16 \\\":\\\" ) h16 ] \\\"::\\\"\\r\\n\", e += \";ls32 = ( h16 \\\":\\\" h16 ) / IPv4address\\r\\n\", e += \"; dec-octet does not work because of \\\"first-success disambiguation\\\".\\r\\n\", e += \"; Must have the longest (3-digit) numbers first.\\r\\n\", e += \"; Even so, this form does not accept leading zeros.\\r\\n\", e += \"; There does not seem to be a clear standard for this (https://en.wikipedia.org/wiki/Dot-decimal_notation)\\r\\n\", e += \"; however and early RFC 790 did show leading-zero padding of the three digits.\\r\\n\", e += \";dec-octet = DIGIT ; 0-9\\r\\n\", e += \"; / %x31-39 DIGIT ; 10-99\\r\\n\", e += \"; / \\\"1\\\" 2DIGIT ; 100-199\\r\\n\", e += \"; / \\\"2\\\" %x30-34 DIGIT ; 200-249\\r\\n\", e += \"; / \\\"25\\\" %x30-35 ; 250-255\\r\\n\", e += \";statement = 1*( reserved / unreserved / \\\" \\\" )\\r\\n\", e += \";scheme = ALPHA *( ALPHA / DIGIT / \\\"+\\\" / \\\"-\\\" / \\\".\\\" )\\r\\n\", e += \";authority = [ userinfo \\\"@\\\" ] host [ \\\":\\\" port ]\\r\\n\", e += \";userinfo = *( unreserved / pct-encoded / sub-delims / \\\":\\\" )\\r\\n\", e += \";query = *( pchar / \\\"/\\\" / \\\"?\\\" )\\r\\n\", e += \";fragment = *( pchar / \\\"/\\\" / \\\"?\\\" )\\r\\n\", e += \";IPvFuture = \\\"v\\\" 1*HEXDIG \\\".\\\" 1*( unreserved / sub-delims / \\\":\\\" )\\r\\n\", e += \";reg-name = *( unreserved / pct-encoded / sub-delims )\\r\\n\", e += \";pct-encoded = \\\"%\\\" HEXDIG HEXDIG\\r\\n\", e += \";pchar = unreserved / pct-encoded / sub-delims / \\\":\\\" / \\\"@\\\"\\r\\n\", e += \";path-empty = 0pchar; deprecated - empty literal string, \\\"\\\", is more efficient \\r\\n\", e += \";unreserved = ALPHA / DIGIT / \\\"-\\\" / \\\".\\\" / \\\"_\\\" / \\\"~\\\"\\r\\n\", e += \";reserved = gen-delims / sub-delims\\r\\n\", e += \";gen-delims = \\\":\\\" / \\\"/\\\" / \\\"?\\\" / \\\"#\\\" / \\\"[\\\" / \\\"]\\\" / \\\"@\\\"\\r\\n\", e += \";sub-delims = \\\"!\\\" / \\\"$\\\" / \\\"&\\\" / \\\"'\\\" / \\\"(\\\" / \\\")\\\"\\r\\n\", e += \"; / \\\"*\\\" / \\\"+\\\" / \\\",\\\" / \\\";\\\" / \\\"=\\\"\\r\\n\", e += \";HEXDIG = DIGIT / \\\"A\\\" / \\\"B\\\" / \\\"C\\\" / \\\"D\\\" / \\\"E\\\" / \\\"F\\\"\\r\\n\", e += \"\\r\\n\", e += \"; ------------------------------------------------------------------------------\\r\\n\", e += \"; RFC 3339\\r\\n\", e += \"\\r\\n\", e += \"date-fullyear = 4DIGIT\\r\\n\", e += \"date-month = 2DIGIT ; 01-12\\r\\n\", e += \"date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on\\r\\n\", e += \" ; month/year\\r\\n\", e += \"time-hour = 2DIGIT ; 00-23\\r\\n\", e += \"time-minute = 2DIGIT ; 00-59\\r\\n\", e += \"time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second\\r\\n\", e += \" ; rules\\r\\n\", e += \"time-secfrac = \\\".\\\" 1*DIGIT\\r\\n\", e += \"time-numoffset = (\\\"+\\\" / \\\"-\\\") time-hour \\\":\\\" time-minute\\r\\n\", e += \"time-offset = \\\"Z\\\" / time-numoffset\\r\\n\", e += \"\\r\\n\", e += \"partial-time = time-hour \\\":\\\" time-minute \\\":\\\" time-second\\r\\n\", e += \" [time-secfrac]\\r\\n\", e += \"full-date = date-fullyear \\\"-\\\" date-month \\\"-\\\" date-mday\\r\\n\", e += \"full-time = partial-time time-offset\\r\\n\", e += \"\\r\\n\", e += \"date-time = full-date \\\"T\\\" full-time\\r\\n\", e += \"\\r\\n\", e += \"; ------------------------------------------------------------------------------\\r\\n\", e += \"; RFC 5234\\r\\n\", e += \"\\r\\n\", e += \"ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\\r\\n\", e += \"LF = %x0A\\r\\n\", e += \" ; linefeed\\r\\n\", e += \"DIGIT = %x30-39\\r\\n\", e += \" ; 0-9\\r\\n\", e += \"HEXDIG = %d48-57 / %d65-70 / %d97-102\\r\\n\", e += \"\\r\\n\", e;\n\t};\n}\n//#endregion\n//#region lib/utils.ts\nvar i = (e) => {\n\tif (e.length !== 42) return \"invalid-checksum\";\n\tlet t = e.slice(2);\n\treturn t === t.toLowerCase() || t === t.toUpperCase() ? \"unchecksummed\" : o(e) ? \"valid-checksum\" : \"invalid-checksum\";\n}, a = (e) => {\n\tlet r = `${e}`.toLowerCase().replace(\"0x\", \"\"), i = n(t(r)), a = \"0x\";\n\tfor (let e = 0; e < r.length; e++) parseInt(i[e], 16) >= 8 ? a += r[e].toUpperCase() : a += r[e];\n\treturn a;\n}, o = (e) => e.length === 42 ? e === a(e) : !1, s = (e) => {\n\tlet t = parseInt(e);\n\tif (isNaN(t) || t === Infinity) throw Error(\"Invalid number.\");\n\treturn t;\n}, c = /^(?<date>[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(([Zz])|([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$/, l = (e) => {\n\tlet t = c.exec(e);\n\tif (!t) return !1;\n\tlet n = new Date(t.groups.date).toISOString().slice(0, 10);\n\treturn t.groups.date === n;\n}, u = e.utils, d = e.ids, f = {\n\tsignInWithEtherium: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.ACTIVE:\n\t\t\t\tif (typeof r != \"object\" || !r) throw Error(\"data must be an object\");\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH: r.errors.push(`invalid message: max line number was ${r.lineno}`);\n\t\t}\n\t},\n\tlineno: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.lineno += 1);\n\t},\n\texTitle: function(e, t, n, r) {\n\t\te.state === d.NOMATCH && --r.lineno;\n\t},\n\tnbTitle: function(e, t, n, r) {\n\t\te.state === d.NOMATCH && --r.lineno;\n\t},\n\triTitle: function(e, t, n, r) {\n\t\te.state === d.NOMATCH && --r.lineno;\n\t},\n\treTitle: function(e, t, n, r) {\n\t\te.state === d.MATCH ? r.resources = [] : e.state === d.NOMATCH && --r.lineno;\n\t},\n\toscheme: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.scheme = u.charsToString(t, n, e.phraseLength - 3));\n\t},\n\tdomain: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.domain = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.errors.push(`line ${r.lineno}: domain cannot be empty`);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH: r.errors.push(`line ${r.lineno}: invalid domain`);\n\t\t}\n\t},\n\taddress: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.address = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tlet a = i(r.address);\n\t\t\t\ta === \"invalid-checksum\" ? r.errors.push(`line ${r.lineno}: invalid EIP-55 address checksum - ${r.address}`) : a === \"unchecksummed\" && r.warnings.push(`line ${r.lineno}: address is not EIP-55 checksummed - ${r.address}`);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid address`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tstatement: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.statement = u.charsToString(t, n, e.phraseLength));\n\t},\n\temptyStatement: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.statement = \"\");\n\t},\n\tversion: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.version = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid version`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tnonce: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.nonce = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid nonce`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tissuedAt: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.issuedAt = u.charsToString(t, n, e.phraseLength), l(r.issuedAt) || r.errors.push(`line ${r.lineno}: invalid issued-at date time semantics`);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid issued-at date time syntax`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\texpirationTime: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.expirationTime = u.charsToString(t, n, e.phraseLength), l(r.expirationTime) || r.errors.push(`line ${r.lineno}: invalid expiration-time date time semantics`);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid expiration-time date time syntax`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tnotBefore: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.notBefore = u.charsToString(t, n, e.phraseLength), l(r.notBefore) || r.errors.push(`line ${r.lineno}: invalid not-before date time semantics`);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid not-before date time syntax`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\trequestId: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.requestId = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.requestId = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid requestID`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tchainId: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.chainId = s(u.charsToString(t, n, e.phraseLength));\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid chain-id`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\turiR: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriR = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid resource URI`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tresource: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.resources.push(r.uriR), delete r.uriR;\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid resource`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tscheme: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.scheme = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI scheme`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tuserinfo: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.userinfo = u.charsToString(t, n, e.phraseLength - 1);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\thost: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.ACTIVE:\n\t\t\t\tr.iplit = !1;\n\t\t\t\tbreak;\n\t\t\tcase d.MATCH:\n\t\t\t\tr.iplit ? r.uriElements.host = u.charsToString(t, n + 1, e.phraseLength - 2) : r.uriElements.host = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.host = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI host`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tipLiteral: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.iplit = !0);\n\t},\n\tport: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.port = s(u.charsToString(t, n, e.phraseLength));\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.port = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI port`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tpathAbempty: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.path = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.path = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI path-abempty`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tpathAbsolute: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.path = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tpathRootless: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.path = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tpathEmpty: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI - path-empty must be empty`);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.path = \"\";\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tquery: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.query = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.query = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI query`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tfragment: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uriElements.fragment = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\t\tr.uriElements.fragment = \"\";\n\t\t\t\tbreak;\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI fragment`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\turi: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.uri = u.charsToString(t, n, e.phraseLength);\n\t\t\t\tbreak;\n\t\t\tcase d.EMPTY:\n\t\t\tcase d.NOMATCH:\n\t\t\t\tr.errors.push(`line ${r.lineno}: invalid URI`);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tipv4: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.ipv4 = !0);\n\t},\n\th16: function(e, t, n, r) {\n\t\te.state === d.MATCH && (r.h16count += 1);\n\t},\n\tnodcolon: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.ACTIVE:\n\t\t\t\tr.h16count = 0, r.ipv4 = !1;\n\t\t\t\tbreak;\n\t\t\tcase d.MATCH:\n\t\t\t\tr.ipv4 ? r.h16count === 6 ? e.state = d.MATCH : (e.state = d.NOMATCH, e.phraseLength = 0) : r.h16count === 8 ? e.state = d.MATCH : (e.state = d.NOMATCH, e.phraseLength = 0);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tdcolon: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.ACTIVE:\n\t\t\t\tr.h16count = 0, r.ipv4 = !1;\n\t\t\t\tbreak;\n\t\t\tcase d.MATCH:\n\t\t\t\tr.ipv4 ? r.h16count < 6 ? e.state = d.MATCH : (e.state = d.NOMATCH, e.phraseLength = 0) : r.h16count < 8 ? e.state = d.MATCH : (e.state = d.NOMATCH, e.phraseLength = 0);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tdecOctet: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.ACTIVE:\n\t\t\t\tr.octet = 0;\n\t\t\t\tbreak;\n\t\t\tcase d.MATCH:\n\t\t\t\tr.octet > 255 ? (e.state = d.NOMATCH, e.phraseLength = 0) : e.state = d.MATCH;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tdecDigit: function(e, t, n, r) {\n\t\tswitch (e.state) {\n\t\t\tcase d.MATCH:\n\t\t\t\tr.octet = 10 * r.octet + t[n] - 48;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}, p = new r(), m = class e extends Error {\n\terrors;\n\tconstructor(t) {\n\t\tsuper(t.join(\"\\n\")), this.name = \"SiweParseError\", this.errors = t, Object.setPrototypeOf(this, e.prototype);\n\t}\n}, h = class {\n\tscheme;\n\tdomain;\n\taddress;\n\tstatement;\n\turi;\n\tversion;\n\tchainId;\n\tnonce;\n\tissuedAt;\n\texpirationTime;\n\tnotBefore;\n\trequestId;\n\tresources;\n\turiElements;\n\twarnings;\n\tconstructor(t) {\n\t\tlet n = new e.parser();\n\t\tn.callbacks = Object.create(null), n.callbacks[\"sign-in-with-ethereum\"] = f.signInWithEtherium, n.callbacks.oscheme = f.oscheme, n.callbacks.domain = f.domain, n.callbacks.LF = f.lineno, n.callbacks[\"ex-title\"] = f.exTitle, n.callbacks[\"nb-title\"] = f.nbTitle, n.callbacks[\"ri-title\"] = f.riTitle, n.callbacks[\"re-title\"] = f.reTitle, n.callbacks.address = f.address, n.callbacks.statement = f.statement, n.callbacks[\"empty-statement\"] = f.emptyStatement, n.callbacks.version = f.version, n.callbacks[\"chain-id\"] = f.chainId, n.callbacks.nonce = f.nonce, n.callbacks[\"issued-at\"] = f.issuedAt, n.callbacks[\"expiration-time\"] = f.expirationTime, n.callbacks[\"not-before\"] = f.notBefore, n.callbacks[\"request-id\"] = f.requestId, n.callbacks.uri = f.uri, n.callbacks[\"uri-r\"] = f.uriR, n.callbacks.resource = f.resource, n.callbacks.scheme = f.scheme, n.callbacks[\"userinfo-at\"] = f.userinfo, n.callbacks.host = f.host, n.callbacks[\"IP-literal\"] = f.ipLiteral, n.callbacks.port = f.port, n.callbacks[\"path-abempty\"] = f.pathAbempty, n.callbacks[\"path-absolute\"] = f.pathAbsolute, n.callbacks[\"path-rootless\"] = f.pathRootless, n.callbacks[\"path-empty\"] = f.pathEmpty, n.callbacks.query = f.query, n.callbacks.fragment = f.fragment, n.callbacks.IPv4address = f.ipv4, n.callbacks.nodcolon = f.nodcolon, n.callbacks.dcolon = f.dcolon, n.callbacks.h16 = f.h16, n.callbacks.h16c = f.h16, n.callbacks.h16n = f.h16, n.callbacks.h16cn = f.h16, n.callbacks[\"dec-octet\"] = f.decOctet, n.callbacks[\"dec-digit\"] = f.decDigit;\n\t\tlet r = {\n\t\t\terrors: [],\n\t\t\twarnings: [],\n\t\t\tlineno: 1,\n\t\t\tscheme: void 0,\n\t\t\tdomain: void 0,\n\t\t\taddress: void 0,\n\t\t\tstatement: void 0,\n\t\t\turi: void 0,\n\t\t\tversion: void 0,\n\t\t\tchainId: void 0,\n\t\t\tnonce: void 0,\n\t\t\tissuedAt: void 0,\n\t\t\texpirationTime: void 0,\n\t\t\tnotBefore: void 0,\n\t\t\trequestId: void 0,\n\t\t\tresources: void 0,\n\t\t\turiElements: {\n\t\t\t\tscheme: void 0,\n\t\t\t\tuserinfo: void 0,\n\t\t\t\thost: void 0,\n\t\t\t\tport: void 0,\n\t\t\t\tpath: void 0,\n\t\t\t\tquery: void 0,\n\t\t\t\tfragment: void 0\n\t\t\t}\n\t\t}, i = n.parse(p, 0, t, r), a = [...r.errors];\n\t\tif (i.success || a.push(`Invalid message: ${JSON.stringify(i)}`), a.length > 0) throw new m(a);\n\t\tthis.warnings = [...r.warnings], this.scheme = r.scheme, this.domain = r.domain, this.address = r.address, this.statement = r.statement, this.uri = r.uri, this.version = r.version, this.chainId = r.chainId, this.nonce = r.nonce, this.issuedAt = r.issuedAt, this.expirationTime = r.expirationTime, this.notBefore = r.notBefore, this.requestId = r.requestId, this.resources = r.resources, this.uriElements = r.uriElements;\n\t}\n}, g = (t) => {\n\tlet n = new e.parser();\n\treturn n.callbacks = Object.create(null), n.callbacks[\"IP-literal\"] = f.ipLiteral, n.callbacks.IPv4address = f.ipv4, n.callbacks.nodcolon = f.nodcolon, n.callbacks.dcolon = f.dcolon, n.callbacks.h16 = f.h16, n.callbacks.h16c = f.h16, n.callbacks.h16n = f.h16, n.callbacks.h16cn = f.h16, n.callbacks[\"dec-octet\"] = f.decOctet, n.callbacks[\"dec-digit\"] = f.decDigit, n.parse(p, \"uri-r\", t, { errors: [] }).success;\n};\n//#endregion\nexport { h as ParsedMessage, m as SiweParseError, i as classifyAddressCase, o as isEIP55Address, g as isUri, l as isValidISO8601Date, s as parseIntegerNumber, a as toChecksumAddress };\n","import { isValidISO8601Date as e } from \"@signinwithethereum/siwe-parser\";\n//#region lib/types.ts\nvar t = [\n\t\"signature\",\n\t\"scheme\",\n\t\"domain\",\n\t\"nonce\",\n\t\"uri\",\n\t\"chainId\",\n\t\"requestId\",\n\t\"time\"\n], n = [\n\t\"provider\",\n\t\"config\",\n\t\"suppressExceptions\",\n\t\"verificationFallback\",\n\t\"strict\"\n], r = class e extends Error {\n\ttype;\n\texpected;\n\treceived;\n\tconstructor(t, n, r) {\n\t\tsuper(t), this.name = \"SiweError\", this.type = t, this.expected = n, this.received = r, Object.setPrototypeOf(this, e.prototype);\n\t}\n}, i = /* @__PURE__ */ function(e) {\n\treturn e.EXPIRED_MESSAGE = \"Expired message.\", e.INVALID_DOMAIN = \"Invalid domain.\", e.SCHEME_MISMATCH = \"Scheme does not match provided scheme for verification.\", e.DOMAIN_MISMATCH = \"Domain does not match provided domain for verification.\", e.NONCE_MISMATCH = \"Nonce does not match provided nonce for verification.\", e.URI_MISMATCH = \"URI does not match provided URI for verification.\", e.CHAIN_ID_MISMATCH = \"Chain ID does not match provided chain ID for verification.\", e.REQUEST_ID_MISMATCH = \"Request ID does not match provided request ID for verification.\", e.INVALID_ADDRESS = \"Invalid address.\", e.INVALID_URI = \"URI does not conform to RFC 3986.\", e.INVALID_NONCE = \"Nonce size smaller then 8 characters or is not alphanumeric.\", e.NOT_YET_VALID_MESSAGE = \"Message is not valid yet.\", e.INVALID_SIGNATURE = \"Signature does not match address of the message.\", e.INVALID_SIGNATURE_CHAIN_ID = \"Contract wallet verification provider chain does not match message chain ID.\", e.INVALID_TIME_FORMAT = \"Invalid time format.\", e.INVALID_MESSAGE_VERSION = \"Invalid message version.\", e.UNABLE_TO_PARSE = \"Unable to parse the message.\", e.MISSING_DOMAIN = \"Domain is required for verification.\", e.MISSING_NONCE = \"Nonce is required for verification.\", e.MISSING_URI = \"URI is required in strict mode.\", e.MISSING_CHAIN_ID = \"Chain ID is required in strict mode.\", e.MISSING_CONFIG = \"No verification configuration found.\", e.MISSING_PROVIDER_LIBRARY = \"Required provider library is not installed.\", e.NONCE_GENERATION_FAILED = \"Nonce generation failed.\", e.INVALID_PARAMS = \"Invalid parameters passed to verify.\", e.MALFORMED_MESSAGE = \"Message could not be prepared for signing.\", e;\n}({}), a = \"0x1626ba7e\", o = null;\nfunction s(e) {\n\to = e;\n}\nfunction c() {\n\treturn o;\n}\nasync function l(e) {\n\ttry {\n\t\tlet t = await import(\"viem\"), { createViemConfig: n } = await import(\"./viemAdapter-By13KInL.js\").then((e) => e.n);\n\t\treturn n({ publicClient: t.createPublicClient({ transport: t.http(e) }) });\n\t} catch {}\n\ttry {\n\t\tlet { ethers: t } = await import(\"ethers\"), { createEthersConfig: n } = await import(\"./ethersCompat-Df4a6QIZ.js\").then((e) => e.n), r;\n\t\treturn r = t.JsonRpcProvider ? new t.JsonRpcProvider(e) : new t.providers.JsonRpcProvider(e), n(r);\n\t} catch {}\n\tthrow new r(i.MISSING_PROVIDER_LIBRARY, \"viem or ethers installed\", \"Neither found\");\n}\n//#endregion\n//#region lib/utils.ts\nvar u = async (e, t, n) => n?.checkContractWalletSignature ? n.checkContractWalletSignature(e.address, e.prepareMessage(), t, e.chainId) : !1, d = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", f = () => {\n\tlet e = new Uint8Array(17);\n\tcrypto.getRandomValues(e);\n\tlet t = \"\";\n\tfor (let n = 0; n < 17; n++) t += d[e[n] % 62];\n\tif (!t || t.length < 8) throw new r(i.NONCE_GENERATION_FAILED, \"alphanumeric nonce >= 8 chars\", String(t));\n\treturn t;\n}, p = class e extends Error {\n\tconstructor(t) {\n\t\tsuper(t), this.name = \"ChainIdMismatchError\", Object.setPrototypeOf(this, e.prototype);\n\t}\n}, m = (e, t) => {\n\tlet n = [];\n\treturn Object.keys(e).forEach((e) => {\n\t\tt.includes(e) || n.push(e);\n\t}), n;\n};\n//#endregion\nexport { e as a, l as c, i as d, n as f, f as i, c as l, u as n, a as o, t as p, m as r, s, p as t, r as u };\n"],"mappings":"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CA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MA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","names":["u","b1","c","i2","i","h","l","i3","len","ret","n","buf","tail","c2","bom8","bom16","bom32","validateSrc","ret","validateDst","encode","decode","c","convert","i","i","n","i","evaluateRule","systemData","lookAroundValue","inLookAround","i","initializeInputChars","sortAlpha","sortHits","sortIndex","EmptyStat","clear","i","incStat","displayRow","displayOpsOnly","displayRules","i","node","parent","record","depth","obj","c","t","n","r","i","e","t","r","i","a","n","t","r","e","n","i","a","o","c","o","u","e","t","n","p","e","t","m","n"]}
|