diff --git a/platform/visual-studio-code/super-factory-manager-language/.vscodeignore b/platform/visual-studio-code/super-factory-manager-language/.vscodeignore index aaf4a603a..e2db4c9ab 100644 --- a/platform/visual-studio-code/super-factory-manager-language/.vscodeignore +++ b/platform/visual-studio-code/super-factory-manager-language/.vscodeignore @@ -10,3 +10,5 @@ tsconfig.json vsce-versions/** out/**/*.map node_modules/** +esbuild.mjs +package-lock.json \ No newline at end of file diff --git a/platform/visual-studio-code/super-factory-manager-language/CHANGELOG.md b/platform/visual-studio-code/super-factory-manager-language/CHANGELOG.md index d5182aa62..938e29aab 100644 --- a/platform/visual-studio-code/super-factory-manager-language/CHANGELOG.md +++ b/platform/visual-studio-code/super-factory-manager-language/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.0.17] + +### Changes on code + +- **Activity bar** + - GitHub changes to their API +- **Syntax** + - Added all new keywords to different places +- **Dependecies** + - Update most of them, since, well, TypeScript 7 goes faster and some old stuff + - Added a command to install them + ## [0.0.15] ### Changes on code diff --git a/platform/visual-studio-code/super-factory-manager-language/package-lock.json b/platform/visual-studio-code/super-factory-manager-language/package-lock.json index 193189c46..6e683143a 100644 --- a/platform/visual-studio-code/super-factory-manager-language/package-lock.json +++ b/platform/visual-studio-code/super-factory-manager-language/package-lock.json @@ -8,24 +8,234 @@ "name": "super-factory-manager-language", "version": "0.0.16", "devDependencies": { - "@types/node": "^25.2.2", + "@types/node": "^26.1.1", "@types/vscode": "^1.0.0", + "@vscode/vsce": "^3.9.2", "antlr4ts": "^0.5.0-alpha.4", "antlr4ts-cli": "^0.5.0-alpha.4", - "axios": "^1.13.5", - "esbuild": "^0.25.10", - "typescript": "^5.9.3", - "vsce": "^2.15.0" + "axios": "^1.18.1", + "esbuild": "^0.28.1", + "typescript": "^7.0.2" }, "engines": { "node": ">=20.0.0", "vscode": "^1.0.0" } }, + "node_modules/@azu/format-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", + "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@azu/style-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", + "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "@azu/format-text": "^1.0.1" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz", + "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.0.tgz", + "integrity": "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", + "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz", + "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz", + "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz", + "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^5.5.0", + "@azure/msal-node": "^5.1.0", + "open": "^10.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz", + "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.17.1.tgz", + "integrity": "sha512-zBhRGzABKSI7hfWh5EaZmril5ybZ7imBN1qEZl5sDTaelr+l8SnPjZO50Q4dnKnm347YPIlBMSnXKZyh3Yu5DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.11.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "16.11.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.11.2.tgz", + "integrity": "sha512-yDhtBOGDCdK9ipQ9g3+wmlMEPnZx2pXaDicDd9jYyR1L+7lEbvEohTDmF5qejZDutZY3m9pWPxeYxzNC701A2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.4.2.tgz", + "integrity": "sha512-fnqOpGYAV+i0RH4W5HB6Oy1IhqGZoCdnp7Y2Sa9k18FlT8aBkCA7L8Hv19hUHLDUK6kVjUO29AfnGX6wgAHyNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.11.2", + "jsonwebtoken": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", "cpu": [ "ppc64" ], @@ -40,9 +250,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", "cpu": [ "arm" ], @@ -57,9 +267,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", "cpu": [ "arm64" ], @@ -74,9 +284,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", "cpu": [ "x64" ], @@ -91,9 +301,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", "cpu": [ "arm64" ], @@ -108,9 +318,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", "cpu": [ "x64" ], @@ -125,9 +335,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", "cpu": [ "arm64" ], @@ -142,9 +352,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", "cpu": [ "x64" ], @@ -159,9 +369,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", "cpu": [ "arm" ], @@ -176,9 +386,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", "cpu": [ "arm64" ], @@ -193,9 +403,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", "cpu": [ "ia32" ], @@ -210,9 +420,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", "cpu": [ "loong64" ], @@ -227,9 +437,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", "cpu": [ "mips64el" ], @@ -244,9 +454,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", "cpu": [ "ppc64" ], @@ -261,9 +471,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", "cpu": [ "riscv64" ], @@ -278,9 +488,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", "cpu": [ "s390x" ], @@ -295,9 +505,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", "cpu": [ "x64" ], @@ -312,9 +522,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", "cpu": [ "arm64" ], @@ -329,9 +539,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", "cpu": [ "x64" ], @@ -346,9 +556,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", "cpu": [ "arm64" ], @@ -363,9 +573,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", "cpu": [ "x64" ], @@ -380,9 +590,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", "cpu": [ "arm64" ], @@ -397,9 +607,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", "cpu": [ "x64" ], @@ -414,9 +624,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", "cpu": [ "arm64" ], @@ -431,9 +641,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", "cpu": [ "ia32" ], @@ -448,9 +658,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", "cpu": [ "x64" ], @@ -464,221 +674,1257 @@ "node": ">=18" } }, - "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/vscode": { - "version": "1.100.0", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", + "node_modules/@secretlint/config-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz", + "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/antlr4ts-cli": { - "version": "0.5.0-alpha.4", + "node_modules/@secretlint/config-loader": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz", + "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "antlr4ts": "antlr4ts" + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.2.2", + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "ajv": "^8.17.1", + "debug": "^4.4.1", + "rc-config-loader": "^4.1.3" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@secretlint/core": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", + "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/@secretlint/formatter": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz", + "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "@textlint/linter-formatter": "^15.2.0", + "@textlint/module-interop": "^15.2.0", + "@textlint/types": "^15.2.0", + "chalk": "^5.4.1", + "debug": "^4.4.1", + "pluralize": "^8.0.0", + "strip-ansi": "^7.1.0", + "table": "^6.9.0", + "terminal-link": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "node_modules/@secretlint/formatter/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/azure-devops-node-api": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", - "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "node_modules/@secretlint/node": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", + "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==", "dev": true, "license": "MIT", "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" + "@secretlint/config-loader": "^10.2.2", + "@secretlint/core": "^10.2.2", + "@secretlint/formatter": "^10.2.2", + "@secretlint/profiler": "^10.2.2", + "@secretlint/source-creator": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "p-map": "^7.0.3" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/@secretlint/profiler": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", + "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", "dev": true, "license": "MIT" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@secretlint/resolver": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz", + "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT" }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@secretlint/secretlint-formatter-sarif": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz", + "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==", "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node-sarif-builder": "^3.2.0" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", + "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@secretlint/types": "^10.2.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", + "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "node_modules/@secretlint/source-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", + "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", "dev": true, "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2", + "istextorbinary": "^9.5.0" + }, "engines": { - "node": "*" + "node": ">=20.0.0" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/@secretlint/types": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", + "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=20.0.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@textlint/ast-node-types": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.7.1.tgz", + "integrity": "sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.7.1.tgz", + "integrity": "sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { + "@azu/format-text": "^1.0.2", + "@azu/style-format": "^1.0.1", + "@textlint/module-interop": "15.7.1", + "@textlint/resolver": "15.7.1", + "@textlint/types": "15.7.1", + "chalk": "^4.1.2", + "debug": "^4.4.3", + "js-yaml": "^4.1.1", + "lodash": "^4.18.1", + "pluralize": "^2.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "text-table": "^0.2.0" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/module-interop": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.7.1.tgz", + "integrity": "sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/resolver": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.7.1.tgz", + "integrity": "sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/types": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.7.1.tgz", + "integrity": "sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@textlint/ast-node-types": "15.7.1" + } + }, + "node_modules/@types/node": { + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", + "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vscode": { + "version": "1.100.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript/typescript-aix-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", + "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz", + "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz", + "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz", + "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz", + "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz", + "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz", + "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-loong64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz", + "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-mips64el": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz", + "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz", + "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-riscv64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz", + "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-s390x": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz", + "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz", + "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz", + "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz", + "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz", + "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz", + "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-sunos-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz", + "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz", + "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz", + "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.7.tgz", + "integrity": "sha512-JVUD8X2tfDMWjcjLs4yVxxVrS8yR5vnh386GAXT9Qj79nBxxXSaHFQZg5FweLmT8HlPQ3kii6noUB+Z9RN7DvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@typespec/ts-http-runtime/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@vscode/vsce": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz", + "integrity": "sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/identity": "^4.1.0", + "@secretlint/node": "^10.1.2", + "@secretlint/secretlint-formatter-sarif": "^10.1.2", + "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", + "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^13.0.6", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^10.2.2", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "secretlint": "^10.1.2", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^3.2.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz", + "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.6", + "@vscode/vsce-sign-alpine-x64": "2.0.6", + "@vscode/vsce-sign-darwin-arm64": "2.0.6", + "@vscode/vsce-sign-darwin-x64": "2.0.6", + "@vscode/vsce-sign-linux-arm": "2.0.6", + "@vscode/vsce-sign-linux-arm64": "2.0.6", + "@vscode/vsce-sign-linux-x64": "2.0.6", + "@vscode/vsce-sign-win32-arm64": "2.0.6", + "@vscode/vsce-sign-win32-x64": "2.0.6" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/antlr4ts-cli": { + "version": "0.5.0-alpha.4", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "antlr4ts": "antlr4ts" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/brace-expansion": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", + "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/cheerio": { @@ -730,22 +1976,36 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, @@ -763,22 +2023,15 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=18" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -809,12 +2062,31 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -831,10 +2103,54 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=4.0.0" } }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -851,6 +2167,7 @@ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", + "optional": true, "engines": { "node": ">=8" } @@ -929,6 +2246,40 @@ "node": ">= 0.4" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", + "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.15.0" + }, + "engines": { + "ecmascript": ">= es5", + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/encoding-sniffer": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", @@ -949,6 +2300,7 @@ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "once": "^1.4.0" } @@ -966,6 +2318,19 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1016,9 +2381,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1029,42 +2394,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, "node_modules/expand-template": { @@ -1073,24 +2428,79 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, "license": "(MIT OR WTFPL)", + "optional": true, "engines": { "node": ">=6" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-uri": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", + "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { @@ -1109,17 +2519,17 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -1130,14 +2540,23 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } }, "node_modules/function-bind": { "version": "1.1.2", @@ -1193,30 +2612,61 @@ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -1230,14 +2680,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-symbols": { @@ -1270,9 +2727,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dev": true, "license": "MIT", "dependencies": { @@ -1328,6 +2785,44 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -1360,18 +2855,30 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "optional": true }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/index-to-position": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inherits": { @@ -1379,14 +2886,244 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, "node_modules/keytar": { "version": "7.9.0", @@ -1395,6 +3132,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" @@ -1411,15 +3149,88 @@ } }, "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1434,30 +3245,31 @@ } }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.5.0", + "linkify-it": "^5.0.2", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/math-intrinsics": { @@ -1471,12 +3283,36 @@ } }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", "dev": true, "license": "MIT" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -1519,6 +3355,7 @@ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=10" }, @@ -1527,16 +3364,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -1545,15 +3385,34 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", + "optional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/mute-stream": { @@ -1568,14 +3427,16 @@ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/node-abi": { - "version": "3.87.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", - "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "version": "3.94.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.94.0.tgz", + "integrity": "sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "semver": "^7.3.5" }, @@ -1583,25 +3444,62 @@ "node": ">=10" } }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-sarif-builder": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz", + "integrity": "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sarif": "^2.1.7", + "fs-extra": "^11.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "MIT" + "license": "ISC" }, "node_modules/nth-check": { "version": "2.1.1", @@ -1635,10 +3533,61 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", + "optional": true, "dependencies": { "wrappy": "1" } }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.6.tgz", + "integrity": "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse-semver": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", @@ -1649,6 +3598,16 @@ "semver": "^5.1.0" } }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -1702,14 +3661,44 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pend": { @@ -1719,12 +3708,44 @@ "dev": true, "license": "MIT" }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -1747,29 +3768,46 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -1778,12 +3816,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -1794,6 +3854,19 @@ "rc": "cli.js" } }, + "node_modules/rc-config-loader": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz", + "integrity": "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "js-yaml": "^4.1.1", + "json5": "^2.2.3", + "require-from-string": "^2.0.2" + } + }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -1807,19 +3880,111 @@ "node": ">=0.8" } }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "queue-microtask": "^1.2.2" } }, "node_modules/safe-buffer": { @@ -1851,35 +4016,60 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=11.0.0" } }, + "node_modules/secretlint": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz", + "integrity": "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-creator": "^10.2.2", + "@secretlint/formatter": "^10.2.2", + "@secretlint/node": "^10.2.2", + "@secretlint/profiler": "^10.2.2", + "debug": "^4.4.1", + "globby": "^14.1.0", + "read-pkg": "^9.0.1" + }, + "bin": { + "secretlint": "bin/secretlint.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -1891,14 +4081,14 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -1965,7 +4155,8 @@ "url": "https://feross.org/support" } ], - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/simple-get": { "version": "4.0.1", @@ -1987,51 +4178,243 @@ } ], "license": "MIT", + "optional": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/structured-source": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", + "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boundary": "^2.0.0" + } + }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.5.tgz", + "integrity": "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -2045,6 +4428,7 @@ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -2056,16 +4440,76 @@ "node": ">=6" } }, + "node_modules/terminal-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz", + "integrity": "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^3.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/textextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", + "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "dev": true, "license": "MIT", "engines": { "node": ">=14.14" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -2082,6 +4526,7 @@ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "license": "Apache-2.0", + "optional": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -2089,6 +4534,19 @@ "node": "*" } }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", @@ -2102,37 +4560,58 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", "dev": true, "license": "Apache-2.0", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "tsc": "bin/tsc" }, "engines": { - "node": ">=14.17" + "node": ">=16.20.0" + }, + "optionalDependencies": { + "@typescript/typescript-aix-ppc64": "7.0.2", + "@typescript/typescript-darwin-arm64": "7.0.2", + "@typescript/typescript-darwin-x64": "7.0.2", + "@typescript/typescript-freebsd-arm64": "7.0.2", + "@typescript/typescript-freebsd-x64": "7.0.2", + "@typescript/typescript-linux-arm": "7.0.2", + "@typescript/typescript-linux-arm64": "7.0.2", + "@typescript/typescript-linux-loong64": "7.0.2", + "@typescript/typescript-linux-mips64el": "7.0.2", + "@typescript/typescript-linux-ppc64": "7.0.2", + "@typescript/typescript-linux-riscv64": "7.0.2", + "@typescript/typescript-linux-s390x": "7.0.2", + "@typescript/typescript-linux-x64": "7.0.2", + "@typescript/typescript-netbsd-arm64": "7.0.2", + "@typescript/typescript-netbsd-x64": "7.0.2", + "@typescript/typescript-openbsd-arm64": "7.0.2", + "@typescript/typescript-openbsd-x64": "7.0.2", + "@typescript/typescript-sunos-x64": "7.0.2", + "@typescript/typescript-win32-arm64": "7.0.2", + "@typescript/typescript-win32-x64": "7.0.2" } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, "license": "MIT" }, "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", "dev": true, "license": "MIT" }, "node_modules/undici": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", - "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", + "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", "dev": true, "license": "MIT", "engines": { @@ -2140,12 +4619,35 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", "dev": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -2158,42 +4660,31 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, - "node_modules/vsce": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", - "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", - "deprecated": "vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead.", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "keytar": "^7.7.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^5.1.0", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.4.23", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/version-range": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz", + "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==", + "dev": true, + "license": "Artistic-2.0", "engines": { - "node": ">= 14" + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" } }, "node_modules/whatwg-encoding": { @@ -2225,12 +4716,29 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, "license": "MIT", "dependencies": { @@ -2259,14 +4767,16 @@ "license": "ISC" }, "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", + "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", "dev": true, "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/yazl": { diff --git a/platform/visual-studio-code/super-factory-manager-language/package.json b/platform/visual-studio-code/super-factory-manager-language/package.json index 4aa043ba9..793018432 100644 --- a/platform/visual-studio-code/super-factory-manager-language/package.json +++ b/platform/visual-studio-code/super-factory-manager-language/package.json @@ -15,7 +15,7 @@ "name": "Titop54" } ], - "version": "0.0.16", + "version": "0.0.17", "icon": "media/controller.png", "main": "./out/extension.js", "engines": { @@ -104,7 +104,7 @@ "sfml.enableWarningChecking": { "type": "boolean", "default": true, - "description": "Enable warning for code. Still on very early" + "description": "Enable warning for code." }, "sfml.enableErrorChecking": { "type": "boolean", @@ -157,12 +157,12 @@ }, "sfml.externalURLs": { "type": "string", - "description": "Useful repositories for SFM files (Only GitHub or local). Each repo / folder must be in between '' and separated via a comma", + "description": "Useful repositories for SFM files (Only GitHub repos, Github Gist and local folder). Each repo / folder must be in between \"\" and separated via a comma", "default": "" }, "sfml.SnippetActivation": { "type": "string", - "description": "Prefix for activating snippets completion. For example: @energy or /energy.", + "description": "Prefix for activating snippets completion.\n This key needs to go before to activate snippets. For example: @energy or /energy.", "default": "" }, "sfml.enableSnippets": { @@ -199,10 +199,13 @@ "output", "where", "slots", + "slot", "retain", "each", "except", "forget", + "empty", + "in", "without", "with", "tag", @@ -218,11 +221,17 @@ "south", "west", "side", + "left", + "right", + "front", + "back", + "null", "ticks", "tick", "seconds", "second", "global", + "g", "plus", "redstone", "pulse", @@ -235,6 +244,7 @@ "=", "<=", ">=", + "+", ",", ":", "/", @@ -252,16 +262,17 @@ ] }, "devDependencies": { - "antlr4ts-cli": "^0.5.0-alpha.4", - "@types/node": "^25.2.2", + "@types/node": "^26.1.1", "@types/vscode": "^1.0.0", - "axios": "^1.13.5", + "@vscode/vsce": "^3.9.2", "antlr4ts": "^0.5.0-alpha.4", - "esbuild": "^0.25.10", - "typescript": "^5.9.3", - "vsce": "^2.15.0" + "antlr4ts-cli": "^0.5.0-alpha.4", + "axios": "^1.18.1", + "esbuild": "^0.28.1", + "typescript": "^7.0.2" }, "scripts": { + "setup": "npm install && npm run antlr && npm run compile", "vscode:prepublish": "npm run package-extension", "package-extension": "npm run check-types && node esbuild.mjs --production", "compile": "npm run check-types && node esbuild.mjs", @@ -270,6 +281,5 @@ "antlr": "antlr4ts -o src/generated -listener -visitor ./syntaxes/SFML.g4", "package": "vsce package -o vsce-versions", "publish": "vsce publish" - }, - "dependencies": {} + } } diff --git a/platform/visual-studio-code/super-factory-manager-language/src/activitybar/SFMLTreeDataProvider.ts b/platform/visual-studio-code/super-factory-manager-language/src/activitybar/SFMLTreeDataProvider.ts index 592bef3a3..21f85e1bd 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/activitybar/SFMLTreeDataProvider.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/activitybar/SFMLTreeDataProvider.ts @@ -179,7 +179,12 @@ export class SFMLTreeDataProvider implements vscode.TreeDataProvider { @@ -216,7 +221,12 @@ export class SFMLTreeDataProvider implements vscode.TreeDataProvider { try { - const response = await axios.get(url); + const response = await axios.get(url, { + headers: { + 'User-Agent': 'VSCode-SuperFactoryManager-Language-Extension', + 'Accept': 'application/vnd.github.v3+json' + } + }); const files = response.data.files; const items: any[] = []; @@ -467,7 +477,14 @@ export function getOpenCommand(tempFiles: Map): vscode.Disposabl else //Get the file from github and its content { try { - const response = await axios.get(file.url, { responseType: 'arraybuffer' }); + const response = await axios.get(file.url, { + responseType: 'arraybuffer', + headers: { + 'User-Agent': 'VSCode-SuperFactoryManager-Language-Extension', + 'Accept': 'application/vnd.github.v3+json' + } + }); + fs.writeFileSync(tempFilePath, response.data); tempFiles.set(tempFilePath, tempFilePath); diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.interp b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.interp index 81565ba06..b458b322a 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.interp +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.interp @@ -36,6 +36,9 @@ null null null null +null +null +null '#' null null @@ -61,6 +64,11 @@ null null null null +null +null +null +null +null ',' ':' '/' @@ -106,10 +114,13 @@ INPUT OUTPUT WHERE SLOTS +SLOT RETAIN EACH EXCEPT FORGET +EMPTY +IN WITHOUT WITH TAG @@ -126,6 +137,11 @@ EAST SOUTH WEST SIDE +LEFT +RIGHT +FRONT +BACK +NULL TICKS TICK SECONDS @@ -188,10 +204,11 @@ setOp labelAccess roundrobin label +emptyslots identifier string number atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 76, 485, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 3, 2, 5, 2, 80, 10, 2, 3, 2, 7, 2, 83, 10, 2, 12, 2, 14, 2, 86, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 106, 10, 4, 3, 5, 5, 5, 109, 10, 5, 3, 5, 5, 5, 112, 10, 5, 3, 5, 3, 5, 5, 5, 116, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 122, 10, 5, 3, 5, 5, 5, 125, 10, 5, 3, 6, 7, 6, 128, 10, 6, 12, 6, 14, 6, 131, 11, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 137, 10, 7, 3, 8, 3, 8, 5, 8, 141, 10, 8, 3, 8, 3, 8, 7, 8, 145, 10, 8, 12, 8, 14, 8, 148, 11, 8, 3, 8, 5, 8, 151, 10, 8, 3, 9, 3, 9, 5, 9, 155, 10, 9, 3, 9, 5, 9, 158, 10, 9, 3, 9, 3, 9, 5, 9, 162, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 167, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 172, 10, 9, 3, 9, 5, 9, 175, 10, 9, 5, 9, 177, 10, 9, 3, 10, 3, 10, 5, 10, 181, 10, 10, 3, 10, 5, 10, 184, 10, 10, 3, 10, 3, 10, 5, 10, 188, 10, 10, 3, 10, 3, 10, 3, 10, 5, 10, 193, 10, 10, 3, 10, 3, 10, 3, 10, 5, 10, 198, 10, 10, 3, 10, 5, 10, 201, 10, 10, 5, 10, 203, 10, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 7, 13, 212, 10, 13, 12, 13, 14, 13, 215, 11, 13, 3, 13, 5, 13, 218, 10, 13, 3, 14, 5, 14, 221, 10, 14, 3, 14, 3, 14, 5, 14, 225, 10, 14, 3, 14, 3, 14, 5, 14, 229, 10, 14, 3, 14, 5, 14, 232, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 239, 10, 15, 3, 16, 3, 16, 5, 16, 243, 10, 16, 3, 17, 3, 17, 3, 17, 5, 17, 248, 10, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 5, 19, 256, 10, 19, 3, 19, 3, 19, 5, 19, 260, 10, 19, 3, 19, 3, 19, 5, 19, 264, 10, 19, 5, 19, 266, 10, 19, 5, 19, 268, 10, 19, 5, 19, 270, 10, 19, 3, 19, 5, 19, 273, 10, 19, 3, 20, 3, 20, 3, 20, 7, 20, 278, 10, 20, 12, 20, 14, 20, 281, 11, 20, 3, 20, 5, 20, 284, 10, 20, 3, 21, 3, 21, 3, 21, 7, 21, 289, 10, 21, 12, 21, 14, 21, 292, 11, 21, 3, 21, 5, 21, 295, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 301, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 312, 10, 23, 3, 23, 5, 23, 315, 10, 23, 3, 23, 5, 23, 318, 10, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 326, 10, 23, 12, 23, 14, 23, 329, 11, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 336, 10, 24, 12, 24, 14, 24, 339, 11, 24, 3, 24, 3, 24, 3, 24, 7, 24, 344, 10, 24, 12, 24, 14, 24, 347, 11, 24, 5, 24, 349, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 356, 10, 25, 12, 25, 14, 25, 359, 11, 25, 3, 25, 3, 25, 5, 25, 363, 10, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 373, 10, 28, 12, 28, 14, 28, 376, 11, 28, 3, 29, 3, 29, 3, 29, 5, 29, 381, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 393, 10, 30, 12, 30, 14, 30, 396, 11, 30, 3, 30, 3, 30, 5, 30, 400, 10, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 414, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 421, 10, 31, 3, 31, 5, 31, 424, 10, 31, 3, 31, 3, 31, 5, 31, 428, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 434, 10, 31, 5, 31, 436, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 444, 10, 31, 12, 31, 14, 31, 447, 11, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 7, 34, 456, 10, 34, 12, 34, 14, 34, 459, 11, 34, 3, 34, 5, 34, 462, 10, 34, 3, 34, 5, 34, 465, 10, 34, 3, 34, 5, 34, 468, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 5, 36, 477, 10, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 2, 2, 4, 44, 60, 40, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 2, 8, 3, 2, 52, 55, 3, 2, 45, 50, 3, 2, 16, 25, 5, 2, 7, 10, 33, 33, 63, 63, 3, 2, 43, 44, 5, 2, 54, 56, 58, 58, 72, 72, 2, 530, 2, 79, 3, 2, 2, 2, 4, 89, 3, 2, 2, 2, 6, 105, 3, 2, 2, 2, 8, 124, 3, 2, 2, 2, 10, 129, 3, 2, 2, 2, 12, 136, 3, 2, 2, 2, 14, 138, 3, 2, 2, 2, 16, 176, 3, 2, 2, 2, 18, 202, 3, 2, 2, 2, 20, 204, 3, 2, 2, 2, 22, 206, 3, 2, 2, 2, 24, 208, 3, 2, 2, 2, 26, 231, 3, 2, 2, 2, 28, 238, 3, 2, 2, 2, 30, 240, 3, 2, 2, 2, 32, 244, 3, 2, 2, 2, 34, 249, 3, 2, 2, 2, 36, 272, 3, 2, 2, 2, 38, 274, 3, 2, 2, 2, 40, 285, 3, 2, 2, 2, 42, 300, 3, 2, 2, 2, 44, 317, 3, 2, 2, 2, 46, 348, 3, 2, 2, 2, 48, 362, 3, 2, 2, 2, 50, 364, 3, 2, 2, 2, 52, 366, 3, 2, 2, 2, 54, 369, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 382, 3, 2, 2, 2, 60, 435, 3, 2, 2, 2, 62, 448, 3, 2, 2, 2, 64, 450, 3, 2, 2, 2, 66, 452, 3, 2, 2, 2, 68, 469, 3, 2, 2, 2, 70, 476, 3, 2, 2, 2, 72, 478, 3, 2, 2, 2, 74, 480, 3, 2, 2, 2, 76, 482, 3, 2, 2, 2, 78, 80, 5, 4, 3, 2, 79, 78, 3, 2, 2, 2, 79, 80, 3, 2, 2, 2, 80, 84, 3, 2, 2, 2, 81, 83, 5, 6, 4, 2, 82, 81, 3, 2, 2, 2, 83, 86, 3, 2, 2, 2, 84, 82, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 87, 3, 2, 2, 2, 86, 84, 3, 2, 2, 2, 87, 88, 7, 2, 2, 3, 88, 3, 3, 2, 2, 2, 89, 90, 7, 62, 2, 2, 90, 91, 5, 74, 38, 2, 91, 5, 3, 2, 2, 2, 92, 93, 7, 63, 2, 2, 93, 94, 5, 8, 5, 2, 94, 95, 7, 60, 2, 2, 95, 96, 5, 10, 6, 2, 96, 97, 7, 61, 2, 2, 97, 106, 3, 2, 2, 2, 98, 99, 7, 63, 2, 2, 99, 100, 7, 58, 2, 2, 100, 101, 7, 59, 2, 2, 101, 102, 7, 60, 2, 2, 102, 103, 5, 10, 6, 2, 103, 104, 7, 61, 2, 2, 104, 106, 3, 2, 2, 2, 105, 92, 3, 2, 2, 2, 105, 98, 3, 2, 2, 2, 106, 7, 3, 2, 2, 2, 107, 109, 7, 71, 2, 2, 108, 107, 3, 2, 2, 2, 108, 109, 3, 2, 2, 2, 109, 111, 3, 2, 2, 2, 110, 112, 7, 56, 2, 2, 111, 110, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 115, 3, 2, 2, 2, 113, 114, 7, 57, 2, 2, 114, 116, 7, 71, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 117, 3, 2, 2, 2, 117, 125, 9, 2, 2, 2, 118, 121, 7, 70, 2, 2, 119, 120, 7, 57, 2, 2, 120, 122, 7, 71, 2, 2, 121, 119, 3, 2, 2, 2, 121, 122, 3, 2, 2, 2, 122, 123, 3, 2, 2, 2, 123, 125, 9, 2, 2, 2, 124, 108, 3, 2, 2, 2, 124, 118, 3, 2, 2, 2, 125, 9, 3, 2, 2, 2, 126, 128, 5, 12, 7, 2, 127, 126, 3, 2, 2, 2, 128, 131, 3, 2, 2, 2, 129, 127, 3, 2, 2, 2, 129, 130, 3, 2, 2, 2, 130, 11, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 132, 137, 5, 16, 9, 2, 133, 137, 5, 18, 10, 2, 134, 137, 5, 58, 30, 2, 135, 137, 5, 14, 8, 2, 136, 132, 3, 2, 2, 2, 136, 133, 3, 2, 2, 2, 136, 134, 3, 2, 2, 2, 136, 135, 3, 2, 2, 2, 137, 13, 3, 2, 2, 2, 138, 140, 7, 35, 2, 2, 139, 141, 5, 70, 36, 2, 140, 139, 3, 2, 2, 2, 140, 141, 3, 2, 2, 2, 141, 146, 3, 2, 2, 2, 142, 143, 7, 64, 2, 2, 143, 145, 5, 70, 36, 2, 144, 142, 3, 2, 2, 2, 145, 148, 3, 2, 2, 2, 146, 144, 3, 2, 2, 2, 146, 147, 3, 2, 2, 2, 147, 150, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, 149, 151, 7, 64, 2, 2, 150, 149, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 15, 3, 2, 2, 2, 152, 154, 7, 28, 2, 2, 153, 155, 5, 20, 11, 2, 154, 153, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 157, 3, 2, 2, 2, 156, 158, 5, 34, 18, 2, 157, 156, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 7, 26, 2, 2, 160, 162, 7, 33, 2, 2, 161, 160, 3, 2, 2, 2, 161, 162, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 177, 5, 66, 34, 2, 164, 166, 7, 26, 2, 2, 165, 167, 7, 33, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 5, 66, 34, 2, 169, 171, 7, 28, 2, 2, 170, 172, 5, 20, 11, 2, 171, 170, 3, 2, 2, 2, 171, 172, 3, 2, 2, 2, 172, 174, 3, 2, 2, 2, 173, 175, 5, 34, 18, 2, 174, 173, 3, 2, 2, 2, 174, 175, 3, 2, 2, 2, 175, 177, 3, 2, 2, 2, 176, 152, 3, 2, 2, 2, 176, 164, 3, 2, 2, 2, 177, 17, 3, 2, 2, 2, 178, 180, 7, 29, 2, 2, 179, 181, 5, 22, 12, 2, 180, 179, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 183, 3, 2, 2, 2, 182, 184, 5, 34, 18, 2, 183, 182, 3, 2, 2, 2, 183, 184, 3, 2, 2, 2, 184, 185, 3, 2, 2, 2, 185, 187, 7, 27, 2, 2, 186, 188, 7, 33, 2, 2, 187, 186, 3, 2, 2, 2, 187, 188, 3, 2, 2, 2, 188, 189, 3, 2, 2, 2, 189, 203, 5, 66, 34, 2, 190, 192, 7, 27, 2, 2, 191, 193, 7, 33, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 5, 66, 34, 2, 195, 197, 7, 29, 2, 2, 196, 198, 5, 22, 12, 2, 197, 196, 3, 2, 2, 2, 197, 198, 3, 2, 2, 2, 198, 200, 3, 2, 2, 2, 199, 201, 5, 34, 18, 2, 200, 199, 3, 2, 2, 2, 200, 201, 3, 2, 2, 2, 201, 203, 3, 2, 2, 2, 202, 178, 3, 2, 2, 2, 202, 190, 3, 2, 2, 2, 203, 19, 3, 2, 2, 2, 204, 205, 5, 24, 13, 2, 205, 21, 3, 2, 2, 2, 206, 207, 5, 24, 13, 2, 207, 23, 3, 2, 2, 2, 208, 213, 5, 26, 14, 2, 209, 210, 7, 64, 2, 2, 210, 212, 5, 26, 14, 2, 211, 209, 3, 2, 2, 2, 212, 215, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 213, 214, 3, 2, 2, 2, 214, 217, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 216, 218, 7, 64, 2, 2, 217, 216, 3, 2, 2, 2, 217, 218, 3, 2, 2, 2, 218, 25, 3, 2, 2, 2, 219, 221, 5, 28, 15, 2, 220, 219, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 224, 5, 40, 21, 2, 223, 225, 5, 42, 22, 2, 224, 223, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 232, 3, 2, 2, 2, 226, 228, 5, 28, 15, 2, 227, 229, 5, 42, 22, 2, 228, 227, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 232, 3, 2, 2, 2, 230, 232, 5, 42, 22, 2, 231, 220, 3, 2, 2, 2, 231, 226, 3, 2, 2, 2, 231, 230, 3, 2, 2, 2, 232, 27, 3, 2, 2, 2, 233, 234, 5, 30, 16, 2, 234, 235, 5, 32, 17, 2, 235, 239, 3, 2, 2, 2, 236, 239, 5, 32, 17, 2, 237, 239, 5, 30, 16, 2, 238, 233, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 238, 237, 3, 2, 2, 2, 239, 29, 3, 2, 2, 2, 240, 242, 5, 76, 39, 2, 241, 243, 7, 33, 2, 2, 242, 241, 3, 2, 2, 2, 242, 243, 3, 2, 2, 2, 243, 31, 3, 2, 2, 2, 244, 245, 7, 32, 2, 2, 245, 247, 5, 76, 39, 2, 246, 248, 7, 33, 2, 2, 247, 246, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 33, 3, 2, 2, 2, 249, 250, 7, 34, 2, 2, 250, 251, 5, 38, 20, 2, 251, 35, 3, 2, 2, 2, 252, 269, 5, 72, 37, 2, 253, 255, 7, 65, 2, 2, 254, 256, 5, 72, 37, 2, 255, 254, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 267, 3, 2, 2, 2, 257, 259, 7, 65, 2, 2, 258, 260, 5, 72, 37, 2, 259, 258, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 265, 3, 2, 2, 2, 261, 263, 7, 65, 2, 2, 262, 264, 5, 72, 37, 2, 263, 262, 3, 2, 2, 2, 263, 264, 3, 2, 2, 2, 264, 266, 3, 2, 2, 2, 265, 261, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 268, 3, 2, 2, 2, 267, 257, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 270, 3, 2, 2, 2, 269, 253, 3, 2, 2, 2, 269, 270, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 273, 5, 74, 38, 2, 272, 252, 3, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 37, 3, 2, 2, 2, 274, 279, 5, 36, 19, 2, 275, 276, 7, 64, 2, 2, 276, 278, 5, 36, 19, 2, 277, 275, 3, 2, 2, 2, 278, 281, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 283, 3, 2, 2, 2, 281, 279, 3, 2, 2, 2, 282, 284, 7, 64, 2, 2, 283, 282, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 39, 3, 2, 2, 2, 285, 290, 5, 36, 19, 2, 286, 287, 7, 15, 2, 2, 287, 289, 5, 36, 19, 2, 288, 286, 3, 2, 2, 2, 289, 292, 3, 2, 2, 2, 290, 288, 3, 2, 2, 2, 290, 291, 3, 2, 2, 2, 291, 294, 3, 2, 2, 2, 292, 290, 3, 2, 2, 2, 293, 295, 7, 15, 2, 2, 294, 293, 3, 2, 2, 2, 294, 295, 3, 2, 2, 2, 295, 41, 3, 2, 2, 2, 296, 297, 7, 37, 2, 2, 297, 301, 5, 44, 23, 2, 298, 299, 7, 36, 2, 2, 299, 301, 5, 44, 23, 2, 300, 296, 3, 2, 2, 2, 300, 298, 3, 2, 2, 2, 301, 43, 3, 2, 2, 2, 302, 303, 8, 23, 1, 2, 303, 304, 7, 68, 2, 2, 304, 305, 5, 44, 23, 2, 305, 306, 7, 69, 2, 2, 306, 318, 3, 2, 2, 2, 307, 308, 7, 13, 2, 2, 308, 318, 5, 44, 23, 6, 309, 311, 7, 38, 2, 2, 310, 312, 7, 39, 2, 2, 311, 310, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 315, 3, 2, 2, 2, 313, 315, 7, 39, 2, 2, 314, 309, 3, 2, 2, 2, 314, 313, 3, 2, 2, 2, 315, 316, 3, 2, 2, 2, 316, 318, 5, 46, 24, 2, 317, 302, 3, 2, 2, 2, 317, 307, 3, 2, 2, 2, 317, 314, 3, 2, 2, 2, 318, 327, 3, 2, 2, 2, 319, 320, 12, 5, 2, 2, 320, 321, 7, 14, 2, 2, 321, 326, 5, 44, 23, 6, 322, 323, 12, 4, 2, 2, 323, 324, 7, 15, 2, 2, 324, 326, 5, 44, 23, 5, 325, 319, 3, 2, 2, 2, 325, 322, 3, 2, 2, 2, 326, 329, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 327, 328, 3, 2, 2, 2, 328, 45, 3, 2, 2, 2, 329, 327, 3, 2, 2, 2, 330, 331, 5, 72, 37, 2, 331, 332, 7, 65, 2, 2, 332, 337, 5, 72, 37, 2, 333, 334, 7, 66, 2, 2, 334, 336, 5, 72, 37, 2, 335, 333, 3, 2, 2, 2, 336, 339, 3, 2, 2, 2, 337, 335, 3, 2, 2, 2, 337, 338, 3, 2, 2, 2, 338, 349, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 340, 345, 5, 72, 37, 2, 341, 342, 7, 66, 2, 2, 342, 344, 5, 72, 37, 2, 343, 341, 3, 2, 2, 2, 344, 347, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 349, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2, 348, 330, 3, 2, 2, 2, 348, 340, 3, 2, 2, 2, 349, 47, 3, 2, 2, 2, 350, 351, 7, 33, 2, 2, 351, 363, 7, 51, 2, 2, 352, 357, 5, 50, 26, 2, 353, 354, 7, 64, 2, 2, 354, 356, 5, 50, 26, 2, 355, 353, 3, 2, 2, 2, 356, 359, 3, 2, 2, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 360, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 360, 361, 7, 51, 2, 2, 361, 363, 3, 2, 2, 2, 362, 350, 3, 2, 2, 2, 362, 352, 3, 2, 2, 2, 363, 49, 3, 2, 2, 2, 364, 365, 9, 3, 2, 2, 365, 51, 3, 2, 2, 2, 366, 367, 7, 31, 2, 2, 367, 368, 5, 54, 28, 2, 368, 53, 3, 2, 2, 2, 369, 374, 5, 56, 29, 2, 370, 371, 7, 64, 2, 2, 371, 373, 5, 56, 29, 2, 372, 370, 3, 2, 2, 2, 373, 376, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 374, 375, 3, 2, 2, 2, 375, 55, 3, 2, 2, 2, 376, 374, 3, 2, 2, 2, 377, 380, 5, 76, 39, 2, 378, 379, 7, 67, 2, 2, 379, 381, 5, 76, 39, 2, 380, 378, 3, 2, 2, 2, 380, 381, 3, 2, 2, 2, 381, 57, 3, 2, 2, 2, 382, 383, 7, 3, 2, 2, 383, 384, 5, 60, 31, 2, 384, 385, 7, 4, 2, 2, 385, 394, 5, 10, 6, 2, 386, 387, 7, 5, 2, 2, 387, 388, 7, 3, 2, 2, 388, 389, 5, 60, 31, 2, 389, 390, 7, 4, 2, 2, 390, 391, 5, 10, 6, 2, 391, 393, 3, 2, 2, 2, 392, 386, 3, 2, 2, 2, 393, 396, 3, 2, 2, 2, 394, 392, 3, 2, 2, 2, 394, 395, 3, 2, 2, 2, 395, 399, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 397, 398, 7, 5, 2, 2, 398, 400, 5, 10, 6, 2, 399, 397, 3, 2, 2, 2, 399, 400, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 402, 7, 61, 2, 2, 402, 59, 3, 2, 2, 2, 403, 404, 8, 31, 1, 2, 404, 436, 7, 11, 2, 2, 405, 436, 7, 12, 2, 2, 406, 407, 7, 68, 2, 2, 407, 408, 5, 60, 31, 2, 408, 409, 7, 69, 2, 2, 409, 436, 3, 2, 2, 2, 410, 411, 7, 13, 2, 2, 411, 436, 5, 60, 31, 7, 412, 414, 5, 64, 33, 2, 413, 412, 3, 2, 2, 2, 413, 414, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 416, 5, 66, 34, 2, 416, 417, 7, 6, 2, 2, 417, 418, 5, 62, 32, 2, 418, 420, 5, 76, 39, 2, 419, 421, 5, 40, 21, 2, 420, 419, 3, 2, 2, 2, 420, 421, 3, 2, 2, 2, 421, 423, 3, 2, 2, 2, 422, 424, 5, 42, 22, 2, 423, 422, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 427, 3, 2, 2, 2, 425, 426, 7, 34, 2, 2, 426, 428, 5, 38, 20, 2, 427, 425, 3, 2, 2, 2, 427, 428, 3, 2, 2, 2, 428, 436, 3, 2, 2, 2, 429, 433, 7, 58, 2, 2, 430, 431, 5, 62, 32, 2, 431, 432, 5, 76, 39, 2, 432, 434, 3, 2, 2, 2, 433, 430, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 436, 3, 2, 2, 2, 435, 403, 3, 2, 2, 2, 435, 405, 3, 2, 2, 2, 435, 406, 3, 2, 2, 2, 435, 410, 3, 2, 2, 2, 435, 413, 3, 2, 2, 2, 435, 429, 3, 2, 2, 2, 436, 445, 3, 2, 2, 2, 437, 438, 12, 6, 2, 2, 438, 439, 7, 14, 2, 2, 439, 444, 5, 60, 31, 7, 440, 441, 12, 5, 2, 2, 441, 442, 7, 15, 2, 2, 442, 444, 5, 60, 31, 6, 443, 437, 3, 2, 2, 2, 443, 440, 3, 2, 2, 2, 444, 447, 3, 2, 2, 2, 445, 443, 3, 2, 2, 2, 445, 446, 3, 2, 2, 2, 446, 61, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 448, 449, 9, 4, 2, 2, 449, 63, 3, 2, 2, 2, 450, 451, 9, 5, 2, 2, 451, 65, 3, 2, 2, 2, 452, 457, 5, 70, 36, 2, 453, 454, 7, 64, 2, 2, 454, 456, 5, 70, 36, 2, 455, 453, 3, 2, 2, 2, 456, 459, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 461, 3, 2, 2, 2, 459, 457, 3, 2, 2, 2, 460, 462, 5, 68, 35, 2, 461, 460, 3, 2, 2, 2, 461, 462, 3, 2, 2, 2, 462, 464, 3, 2, 2, 2, 463, 465, 5, 48, 25, 2, 464, 463, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 467, 3, 2, 2, 2, 466, 468, 5, 52, 27, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 67, 3, 2, 2, 2, 469, 470, 7, 40, 2, 2, 470, 471, 7, 41, 2, 2, 471, 472, 7, 42, 2, 2, 472, 473, 9, 6, 2, 2, 473, 69, 3, 2, 2, 2, 474, 477, 5, 72, 37, 2, 475, 477, 5, 74, 38, 2, 476, 474, 3, 2, 2, 2, 476, 475, 3, 2, 2, 2, 477, 71, 3, 2, 2, 2, 478, 479, 9, 7, 2, 2, 479, 73, 3, 2, 2, 2, 480, 481, 7, 73, 2, 2, 481, 75, 3, 2, 2, 2, 482, 483, 7, 71, 2, 2, 483, 77, 3, 2, 2, 2, 77, 79, 84, 105, 108, 111, 115, 121, 124, 129, 136, 140, 146, 150, 154, 157, 161, 166, 171, 174, 176, 180, 183, 187, 192, 197, 200, 202, 213, 217, 220, 224, 228, 231, 238, 242, 247, 255, 259, 263, 265, 267, 269, 272, 279, 283, 290, 294, 300, 311, 314, 317, 325, 327, 337, 345, 348, 357, 362, 374, 380, 394, 399, 413, 420, 423, 427, 433, 435, 443, 445, 457, 461, 464, 467, 476] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 84, 497, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 3, 2, 5, 2, 82, 10, 2, 3, 2, 7, 2, 85, 10, 2, 12, 2, 14, 2, 88, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 108, 10, 4, 3, 5, 5, 5, 111, 10, 5, 3, 5, 5, 5, 114, 10, 5, 3, 5, 3, 5, 5, 5, 118, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 124, 10, 5, 3, 5, 5, 5, 127, 10, 5, 3, 6, 7, 6, 130, 10, 6, 12, 6, 14, 6, 133, 11, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 139, 10, 7, 3, 8, 3, 8, 5, 8, 143, 10, 8, 3, 8, 3, 8, 7, 8, 147, 10, 8, 12, 8, 14, 8, 150, 11, 8, 3, 8, 5, 8, 153, 10, 8, 3, 9, 3, 9, 5, 9, 157, 10, 9, 3, 9, 5, 9, 160, 10, 9, 3, 9, 3, 9, 5, 9, 164, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 169, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 174, 10, 9, 3, 9, 5, 9, 177, 10, 9, 5, 9, 179, 10, 9, 3, 10, 3, 10, 5, 10, 183, 10, 10, 3, 10, 5, 10, 186, 10, 10, 3, 10, 3, 10, 5, 10, 190, 10, 10, 3, 10, 5, 10, 193, 10, 10, 3, 10, 3, 10, 3, 10, 5, 10, 198, 10, 10, 3, 10, 5, 10, 201, 10, 10, 3, 10, 3, 10, 3, 10, 5, 10, 206, 10, 10, 3, 10, 5, 10, 209, 10, 10, 5, 10, 211, 10, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 7, 13, 220, 10, 13, 12, 13, 14, 13, 223, 11, 13, 3, 13, 5, 13, 226, 10, 13, 3, 14, 5, 14, 229, 10, 14, 3, 14, 3, 14, 5, 14, 233, 10, 14, 3, 14, 3, 14, 5, 14, 237, 10, 14, 3, 14, 5, 14, 240, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 247, 10, 15, 3, 16, 3, 16, 5, 16, 251, 10, 16, 3, 17, 3, 17, 3, 17, 5, 17, 256, 10, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 5, 19, 264, 10, 19, 3, 19, 3, 19, 5, 19, 268, 10, 19, 3, 19, 3, 19, 5, 19, 272, 10, 19, 5, 19, 274, 10, 19, 5, 19, 276, 10, 19, 5, 19, 278, 10, 19, 3, 19, 5, 19, 281, 10, 19, 3, 20, 3, 20, 3, 20, 7, 20, 286, 10, 20, 12, 20, 14, 20, 289, 11, 20, 3, 20, 5, 20, 292, 10, 20, 3, 21, 3, 21, 3, 21, 7, 21, 297, 10, 21, 12, 21, 14, 21, 300, 11, 21, 3, 21, 5, 21, 303, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 309, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 320, 10, 23, 3, 23, 5, 23, 323, 10, 23, 3, 23, 5, 23, 326, 10, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 334, 10, 23, 12, 23, 14, 23, 337, 11, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 344, 10, 24, 12, 24, 14, 24, 347, 11, 24, 3, 24, 3, 24, 3, 24, 7, 24, 352, 10, 24, 12, 24, 14, 24, 355, 11, 24, 5, 24, 357, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 364, 10, 25, 12, 25, 14, 25, 367, 11, 25, 3, 25, 3, 25, 5, 25, 371, 10, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 381, 10, 28, 12, 28, 14, 28, 384, 11, 28, 3, 29, 3, 29, 3, 29, 5, 29, 389, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 401, 10, 30, 12, 30, 14, 30, 404, 11, 30, 3, 30, 3, 30, 5, 30, 408, 10, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 422, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 429, 10, 31, 3, 31, 5, 31, 432, 10, 31, 3, 31, 3, 31, 5, 31, 436, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 442, 10, 31, 5, 31, 444, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 452, 10, 31, 12, 31, 14, 31, 455, 11, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 7, 34, 464, 10, 34, 12, 34, 14, 34, 467, 11, 34, 3, 34, 5, 34, 470, 10, 34, 3, 34, 5, 34, 473, 10, 34, 3, 34, 5, 34, 476, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 5, 36, 485, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 2, 2, 4, 44, 60, 41, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 2, 9, 3, 2, 60, 63, 4, 2, 48, 53, 55, 59, 3, 2, 31, 32, 3, 2, 16, 25, 5, 2, 7, 10, 34, 34, 71, 71, 3, 2, 46, 47, 7, 2, 48, 49, 55, 58, 62, 64, 66, 66, 80, 80, 2, 543, 2, 81, 3, 2, 2, 2, 4, 91, 3, 2, 2, 2, 6, 107, 3, 2, 2, 2, 8, 126, 3, 2, 2, 2, 10, 131, 3, 2, 2, 2, 12, 138, 3, 2, 2, 2, 14, 140, 3, 2, 2, 2, 16, 178, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 212, 3, 2, 2, 2, 22, 214, 3, 2, 2, 2, 24, 216, 3, 2, 2, 2, 26, 239, 3, 2, 2, 2, 28, 246, 3, 2, 2, 2, 30, 248, 3, 2, 2, 2, 32, 252, 3, 2, 2, 2, 34, 257, 3, 2, 2, 2, 36, 280, 3, 2, 2, 2, 38, 282, 3, 2, 2, 2, 40, 293, 3, 2, 2, 2, 42, 308, 3, 2, 2, 2, 44, 325, 3, 2, 2, 2, 46, 356, 3, 2, 2, 2, 48, 370, 3, 2, 2, 2, 50, 372, 3, 2, 2, 2, 52, 374, 3, 2, 2, 2, 54, 377, 3, 2, 2, 2, 56, 385, 3, 2, 2, 2, 58, 390, 3, 2, 2, 2, 60, 443, 3, 2, 2, 2, 62, 456, 3, 2, 2, 2, 64, 458, 3, 2, 2, 2, 66, 460, 3, 2, 2, 2, 68, 477, 3, 2, 2, 2, 70, 484, 3, 2, 2, 2, 72, 486, 3, 2, 2, 2, 74, 490, 3, 2, 2, 2, 76, 492, 3, 2, 2, 2, 78, 494, 3, 2, 2, 2, 80, 82, 5, 4, 3, 2, 81, 80, 3, 2, 2, 2, 81, 82, 3, 2, 2, 2, 82, 86, 3, 2, 2, 2, 83, 85, 5, 6, 4, 2, 84, 83, 3, 2, 2, 2, 85, 88, 3, 2, 2, 2, 86, 84, 3, 2, 2, 2, 86, 87, 3, 2, 2, 2, 87, 89, 3, 2, 2, 2, 88, 86, 3, 2, 2, 2, 89, 90, 7, 2, 2, 3, 90, 3, 3, 2, 2, 2, 91, 92, 7, 70, 2, 2, 92, 93, 5, 76, 39, 2, 93, 5, 3, 2, 2, 2, 94, 95, 7, 71, 2, 2, 95, 96, 5, 8, 5, 2, 96, 97, 7, 68, 2, 2, 97, 98, 5, 10, 6, 2, 98, 99, 7, 69, 2, 2, 99, 108, 3, 2, 2, 2, 100, 101, 7, 71, 2, 2, 101, 102, 7, 66, 2, 2, 102, 103, 7, 67, 2, 2, 103, 104, 7, 68, 2, 2, 104, 105, 5, 10, 6, 2, 105, 106, 7, 69, 2, 2, 106, 108, 3, 2, 2, 2, 107, 94, 3, 2, 2, 2, 107, 100, 3, 2, 2, 2, 108, 7, 3, 2, 2, 2, 109, 111, 7, 79, 2, 2, 110, 109, 3, 2, 2, 2, 110, 111, 3, 2, 2, 2, 111, 113, 3, 2, 2, 2, 112, 114, 7, 64, 2, 2, 113, 112, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 116, 7, 65, 2, 2, 116, 118, 7, 79, 2, 2, 117, 115, 3, 2, 2, 2, 117, 118, 3, 2, 2, 2, 118, 119, 3, 2, 2, 2, 119, 127, 9, 2, 2, 2, 120, 123, 7, 78, 2, 2, 121, 122, 7, 65, 2, 2, 122, 124, 7, 79, 2, 2, 123, 121, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 127, 9, 2, 2, 2, 126, 110, 3, 2, 2, 2, 126, 120, 3, 2, 2, 2, 127, 9, 3, 2, 2, 2, 128, 130, 5, 12, 7, 2, 129, 128, 3, 2, 2, 2, 130, 133, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 11, 3, 2, 2, 2, 133, 131, 3, 2, 2, 2, 134, 139, 5, 16, 9, 2, 135, 139, 5, 18, 10, 2, 136, 139, 5, 58, 30, 2, 137, 139, 5, 14, 8, 2, 138, 134, 3, 2, 2, 2, 138, 135, 3, 2, 2, 2, 138, 136, 3, 2, 2, 2, 138, 137, 3, 2, 2, 2, 139, 13, 3, 2, 2, 2, 140, 142, 7, 36, 2, 2, 141, 143, 5, 70, 36, 2, 142, 141, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 148, 3, 2, 2, 2, 144, 145, 7, 72, 2, 2, 145, 147, 5, 70, 36, 2, 146, 144, 3, 2, 2, 2, 147, 150, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 152, 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 151, 153, 7, 72, 2, 2, 152, 151, 3, 2, 2, 2, 152, 153, 3, 2, 2, 2, 153, 15, 3, 2, 2, 2, 154, 156, 7, 28, 2, 2, 155, 157, 5, 20, 11, 2, 156, 155, 3, 2, 2, 2, 156, 157, 3, 2, 2, 2, 157, 159, 3, 2, 2, 2, 158, 160, 5, 34, 18, 2, 159, 158, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 161, 3, 2, 2, 2, 161, 163, 7, 26, 2, 2, 162, 164, 7, 34, 2, 2, 163, 162, 3, 2, 2, 2, 163, 164, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 179, 5, 66, 34, 2, 166, 168, 7, 26, 2, 2, 167, 169, 7, 34, 2, 2, 168, 167, 3, 2, 2, 2, 168, 169, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 171, 5, 66, 34, 2, 171, 173, 7, 28, 2, 2, 172, 174, 5, 20, 11, 2, 173, 172, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 176, 3, 2, 2, 2, 175, 177, 5, 34, 18, 2, 176, 175, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 179, 3, 2, 2, 2, 178, 154, 3, 2, 2, 2, 178, 166, 3, 2, 2, 2, 179, 17, 3, 2, 2, 2, 180, 182, 7, 29, 2, 2, 181, 183, 5, 22, 12, 2, 182, 181, 3, 2, 2, 2, 182, 183, 3, 2, 2, 2, 183, 185, 3, 2, 2, 2, 184, 186, 5, 34, 18, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 189, 7, 27, 2, 2, 188, 190, 5, 72, 37, 2, 189, 188, 3, 2, 2, 2, 189, 190, 3, 2, 2, 2, 190, 192, 3, 2, 2, 2, 191, 193, 7, 34, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 211, 5, 66, 34, 2, 195, 197, 7, 27, 2, 2, 196, 198, 5, 72, 37, 2, 197, 196, 3, 2, 2, 2, 197, 198, 3, 2, 2, 2, 198, 200, 3, 2, 2, 2, 199, 201, 7, 34, 2, 2, 200, 199, 3, 2, 2, 2, 200, 201, 3, 2, 2, 2, 201, 202, 3, 2, 2, 2, 202, 203, 5, 66, 34, 2, 203, 205, 7, 29, 2, 2, 204, 206, 5, 22, 12, 2, 205, 204, 3, 2, 2, 2, 205, 206, 3, 2, 2, 2, 206, 208, 3, 2, 2, 2, 207, 209, 5, 34, 18, 2, 208, 207, 3, 2, 2, 2, 208, 209, 3, 2, 2, 2, 209, 211, 3, 2, 2, 2, 210, 180, 3, 2, 2, 2, 210, 195, 3, 2, 2, 2, 211, 19, 3, 2, 2, 2, 212, 213, 5, 24, 13, 2, 213, 21, 3, 2, 2, 2, 214, 215, 5, 24, 13, 2, 215, 23, 3, 2, 2, 2, 216, 221, 5, 26, 14, 2, 217, 218, 7, 72, 2, 2, 218, 220, 5, 26, 14, 2, 219, 217, 3, 2, 2, 2, 220, 223, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 225, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 224, 226, 7, 72, 2, 2, 225, 224, 3, 2, 2, 2, 225, 226, 3, 2, 2, 2, 226, 25, 3, 2, 2, 2, 227, 229, 5, 28, 15, 2, 228, 227, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 230, 3, 2, 2, 2, 230, 232, 5, 40, 21, 2, 231, 233, 5, 42, 22, 2, 232, 231, 3, 2, 2, 2, 232, 233, 3, 2, 2, 2, 233, 240, 3, 2, 2, 2, 234, 236, 5, 28, 15, 2, 235, 237, 5, 42, 22, 2, 236, 235, 3, 2, 2, 2, 236, 237, 3, 2, 2, 2, 237, 240, 3, 2, 2, 2, 238, 240, 5, 42, 22, 2, 239, 228, 3, 2, 2, 2, 239, 234, 3, 2, 2, 2, 239, 238, 3, 2, 2, 2, 240, 27, 3, 2, 2, 2, 241, 242, 5, 30, 16, 2, 242, 243, 5, 32, 17, 2, 243, 247, 3, 2, 2, 2, 244, 247, 5, 32, 17, 2, 245, 247, 5, 30, 16, 2, 246, 241, 3, 2, 2, 2, 246, 244, 3, 2, 2, 2, 246, 245, 3, 2, 2, 2, 247, 29, 3, 2, 2, 2, 248, 250, 5, 78, 40, 2, 249, 251, 7, 34, 2, 2, 250, 249, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 31, 3, 2, 2, 2, 252, 253, 7, 33, 2, 2, 253, 255, 5, 78, 40, 2, 254, 256, 7, 34, 2, 2, 255, 254, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 33, 3, 2, 2, 2, 257, 258, 7, 35, 2, 2, 258, 259, 5, 38, 20, 2, 259, 35, 3, 2, 2, 2, 260, 277, 5, 74, 38, 2, 261, 263, 7, 73, 2, 2, 262, 264, 5, 74, 38, 2, 263, 262, 3, 2, 2, 2, 263, 264, 3, 2, 2, 2, 264, 275, 3, 2, 2, 2, 265, 267, 7, 73, 2, 2, 266, 268, 5, 74, 38, 2, 267, 266, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 273, 3, 2, 2, 2, 269, 271, 7, 73, 2, 2, 270, 272, 5, 74, 38, 2, 271, 270, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 274, 3, 2, 2, 2, 273, 269, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 276, 3, 2, 2, 2, 275, 265, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 278, 3, 2, 2, 2, 277, 261, 3, 2, 2, 2, 277, 278, 3, 2, 2, 2, 278, 281, 3, 2, 2, 2, 279, 281, 5, 76, 39, 2, 280, 260, 3, 2, 2, 2, 280, 279, 3, 2, 2, 2, 281, 37, 3, 2, 2, 2, 282, 287, 5, 36, 19, 2, 283, 284, 7, 72, 2, 2, 284, 286, 5, 36, 19, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 292, 7, 72, 2, 2, 291, 290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 39, 3, 2, 2, 2, 293, 298, 5, 36, 19, 2, 294, 295, 7, 15, 2, 2, 295, 297, 5, 36, 19, 2, 296, 294, 3, 2, 2, 2, 297, 300, 3, 2, 2, 2, 298, 296, 3, 2, 2, 2, 298, 299, 3, 2, 2, 2, 299, 302, 3, 2, 2, 2, 300, 298, 3, 2, 2, 2, 301, 303, 7, 15, 2, 2, 302, 301, 3, 2, 2, 2, 302, 303, 3, 2, 2, 2, 303, 41, 3, 2, 2, 2, 304, 305, 7, 40, 2, 2, 305, 309, 5, 44, 23, 2, 306, 307, 7, 39, 2, 2, 307, 309, 5, 44, 23, 2, 308, 304, 3, 2, 2, 2, 308, 306, 3, 2, 2, 2, 309, 43, 3, 2, 2, 2, 310, 311, 8, 23, 1, 2, 311, 312, 7, 76, 2, 2, 312, 313, 5, 44, 23, 2, 313, 314, 7, 77, 2, 2, 314, 326, 3, 2, 2, 2, 315, 316, 7, 13, 2, 2, 316, 326, 5, 44, 23, 6, 317, 319, 7, 41, 2, 2, 318, 320, 7, 42, 2, 2, 319, 318, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 323, 3, 2, 2, 2, 321, 323, 7, 42, 2, 2, 322, 317, 3, 2, 2, 2, 322, 321, 3, 2, 2, 2, 323, 324, 3, 2, 2, 2, 324, 326, 5, 46, 24, 2, 325, 310, 3, 2, 2, 2, 325, 315, 3, 2, 2, 2, 325, 322, 3, 2, 2, 2, 326, 335, 3, 2, 2, 2, 327, 328, 12, 5, 2, 2, 328, 329, 7, 14, 2, 2, 329, 334, 5, 44, 23, 6, 330, 331, 12, 4, 2, 2, 331, 332, 7, 15, 2, 2, 332, 334, 5, 44, 23, 5, 333, 327, 3, 2, 2, 2, 333, 330, 3, 2, 2, 2, 334, 337, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 335, 336, 3, 2, 2, 2, 336, 45, 3, 2, 2, 2, 337, 335, 3, 2, 2, 2, 338, 339, 5, 74, 38, 2, 339, 340, 7, 73, 2, 2, 340, 345, 5, 74, 38, 2, 341, 342, 7, 74, 2, 2, 342, 344, 5, 74, 38, 2, 343, 341, 3, 2, 2, 2, 344, 347, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 357, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2, 348, 353, 5, 74, 38, 2, 349, 350, 7, 74, 2, 2, 350, 352, 5, 74, 38, 2, 351, 349, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 357, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 356, 338, 3, 2, 2, 2, 356, 348, 3, 2, 2, 2, 357, 47, 3, 2, 2, 2, 358, 359, 7, 34, 2, 2, 359, 371, 7, 54, 2, 2, 360, 365, 5, 50, 26, 2, 361, 362, 7, 72, 2, 2, 362, 364, 5, 50, 26, 2, 363, 361, 3, 2, 2, 2, 364, 367, 3, 2, 2, 2, 365, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 368, 3, 2, 2, 2, 367, 365, 3, 2, 2, 2, 368, 369, 7, 54, 2, 2, 369, 371, 3, 2, 2, 2, 370, 358, 3, 2, 2, 2, 370, 360, 3, 2, 2, 2, 371, 49, 3, 2, 2, 2, 372, 373, 9, 3, 2, 2, 373, 51, 3, 2, 2, 2, 374, 375, 9, 4, 2, 2, 375, 376, 5, 54, 28, 2, 376, 53, 3, 2, 2, 2, 377, 382, 5, 56, 29, 2, 378, 379, 7, 72, 2, 2, 379, 381, 5, 56, 29, 2, 380, 378, 3, 2, 2, 2, 381, 384, 3, 2, 2, 2, 382, 380, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 55, 3, 2, 2, 2, 384, 382, 3, 2, 2, 2, 385, 388, 5, 78, 40, 2, 386, 387, 7, 75, 2, 2, 387, 389, 5, 78, 40, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 57, 3, 2, 2, 2, 390, 391, 7, 3, 2, 2, 391, 392, 5, 60, 31, 2, 392, 393, 7, 4, 2, 2, 393, 402, 5, 10, 6, 2, 394, 395, 7, 5, 2, 2, 395, 396, 7, 3, 2, 2, 396, 397, 5, 60, 31, 2, 397, 398, 7, 4, 2, 2, 398, 399, 5, 10, 6, 2, 399, 401, 3, 2, 2, 2, 400, 394, 3, 2, 2, 2, 401, 404, 3, 2, 2, 2, 402, 400, 3, 2, 2, 2, 402, 403, 3, 2, 2, 2, 403, 407, 3, 2, 2, 2, 404, 402, 3, 2, 2, 2, 405, 406, 7, 5, 2, 2, 406, 408, 5, 10, 6, 2, 407, 405, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 7, 69, 2, 2, 410, 59, 3, 2, 2, 2, 411, 412, 8, 31, 1, 2, 412, 444, 7, 11, 2, 2, 413, 444, 7, 12, 2, 2, 414, 415, 7, 76, 2, 2, 415, 416, 5, 60, 31, 2, 416, 417, 7, 77, 2, 2, 417, 444, 3, 2, 2, 2, 418, 419, 7, 13, 2, 2, 419, 444, 5, 60, 31, 7, 420, 422, 5, 64, 33, 2, 421, 420, 3, 2, 2, 2, 421, 422, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 424, 5, 66, 34, 2, 424, 425, 7, 6, 2, 2, 425, 426, 5, 62, 32, 2, 426, 428, 5, 78, 40, 2, 427, 429, 5, 40, 21, 2, 428, 427, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 431, 3, 2, 2, 2, 430, 432, 5, 42, 22, 2, 431, 430, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 432, 435, 3, 2, 2, 2, 433, 434, 7, 35, 2, 2, 434, 436, 5, 38, 20, 2, 435, 433, 3, 2, 2, 2, 435, 436, 3, 2, 2, 2, 436, 444, 3, 2, 2, 2, 437, 441, 7, 66, 2, 2, 438, 439, 5, 62, 32, 2, 439, 440, 5, 78, 40, 2, 440, 442, 3, 2, 2, 2, 441, 438, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 444, 3, 2, 2, 2, 443, 411, 3, 2, 2, 2, 443, 413, 3, 2, 2, 2, 443, 414, 3, 2, 2, 2, 443, 418, 3, 2, 2, 2, 443, 421, 3, 2, 2, 2, 443, 437, 3, 2, 2, 2, 444, 453, 3, 2, 2, 2, 445, 446, 12, 6, 2, 2, 446, 447, 7, 14, 2, 2, 447, 452, 5, 60, 31, 7, 448, 449, 12, 5, 2, 2, 449, 450, 7, 15, 2, 2, 450, 452, 5, 60, 31, 6, 451, 445, 3, 2, 2, 2, 451, 448, 3, 2, 2, 2, 452, 455, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 61, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 456, 457, 9, 5, 2, 2, 457, 63, 3, 2, 2, 2, 458, 459, 9, 6, 2, 2, 459, 65, 3, 2, 2, 2, 460, 465, 5, 70, 36, 2, 461, 462, 7, 72, 2, 2, 462, 464, 5, 70, 36, 2, 463, 461, 3, 2, 2, 2, 464, 467, 3, 2, 2, 2, 465, 463, 3, 2, 2, 2, 465, 466, 3, 2, 2, 2, 466, 469, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 468, 470, 5, 68, 35, 2, 469, 468, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 472, 3, 2, 2, 2, 471, 473, 5, 48, 25, 2, 472, 471, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 475, 3, 2, 2, 2, 474, 476, 5, 52, 27, 2, 475, 474, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 67, 3, 2, 2, 2, 477, 478, 7, 43, 2, 2, 478, 479, 7, 44, 2, 2, 479, 480, 7, 45, 2, 2, 480, 481, 9, 7, 2, 2, 481, 69, 3, 2, 2, 2, 482, 485, 5, 74, 38, 2, 483, 485, 5, 76, 39, 2, 484, 482, 3, 2, 2, 2, 484, 483, 3, 2, 2, 2, 485, 71, 3, 2, 2, 2, 486, 487, 7, 37, 2, 2, 487, 488, 9, 4, 2, 2, 488, 489, 7, 38, 2, 2, 489, 73, 3, 2, 2, 2, 490, 491, 9, 8, 2, 2, 491, 75, 3, 2, 2, 2, 492, 493, 7, 81, 2, 2, 493, 77, 3, 2, 2, 2, 494, 495, 7, 79, 2, 2, 495, 79, 3, 2, 2, 2, 79, 81, 86, 107, 110, 113, 117, 123, 126, 131, 138, 142, 148, 152, 156, 159, 163, 168, 173, 176, 178, 182, 185, 189, 192, 197, 200, 205, 208, 210, 221, 225, 228, 232, 236, 239, 246, 250, 255, 263, 267, 271, 273, 275, 277, 280, 287, 291, 298, 302, 308, 319, 322, 325, 333, 335, 345, 353, 356, 365, 370, 382, 388, 402, 407, 421, 428, 431, 435, 441, 443, 451, 453, 465, 469, 472, 475, 484] \ No newline at end of file diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.tokens b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.tokens index 1b06af7e3..3d0aaba4c 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.tokens +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFML.tokens @@ -27,60 +27,68 @@ INPUT=26 OUTPUT=27 WHERE=28 SLOTS=29 -RETAIN=30 -EACH=31 -EXCEPT=32 -FORGET=33 -WITHOUT=34 -WITH=35 -TAG=36 -HASHTAG=37 -ROUND=38 -ROBIN=39 -BY=40 -LABEL=41 -BLOCK=42 -TOP=43 -BOTTOM=44 -NORTH=45 -EAST=46 -SOUTH=47 -WEST=48 -SIDE=49 -TICKS=50 -TICK=51 -SECONDS=52 -SECOND=53 -GLOBAL=54 -PLUS=55 -REDSTONE=56 -PULSE=57 -DO=58 -END=59 -NAME=60 -EVERY=61 -COMMA=62 -COLON=63 -SLASH=64 -DASH=65 -LPAREN=66 -RPAREN=67 -NUMBER_WITH_G_SUFFIX=68 -NUMBER=69 -IDENTIFIER=70 -STRING=71 -LINE_COMMENT=72 -WS=73 -UNUSED=74 +SLOT=30 +RETAIN=31 +EACH=32 +EXCEPT=33 +FORGET=34 +EMPTY=35 +IN=36 +WITHOUT=37 +WITH=38 +TAG=39 +HASHTAG=40 +ROUND=41 +ROBIN=42 +BY=43 +LABEL=44 +BLOCK=45 +TOP=46 +BOTTOM=47 +NORTH=48 +EAST=49 +SOUTH=50 +WEST=51 +SIDE=52 +LEFT=53 +RIGHT=54 +FRONT=55 +BACK=56 +NULL=57 +TICKS=58 +TICK=59 +SECONDS=60 +SECOND=61 +GLOBAL=62 +PLUS=63 +REDSTONE=64 +PULSE=65 +DO=66 +END=67 +NAME=68 +EVERY=69 +COMMA=70 +COLON=71 +SLASH=72 +DASH=73 +LPAREN=74 +RPAREN=75 +NUMBER_WITH_G_SUFFIX=76 +NUMBER=77 +IDENTIFIER=78 +STRING=79 +LINE_COMMENT=80 +WS=81 +UNUSED=82 '>'=15 '<'=17 '='=19 '<='=21 '>='=23 -'#'=37 -','=62 -':'=63 -'/'=64 -'-'=65 -'('=66 -')'=67 +'#'=40 +','=70 +':'=71 +'/'=72 +'-'=73 +'('=74 +')'=75 diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.interp b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.interp index 527f34662..4fafdca4d 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.interp +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.interp @@ -36,6 +36,9 @@ null null null null +null +null +null '#' null null @@ -61,6 +64,11 @@ null null null null +null +null +null +null +null ',' ':' '/' @@ -106,10 +114,13 @@ INPUT OUTPUT WHERE SLOTS +SLOT RETAIN EACH EXCEPT FORGET +EMPTY +IN WITHOUT WITH TAG @@ -126,6 +137,11 @@ EAST SOUTH WEST SIDE +LEFT +RIGHT +FRONT +BACK +NULL TICKS TICK SECONDS @@ -182,10 +198,13 @@ INPUT OUTPUT WHERE SLOTS +SLOT RETAIN EACH EXCEPT FORGET +EMPTY +IN WITHOUT WITH TAG @@ -202,6 +221,11 @@ EAST SOUTH WEST SIDE +LEFT +RIGHT +FRONT +BACK +NULL TICKS TICK SECONDS @@ -262,4 +286,4 @@ mode names: DEFAULT_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 76, 631, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 469, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 477, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 6, 69, 525, 10, 69, 13, 69, 14, 69, 526, 3, 69, 3, 69, 3, 70, 6, 70, 532, 10, 70, 13, 70, 14, 70, 533, 3, 71, 3, 71, 7, 71, 538, 10, 71, 12, 71, 14, 71, 541, 11, 71, 3, 71, 5, 71, 544, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 7, 72, 550, 10, 72, 12, 72, 14, 72, 553, 11, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 7, 73, 561, 10, 73, 12, 73, 14, 73, 564, 11, 73, 3, 73, 3, 73, 3, 74, 6, 74, 569, 10, 74, 13, 74, 14, 74, 570, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 2, 2, 2, 102, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 2, 153, 2, 2, 155, 2, 2, 157, 2, 2, 159, 2, 2, 161, 2, 2, 163, 2, 2, 165, 2, 2, 167, 2, 2, 169, 2, 2, 171, 2, 2, 173, 2, 2, 175, 2, 2, 177, 2, 2, 179, 2, 2, 181, 2, 2, 183, 2, 2, 185, 2, 2, 187, 2, 2, 189, 2, 2, 191, 2, 2, 193, 2, 2, 195, 2, 2, 197, 2, 2, 199, 2, 2, 201, 2, 2, 3, 2, 34, 3, 2, 50, 59, 4, 2, 73, 73, 105, 105, 6, 2, 44, 44, 67, 92, 97, 97, 99, 124, 7, 2, 44, 44, 50, 59, 67, 92, 97, 97, 99, 124, 3, 2, 36, 36, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 4, 2, 67, 67, 99, 99, 4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102, 4, 2, 71, 71, 103, 103, 4, 2, 72, 72, 104, 104, 4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108, 4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111, 4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114, 4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117, 4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120, 4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 2, 614, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 3, 203, 3, 2, 2, 2, 5, 206, 3, 2, 2, 2, 7, 211, 3, 2, 2, 2, 9, 216, 3, 2, 2, 2, 11, 220, 3, 2, 2, 2, 13, 228, 3, 2, 2, 2, 15, 233, 3, 2, 2, 2, 17, 237, 3, 2, 2, 2, 19, 242, 3, 2, 2, 2, 21, 247, 3, 2, 2, 2, 23, 253, 3, 2, 2, 2, 25, 257, 3, 2, 2, 2, 27, 261, 3, 2, 2, 2, 29, 264, 3, 2, 2, 2, 31, 267, 3, 2, 2, 2, 33, 269, 3, 2, 2, 2, 35, 272, 3, 2, 2, 2, 37, 274, 3, 2, 2, 2, 39, 277, 3, 2, 2, 2, 41, 279, 3, 2, 2, 2, 43, 282, 3, 2, 2, 2, 45, 285, 3, 2, 2, 2, 47, 288, 3, 2, 2, 2, 49, 291, 3, 2, 2, 2, 51, 296, 3, 2, 2, 2, 53, 299, 3, 2, 2, 2, 55, 305, 3, 2, 2, 2, 57, 312, 3, 2, 2, 2, 59, 318, 3, 2, 2, 2, 61, 324, 3, 2, 2, 2, 63, 331, 3, 2, 2, 2, 65, 336, 3, 2, 2, 2, 67, 343, 3, 2, 2, 2, 69, 350, 3, 2, 2, 2, 71, 358, 3, 2, 2, 2, 73, 363, 3, 2, 2, 2, 75, 367, 3, 2, 2, 2, 77, 369, 3, 2, 2, 2, 79, 375, 3, 2, 2, 2, 81, 381, 3, 2, 2, 2, 83, 384, 3, 2, 2, 2, 85, 390, 3, 2, 2, 2, 87, 396, 3, 2, 2, 2, 89, 400, 3, 2, 2, 2, 91, 407, 3, 2, 2, 2, 93, 413, 3, 2, 2, 2, 95, 418, 3, 2, 2, 2, 97, 424, 3, 2, 2, 2, 99, 429, 3, 2, 2, 2, 101, 434, 3, 2, 2, 2, 103, 440, 3, 2, 2, 2, 105, 445, 3, 2, 2, 2, 107, 453, 3, 2, 2, 2, 109, 468, 3, 2, 2, 2, 111, 476, 3, 2, 2, 2, 113, 478, 3, 2, 2, 2, 115, 487, 3, 2, 2, 2, 117, 493, 3, 2, 2, 2, 119, 496, 3, 2, 2, 2, 121, 500, 3, 2, 2, 2, 123, 505, 3, 2, 2, 2, 125, 511, 3, 2, 2, 2, 127, 513, 3, 2, 2, 2, 129, 515, 3, 2, 2, 2, 131, 517, 3, 2, 2, 2, 133, 519, 3, 2, 2, 2, 135, 521, 3, 2, 2, 2, 137, 524, 3, 2, 2, 2, 139, 531, 3, 2, 2, 2, 141, 543, 3, 2, 2, 2, 143, 545, 3, 2, 2, 2, 145, 556, 3, 2, 2, 2, 147, 568, 3, 2, 2, 2, 149, 574, 3, 2, 2, 2, 151, 579, 3, 2, 2, 2, 153, 581, 3, 2, 2, 2, 155, 583, 3, 2, 2, 2, 157, 585, 3, 2, 2, 2, 159, 587, 3, 2, 2, 2, 161, 589, 3, 2, 2, 2, 163, 591, 3, 2, 2, 2, 165, 593, 3, 2, 2, 2, 167, 595, 3, 2, 2, 2, 169, 597, 3, 2, 2, 2, 171, 599, 3, 2, 2, 2, 173, 601, 3, 2, 2, 2, 175, 603, 3, 2, 2, 2, 177, 605, 3, 2, 2, 2, 179, 607, 3, 2, 2, 2, 181, 609, 3, 2, 2, 2, 183, 611, 3, 2, 2, 2, 185, 613, 3, 2, 2, 2, 187, 615, 3, 2, 2, 2, 189, 617, 3, 2, 2, 2, 191, 619, 3, 2, 2, 2, 193, 621, 3, 2, 2, 2, 195, 623, 3, 2, 2, 2, 197, 625, 3, 2, 2, 2, 199, 627, 3, 2, 2, 2, 201, 629, 3, 2, 2, 2, 203, 204, 5, 167, 84, 2, 204, 205, 5, 161, 81, 2, 205, 4, 3, 2, 2, 2, 206, 207, 5, 189, 95, 2, 207, 208, 5, 165, 83, 2, 208, 209, 5, 159, 80, 2, 209, 210, 5, 177, 89, 2, 210, 6, 3, 2, 2, 2, 211, 212, 5, 159, 80, 2, 212, 213, 5, 173, 87, 2, 213, 214, 5, 187, 94, 2, 214, 215, 5, 159, 80, 2, 215, 8, 3, 2, 2, 2, 216, 217, 5, 165, 83, 2, 217, 218, 5, 151, 76, 2, 218, 219, 5, 187, 94, 2, 219, 10, 3, 2, 2, 2, 220, 221, 5, 179, 90, 2, 221, 222, 5, 193, 97, 2, 222, 223, 5, 159, 80, 2, 223, 224, 5, 185, 93, 2, 224, 225, 5, 151, 76, 2, 225, 226, 5, 173, 87, 2, 226, 227, 5, 173, 87, 2, 227, 12, 3, 2, 2, 2, 228, 229, 5, 187, 94, 2, 229, 230, 5, 179, 90, 2, 230, 231, 5, 175, 88, 2, 231, 232, 5, 159, 80, 2, 232, 14, 3, 2, 2, 2, 233, 234, 5, 179, 90, 2, 234, 235, 5, 177, 89, 2, 235, 236, 5, 159, 80, 2, 236, 16, 3, 2, 2, 2, 237, 238, 5, 173, 87, 2, 238, 239, 5, 179, 90, 2, 239, 240, 5, 177, 89, 2, 240, 241, 5, 159, 80, 2, 241, 18, 3, 2, 2, 2, 242, 243, 5, 189, 95, 2, 243, 244, 5, 185, 93, 2, 244, 245, 5, 191, 96, 2, 245, 246, 5, 159, 80, 2, 246, 20, 3, 2, 2, 2, 247, 248, 5, 161, 81, 2, 248, 249, 5, 151, 76, 2, 249, 250, 5, 173, 87, 2, 250, 251, 5, 187, 94, 2, 251, 252, 5, 159, 80, 2, 252, 22, 3, 2, 2, 2, 253, 254, 5, 177, 89, 2, 254, 255, 5, 179, 90, 2, 255, 256, 5, 189, 95, 2, 256, 24, 3, 2, 2, 2, 257, 258, 5, 151, 76, 2, 258, 259, 5, 177, 89, 2, 259, 260, 5, 157, 79, 2, 260, 26, 3, 2, 2, 2, 261, 262, 5, 179, 90, 2, 262, 263, 5, 185, 93, 2, 263, 28, 3, 2, 2, 2, 264, 265, 5, 163, 82, 2, 265, 266, 5, 189, 95, 2, 266, 30, 3, 2, 2, 2, 267, 268, 7, 64, 2, 2, 268, 32, 3, 2, 2, 2, 269, 270, 5, 173, 87, 2, 270, 271, 5, 189, 95, 2, 271, 34, 3, 2, 2, 2, 272, 273, 7, 62, 2, 2, 273, 36, 3, 2, 2, 2, 274, 275, 5, 159, 80, 2, 275, 276, 5, 183, 92, 2, 276, 38, 3, 2, 2, 2, 277, 278, 7, 63, 2, 2, 278, 40, 3, 2, 2, 2, 279, 280, 5, 173, 87, 2, 280, 281, 5, 159, 80, 2, 281, 42, 3, 2, 2, 2, 282, 283, 7, 62, 2, 2, 283, 284, 7, 63, 2, 2, 284, 44, 3, 2, 2, 2, 285, 286, 5, 163, 82, 2, 286, 287, 5, 159, 80, 2, 287, 46, 3, 2, 2, 2, 288, 289, 7, 64, 2, 2, 289, 290, 7, 63, 2, 2, 290, 48, 3, 2, 2, 2, 291, 292, 5, 161, 81, 2, 292, 293, 5, 185, 93, 2, 293, 294, 5, 179, 90, 2, 294, 295, 5, 175, 88, 2, 295, 50, 3, 2, 2, 2, 296, 297, 5, 189, 95, 2, 297, 298, 5, 179, 90, 2, 298, 52, 3, 2, 2, 2, 299, 300, 5, 167, 84, 2, 300, 301, 5, 177, 89, 2, 301, 302, 5, 181, 91, 2, 302, 303, 5, 191, 96, 2, 303, 304, 5, 189, 95, 2, 304, 54, 3, 2, 2, 2, 305, 306, 5, 179, 90, 2, 306, 307, 5, 191, 96, 2, 307, 308, 5, 189, 95, 2, 308, 309, 5, 181, 91, 2, 309, 310, 5, 191, 96, 2, 310, 311, 5, 189, 95, 2, 311, 56, 3, 2, 2, 2, 312, 313, 5, 195, 98, 2, 313, 314, 5, 165, 83, 2, 314, 315, 5, 159, 80, 2, 315, 316, 5, 185, 93, 2, 316, 317, 5, 159, 80, 2, 317, 58, 3, 2, 2, 2, 318, 319, 5, 187, 94, 2, 319, 320, 5, 173, 87, 2, 320, 321, 5, 179, 90, 2, 321, 322, 5, 189, 95, 2, 322, 323, 5, 187, 94, 2, 323, 60, 3, 2, 2, 2, 324, 325, 5, 185, 93, 2, 325, 326, 5, 159, 80, 2, 326, 327, 5, 189, 95, 2, 327, 328, 5, 151, 76, 2, 328, 329, 5, 167, 84, 2, 329, 330, 5, 177, 89, 2, 330, 62, 3, 2, 2, 2, 331, 332, 5, 159, 80, 2, 332, 333, 5, 151, 76, 2, 333, 334, 5, 155, 78, 2, 334, 335, 5, 165, 83, 2, 335, 64, 3, 2, 2, 2, 336, 337, 5, 159, 80, 2, 337, 338, 5, 197, 99, 2, 338, 339, 5, 155, 78, 2, 339, 340, 5, 159, 80, 2, 340, 341, 5, 181, 91, 2, 341, 342, 5, 189, 95, 2, 342, 66, 3, 2, 2, 2, 343, 344, 5, 161, 81, 2, 344, 345, 5, 179, 90, 2, 345, 346, 5, 185, 93, 2, 346, 347, 5, 163, 82, 2, 347, 348, 5, 159, 80, 2, 348, 349, 5, 189, 95, 2, 349, 68, 3, 2, 2, 2, 350, 351, 5, 195, 98, 2, 351, 352, 5, 167, 84, 2, 352, 353, 5, 189, 95, 2, 353, 354, 5, 165, 83, 2, 354, 355, 5, 179, 90, 2, 355, 356, 5, 191, 96, 2, 356, 357, 5, 189, 95, 2, 357, 70, 3, 2, 2, 2, 358, 359, 5, 195, 98, 2, 359, 360, 5, 167, 84, 2, 360, 361, 5, 189, 95, 2, 361, 362, 5, 165, 83, 2, 362, 72, 3, 2, 2, 2, 363, 364, 5, 189, 95, 2, 364, 365, 5, 151, 76, 2, 365, 366, 5, 163, 82, 2, 366, 74, 3, 2, 2, 2, 367, 368, 7, 37, 2, 2, 368, 76, 3, 2, 2, 2, 369, 370, 5, 185, 93, 2, 370, 371, 5, 179, 90, 2, 371, 372, 5, 191, 96, 2, 372, 373, 5, 177, 89, 2, 373, 374, 5, 157, 79, 2, 374, 78, 3, 2, 2, 2, 375, 376, 5, 185, 93, 2, 376, 377, 5, 179, 90, 2, 377, 378, 5, 153, 77, 2, 378, 379, 5, 167, 84, 2, 379, 380, 5, 177, 89, 2, 380, 80, 3, 2, 2, 2, 381, 382, 5, 153, 77, 2, 382, 383, 5, 199, 100, 2, 383, 82, 3, 2, 2, 2, 384, 385, 5, 173, 87, 2, 385, 386, 5, 151, 76, 2, 386, 387, 5, 153, 77, 2, 387, 388, 5, 159, 80, 2, 388, 389, 5, 173, 87, 2, 389, 84, 3, 2, 2, 2, 390, 391, 5, 153, 77, 2, 391, 392, 5, 173, 87, 2, 392, 393, 5, 179, 90, 2, 393, 394, 5, 155, 78, 2, 394, 395, 5, 171, 86, 2, 395, 86, 3, 2, 2, 2, 396, 397, 5, 189, 95, 2, 397, 398, 5, 179, 90, 2, 398, 399, 5, 181, 91, 2, 399, 88, 3, 2, 2, 2, 400, 401, 5, 153, 77, 2, 401, 402, 5, 179, 90, 2, 402, 403, 5, 189, 95, 2, 403, 404, 5, 189, 95, 2, 404, 405, 5, 179, 90, 2, 405, 406, 5, 175, 88, 2, 406, 90, 3, 2, 2, 2, 407, 408, 5, 177, 89, 2, 408, 409, 5, 179, 90, 2, 409, 410, 5, 185, 93, 2, 410, 411, 5, 189, 95, 2, 411, 412, 5, 165, 83, 2, 412, 92, 3, 2, 2, 2, 413, 414, 5, 159, 80, 2, 414, 415, 5, 151, 76, 2, 415, 416, 5, 187, 94, 2, 416, 417, 5, 189, 95, 2, 417, 94, 3, 2, 2, 2, 418, 419, 5, 187, 94, 2, 419, 420, 5, 179, 90, 2, 420, 421, 5, 191, 96, 2, 421, 422, 5, 189, 95, 2, 422, 423, 5, 165, 83, 2, 423, 96, 3, 2, 2, 2, 424, 425, 5, 195, 98, 2, 425, 426, 5, 159, 80, 2, 426, 427, 5, 187, 94, 2, 427, 428, 5, 189, 95, 2, 428, 98, 3, 2, 2, 2, 429, 430, 5, 187, 94, 2, 430, 431, 5, 167, 84, 2, 431, 432, 5, 157, 79, 2, 432, 433, 5, 159, 80, 2, 433, 100, 3, 2, 2, 2, 434, 435, 5, 189, 95, 2, 435, 436, 5, 167, 84, 2, 436, 437, 5, 155, 78, 2, 437, 438, 5, 171, 86, 2, 438, 439, 5, 187, 94, 2, 439, 102, 3, 2, 2, 2, 440, 441, 5, 189, 95, 2, 441, 442, 5, 167, 84, 2, 442, 443, 5, 155, 78, 2, 443, 444, 5, 171, 86, 2, 444, 104, 3, 2, 2, 2, 445, 446, 5, 187, 94, 2, 446, 447, 5, 159, 80, 2, 447, 448, 5, 155, 78, 2, 448, 449, 5, 179, 90, 2, 449, 450, 5, 177, 89, 2, 450, 451, 5, 157, 79, 2, 451, 452, 5, 187, 94, 2, 452, 106, 3, 2, 2, 2, 453, 454, 5, 187, 94, 2, 454, 455, 5, 159, 80, 2, 455, 456, 5, 155, 78, 2, 456, 457, 5, 179, 90, 2, 457, 458, 5, 177, 89, 2, 458, 459, 5, 157, 79, 2, 459, 108, 3, 2, 2, 2, 460, 461, 5, 163, 82, 2, 461, 462, 5, 173, 87, 2, 462, 463, 5, 179, 90, 2, 463, 464, 5, 153, 77, 2, 464, 465, 5, 151, 76, 2, 465, 466, 5, 173, 87, 2, 466, 469, 3, 2, 2, 2, 467, 469, 5, 163, 82, 2, 468, 460, 3, 2, 2, 2, 468, 467, 3, 2, 2, 2, 469, 110, 3, 2, 2, 2, 470, 477, 7, 45, 2, 2, 471, 472, 5, 181, 91, 2, 472, 473, 5, 173, 87, 2, 473, 474, 5, 191, 96, 2, 474, 475, 5, 187, 94, 2, 475, 477, 3, 2, 2, 2, 476, 470, 3, 2, 2, 2, 476, 471, 3, 2, 2, 2, 477, 112, 3, 2, 2, 2, 478, 479, 5, 185, 93, 2, 479, 480, 5, 159, 80, 2, 480, 481, 5, 157, 79, 2, 481, 482, 5, 187, 94, 2, 482, 483, 5, 189, 95, 2, 483, 484, 5, 179, 90, 2, 484, 485, 5, 177, 89, 2, 485, 486, 5, 159, 80, 2, 486, 114, 3, 2, 2, 2, 487, 488, 5, 181, 91, 2, 488, 489, 5, 191, 96, 2, 489, 490, 5, 173, 87, 2, 490, 491, 5, 187, 94, 2, 491, 492, 5, 159, 80, 2, 492, 116, 3, 2, 2, 2, 493, 494, 5, 157, 79, 2, 494, 495, 5, 179, 90, 2, 495, 118, 3, 2, 2, 2, 496, 497, 5, 159, 80, 2, 497, 498, 5, 177, 89, 2, 498, 499, 5, 157, 79, 2, 499, 120, 3, 2, 2, 2, 500, 501, 5, 177, 89, 2, 501, 502, 5, 151, 76, 2, 502, 503, 5, 175, 88, 2, 503, 504, 5, 159, 80, 2, 504, 122, 3, 2, 2, 2, 505, 506, 5, 159, 80, 2, 506, 507, 5, 193, 97, 2, 507, 508, 5, 159, 80, 2, 508, 509, 5, 185, 93, 2, 509, 510, 5, 199, 100, 2, 510, 124, 3, 2, 2, 2, 511, 512, 7, 46, 2, 2, 512, 126, 3, 2, 2, 2, 513, 514, 7, 60, 2, 2, 514, 128, 3, 2, 2, 2, 515, 516, 7, 49, 2, 2, 516, 130, 3, 2, 2, 2, 517, 518, 7, 47, 2, 2, 518, 132, 3, 2, 2, 2, 519, 520, 7, 42, 2, 2, 520, 134, 3, 2, 2, 2, 521, 522, 7, 43, 2, 2, 522, 136, 3, 2, 2, 2, 523, 525, 9, 2, 2, 2, 524, 523, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 524, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 529, 9, 3, 2, 2, 529, 138, 3, 2, 2, 2, 530, 532, 9, 2, 2, 2, 531, 530, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 140, 3, 2, 2, 2, 535, 539, 9, 4, 2, 2, 536, 538, 9, 5, 2, 2, 537, 536, 3, 2, 2, 2, 538, 541, 3, 2, 2, 2, 539, 537, 3, 2, 2, 2, 539, 540, 3, 2, 2, 2, 540, 544, 3, 2, 2, 2, 541, 539, 3, 2, 2, 2, 542, 544, 7, 44, 2, 2, 543, 535, 3, 2, 2, 2, 543, 542, 3, 2, 2, 2, 544, 142, 3, 2, 2, 2, 545, 551, 7, 36, 2, 2, 546, 550, 10, 6, 2, 2, 547, 548, 7, 94, 2, 2, 548, 550, 7, 36, 2, 2, 549, 546, 3, 2, 2, 2, 549, 547, 3, 2, 2, 2, 550, 553, 3, 2, 2, 2, 551, 549, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 554, 3, 2, 2, 2, 553, 551, 3, 2, 2, 2, 554, 555, 7, 36, 2, 2, 555, 144, 3, 2, 2, 2, 556, 557, 7, 47, 2, 2, 557, 558, 7, 47, 2, 2, 558, 562, 3, 2, 2, 2, 559, 561, 10, 7, 2, 2, 560, 559, 3, 2, 2, 2, 561, 564, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 562, 563, 3, 2, 2, 2, 563, 565, 3, 2, 2, 2, 564, 562, 3, 2, 2, 2, 565, 566, 8, 73, 2, 2, 566, 146, 3, 2, 2, 2, 567, 569, 9, 8, 2, 2, 568, 567, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 568, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 573, 8, 74, 2, 2, 573, 148, 3, 2, 2, 2, 574, 575, 6, 75, 2, 2, 575, 576, 11, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 8, 75, 2, 2, 578, 150, 3, 2, 2, 2, 579, 580, 9, 9, 2, 2, 580, 152, 3, 2, 2, 2, 581, 582, 9, 10, 2, 2, 582, 154, 3, 2, 2, 2, 583, 584, 9, 11, 2, 2, 584, 156, 3, 2, 2, 2, 585, 586, 9, 12, 2, 2, 586, 158, 3, 2, 2, 2, 587, 588, 9, 13, 2, 2, 588, 160, 3, 2, 2, 2, 589, 590, 9, 14, 2, 2, 590, 162, 3, 2, 2, 2, 591, 592, 9, 3, 2, 2, 592, 164, 3, 2, 2, 2, 593, 594, 9, 15, 2, 2, 594, 166, 3, 2, 2, 2, 595, 596, 9, 16, 2, 2, 596, 168, 3, 2, 2, 2, 597, 598, 9, 17, 2, 2, 598, 170, 3, 2, 2, 2, 599, 600, 9, 18, 2, 2, 600, 172, 3, 2, 2, 2, 601, 602, 9, 19, 2, 2, 602, 174, 3, 2, 2, 2, 603, 604, 9, 20, 2, 2, 604, 176, 3, 2, 2, 2, 605, 606, 9, 21, 2, 2, 606, 178, 3, 2, 2, 2, 607, 608, 9, 22, 2, 2, 608, 180, 3, 2, 2, 2, 609, 610, 9, 23, 2, 2, 610, 182, 3, 2, 2, 2, 611, 612, 9, 24, 2, 2, 612, 184, 3, 2, 2, 2, 613, 614, 9, 25, 2, 2, 614, 186, 3, 2, 2, 2, 615, 616, 9, 26, 2, 2, 616, 188, 3, 2, 2, 2, 617, 618, 9, 27, 2, 2, 618, 190, 3, 2, 2, 2, 619, 620, 9, 28, 2, 2, 620, 192, 3, 2, 2, 2, 621, 622, 9, 29, 2, 2, 622, 194, 3, 2, 2, 2, 623, 624, 9, 30, 2, 2, 624, 196, 3, 2, 2, 2, 625, 626, 9, 31, 2, 2, 626, 198, 3, 2, 2, 2, 627, 628, 9, 32, 2, 2, 628, 200, 3, 2, 2, 2, 629, 630, 9, 33, 2, 2, 630, 202, 3, 2, 2, 2, 13, 2, 468, 476, 526, 533, 539, 543, 549, 551, 562, 570, 3, 2, 3, 2] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 84, 688, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 5, 63, 526, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 534, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 6, 77, 582, 10, 77, 13, 77, 14, 77, 583, 3, 77, 3, 77, 3, 78, 6, 78, 589, 10, 78, 13, 78, 14, 78, 590, 3, 79, 3, 79, 7, 79, 595, 10, 79, 12, 79, 14, 79, 598, 11, 79, 3, 79, 5, 79, 601, 10, 79, 3, 80, 3, 80, 3, 80, 3, 80, 7, 80, 607, 10, 80, 12, 80, 14, 80, 610, 11, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 7, 81, 618, 10, 81, 12, 81, 14, 81, 621, 11, 81, 3, 81, 3, 81, 3, 82, 6, 82, 626, 10, 82, 13, 82, 14, 82, 627, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 2, 2, 2, 110, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 77, 153, 2, 78, 155, 2, 79, 157, 2, 80, 159, 2, 81, 161, 2, 82, 163, 2, 83, 165, 2, 84, 167, 2, 2, 169, 2, 2, 171, 2, 2, 173, 2, 2, 175, 2, 2, 177, 2, 2, 179, 2, 2, 181, 2, 2, 183, 2, 2, 185, 2, 2, 187, 2, 2, 189, 2, 2, 191, 2, 2, 193, 2, 2, 195, 2, 2, 197, 2, 2, 199, 2, 2, 201, 2, 2, 203, 2, 2, 205, 2, 2, 207, 2, 2, 209, 2, 2, 211, 2, 2, 213, 2, 2, 215, 2, 2, 217, 2, 2, 3, 2, 34, 3, 2, 50, 59, 4, 2, 73, 73, 105, 105, 6, 2, 44, 44, 67, 92, 97, 97, 99, 124, 7, 2, 44, 44, 50, 59, 67, 92, 97, 97, 99, 124, 3, 2, 36, 36, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 4, 2, 67, 67, 99, 99, 4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102, 4, 2, 71, 71, 103, 103, 4, 2, 72, 72, 104, 104, 4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108, 4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111, 4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114, 4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117, 4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120, 4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 2, 671, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 3, 219, 3, 2, 2, 2, 5, 222, 3, 2, 2, 2, 7, 227, 3, 2, 2, 2, 9, 232, 3, 2, 2, 2, 11, 236, 3, 2, 2, 2, 13, 244, 3, 2, 2, 2, 15, 249, 3, 2, 2, 2, 17, 253, 3, 2, 2, 2, 19, 258, 3, 2, 2, 2, 21, 263, 3, 2, 2, 2, 23, 269, 3, 2, 2, 2, 25, 273, 3, 2, 2, 2, 27, 277, 3, 2, 2, 2, 29, 280, 3, 2, 2, 2, 31, 283, 3, 2, 2, 2, 33, 285, 3, 2, 2, 2, 35, 288, 3, 2, 2, 2, 37, 290, 3, 2, 2, 2, 39, 293, 3, 2, 2, 2, 41, 295, 3, 2, 2, 2, 43, 298, 3, 2, 2, 2, 45, 301, 3, 2, 2, 2, 47, 304, 3, 2, 2, 2, 49, 307, 3, 2, 2, 2, 51, 312, 3, 2, 2, 2, 53, 315, 3, 2, 2, 2, 55, 321, 3, 2, 2, 2, 57, 328, 3, 2, 2, 2, 59, 334, 3, 2, 2, 2, 61, 340, 3, 2, 2, 2, 63, 345, 3, 2, 2, 2, 65, 352, 3, 2, 2, 2, 67, 357, 3, 2, 2, 2, 69, 364, 3, 2, 2, 2, 71, 371, 3, 2, 2, 2, 73, 377, 3, 2, 2, 2, 75, 380, 3, 2, 2, 2, 77, 388, 3, 2, 2, 2, 79, 393, 3, 2, 2, 2, 81, 397, 3, 2, 2, 2, 83, 399, 3, 2, 2, 2, 85, 405, 3, 2, 2, 2, 87, 411, 3, 2, 2, 2, 89, 414, 3, 2, 2, 2, 91, 420, 3, 2, 2, 2, 93, 426, 3, 2, 2, 2, 95, 430, 3, 2, 2, 2, 97, 437, 3, 2, 2, 2, 99, 443, 3, 2, 2, 2, 101, 448, 3, 2, 2, 2, 103, 454, 3, 2, 2, 2, 105, 459, 3, 2, 2, 2, 107, 464, 3, 2, 2, 2, 109, 469, 3, 2, 2, 2, 111, 475, 3, 2, 2, 2, 113, 481, 3, 2, 2, 2, 115, 486, 3, 2, 2, 2, 117, 491, 3, 2, 2, 2, 119, 497, 3, 2, 2, 2, 121, 502, 3, 2, 2, 2, 123, 510, 3, 2, 2, 2, 125, 525, 3, 2, 2, 2, 127, 533, 3, 2, 2, 2, 129, 535, 3, 2, 2, 2, 131, 544, 3, 2, 2, 2, 133, 550, 3, 2, 2, 2, 135, 553, 3, 2, 2, 2, 137, 557, 3, 2, 2, 2, 139, 562, 3, 2, 2, 2, 141, 568, 3, 2, 2, 2, 143, 570, 3, 2, 2, 2, 145, 572, 3, 2, 2, 2, 147, 574, 3, 2, 2, 2, 149, 576, 3, 2, 2, 2, 151, 578, 3, 2, 2, 2, 153, 581, 3, 2, 2, 2, 155, 588, 3, 2, 2, 2, 157, 600, 3, 2, 2, 2, 159, 602, 3, 2, 2, 2, 161, 613, 3, 2, 2, 2, 163, 625, 3, 2, 2, 2, 165, 631, 3, 2, 2, 2, 167, 636, 3, 2, 2, 2, 169, 638, 3, 2, 2, 2, 171, 640, 3, 2, 2, 2, 173, 642, 3, 2, 2, 2, 175, 644, 3, 2, 2, 2, 177, 646, 3, 2, 2, 2, 179, 648, 3, 2, 2, 2, 181, 650, 3, 2, 2, 2, 183, 652, 3, 2, 2, 2, 185, 654, 3, 2, 2, 2, 187, 656, 3, 2, 2, 2, 189, 658, 3, 2, 2, 2, 191, 660, 3, 2, 2, 2, 193, 662, 3, 2, 2, 2, 195, 664, 3, 2, 2, 2, 197, 666, 3, 2, 2, 2, 199, 668, 3, 2, 2, 2, 201, 670, 3, 2, 2, 2, 203, 672, 3, 2, 2, 2, 205, 674, 3, 2, 2, 2, 207, 676, 3, 2, 2, 2, 209, 678, 3, 2, 2, 2, 211, 680, 3, 2, 2, 2, 213, 682, 3, 2, 2, 2, 215, 684, 3, 2, 2, 2, 217, 686, 3, 2, 2, 2, 219, 220, 5, 183, 92, 2, 220, 221, 5, 177, 89, 2, 221, 4, 3, 2, 2, 2, 222, 223, 5, 205, 103, 2, 223, 224, 5, 181, 91, 2, 224, 225, 5, 175, 88, 2, 225, 226, 5, 193, 97, 2, 226, 6, 3, 2, 2, 2, 227, 228, 5, 175, 88, 2, 228, 229, 5, 189, 95, 2, 229, 230, 5, 203, 102, 2, 230, 231, 5, 175, 88, 2, 231, 8, 3, 2, 2, 2, 232, 233, 5, 181, 91, 2, 233, 234, 5, 167, 84, 2, 234, 235, 5, 203, 102, 2, 235, 10, 3, 2, 2, 2, 236, 237, 5, 195, 98, 2, 237, 238, 5, 209, 105, 2, 238, 239, 5, 175, 88, 2, 239, 240, 5, 201, 101, 2, 240, 241, 5, 167, 84, 2, 241, 242, 5, 189, 95, 2, 242, 243, 5, 189, 95, 2, 243, 12, 3, 2, 2, 2, 244, 245, 5, 203, 102, 2, 245, 246, 5, 195, 98, 2, 246, 247, 5, 191, 96, 2, 247, 248, 5, 175, 88, 2, 248, 14, 3, 2, 2, 2, 249, 250, 5, 195, 98, 2, 250, 251, 5, 193, 97, 2, 251, 252, 5, 175, 88, 2, 252, 16, 3, 2, 2, 2, 253, 254, 5, 189, 95, 2, 254, 255, 5, 195, 98, 2, 255, 256, 5, 193, 97, 2, 256, 257, 5, 175, 88, 2, 257, 18, 3, 2, 2, 2, 258, 259, 5, 205, 103, 2, 259, 260, 5, 201, 101, 2, 260, 261, 5, 207, 104, 2, 261, 262, 5, 175, 88, 2, 262, 20, 3, 2, 2, 2, 263, 264, 5, 177, 89, 2, 264, 265, 5, 167, 84, 2, 265, 266, 5, 189, 95, 2, 266, 267, 5, 203, 102, 2, 267, 268, 5, 175, 88, 2, 268, 22, 3, 2, 2, 2, 269, 270, 5, 193, 97, 2, 270, 271, 5, 195, 98, 2, 271, 272, 5, 205, 103, 2, 272, 24, 3, 2, 2, 2, 273, 274, 5, 167, 84, 2, 274, 275, 5, 193, 97, 2, 275, 276, 5, 173, 87, 2, 276, 26, 3, 2, 2, 2, 277, 278, 5, 195, 98, 2, 278, 279, 5, 201, 101, 2, 279, 28, 3, 2, 2, 2, 280, 281, 5, 179, 90, 2, 281, 282, 5, 205, 103, 2, 282, 30, 3, 2, 2, 2, 283, 284, 7, 64, 2, 2, 284, 32, 3, 2, 2, 2, 285, 286, 5, 189, 95, 2, 286, 287, 5, 205, 103, 2, 287, 34, 3, 2, 2, 2, 288, 289, 7, 62, 2, 2, 289, 36, 3, 2, 2, 2, 290, 291, 5, 175, 88, 2, 291, 292, 5, 199, 100, 2, 292, 38, 3, 2, 2, 2, 293, 294, 7, 63, 2, 2, 294, 40, 3, 2, 2, 2, 295, 296, 5, 189, 95, 2, 296, 297, 5, 175, 88, 2, 297, 42, 3, 2, 2, 2, 298, 299, 7, 62, 2, 2, 299, 300, 7, 63, 2, 2, 300, 44, 3, 2, 2, 2, 301, 302, 5, 179, 90, 2, 302, 303, 5, 175, 88, 2, 303, 46, 3, 2, 2, 2, 304, 305, 7, 64, 2, 2, 305, 306, 7, 63, 2, 2, 306, 48, 3, 2, 2, 2, 307, 308, 5, 177, 89, 2, 308, 309, 5, 201, 101, 2, 309, 310, 5, 195, 98, 2, 310, 311, 5, 191, 96, 2, 311, 50, 3, 2, 2, 2, 312, 313, 5, 205, 103, 2, 313, 314, 5, 195, 98, 2, 314, 52, 3, 2, 2, 2, 315, 316, 5, 183, 92, 2, 316, 317, 5, 193, 97, 2, 317, 318, 5, 197, 99, 2, 318, 319, 5, 207, 104, 2, 319, 320, 5, 205, 103, 2, 320, 54, 3, 2, 2, 2, 321, 322, 5, 195, 98, 2, 322, 323, 5, 207, 104, 2, 323, 324, 5, 205, 103, 2, 324, 325, 5, 197, 99, 2, 325, 326, 5, 207, 104, 2, 326, 327, 5, 205, 103, 2, 327, 56, 3, 2, 2, 2, 328, 329, 5, 211, 106, 2, 329, 330, 5, 181, 91, 2, 330, 331, 5, 175, 88, 2, 331, 332, 5, 201, 101, 2, 332, 333, 5, 175, 88, 2, 333, 58, 3, 2, 2, 2, 334, 335, 5, 203, 102, 2, 335, 336, 5, 189, 95, 2, 336, 337, 5, 195, 98, 2, 337, 338, 5, 205, 103, 2, 338, 339, 5, 203, 102, 2, 339, 60, 3, 2, 2, 2, 340, 341, 5, 203, 102, 2, 341, 342, 5, 189, 95, 2, 342, 343, 5, 195, 98, 2, 343, 344, 5, 205, 103, 2, 344, 62, 3, 2, 2, 2, 345, 346, 5, 201, 101, 2, 346, 347, 5, 175, 88, 2, 347, 348, 5, 205, 103, 2, 348, 349, 5, 167, 84, 2, 349, 350, 5, 183, 92, 2, 350, 351, 5, 193, 97, 2, 351, 64, 3, 2, 2, 2, 352, 353, 5, 175, 88, 2, 353, 354, 5, 167, 84, 2, 354, 355, 5, 171, 86, 2, 355, 356, 5, 181, 91, 2, 356, 66, 3, 2, 2, 2, 357, 358, 5, 175, 88, 2, 358, 359, 5, 213, 107, 2, 359, 360, 5, 171, 86, 2, 360, 361, 5, 175, 88, 2, 361, 362, 5, 197, 99, 2, 362, 363, 5, 205, 103, 2, 363, 68, 3, 2, 2, 2, 364, 365, 5, 177, 89, 2, 365, 366, 5, 195, 98, 2, 366, 367, 5, 201, 101, 2, 367, 368, 5, 179, 90, 2, 368, 369, 5, 175, 88, 2, 369, 370, 5, 205, 103, 2, 370, 70, 3, 2, 2, 2, 371, 372, 5, 175, 88, 2, 372, 373, 5, 191, 96, 2, 373, 374, 5, 197, 99, 2, 374, 375, 5, 205, 103, 2, 375, 376, 5, 215, 108, 2, 376, 72, 3, 2, 2, 2, 377, 378, 5, 183, 92, 2, 378, 379, 5, 193, 97, 2, 379, 74, 3, 2, 2, 2, 380, 381, 5, 211, 106, 2, 381, 382, 5, 183, 92, 2, 382, 383, 5, 205, 103, 2, 383, 384, 5, 181, 91, 2, 384, 385, 5, 195, 98, 2, 385, 386, 5, 207, 104, 2, 386, 387, 5, 205, 103, 2, 387, 76, 3, 2, 2, 2, 388, 389, 5, 211, 106, 2, 389, 390, 5, 183, 92, 2, 390, 391, 5, 205, 103, 2, 391, 392, 5, 181, 91, 2, 392, 78, 3, 2, 2, 2, 393, 394, 5, 205, 103, 2, 394, 395, 5, 167, 84, 2, 395, 396, 5, 179, 90, 2, 396, 80, 3, 2, 2, 2, 397, 398, 7, 37, 2, 2, 398, 82, 3, 2, 2, 2, 399, 400, 5, 201, 101, 2, 400, 401, 5, 195, 98, 2, 401, 402, 5, 207, 104, 2, 402, 403, 5, 193, 97, 2, 403, 404, 5, 173, 87, 2, 404, 84, 3, 2, 2, 2, 405, 406, 5, 201, 101, 2, 406, 407, 5, 195, 98, 2, 407, 408, 5, 169, 85, 2, 408, 409, 5, 183, 92, 2, 409, 410, 5, 193, 97, 2, 410, 86, 3, 2, 2, 2, 411, 412, 5, 169, 85, 2, 412, 413, 5, 215, 108, 2, 413, 88, 3, 2, 2, 2, 414, 415, 5, 189, 95, 2, 415, 416, 5, 167, 84, 2, 416, 417, 5, 169, 85, 2, 417, 418, 5, 175, 88, 2, 418, 419, 5, 189, 95, 2, 419, 90, 3, 2, 2, 2, 420, 421, 5, 169, 85, 2, 421, 422, 5, 189, 95, 2, 422, 423, 5, 195, 98, 2, 423, 424, 5, 171, 86, 2, 424, 425, 5, 187, 94, 2, 425, 92, 3, 2, 2, 2, 426, 427, 5, 205, 103, 2, 427, 428, 5, 195, 98, 2, 428, 429, 5, 197, 99, 2, 429, 94, 3, 2, 2, 2, 430, 431, 5, 169, 85, 2, 431, 432, 5, 195, 98, 2, 432, 433, 5, 205, 103, 2, 433, 434, 5, 205, 103, 2, 434, 435, 5, 195, 98, 2, 435, 436, 5, 191, 96, 2, 436, 96, 3, 2, 2, 2, 437, 438, 5, 193, 97, 2, 438, 439, 5, 195, 98, 2, 439, 440, 5, 201, 101, 2, 440, 441, 5, 205, 103, 2, 441, 442, 5, 181, 91, 2, 442, 98, 3, 2, 2, 2, 443, 444, 5, 175, 88, 2, 444, 445, 5, 167, 84, 2, 445, 446, 5, 203, 102, 2, 446, 447, 5, 205, 103, 2, 447, 100, 3, 2, 2, 2, 448, 449, 5, 203, 102, 2, 449, 450, 5, 195, 98, 2, 450, 451, 5, 207, 104, 2, 451, 452, 5, 205, 103, 2, 452, 453, 5, 181, 91, 2, 453, 102, 3, 2, 2, 2, 454, 455, 5, 211, 106, 2, 455, 456, 5, 175, 88, 2, 456, 457, 5, 203, 102, 2, 457, 458, 5, 205, 103, 2, 458, 104, 3, 2, 2, 2, 459, 460, 5, 203, 102, 2, 460, 461, 5, 183, 92, 2, 461, 462, 5, 173, 87, 2, 462, 463, 5, 175, 88, 2, 463, 106, 3, 2, 2, 2, 464, 465, 5, 189, 95, 2, 465, 466, 5, 175, 88, 2, 466, 467, 5, 177, 89, 2, 467, 468, 5, 205, 103, 2, 468, 108, 3, 2, 2, 2, 469, 470, 5, 201, 101, 2, 470, 471, 5, 183, 92, 2, 471, 472, 5, 179, 90, 2, 472, 473, 5, 181, 91, 2, 473, 474, 5, 205, 103, 2, 474, 110, 3, 2, 2, 2, 475, 476, 5, 177, 89, 2, 476, 477, 5, 201, 101, 2, 477, 478, 5, 195, 98, 2, 478, 479, 5, 193, 97, 2, 479, 480, 5, 205, 103, 2, 480, 112, 3, 2, 2, 2, 481, 482, 5, 169, 85, 2, 482, 483, 5, 167, 84, 2, 483, 484, 5, 171, 86, 2, 484, 485, 5, 187, 94, 2, 485, 114, 3, 2, 2, 2, 486, 487, 5, 193, 97, 2, 487, 488, 5, 207, 104, 2, 488, 489, 5, 189, 95, 2, 489, 490, 5, 189, 95, 2, 490, 116, 3, 2, 2, 2, 491, 492, 5, 205, 103, 2, 492, 493, 5, 183, 92, 2, 493, 494, 5, 171, 86, 2, 494, 495, 5, 187, 94, 2, 495, 496, 5, 203, 102, 2, 496, 118, 3, 2, 2, 2, 497, 498, 5, 205, 103, 2, 498, 499, 5, 183, 92, 2, 499, 500, 5, 171, 86, 2, 500, 501, 5, 187, 94, 2, 501, 120, 3, 2, 2, 2, 502, 503, 5, 203, 102, 2, 503, 504, 5, 175, 88, 2, 504, 505, 5, 171, 86, 2, 505, 506, 5, 195, 98, 2, 506, 507, 5, 193, 97, 2, 507, 508, 5, 173, 87, 2, 508, 509, 5, 203, 102, 2, 509, 122, 3, 2, 2, 2, 510, 511, 5, 203, 102, 2, 511, 512, 5, 175, 88, 2, 512, 513, 5, 171, 86, 2, 513, 514, 5, 195, 98, 2, 514, 515, 5, 193, 97, 2, 515, 516, 5, 173, 87, 2, 516, 124, 3, 2, 2, 2, 517, 518, 5, 179, 90, 2, 518, 519, 5, 189, 95, 2, 519, 520, 5, 195, 98, 2, 520, 521, 5, 169, 85, 2, 521, 522, 5, 167, 84, 2, 522, 523, 5, 189, 95, 2, 523, 526, 3, 2, 2, 2, 524, 526, 5, 179, 90, 2, 525, 517, 3, 2, 2, 2, 525, 524, 3, 2, 2, 2, 526, 126, 3, 2, 2, 2, 527, 534, 7, 45, 2, 2, 528, 529, 5, 197, 99, 2, 529, 530, 5, 189, 95, 2, 530, 531, 5, 207, 104, 2, 531, 532, 5, 203, 102, 2, 532, 534, 3, 2, 2, 2, 533, 527, 3, 2, 2, 2, 533, 528, 3, 2, 2, 2, 534, 128, 3, 2, 2, 2, 535, 536, 5, 201, 101, 2, 536, 537, 5, 175, 88, 2, 537, 538, 5, 173, 87, 2, 538, 539, 5, 203, 102, 2, 539, 540, 5, 205, 103, 2, 540, 541, 5, 195, 98, 2, 541, 542, 5, 193, 97, 2, 542, 543, 5, 175, 88, 2, 543, 130, 3, 2, 2, 2, 544, 545, 5, 197, 99, 2, 545, 546, 5, 207, 104, 2, 546, 547, 5, 189, 95, 2, 547, 548, 5, 203, 102, 2, 548, 549, 5, 175, 88, 2, 549, 132, 3, 2, 2, 2, 550, 551, 5, 173, 87, 2, 551, 552, 5, 195, 98, 2, 552, 134, 3, 2, 2, 2, 553, 554, 5, 175, 88, 2, 554, 555, 5, 193, 97, 2, 555, 556, 5, 173, 87, 2, 556, 136, 3, 2, 2, 2, 557, 558, 5, 193, 97, 2, 558, 559, 5, 167, 84, 2, 559, 560, 5, 191, 96, 2, 560, 561, 5, 175, 88, 2, 561, 138, 3, 2, 2, 2, 562, 563, 5, 175, 88, 2, 563, 564, 5, 209, 105, 2, 564, 565, 5, 175, 88, 2, 565, 566, 5, 201, 101, 2, 566, 567, 5, 215, 108, 2, 567, 140, 3, 2, 2, 2, 568, 569, 7, 46, 2, 2, 569, 142, 3, 2, 2, 2, 570, 571, 7, 60, 2, 2, 571, 144, 3, 2, 2, 2, 572, 573, 7, 49, 2, 2, 573, 146, 3, 2, 2, 2, 574, 575, 7, 47, 2, 2, 575, 148, 3, 2, 2, 2, 576, 577, 7, 42, 2, 2, 577, 150, 3, 2, 2, 2, 578, 579, 7, 43, 2, 2, 579, 152, 3, 2, 2, 2, 580, 582, 9, 2, 2, 2, 581, 580, 3, 2, 2, 2, 582, 583, 3, 2, 2, 2, 583, 581, 3, 2, 2, 2, 583, 584, 3, 2, 2, 2, 584, 585, 3, 2, 2, 2, 585, 586, 9, 3, 2, 2, 586, 154, 3, 2, 2, 2, 587, 589, 9, 2, 2, 2, 588, 587, 3, 2, 2, 2, 589, 590, 3, 2, 2, 2, 590, 588, 3, 2, 2, 2, 590, 591, 3, 2, 2, 2, 591, 156, 3, 2, 2, 2, 592, 596, 9, 4, 2, 2, 593, 595, 9, 5, 2, 2, 594, 593, 3, 2, 2, 2, 595, 598, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 601, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 599, 601, 7, 44, 2, 2, 600, 592, 3, 2, 2, 2, 600, 599, 3, 2, 2, 2, 601, 158, 3, 2, 2, 2, 602, 608, 7, 36, 2, 2, 603, 607, 10, 6, 2, 2, 604, 605, 7, 94, 2, 2, 605, 607, 7, 36, 2, 2, 606, 603, 3, 2, 2, 2, 606, 604, 3, 2, 2, 2, 607, 610, 3, 2, 2, 2, 608, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 611, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 611, 612, 7, 36, 2, 2, 612, 160, 3, 2, 2, 2, 613, 614, 7, 47, 2, 2, 614, 615, 7, 47, 2, 2, 615, 619, 3, 2, 2, 2, 616, 618, 10, 7, 2, 2, 617, 616, 3, 2, 2, 2, 618, 621, 3, 2, 2, 2, 619, 617, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 622, 3, 2, 2, 2, 621, 619, 3, 2, 2, 2, 622, 623, 8, 81, 2, 2, 623, 162, 3, 2, 2, 2, 624, 626, 9, 8, 2, 2, 625, 624, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 625, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 8, 82, 2, 2, 630, 164, 3, 2, 2, 2, 631, 632, 6, 83, 2, 2, 632, 633, 11, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 635, 8, 83, 2, 2, 635, 166, 3, 2, 2, 2, 636, 637, 9, 9, 2, 2, 637, 168, 3, 2, 2, 2, 638, 639, 9, 10, 2, 2, 639, 170, 3, 2, 2, 2, 640, 641, 9, 11, 2, 2, 641, 172, 3, 2, 2, 2, 642, 643, 9, 12, 2, 2, 643, 174, 3, 2, 2, 2, 644, 645, 9, 13, 2, 2, 645, 176, 3, 2, 2, 2, 646, 647, 9, 14, 2, 2, 647, 178, 3, 2, 2, 2, 648, 649, 9, 3, 2, 2, 649, 180, 3, 2, 2, 2, 650, 651, 9, 15, 2, 2, 651, 182, 3, 2, 2, 2, 652, 653, 9, 16, 2, 2, 653, 184, 3, 2, 2, 2, 654, 655, 9, 17, 2, 2, 655, 186, 3, 2, 2, 2, 656, 657, 9, 18, 2, 2, 657, 188, 3, 2, 2, 2, 658, 659, 9, 19, 2, 2, 659, 190, 3, 2, 2, 2, 660, 661, 9, 20, 2, 2, 661, 192, 3, 2, 2, 2, 662, 663, 9, 21, 2, 2, 663, 194, 3, 2, 2, 2, 664, 665, 9, 22, 2, 2, 665, 196, 3, 2, 2, 2, 666, 667, 9, 23, 2, 2, 667, 198, 3, 2, 2, 2, 668, 669, 9, 24, 2, 2, 669, 200, 3, 2, 2, 2, 670, 671, 9, 25, 2, 2, 671, 202, 3, 2, 2, 2, 672, 673, 9, 26, 2, 2, 673, 204, 3, 2, 2, 2, 674, 675, 9, 27, 2, 2, 675, 206, 3, 2, 2, 2, 676, 677, 9, 28, 2, 2, 677, 208, 3, 2, 2, 2, 678, 679, 9, 29, 2, 2, 679, 210, 3, 2, 2, 2, 680, 681, 9, 30, 2, 2, 681, 212, 3, 2, 2, 2, 682, 683, 9, 31, 2, 2, 683, 214, 3, 2, 2, 2, 684, 685, 9, 32, 2, 2, 685, 216, 3, 2, 2, 2, 686, 687, 9, 33, 2, 2, 687, 218, 3, 2, 2, 2, 13, 2, 525, 533, 583, 590, 596, 600, 606, 608, 619, 627, 3, 2, 3, 2] \ No newline at end of file diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.tokens b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.tokens index 1b06af7e3..3d0aaba4c 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.tokens +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.tokens @@ -27,60 +27,68 @@ INPUT=26 OUTPUT=27 WHERE=28 SLOTS=29 -RETAIN=30 -EACH=31 -EXCEPT=32 -FORGET=33 -WITHOUT=34 -WITH=35 -TAG=36 -HASHTAG=37 -ROUND=38 -ROBIN=39 -BY=40 -LABEL=41 -BLOCK=42 -TOP=43 -BOTTOM=44 -NORTH=45 -EAST=46 -SOUTH=47 -WEST=48 -SIDE=49 -TICKS=50 -TICK=51 -SECONDS=52 -SECOND=53 -GLOBAL=54 -PLUS=55 -REDSTONE=56 -PULSE=57 -DO=58 -END=59 -NAME=60 -EVERY=61 -COMMA=62 -COLON=63 -SLASH=64 -DASH=65 -LPAREN=66 -RPAREN=67 -NUMBER_WITH_G_SUFFIX=68 -NUMBER=69 -IDENTIFIER=70 -STRING=71 -LINE_COMMENT=72 -WS=73 -UNUSED=74 +SLOT=30 +RETAIN=31 +EACH=32 +EXCEPT=33 +FORGET=34 +EMPTY=35 +IN=36 +WITHOUT=37 +WITH=38 +TAG=39 +HASHTAG=40 +ROUND=41 +ROBIN=42 +BY=43 +LABEL=44 +BLOCK=45 +TOP=46 +BOTTOM=47 +NORTH=48 +EAST=49 +SOUTH=50 +WEST=51 +SIDE=52 +LEFT=53 +RIGHT=54 +FRONT=55 +BACK=56 +NULL=57 +TICKS=58 +TICK=59 +SECONDS=60 +SECOND=61 +GLOBAL=62 +PLUS=63 +REDSTONE=64 +PULSE=65 +DO=66 +END=67 +NAME=68 +EVERY=69 +COMMA=70 +COLON=71 +SLASH=72 +DASH=73 +LPAREN=74 +RPAREN=75 +NUMBER_WITH_G_SUFFIX=76 +NUMBER=77 +IDENTIFIER=78 +STRING=79 +LINE_COMMENT=80 +WS=81 +UNUSED=82 '>'=15 '<'=17 '='=19 '<='=21 '>='=23 -'#'=37 -','=62 -':'=63 -'/'=64 -'-'=65 -'('=66 -')'=67 +'#'=40 +','=70 +':'=71 +'/'=72 +'-'=73 +'('=74 +')'=75 diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.ts b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.ts index ff5bf59da..8db84db9c 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLLexer.ts @@ -45,51 +45,59 @@ export class SFMLLexer extends Lexer { public static readonly OUTPUT = 27; public static readonly WHERE = 28; public static readonly SLOTS = 29; - public static readonly RETAIN = 30; - public static readonly EACH = 31; - public static readonly EXCEPT = 32; - public static readonly FORGET = 33; - public static readonly WITHOUT = 34; - public static readonly WITH = 35; - public static readonly TAG = 36; - public static readonly HASHTAG = 37; - public static readonly ROUND = 38; - public static readonly ROBIN = 39; - public static readonly BY = 40; - public static readonly LABEL = 41; - public static readonly BLOCK = 42; - public static readonly TOP = 43; - public static readonly BOTTOM = 44; - public static readonly NORTH = 45; - public static readonly EAST = 46; - public static readonly SOUTH = 47; - public static readonly WEST = 48; - public static readonly SIDE = 49; - public static readonly TICKS = 50; - public static readonly TICK = 51; - public static readonly SECONDS = 52; - public static readonly SECOND = 53; - public static readonly GLOBAL = 54; - public static readonly PLUS = 55; - public static readonly REDSTONE = 56; - public static readonly PULSE = 57; - public static readonly DO = 58; - public static readonly END = 59; - public static readonly NAME = 60; - public static readonly EVERY = 61; - public static readonly COMMA = 62; - public static readonly COLON = 63; - public static readonly SLASH = 64; - public static readonly DASH = 65; - public static readonly LPAREN = 66; - public static readonly RPAREN = 67; - public static readonly NUMBER_WITH_G_SUFFIX = 68; - public static readonly NUMBER = 69; - public static readonly IDENTIFIER = 70; - public static readonly STRING = 71; - public static readonly LINE_COMMENT = 72; - public static readonly WS = 73; - public static readonly UNUSED = 74; + public static readonly SLOT = 30; + public static readonly RETAIN = 31; + public static readonly EACH = 32; + public static readonly EXCEPT = 33; + public static readonly FORGET = 34; + public static readonly EMPTY = 35; + public static readonly IN = 36; + public static readonly WITHOUT = 37; + public static readonly WITH = 38; + public static readonly TAG = 39; + public static readonly HASHTAG = 40; + public static readonly ROUND = 41; + public static readonly ROBIN = 42; + public static readonly BY = 43; + public static readonly LABEL = 44; + public static readonly BLOCK = 45; + public static readonly TOP = 46; + public static readonly BOTTOM = 47; + public static readonly NORTH = 48; + public static readonly EAST = 49; + public static readonly SOUTH = 50; + public static readonly WEST = 51; + public static readonly SIDE = 52; + public static readonly LEFT = 53; + public static readonly RIGHT = 54; + public static readonly FRONT = 55; + public static readonly BACK = 56; + public static readonly NULL = 57; + public static readonly TICKS = 58; + public static readonly TICK = 59; + public static readonly SECONDS = 60; + public static readonly SECOND = 61; + public static readonly GLOBAL = 62; + public static readonly PLUS = 63; + public static readonly REDSTONE = 64; + public static readonly PULSE = 65; + public static readonly DO = 66; + public static readonly END = 67; + public static readonly NAME = 68; + public static readonly EVERY = 69; + public static readonly COMMA = 70; + public static readonly COLON = 71; + public static readonly SLASH = 72; + public static readonly DASH = 73; + public static readonly LPAREN = 74; + public static readonly RPAREN = 75; + public static readonly NUMBER_WITH_G_SUFFIX = 76; + public static readonly NUMBER = 77; + public static readonly IDENTIFIER = 78; + public static readonly STRING = 79; + public static readonly LINE_COMMENT = 80; + public static readonly WS = 81; + public static readonly UNUSED = 82; // tslint:disable:no-trailing-whitespace public static readonly channelNames: string[] = [ @@ -105,9 +113,10 @@ export class SFMLLexer extends Lexer { "IF", "THEN", "ELSE", "HAS", "OVERALL", "SOME", "ONE", "LONE", "TRUE", "FALSE", "NOT", "AND", "OR", "GT", "GT_SYMBOL", "LT", "LT_SYMBOL", "EQ", "EQ_SYMBOL", "LE", "LE_SYMBOL", "GE", "GE_SYMBOL", "FROM", "TO", "INPUT", - "OUTPUT", "WHERE", "SLOTS", "RETAIN", "EACH", "EXCEPT", "FORGET", "WITHOUT", - "WITH", "TAG", "HASHTAG", "ROUND", "ROBIN", "BY", "LABEL", "BLOCK", "TOP", - "BOTTOM", "NORTH", "EAST", "SOUTH", "WEST", "SIDE", "TICKS", "TICK", "SECONDS", + "OUTPUT", "WHERE", "SLOTS", "SLOT", "RETAIN", "EACH", "EXCEPT", "FORGET", + "EMPTY", "IN", "WITHOUT", "WITH", "TAG", "HASHTAG", "ROUND", "ROBIN", + "BY", "LABEL", "BLOCK", "TOP", "BOTTOM", "NORTH", "EAST", "SOUTH", "WEST", + "SIDE", "LEFT", "RIGHT", "FRONT", "BACK", "NULL", "TICKS", "TICK", "SECONDS", "SECOND", "GLOBAL", "PLUS", "REDSTONE", "PULSE", "DO", "END", "NAME", "EVERY", "COMMA", "COLON", "SLASH", "DASH", "LPAREN", "RPAREN", "NUMBER_WITH_G_SUFFIX", "NUMBER", "IDENTIFIER", "STRING", "LINE_COMMENT", "WS", "UNUSED", "A", @@ -121,21 +130,23 @@ export class SFMLLexer extends Lexer { undefined, "'>'", undefined, "'<'", undefined, "'='", undefined, "'<='", undefined, "'>='", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, "'#'", undefined, undefined, undefined, undefined, undefined, + undefined, undefined, undefined, undefined, "'#'", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, "','", "':'", "'/'", - "'-'", "'('", "')'", + undefined, undefined, undefined, undefined, undefined, undefined, undefined, + undefined, undefined, undefined, undefined, undefined, undefined, "','", + "':'", "'/'", "'-'", "'('", "')'", ]; - public static readonly _SYMBOLIC_NAMES: Array = [ + private static readonly _SYMBOLIC_NAMES: Array = [ undefined, "IF", "THEN", "ELSE", "HAS", "OVERALL", "SOME", "ONE", "LONE", "TRUE", "FALSE", "NOT", "AND", "OR", "GT", "GT_SYMBOL", "LT", "LT_SYMBOL", "EQ", "EQ_SYMBOL", "LE", "LE_SYMBOL", "GE", "GE_SYMBOL", "FROM", "TO", - "INPUT", "OUTPUT", "WHERE", "SLOTS", "RETAIN", "EACH", "EXCEPT", "FORGET", - "WITHOUT", "WITH", "TAG", "HASHTAG", "ROUND", "ROBIN", "BY", "LABEL", - "BLOCK", "TOP", "BOTTOM", "NORTH", "EAST", "SOUTH", "WEST", "SIDE", "TICKS", - "TICK", "SECONDS", "SECOND", "GLOBAL", "PLUS", "REDSTONE", "PULSE", "DO", - "END", "NAME", "EVERY", "COMMA", "COLON", "SLASH", "DASH", "LPAREN", "RPAREN", + "INPUT", "OUTPUT", "WHERE", "SLOTS", "SLOT", "RETAIN", "EACH", "EXCEPT", + "FORGET", "EMPTY", "IN", "WITHOUT", "WITH", "TAG", "HASHTAG", "ROUND", + "ROBIN", "BY", "LABEL", "BLOCK", "TOP", "BOTTOM", "NORTH", "EAST", "SOUTH", + "WEST", "SIDE", "LEFT", "RIGHT", "FRONT", "BACK", "NULL", "TICKS", "TICK", + "SECONDS", "SECOND", "GLOBAL", "PLUS", "REDSTONE", "PULSE", "DO", "END", + "NAME", "EVERY", "COMMA", "COLON", "SLASH", "DASH", "LPAREN", "RPAREN", "NUMBER_WITH_G_SUFFIX", "NUMBER", "IDENTIFIER", "STRING", "LINE_COMMENT", "WS", "UNUSED", ]; @@ -149,7 +160,7 @@ export class SFMLLexer extends Lexer { // tslint:enable:no-trailing-whitespace - public INCLUDE_UNUSED = false; // we want syntax highlighting to not break on unexpected tokens + public INCLUDE_UNUSED: boolean = false; // we want syntax highlighting to not break on unexpected tokens constructor(input: CharStream) { @@ -175,7 +186,7 @@ export class SFMLLexer extends Lexer { // @Override public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 73: + case 81: return this.UNUSED_sempred(_localctx, predIndex); } return true; @@ -190,7 +201,7 @@ export class SFMLLexer extends Lexer { private static readonly _serializedATNSegments: number = 2; private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02L\u0277\b\x01" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02T\u02B0\b\x01" + "\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + "\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" + @@ -204,276 +215,302 @@ export class SFMLLexer extends Lexer { "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" + "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" + - "`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x03\x02\x03\x02\x03\x02\x03" + - "\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03" + - "\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03" + - "\x06\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + - "\b\x03\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03" + - "\n\x03\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03" + - "\r\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03" + - "\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03" + - "\x13\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03" + - "\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03" + - "\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03" + - "\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03" + - "\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03" + - "\x1F\x03 \x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03\"" + - "\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03#\x03#\x03#\x03#\x03#\x03#\x03" + - "#\x03#\x03$\x03$\x03$\x03$\x03$\x03%\x03%\x03%\x03%\x03&\x03&\x03\'\x03" + - "\'\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03(\x03)\x03)\x03" + - ")\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03+\x03+\x03,\x03" + - ",\x03,\x03,\x03-\x03-\x03-\x03-\x03-\x03-\x03-\x03.\x03.\x03.\x03.\x03" + - ".\x03.\x03/\x03/\x03/\x03/\x03/\x030\x030\x030\x030\x030\x030\x031\x03" + - "1\x031\x031\x031\x032\x032\x032\x032\x032\x033\x033\x033\x033\x033\x03" + - "3\x034\x034\x034\x034\x034\x035\x035\x035\x035\x035\x035\x035\x035\x03" + - "6\x036\x036\x036\x036\x036\x036\x037\x037\x037\x037\x037\x037\x037\x03" + - "7\x057\u01D5\n7\x038\x038\x038\x038\x038\x038\x058\u01DD\n8\x039\x039" + - "\x039\x039\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x03:\x03:\x03" + - ";\x03;\x03;\x03<\x03<\x03<\x03<\x03=\x03=\x03=\x03=\x03=\x03>\x03>\x03" + - ">\x03>\x03>\x03>\x03?\x03?\x03@\x03@\x03A\x03A\x03B\x03B\x03C\x03C\x03" + - "D\x03D\x03E\x06E\u020D\nE\rE\x0EE\u020E\x03E\x03E\x03F\x06F\u0214\nF\r" + - "F\x0EF\u0215\x03G\x03G\x07G\u021A\nG\fG\x0EG\u021D\vG\x03G\x05G\u0220" + - "\nG\x03H\x03H\x03H\x03H\x07H\u0226\nH\fH\x0EH\u0229\vH\x03H\x03H\x03I" + - "\x03I\x03I\x03I\x07I\u0231\nI\fI\x0EI\u0234\vI\x03I\x03I\x03J\x06J\u0239" + - "\nJ\rJ\x0EJ\u023A\x03J\x03J\x03K\x03K\x03K\x03K\x03K\x03L\x03L\x03M\x03" + - "M\x03N\x03N\x03O\x03O\x03P\x03P\x03Q\x03Q\x03R\x03R\x03S\x03S\x03T\x03" + - "T\x03U\x03U\x03V\x03V\x03W\x03W\x03X\x03X\x03Y\x03Y\x03Z\x03Z\x03[\x03" + - "[\x03\\\x03\\\x03]\x03]\x03^\x03^\x03_\x03_\x03`\x03`\x03a\x03a\x03b\x03" + - "b\x03c\x03c\x03d\x03d\x03e\x03e\x02\x02\x02f\x03\x02\x03\x05\x02\x04\x07" + - "\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15" + - "\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02" + - "\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191" + - "\x02\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02" + - "\"C\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-" + - "Y\x02.[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x02" + - "9q\x02:s\x02;u\x02{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02" + - "C\x85\x02D\x87\x02E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02J\x93\x02" + - "K\x95\x02L\x97\x02\x02\x99\x02\x02\x9B\x02\x02\x9D\x02\x02\x9F\x02\x02" + - "\xA1\x02\x02\xA3\x02\x02\xA5\x02\x02\xA7\x02\x02\xA9\x02\x02\xAB\x02\x02" + - "\xAD\x02\x02\xAF\x02\x02\xB1\x02\x02\xB3\x02\x02\xB5\x02\x02\xB7\x02\x02" + - "\xB9\x02\x02\xBB\x02\x02\xBD\x02\x02\xBF\x02\x02\xC1\x02\x02\xC3\x02\x02" + - "\xC5\x02\x02\xC7\x02\x02\xC9\x02\x02\x03\x02\"\x03\x022;\x04\x02IIii\x06" + - "\x02,,C\\aac|\x07\x02,,2;C\\aac|\x03\x02$$\x04\x02\f\f\x0F\x0F\x05\x02" + - "\v\f\x0F\x0F\"\"\x04\x02CCcc\x04\x02DDdd\x04\x02EEee\x04\x02FFff\x04\x02" + - "GGgg\x04\x02HHhh\x04\x02JJjj\x04\x02KKkk\x04\x02LLll\x04\x02MMmm\x04\x02" + - "NNnn\x04\x02OOoo\x04\x02PPpp\x04\x02QQqq\x04\x02RRrr\x04\x02SSss\x04\x02" + - "TTtt\x04\x02UUuu\x04\x02VVvv\x04\x02WWww\x04\x02XXxx\x04\x02YYyy\x04\x02" + - "ZZzz\x04\x02[[{{\x04\x02\\\\||\x02\u0266\x02\x03\x03\x02\x02\x02\x02\x05" + - "\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03" + - "\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03" + - "\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03" + - "\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03" + - "\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02" + - "\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02" + - "\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03" + - "\x02\x02\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02" + - "\x02\x029\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02" + - "?\x03\x02\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02" + - "\x02\x02\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02" + - "\x02M\x03\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03" + - "\x02\x02\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02" + - "\x02\x02[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02" + - "a\x03\x02\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02" + - "\x02\x02\x02i\x03\x02\x02\x02\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02" + - "\x02o\x03\x02\x02\x02\x02q\x03\x02\x02\x02\x02s\x03\x02\x02\x02\x02u\x03" + - "\x02\x02\x02\x02w\x03\x02\x02\x02\x02y\x03\x02\x02\x02\x02{\x03\x02\x02" + - "\x02\x02}\x03\x02\x02\x02\x02\x7F\x03\x02\x02\x02\x02\x81\x03\x02\x02" + - "\x02\x02\x83\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03\x02\x02" + - "\x02\x02\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x02\x8D\x03\x02\x02" + - "\x02\x02\x8F\x03\x02\x02\x02\x02\x91\x03\x02\x02\x02\x02\x93\x03\x02\x02" + - "\x02\x02\x95\x03\x02\x02\x02\x03\xCB\x03\x02\x02\x02\x05\xCE\x03\x02\x02" + - "\x02\x07\xD3\x03\x02\x02\x02\t\xD8\x03\x02\x02\x02\v\xDC\x03\x02\x02\x02" + - "\r\xE4\x03\x02\x02\x02\x0F\xE9\x03\x02\x02\x02\x11\xED\x03\x02\x02\x02" + - "\x13\xF2\x03\x02\x02\x02\x15\xF7\x03\x02\x02\x02\x17\xFD\x03\x02\x02\x02" + - "\x19\u0101\x03\x02\x02\x02\x1B\u0105\x03\x02\x02\x02\x1D\u0108\x03\x02" + - "\x02\x02\x1F\u010B\x03\x02\x02\x02!\u010D\x03\x02\x02\x02#\u0110\x03\x02" + - "\x02\x02%\u0112\x03\x02\x02\x02\'\u0115\x03\x02\x02\x02)\u0117\x03\x02" + - "\x02\x02+\u011A\x03\x02\x02\x02-\u011D\x03\x02\x02\x02/\u0120\x03\x02" + - "\x02\x021\u0123\x03\x02\x02\x023\u0128\x03\x02\x02\x025\u012B\x03\x02" + - "\x02\x027\u0131\x03\x02\x02\x029\u0138\x03\x02\x02\x02;\u013E\x03\x02" + - "\x02\x02=\u0144\x03\x02\x02\x02?\u014B\x03\x02\x02\x02A\u0150\x03\x02" + - "\x02\x02C\u0157\x03\x02\x02\x02E\u015E\x03\x02\x02\x02G\u0166\x03\x02" + - "\x02\x02I\u016B\x03\x02\x02\x02K\u016F\x03\x02\x02\x02M\u0171\x03\x02" + - "\x02\x02O\u0177\x03\x02\x02\x02Q\u017D\x03\x02\x02\x02S\u0180\x03\x02" + - "\x02\x02U\u0186\x03\x02\x02\x02W\u018C\x03\x02\x02\x02Y\u0190\x03\x02" + - "\x02\x02[\u0197\x03\x02\x02\x02]\u019D\x03\x02\x02\x02_\u01A2\x03\x02" + - "\x02\x02a\u01A8\x03\x02\x02\x02c\u01AD\x03\x02\x02\x02e\u01B2\x03\x02" + - "\x02\x02g\u01B8\x03\x02\x02\x02i\u01BD\x03\x02\x02\x02k\u01C5\x03\x02" + - "\x02\x02m\u01D4\x03\x02\x02\x02o\u01DC\x03\x02\x02\x02q\u01DE\x03\x02" + - "\x02\x02s\u01E7\x03\x02\x02\x02u\u01ED\x03\x02\x02\x02w\u01F0\x03\x02" + - "\x02\x02y\u01F4\x03\x02\x02\x02{\u01F9\x03\x02\x02\x02}\u01FF\x03\x02" + - "\x02\x02\x7F\u0201\x03\x02\x02\x02\x81\u0203\x03\x02\x02\x02\x83\u0205" + - "\x03\x02\x02\x02\x85\u0207\x03\x02\x02\x02\x87\u0209\x03\x02\x02\x02\x89" + - "\u020C\x03\x02\x02\x02\x8B\u0213\x03\x02\x02\x02\x8D\u021F\x03\x02\x02" + - "\x02\x8F\u0221\x03\x02\x02\x02\x91\u022C\x03\x02\x02\x02\x93\u0238\x03" + - "\x02\x02\x02\x95\u023E\x03\x02\x02\x02\x97\u0243\x03\x02\x02\x02\x99\u0245" + - "\x03\x02\x02\x02\x9B\u0247\x03\x02\x02\x02\x9D\u0249\x03\x02\x02\x02\x9F" + - "\u024B\x03\x02\x02\x02\xA1\u024D\x03\x02\x02\x02\xA3\u024F\x03\x02\x02" + - "\x02\xA5\u0251\x03\x02\x02\x02\xA7\u0253\x03\x02\x02\x02\xA9\u0255\x03" + - "\x02\x02\x02\xAB\u0257\x03\x02\x02\x02\xAD\u0259\x03\x02\x02\x02\xAF\u025B" + - "\x03\x02\x02\x02\xB1\u025D\x03\x02\x02\x02\xB3\u025F\x03\x02\x02\x02\xB5" + - "\u0261\x03\x02\x02\x02\xB7\u0263\x03\x02\x02\x02\xB9\u0265\x03\x02\x02" + - "\x02\xBB\u0267\x03\x02\x02\x02\xBD\u0269\x03\x02\x02\x02\xBF\u026B\x03" + - "\x02\x02\x02\xC1\u026D\x03\x02\x02\x02\xC3\u026F\x03\x02\x02\x02\xC5\u0271" + - "\x03\x02\x02\x02\xC7\u0273\x03\x02\x02\x02\xC9\u0275\x03\x02\x02\x02\xCB" + - "\xCC\x05\xA7T\x02\xCC\xCD\x05\xA1Q\x02\xCD\x04\x03\x02\x02\x02\xCE\xCF" + - "\x05\xBD_\x02\xCF\xD0\x05\xA5S\x02\xD0\xD1\x05\x9FP\x02\xD1\xD2\x05\xB1" + - "Y\x02\xD2\x06\x03\x02\x02\x02\xD3\xD4\x05\x9FP\x02\xD4\xD5\x05\xADW\x02" + - "\xD5\xD6\x05\xBB^\x02\xD6\xD7\x05\x9FP\x02\xD7\b\x03\x02\x02\x02\xD8\xD9" + - "\x05\xA5S\x02\xD9\xDA\x05\x97L\x02\xDA\xDB\x05\xBB^\x02\xDB\n\x03\x02" + - "\x02\x02\xDC\xDD\x05\xB3Z\x02\xDD\xDE\x05\xC1a\x02\xDE\xDF\x05\x9FP\x02" + - "\xDF\xE0\x05\xB9]\x02\xE0\xE1\x05\x97L\x02\xE1\xE2\x05\xADW\x02\xE2\xE3" + - "\x05\xADW\x02\xE3\f\x03\x02\x02\x02\xE4\xE5\x05\xBB^\x02\xE5\xE6\x05\xB3" + - "Z\x02\xE6\xE7\x05\xAFX\x02\xE7\xE8\x05\x9FP\x02\xE8\x0E\x03\x02\x02\x02" + - "\xE9\xEA\x05\xB3Z\x02\xEA\xEB\x05\xB1Y\x02\xEB\xEC\x05\x9FP\x02\xEC\x10" + - "\x03\x02\x02\x02\xED\xEE\x05\xADW\x02\xEE\xEF\x05\xB3Z\x02\xEF\xF0\x05" + - "\xB1Y\x02\xF0\xF1\x05\x9FP\x02\xF1\x12\x03\x02\x02\x02\xF2\xF3\x05\xBD" + - "_\x02\xF3\xF4\x05\xB9]\x02\xF4\xF5\x05\xBF`\x02\xF5\xF6\x05\x9FP\x02\xF6" + - "\x14\x03\x02\x02\x02\xF7\xF8\x05\xA1Q\x02\xF8\xF9\x05\x97L\x02\xF9\xFA" + - "\x05\xADW\x02\xFA\xFB\x05\xBB^\x02\xFB\xFC\x05\x9FP\x02\xFC\x16\x03\x02" + - "\x02\x02\xFD\xFE\x05\xB1Y\x02\xFE\xFF\x05\xB3Z\x02\xFF\u0100\x05\xBD_" + - "\x02\u0100\x18\x03\x02\x02\x02\u0101\u0102\x05\x97L\x02\u0102\u0103\x05" + - "\xB1Y\x02\u0103\u0104\x05\x9DO\x02\u0104\x1A\x03\x02\x02\x02\u0105\u0106" + - "\x05\xB3Z\x02\u0106\u0107\x05\xB9]\x02\u0107\x1C\x03\x02\x02\x02\u0108" + - "\u0109\x05\xA3R\x02\u0109\u010A\x05\xBD_\x02\u010A\x1E\x03\x02\x02\x02" + - "\u010B\u010C\x07@\x02\x02\u010C \x03\x02\x02\x02\u010D\u010E\x05\xADW" + - "\x02\u010E\u010F\x05\xBD_\x02\u010F\"\x03\x02\x02\x02\u0110\u0111\x07" + - ">\x02\x02\u0111$\x03\x02\x02\x02\u0112\u0113\x05\x9FP\x02\u0113\u0114" + - "\x05\xB7\\\x02\u0114&\x03\x02\x02\x02\u0115\u0116\x07?\x02\x02\u0116(" + - "\x03\x02\x02\x02\u0117\u0118\x05\xADW\x02\u0118\u0119\x05\x9FP\x02\u0119" + - "*\x03\x02\x02\x02\u011A\u011B\x07>\x02\x02\u011B\u011C\x07?\x02\x02\u011C" + - ",\x03\x02\x02\x02\u011D\u011E\x05\xA3R\x02\u011E\u011F\x05\x9FP\x02\u011F" + - ".\x03\x02\x02\x02\u0120\u0121\x07@\x02\x02\u0121\u0122\x07?\x02\x02\u0122" + - "0\x03\x02\x02\x02\u0123\u0124\x05\xA1Q\x02\u0124\u0125\x05\xB9]\x02\u0125" + - "\u0126\x05\xB3Z\x02\u0126\u0127\x05\xAFX\x02\u01272\x03\x02\x02\x02\u0128" + - "\u0129\x05\xBD_\x02\u0129\u012A\x05\xB3Z\x02\u012A4\x03\x02\x02\x02\u012B" + - "\u012C\x05\xA7T\x02\u012C\u012D\x05\xB1Y\x02\u012D\u012E\x05\xB5[\x02" + - "\u012E\u012F\x05\xBF`\x02\u012F\u0130\x05\xBD_\x02\u01306\x03\x02\x02" + - "\x02\u0131\u0132\x05\xB3Z\x02\u0132\u0133\x05\xBF`\x02\u0133\u0134\x05" + - "\xBD_\x02\u0134\u0135\x05\xB5[\x02\u0135\u0136\x05\xBF`\x02\u0136\u0137" + - "\x05\xBD_\x02\u01378\x03\x02\x02\x02\u0138\u0139\x05\xC3b\x02\u0139\u013A" + - "\x05\xA5S\x02\u013A\u013B\x05\x9FP\x02\u013B\u013C\x05\xB9]\x02\u013C" + - "\u013D\x05\x9FP\x02\u013D:\x03\x02\x02\x02\u013E\u013F\x05\xBB^\x02\u013F" + - "\u0140\x05\xADW\x02\u0140\u0141\x05\xB3Z\x02\u0141\u0142\x05\xBD_\x02" + - "\u0142\u0143\x05\xBB^\x02\u0143<\x03\x02\x02\x02\u0144\u0145\x05\xB9]" + - "\x02\u0145\u0146\x05\x9FP\x02\u0146\u0147\x05\xBD_\x02\u0147\u0148\x05" + - "\x97L\x02\u0148\u0149\x05\xA7T\x02\u0149\u014A\x05\xB1Y\x02\u014A>\x03" + - "\x02\x02\x02\u014B\u014C\x05\x9FP\x02\u014C\u014D\x05\x97L\x02\u014D\u014E" + - "\x05\x9BN\x02\u014E\u014F\x05\xA5S\x02\u014F@\x03\x02\x02\x02\u0150\u0151" + - "\x05\x9FP\x02\u0151\u0152\x05\xC5c\x02\u0152\u0153\x05\x9BN\x02\u0153" + - "\u0154\x05\x9FP\x02\u0154\u0155\x05\xB5[\x02\u0155\u0156\x05\xBD_\x02" + - "\u0156B\x03\x02\x02\x02\u0157\u0158\x05\xA1Q\x02\u0158\u0159\x05\xB3Z" + - "\x02\u0159\u015A\x05\xB9]\x02\u015A\u015B\x05\xA3R\x02\u015B\u015C\x05" + - "\x9FP\x02\u015C\u015D\x05\xBD_\x02\u015DD\x03\x02\x02\x02\u015E\u015F" + - "\x05\xC3b\x02\u015F\u0160\x05\xA7T\x02\u0160\u0161\x05\xBD_\x02\u0161" + - "\u0162\x05\xA5S\x02\u0162\u0163\x05\xB3Z\x02\u0163\u0164\x05\xBF`\x02" + - "\u0164\u0165\x05\xBD_\x02\u0165F\x03\x02\x02\x02\u0166\u0167\x05\xC3b" + - "\x02\u0167\u0168\x05\xA7T\x02\u0168\u0169\x05\xBD_\x02\u0169\u016A\x05" + - "\xA5S\x02\u016AH\x03\x02\x02\x02\u016B\u016C\x05\xBD_\x02\u016C\u016D" + - "\x05\x97L\x02\u016D\u016E\x05\xA3R\x02\u016EJ\x03\x02\x02\x02\u016F\u0170" + - "\x07%\x02\x02\u0170L\x03\x02\x02\x02\u0171\u0172\x05\xB9]\x02\u0172\u0173" + - "\x05\xB3Z\x02\u0173\u0174\x05\xBF`\x02\u0174\u0175\x05\xB1Y\x02\u0175" + - "\u0176\x05\x9DO\x02\u0176N\x03\x02\x02\x02\u0177\u0178\x05\xB9]\x02\u0178" + - "\u0179\x05\xB3Z\x02\u0179\u017A\x05\x99M\x02\u017A\u017B\x05\xA7T\x02" + - "\u017B\u017C\x05\xB1Y\x02\u017CP\x03\x02\x02\x02\u017D\u017E\x05\x99M" + - "\x02\u017E\u017F\x05\xC7d\x02\u017FR\x03\x02\x02\x02\u0180\u0181\x05\xAD" + - "W\x02\u0181\u0182\x05\x97L\x02\u0182\u0183\x05\x99M\x02\u0183\u0184\x05" + - "\x9FP\x02\u0184\u0185\x05\xADW\x02\u0185T\x03\x02\x02\x02\u0186\u0187" + - "\x05\x99M\x02\u0187\u0188\x05\xADW\x02\u0188\u0189\x05\xB3Z\x02\u0189" + - "\u018A\x05\x9BN\x02\u018A\u018B\x05\xABV\x02\u018BV\x03\x02\x02\x02\u018C" + - "\u018D\x05\xBD_\x02\u018D\u018E\x05\xB3Z\x02\u018E\u018F\x05\xB5[\x02" + - "\u018FX\x03\x02\x02\x02\u0190\u0191\x05\x99M\x02\u0191\u0192\x05\xB3Z" + - "\x02\u0192\u0193\x05\xBD_\x02\u0193\u0194\x05\xBD_\x02\u0194\u0195\x05" + - "\xB3Z\x02\u0195\u0196\x05\xAFX\x02\u0196Z\x03\x02\x02\x02\u0197\u0198" + - "\x05\xB1Y\x02\u0198\u0199\x05\xB3Z\x02\u0199\u019A\x05\xB9]\x02\u019A" + - "\u019B\x05\xBD_\x02\u019B\u019C\x05\xA5S\x02\u019C\\\x03\x02\x02\x02\u019D" + - "\u019E\x05\x9FP\x02\u019E\u019F\x05\x97L\x02\u019F\u01A0\x05\xBB^\x02" + - "\u01A0\u01A1\x05\xBD_\x02\u01A1^\x03\x02\x02\x02\u01A2\u01A3\x05\xBB^" + - "\x02\u01A3\u01A4\x05\xB3Z\x02\u01A4\u01A5\x05\xBF`\x02\u01A5\u01A6\x05" + - "\xBD_\x02\u01A6\u01A7\x05\xA5S\x02\u01A7`\x03\x02\x02\x02\u01A8\u01A9" + - "\x05\xC3b\x02\u01A9\u01AA\x05\x9FP\x02\u01AA\u01AB\x05\xBB^\x02\u01AB" + - "\u01AC\x05\xBD_\x02\u01ACb\x03\x02\x02\x02\u01AD\u01AE\x05\xBB^\x02\u01AE" + - "\u01AF\x05\xA7T\x02\u01AF\u01B0\x05\x9DO\x02\u01B0\u01B1\x05\x9FP\x02" + - "\u01B1d\x03\x02\x02\x02\u01B2\u01B3\x05\xBD_\x02\u01B3\u01B4\x05\xA7T" + - "\x02\u01B4\u01B5\x05\x9BN\x02\u01B5\u01B6\x05\xABV\x02\u01B6\u01B7\x05" + - "\xBB^\x02\u01B7f\x03\x02\x02\x02\u01B8\u01B9\x05\xBD_\x02\u01B9\u01BA" + - "\x05\xA7T\x02\u01BA\u01BB\x05\x9BN\x02\u01BB\u01BC\x05\xABV\x02\u01BC" + - "h\x03\x02\x02\x02\u01BD\u01BE\x05\xBB^\x02\u01BE\u01BF\x05\x9FP\x02\u01BF" + - "\u01C0\x05\x9BN\x02\u01C0\u01C1\x05\xB3Z\x02\u01C1\u01C2\x05\xB1Y\x02" + - "\u01C2\u01C3\x05\x9DO\x02\u01C3\u01C4\x05\xBB^\x02\u01C4j\x03\x02\x02" + - "\x02\u01C5\u01C6\x05\xBB^\x02\u01C6\u01C7\x05\x9FP\x02\u01C7\u01C8\x05" + - "\x9BN\x02\u01C8\u01C9\x05\xB3Z\x02\u01C9\u01CA\x05\xB1Y\x02\u01CA\u01CB" + - "\x05\x9DO\x02\u01CBl\x03\x02\x02\x02\u01CC\u01CD\x05\xA3R\x02\u01CD\u01CE" + - "\x05\xADW\x02\u01CE\u01CF\x05\xB3Z\x02\u01CF\u01D0\x05\x99M\x02\u01D0" + - "\u01D1\x05\x97L\x02\u01D1\u01D2\x05\xADW\x02\u01D2\u01D5\x03\x02\x02\x02" + - "\u01D3\u01D5\x05\xA3R\x02\u01D4\u01CC\x03\x02\x02\x02\u01D4\u01D3\x03" + - "\x02\x02\x02\u01D5n\x03\x02\x02\x02\u01D6\u01DD\x07-\x02\x02\u01D7\u01D8" + - "\x05\xB5[\x02\u01D8\u01D9\x05\xADW\x02\u01D9\u01DA\x05\xBF`\x02\u01DA" + - "\u01DB\x05\xBB^\x02\u01DB\u01DD\x03\x02\x02\x02\u01DC\u01D6\x03\x02\x02" + - "\x02\u01DC\u01D7\x03\x02\x02\x02\u01DDp\x03\x02\x02\x02\u01DE\u01DF\x05" + - "\xB9]\x02\u01DF\u01E0\x05\x9FP\x02\u01E0\u01E1\x05\x9DO\x02\u01E1\u01E2" + - "\x05\xBB^\x02\u01E2\u01E3\x05\xBD_\x02\u01E3\u01E4\x05\xB3Z\x02\u01E4" + - "\u01E5\x05\xB1Y\x02\u01E5\u01E6\x05\x9FP\x02\u01E6r\x03\x02\x02\x02\u01E7" + - "\u01E8\x05\xB5[\x02\u01E8\u01E9\x05\xBF`\x02\u01E9\u01EA\x05\xADW\x02" + - "\u01EA\u01EB\x05\xBB^\x02\u01EB\u01EC\x05\x9FP\x02\u01ECt\x03\x02\x02" + - "\x02\u01ED\u01EE\x05\x9DO\x02\u01EE\u01EF\x05\xB3Z\x02\u01EFv\x03\x02" + - "\x02\x02\u01F0\u01F1\x05\x9FP\x02\u01F1\u01F2\x05\xB1Y\x02\u01F2\u01F3" + - "\x05\x9DO\x02\u01F3x\x03\x02\x02\x02\u01F4\u01F5\x05\xB1Y\x02\u01F5\u01F6" + - "\x05\x97L\x02\u01F6\u01F7\x05\xAFX\x02\u01F7\u01F8\x05\x9FP\x02\u01F8" + - "z\x03\x02\x02\x02\u01F9\u01FA\x05\x9FP\x02\u01FA\u01FB\x05\xC1a\x02\u01FB" + - "\u01FC\x05\x9FP\x02\u01FC\u01FD\x05\xB9]\x02\u01FD\u01FE\x05\xC7d\x02" + - "\u01FE|\x03\x02\x02\x02\u01FF\u0200\x07.\x02\x02\u0200~\x03\x02\x02\x02" + - "\u0201\u0202\x07<\x02\x02\u0202\x80\x03\x02\x02\x02\u0203\u0204\x071\x02" + - "\x02\u0204\x82\x03\x02\x02\x02\u0205\u0206\x07/\x02\x02\u0206\x84\x03" + - "\x02\x02\x02\u0207\u0208\x07*\x02\x02\u0208\x86\x03\x02\x02\x02\u0209" + - "\u020A\x07+\x02\x02\u020A\x88\x03\x02\x02\x02\u020B\u020D\t\x02\x02\x02" + - "\u020C\u020B\x03\x02\x02\x02\u020D\u020E\x03\x02\x02\x02\u020E\u020C\x03" + - "\x02\x02\x02\u020E\u020F\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02\u0210" + - "\u0211\t\x03\x02\x02\u0211\x8A\x03\x02\x02\x02\u0212\u0214\t\x02\x02\x02" + - "\u0213\u0212\x03\x02\x02\x02\u0214\u0215\x03\x02\x02\x02\u0215\u0213\x03" + - "\x02\x02\x02\u0215\u0216\x03\x02\x02\x02\u0216\x8C\x03\x02\x02\x02\u0217" + - "\u021B\t\x04\x02\x02\u0218\u021A\t\x05\x02\x02\u0219\u0218\x03\x02\x02" + - "\x02\u021A\u021D\x03\x02\x02\x02\u021B\u0219\x03\x02\x02\x02\u021B\u021C" + - "\x03\x02\x02\x02\u021C\u0220\x03\x02\x02\x02\u021D\u021B\x03\x02\x02\x02" + - "\u021E\u0220\x07,\x02\x02\u021F\u0217\x03\x02\x02\x02\u021F\u021E\x03" + - "\x02\x02\x02\u0220\x8E\x03\x02\x02\x02\u0221\u0227\x07$\x02\x02\u0222" + - "\u0226\n\x06\x02\x02\u0223\u0224\x07^\x02\x02\u0224\u0226\x07$\x02\x02" + - "\u0225\u0222\x03\x02\x02\x02\u0225\u0223\x03\x02\x02\x02\u0226\u0229\x03" + - "\x02\x02\x02\u0227\u0225\x03\x02\x02\x02\u0227\u0228\x03\x02\x02\x02\u0228" + - "\u022A\x03\x02\x02\x02\u0229\u0227\x03\x02\x02\x02\u022A\u022B\x07$\x02" + - "\x02\u022B\x90"; + "`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" + + "i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x03\x02\x03\x02\x03\x02\x03\x03\x03" + + "\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03" + + "\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" + + "\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03" + + "\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03" + + "\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\r\x03" + + "\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x10" + + "\x03\x10\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13" + + "\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x17" + + "\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19" + + "\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B" + + "\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D" + + "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E" + + "\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03" + + " \x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03!\x03!\x03\"\x03\"\x03\"\x03\"" + + "\x03\"\x03\"\x03\"\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03$\x03$\x03$\x03" + + "$\x03$\x03$\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03&\x03&\x03&\x03&\x03" + + "\'\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03)\x03)\x03*\x03*\x03" + + "*\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03+\x03+\x03,\x03,\x03,\x03-\x03" + + "-\x03-\x03-\x03-\x03-\x03.\x03.\x03.\x03.\x03.\x03.\x03/\x03/\x03/\x03" + + "/\x030\x030\x030\x030\x030\x030\x030\x031\x031\x031\x031\x031\x031\x03" + + "2\x032\x032\x032\x032\x033\x033\x033\x033\x033\x033\x034\x034\x034\x03" + + "4\x034\x035\x035\x035\x035\x035\x036\x036\x036\x036\x036\x037\x037\x03" + + "7\x037\x037\x037\x038\x038\x038\x038\x038\x038\x039\x039\x039\x039\x03" + + "9\x03:\x03:\x03:\x03:\x03:\x03;\x03;\x03;\x03;\x03;\x03;\x03<\x03<\x03" + + "<\x03<\x03<\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x03>\x03>\x03>\x03" + + ">\x03>\x03>\x03>\x03?\x03?\x03?\x03?\x03?\x03?\x03?\x03?\x05?\u020E\n" + + "?\x03@\x03@\x03@\x03@\x03@\x03@\x05@\u0216\n@\x03A\x03A\x03A\x03A\x03" + + "A\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x03B\x03B\x03B\x03C\x03C\x03C\x03" + + "D\x03D\x03D\x03D\x03E\x03E\x03E\x03E\x03E\x03F\x03F\x03F\x03F\x03F\x03" + + "F\x03G\x03G\x03H\x03H\x03I\x03I\x03J\x03J\x03K\x03K\x03L\x03L\x03M\x06" + + "M\u0246\nM\rM\x0EM\u0247\x03M\x03M\x03N\x06N\u024D\nN\rN\x0EN\u024E\x03" + + "O\x03O\x07O\u0253\nO\fO\x0EO\u0256\vO\x03O\x05O\u0259\nO\x03P\x03P\x03" + + "P\x03P\x07P\u025F\nP\fP\x0EP\u0262\vP\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x07" + + "Q\u026A\nQ\fQ\x0EQ\u026D\vQ\x03Q\x03Q\x03R\x06R\u0272\nR\rR\x0ER\u0273" + + "\x03R\x03R\x03S\x03S\x03S\x03S\x03S\x03T\x03T\x03U\x03U\x03V\x03V\x03" + + "W\x03W\x03X\x03X\x03Y\x03Y\x03Z\x03Z\x03[\x03[\x03\\\x03\\\x03]\x03]\x03" + + "^\x03^\x03_\x03_\x03`\x03`\x03a\x03a\x03b\x03b\x03c\x03c\x03d\x03d\x03" + + "e\x03e\x03f\x03f\x03g\x03g\x03h\x03h\x03i\x03i\x03j\x03j\x03k\x03k\x03" + + "l\x03l\x03m\x03m\x02\x02\x02n\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02" + + "\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02" + + "\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%" + + "\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02\x1B" + + "5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02" + + "%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_" + + "\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02:s\x02;u\x02" + + "{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02C\x85\x02D\x87\x02" + + "E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02J\x93\x02K\x95\x02L\x97\x02" + + "M\x99\x02N\x9B\x02O\x9D\x02P\x9F\x02Q\xA1\x02R\xA3\x02S\xA5\x02T\xA7\x02" + + "\x02\xA9\x02\x02\xAB\x02\x02\xAD\x02\x02\xAF\x02\x02\xB1\x02\x02\xB3\x02" + + "\x02\xB5\x02\x02\xB7\x02\x02\xB9\x02\x02\xBB\x02\x02\xBD\x02\x02\xBF\x02" + + "\x02\xC1\x02\x02\xC3\x02\x02\xC5\x02\x02\xC7\x02\x02\xC9\x02\x02\xCB\x02" + + "\x02\xCD\x02\x02\xCF\x02\x02\xD1\x02\x02\xD3\x02\x02\xD5\x02\x02\xD7\x02" + + "\x02\xD9\x02\x02\x03\x02\"\x03\x022;\x04\x02IIii\x06\x02,,C\\aac|\x07" + + "\x02,,2;C\\aac|\x03\x02$$\x04\x02\f\f\x0F\x0F\x05\x02\v\f\x0F\x0F\"\"" + + "\x04\x02CCcc\x04\x02DDdd\x04\x02EEee\x04\x02FFff\x04\x02GGgg\x04\x02H" + + "Hhh\x04\x02JJjj\x04\x02KKkk\x04\x02LLll\x04\x02MMmm\x04\x02NNnn\x04\x02" + + "OOoo\x04\x02PPpp\x04\x02QQqq\x04\x02RRrr\x04\x02SSss\x04\x02TTtt\x04\x02" + + "UUuu\x04\x02VVvv\x04\x02WWww\x04\x02XXxx\x04\x02YYyy\x04\x02ZZzz\x04\x02" + + "[[{{\x04\x02\\\\||\x02\u029F\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02" + + "\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02" + + "\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02" + + "\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02" + + "\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02" + + "\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02" + + "%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03" + + "\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02" + + "\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x02" + + "9\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02" + + "\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02" + + "\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03" + + "\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02" + + "\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02" + + "[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02" + + "\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02" + + "\x02i\x03\x02\x02\x02\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03" + + "\x02\x02\x02\x02q\x03\x02\x02\x02\x02s\x03\x02\x02\x02\x02u\x03\x02\x02" + + "\x02\x02w\x03\x02\x02\x02\x02y\x03\x02\x02\x02\x02{\x03\x02\x02\x02\x02" + + "}\x03\x02\x02\x02\x02\x7F\x03\x02\x02\x02\x02\x81\x03\x02\x02\x02\x02" + + "\x83\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03\x02\x02\x02\x02" + + "\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x02\x8D\x03\x02\x02\x02\x02" + + "\x8F\x03\x02\x02\x02\x02\x91\x03\x02\x02\x02\x02\x93\x03\x02\x02\x02\x02" + + "\x95\x03\x02\x02\x02\x02\x97\x03\x02\x02\x02\x02\x99\x03\x02\x02\x02\x02" + + "\x9B\x03\x02\x02\x02\x02\x9D\x03\x02\x02\x02\x02\x9F\x03\x02\x02\x02\x02" + + "\xA1\x03\x02\x02\x02\x02\xA3\x03\x02\x02\x02\x02\xA5\x03\x02\x02\x02\x03" + + "\xDB\x03\x02\x02\x02\x05\xDE\x03\x02\x02\x02\x07\xE3\x03\x02\x02\x02\t" + + "\xE8\x03\x02\x02\x02\v\xEC\x03\x02\x02\x02\r\xF4\x03\x02\x02\x02\x0F\xF9" + + "\x03\x02\x02\x02\x11\xFD\x03\x02\x02\x02\x13\u0102\x03\x02\x02\x02\x15" + + "\u0107\x03\x02\x02\x02\x17\u010D\x03\x02\x02\x02\x19\u0111\x03\x02\x02" + + "\x02\x1B\u0115\x03\x02\x02\x02\x1D\u0118\x03\x02\x02\x02\x1F\u011B\x03" + + "\x02\x02\x02!\u011D\x03\x02\x02\x02#\u0120\x03\x02\x02\x02%\u0122\x03" + + "\x02\x02\x02\'\u0125\x03\x02\x02\x02)\u0127\x03\x02\x02\x02+\u012A\x03" + + "\x02\x02\x02-\u012D\x03\x02\x02\x02/\u0130\x03\x02\x02\x021\u0133\x03" + + "\x02\x02\x023\u0138\x03\x02\x02\x025\u013B\x03\x02\x02\x027\u0141\x03" + + "\x02\x02\x029\u0148\x03\x02\x02\x02;\u014E\x03\x02\x02\x02=\u0154\x03" + + "\x02\x02\x02?\u0159\x03\x02\x02\x02A\u0160\x03\x02\x02\x02C\u0165\x03" + + "\x02\x02\x02E\u016C\x03\x02\x02\x02G\u0173\x03\x02\x02\x02I\u0179\x03" + + "\x02\x02\x02K\u017C\x03\x02\x02\x02M\u0184\x03\x02\x02\x02O\u0189\x03" + + "\x02\x02\x02Q\u018D\x03\x02\x02\x02S\u018F\x03\x02\x02\x02U\u0195\x03" + + "\x02\x02\x02W\u019B\x03\x02\x02\x02Y\u019E\x03\x02\x02\x02[\u01A4\x03" + + "\x02\x02\x02]\u01AA\x03\x02\x02\x02_\u01AE\x03\x02\x02\x02a\u01B5\x03" + + "\x02\x02\x02c\u01BB\x03\x02\x02\x02e\u01C0\x03\x02\x02\x02g\u01C6\x03" + + "\x02\x02\x02i\u01CB\x03\x02\x02\x02k\u01D0\x03\x02\x02\x02m\u01D5\x03" + + "\x02\x02\x02o\u01DB\x03\x02\x02\x02q\u01E1\x03\x02\x02\x02s\u01E6\x03" + + "\x02\x02\x02u\u01EB\x03\x02\x02\x02w\u01F1\x03\x02\x02\x02y\u01F6\x03" + + "\x02\x02\x02{\u01FE\x03\x02\x02\x02}\u020D\x03\x02\x02\x02\x7F\u0215\x03" + + "\x02\x02\x02\x81\u0217\x03\x02\x02\x02\x83\u0220\x03\x02\x02\x02\x85\u0226" + + "\x03\x02\x02\x02\x87\u0229\x03\x02\x02\x02\x89\u022D\x03\x02\x02\x02\x8B" + + "\u0232\x03\x02\x02\x02\x8D\u0238\x03\x02\x02\x02\x8F\u023A\x03\x02\x02" + + "\x02\x91\u023C\x03\x02\x02\x02\x93\u023E\x03\x02\x02\x02\x95\u0240\x03" + + "\x02\x02\x02\x97\u0242\x03\x02\x02\x02\x99\u0245\x03\x02\x02\x02\x9B\u024C" + + "\x03\x02\x02\x02\x9D\u0258\x03\x02\x02\x02\x9F\u025A\x03\x02\x02\x02\xA1" + + "\u0265\x03\x02\x02\x02\xA3\u0271\x03\x02\x02\x02\xA5\u0277\x03\x02\x02" + + "\x02\xA7\u027C\x03\x02\x02\x02\xA9\u027E\x03\x02\x02\x02\xAB\u0280\x03" + + "\x02\x02\x02\xAD\u0282\x03\x02\x02\x02\xAF\u0284\x03\x02\x02\x02\xB1\u0286" + + "\x03\x02\x02\x02\xB3\u0288\x03\x02\x02\x02\xB5\u028A\x03\x02\x02\x02\xB7" + + "\u028C\x03\x02\x02\x02\xB9\u028E\x03\x02\x02\x02\xBB\u0290\x03\x02\x02" + + "\x02\xBD\u0292\x03\x02\x02\x02\xBF\u0294\x03\x02\x02\x02\xC1\u0296\x03" + + "\x02\x02\x02\xC3\u0298\x03\x02\x02\x02\xC5\u029A\x03\x02\x02\x02\xC7\u029C" + + "\x03\x02\x02\x02\xC9\u029E\x03\x02\x02\x02\xCB\u02A0\x03\x02\x02\x02\xCD" + + "\u02A2\x03\x02\x02\x02\xCF\u02A4\x03\x02\x02\x02\xD1\u02A6\x03\x02\x02" + + "\x02\xD3\u02A8\x03\x02\x02\x02\xD5\u02AA\x03\x02\x02\x02\xD7\u02AC\x03" + + "\x02\x02\x02\xD9\u02AE\x03\x02\x02\x02\xDB\xDC\x05\xB7\\\x02\xDC\xDD\x05" + + "\xB1Y\x02\xDD\x04\x03\x02\x02\x02\xDE\xDF\x05\xCDg\x02\xDF\xE0\x05\xB5" + + "[\x02\xE0\xE1\x05\xAFX\x02\xE1\xE2\x05\xC1a\x02\xE2\x06\x03\x02\x02\x02" + + "\xE3\xE4\x05\xAFX\x02\xE4\xE5\x05\xBD_\x02\xE5\xE6\x05\xCBf\x02\xE6\xE7" + + "\x05\xAFX\x02\xE7\b\x03\x02\x02\x02\xE8\xE9\x05\xB5[\x02\xE9\xEA\x05\xA7" + + "T\x02\xEA\xEB\x05\xCBf\x02\xEB\n\x03\x02\x02\x02\xEC\xED\x05\xC3b\x02" + + "\xED\xEE\x05\xD1i\x02\xEE\xEF\x05\xAFX\x02\xEF\xF0\x05\xC9e\x02\xF0\xF1" + + "\x05\xA7T\x02\xF1\xF2\x05\xBD_\x02\xF2\xF3\x05\xBD_\x02\xF3\f\x03\x02" + + "\x02\x02\xF4\xF5\x05\xCBf\x02\xF5\xF6\x05\xC3b\x02\xF6\xF7\x05\xBF`\x02" + + "\xF7\xF8\x05\xAFX\x02\xF8\x0E\x03\x02\x02\x02\xF9\xFA\x05\xC3b\x02\xFA" + + "\xFB\x05\xC1a\x02\xFB\xFC\x05\xAFX\x02\xFC\x10\x03\x02\x02\x02\xFD\xFE" + + "\x05\xBD_\x02\xFE\xFF\x05\xC3b\x02\xFF\u0100\x05\xC1a\x02\u0100\u0101" + + "\x05\xAFX\x02\u0101\x12\x03\x02\x02\x02\u0102\u0103\x05\xCDg\x02\u0103" + + "\u0104\x05\xC9e\x02\u0104\u0105\x05\xCFh\x02\u0105\u0106\x05\xAFX\x02" + + "\u0106\x14\x03\x02\x02\x02\u0107\u0108\x05\xB1Y\x02\u0108\u0109\x05\xA7" + + "T\x02\u0109\u010A\x05\xBD_\x02\u010A\u010B\x05\xCBf\x02\u010B\u010C\x05" + + "\xAFX\x02\u010C\x16\x03\x02\x02\x02\u010D\u010E\x05\xC1a\x02\u010E\u010F" + + "\x05\xC3b\x02\u010F\u0110\x05\xCDg\x02\u0110\x18\x03\x02\x02\x02\u0111" + + "\u0112\x05\xA7T\x02\u0112\u0113\x05\xC1a\x02\u0113\u0114\x05\xADW\x02" + + "\u0114\x1A\x03\x02\x02\x02\u0115\u0116\x05\xC3b\x02\u0116\u0117\x05\xC9" + + "e\x02\u0117\x1C\x03\x02\x02\x02\u0118\u0119\x05\xB3Z\x02\u0119\u011A\x05" + + "\xCDg\x02\u011A\x1E\x03\x02\x02\x02\u011B\u011C\x07@\x02\x02\u011C \x03" + + "\x02\x02\x02\u011D\u011E\x05\xBD_\x02\u011E\u011F\x05\xCDg\x02\u011F\"" + + "\x03\x02\x02\x02\u0120\u0121\x07>\x02\x02\u0121$\x03\x02\x02\x02\u0122" + + "\u0123\x05\xAFX\x02\u0123\u0124\x05\xC7d\x02\u0124&\x03\x02\x02\x02\u0125" + + "\u0126\x07?\x02\x02\u0126(\x03\x02\x02\x02\u0127\u0128\x05\xBD_\x02\u0128" + + "\u0129\x05\xAFX\x02\u0129*\x03\x02\x02\x02\u012A\u012B\x07>\x02\x02\u012B" + + "\u012C\x07?\x02\x02\u012C,\x03\x02\x02\x02\u012D\u012E\x05\xB3Z\x02\u012E" + + "\u012F\x05\xAFX\x02\u012F.\x03\x02\x02\x02\u0130\u0131\x07@\x02\x02\u0131" + + "\u0132\x07?\x02\x02\u01320\x03\x02\x02\x02\u0133\u0134\x05\xB1Y\x02\u0134" + + "\u0135\x05\xC9e\x02\u0135\u0136\x05\xC3b\x02\u0136\u0137\x05\xBF`\x02" + + "\u01372\x03\x02\x02\x02\u0138\u0139\x05\xCDg\x02\u0139\u013A\x05\xC3b" + + "\x02\u013A4\x03\x02\x02\x02\u013B\u013C\x05\xB7\\\x02\u013C\u013D\x05" + + "\xC1a\x02\u013D\u013E\x05\xC5c\x02\u013E\u013F\x05\xCFh\x02\u013F\u0140" + + "\x05\xCDg\x02\u01406\x03\x02\x02\x02\u0141\u0142\x05\xC3b\x02\u0142\u0143" + + "\x05\xCFh\x02\u0143\u0144\x05\xCDg\x02\u0144\u0145\x05\xC5c\x02\u0145" + + "\u0146\x05\xCFh\x02\u0146\u0147\x05\xCDg\x02\u01478\x03\x02\x02\x02\u0148" + + "\u0149\x05\xD3j\x02\u0149\u014A\x05\xB5[\x02\u014A\u014B\x05\xAFX\x02" + + "\u014B\u014C\x05\xC9e\x02\u014C\u014D\x05\xAFX\x02\u014D:\x03\x02\x02" + + "\x02\u014E\u014F\x05\xCBf\x02\u014F\u0150\x05\xBD_\x02\u0150\u0151\x05" + + "\xC3b\x02\u0151\u0152\x05\xCDg\x02\u0152\u0153\x05\xCBf\x02\u0153<\x03" + + "\x02\x02\x02\u0154\u0155\x05\xCBf\x02\u0155\u0156\x05\xBD_\x02\u0156\u0157" + + "\x05\xC3b\x02\u0157\u0158\x05\xCDg\x02\u0158>\x03\x02\x02\x02\u0159\u015A" + + "\x05\xC9e\x02\u015A\u015B\x05\xAFX\x02\u015B\u015C\x05\xCDg\x02\u015C" + + "\u015D\x05\xA7T\x02\u015D\u015E\x05\xB7\\\x02\u015E\u015F\x05\xC1a\x02" + + "\u015F@\x03\x02\x02\x02\u0160\u0161\x05\xAFX\x02\u0161\u0162\x05\xA7T" + + "\x02\u0162\u0163\x05\xABV\x02\u0163\u0164\x05\xB5[\x02\u0164B\x03\x02" + + "\x02\x02\u0165\u0166\x05\xAFX\x02\u0166\u0167\x05\xD5k\x02\u0167\u0168" + + "\x05\xABV\x02\u0168\u0169\x05\xAFX\x02\u0169\u016A\x05\xC5c\x02\u016A" + + "\u016B\x05\xCDg\x02\u016BD\x03\x02\x02\x02\u016C\u016D\x05\xB1Y\x02\u016D" + + "\u016E\x05\xC3b\x02\u016E\u016F\x05\xC9e\x02\u016F\u0170\x05\xB3Z\x02" + + "\u0170\u0171\x05\xAFX\x02\u0171\u0172\x05\xCDg\x02\u0172F\x03\x02\x02" + + "\x02\u0173\u0174\x05\xAFX\x02\u0174\u0175\x05\xBF`\x02\u0175\u0176\x05" + + "\xC5c\x02\u0176\u0177\x05\xCDg\x02\u0177\u0178\x05\xD7l\x02\u0178H\x03" + + "\x02\x02\x02\u0179\u017A\x05\xB7\\\x02\u017A\u017B\x05\xC1a\x02\u017B" + + "J\x03\x02\x02\x02\u017C\u017D\x05\xD3j\x02\u017D\u017E\x05\xB7\\\x02\u017E" + + "\u017F\x05\xCDg\x02\u017F\u0180\x05\xB5[\x02\u0180\u0181\x05\xC3b\x02" + + "\u0181\u0182\x05\xCFh\x02\u0182\u0183\x05\xCDg\x02\u0183L\x03\x02\x02" + + "\x02\u0184\u0185\x05\xD3j\x02\u0185\u0186\x05\xB7\\\x02\u0186\u0187\x05" + + "\xCDg\x02\u0187\u0188\x05\xB5[\x02\u0188N\x03\x02\x02\x02\u0189\u018A" + + "\x05\xCDg\x02\u018A\u018B\x05\xA7T\x02\u018B\u018C\x05\xB3Z\x02\u018C" + + "P\x03\x02\x02\x02\u018D\u018E\x07%\x02\x02\u018ER\x03\x02\x02\x02\u018F" + + "\u0190\x05\xC9e\x02\u0190\u0191\x05\xC3b\x02\u0191\u0192\x05\xCFh\x02" + + "\u0192\u0193\x05\xC1a\x02\u0193\u0194\x05\xADW\x02\u0194T\x03\x02\x02" + + "\x02\u0195\u0196\x05\xC9e\x02\u0196\u0197\x05\xC3b\x02\u0197\u0198\x05" + + "\xA9U\x02\u0198\u0199\x05\xB7\\\x02\u0199\u019A\x05\xC1a\x02\u019AV\x03" + + "\x02\x02\x02\u019B\u019C\x05\xA9U\x02\u019C\u019D\x05\xD7l\x02\u019DX" + + "\x03\x02\x02\x02\u019E\u019F\x05\xBD_\x02\u019F\u01A0\x05\xA7T\x02\u01A0" + + "\u01A1\x05\xA9U\x02\u01A1\u01A2\x05\xAFX\x02\u01A2\u01A3\x05\xBD_\x02" + + "\u01A3Z\x03\x02\x02\x02\u01A4\u01A5\x05\xA9U\x02\u01A5\u01A6\x05\xBD_" + + "\x02\u01A6\u01A7\x05\xC3b\x02\u01A7\u01A8\x05\xABV\x02\u01A8\u01A9\x05" + + "\xBB^\x02\u01A9\\\x03\x02\x02\x02\u01AA\u01AB\x05\xCDg\x02\u01AB\u01AC" + + "\x05\xC3b\x02\u01AC\u01AD\x05\xC5c\x02\u01AD^\x03\x02\x02\x02\u01AE\u01AF" + + "\x05\xA9U\x02\u01AF\u01B0\x05\xC3b\x02\u01B0\u01B1\x05\xCDg\x02\u01B1" + + "\u01B2\x05\xCDg\x02\u01B2\u01B3\x05\xC3b\x02\u01B3\u01B4\x05\xBF`\x02" + + "\u01B4`\x03\x02\x02\x02\u01B5\u01B6\x05\xC1a\x02\u01B6\u01B7\x05\xC3b" + + "\x02\u01B7\u01B8\x05\xC9e\x02\u01B8\u01B9\x05\xCDg\x02\u01B9\u01BA\x05" + + "\xB5[\x02\u01BAb\x03\x02\x02\x02\u01BB\u01BC\x05\xAFX\x02\u01BC\u01BD" + + "\x05\xA7T\x02\u01BD\u01BE\x05\xCBf\x02\u01BE\u01BF\x05\xCDg\x02\u01BF" + + "d\x03\x02\x02\x02\u01C0\u01C1\x05\xCBf\x02\u01C1\u01C2\x05\xC3b\x02\u01C2" + + "\u01C3\x05\xCFh\x02\u01C3\u01C4\x05\xCDg\x02\u01C4\u01C5\x05\xB5[\x02" + + "\u01C5f\x03\x02\x02\x02\u01C6\u01C7\x05\xD3j\x02\u01C7\u01C8\x05\xAFX" + + "\x02\u01C8\u01C9\x05\xCBf\x02\u01C9\u01CA\x05\xCDg\x02\u01CAh\x03\x02" + + "\x02\x02\u01CB\u01CC\x05\xCBf\x02\u01CC\u01CD\x05\xB7\\\x02\u01CD\u01CE" + + "\x05\xADW\x02\u01CE\u01CF\x05\xAFX\x02\u01CFj\x03\x02\x02\x02\u01D0\u01D1" + + "\x05\xBD_\x02\u01D1\u01D2\x05\xAFX\x02\u01D2\u01D3\x05\xB1Y\x02\u01D3" + + "\u01D4\x05\xCDg\x02\u01D4l\x03\x02\x02\x02\u01D5\u01D6\x05\xC9e\x02\u01D6" + + "\u01D7\x05\xB7\\\x02\u01D7\u01D8\x05\xB3Z\x02\u01D8\u01D9\x05\xB5[\x02" + + "\u01D9\u01DA\x05\xCDg\x02\u01DAn\x03\x02\x02\x02\u01DB\u01DC\x05\xB1Y" + + "\x02\u01DC\u01DD\x05\xC9e\x02\u01DD\u01DE\x05\xC3b\x02\u01DE\u01DF\x05" + + "\xC1a\x02\u01DF\u01E0\x05\xCDg\x02\u01E0p\x03\x02\x02\x02\u01E1\u01E2" + + "\x05\xA9U\x02\u01E2\u01E3\x05\xA7T\x02\u01E3\u01E4\x05\xABV\x02\u01E4" + + "\u01E5\x05\xBB^\x02\u01E5r\x03\x02\x02\x02\u01E6\u01E7\x05\xC1a\x02\u01E7" + + "\u01E8\x05\xCFh\x02\u01E8\u01E9\x05\xBD_\x02\u01E9\u01EA\x05\xBD_\x02" + + "\u01EAt\x03\x02\x02\x02\u01EB\u01EC\x05\xCDg\x02\u01EC\u01ED\x05\xB7\\" + + "\x02\u01ED\u01EE\x05\xABV\x02\u01EE\u01EF\x05\xBB^\x02\u01EF\u01F0\x05" + + "\xCBf\x02\u01F0v\x03\x02\x02\x02\u01F1\u01F2\x05\xCDg\x02\u01F2\u01F3" + + "\x05\xB7\\\x02\u01F3\u01F4\x05\xABV\x02\u01F4\u01F5\x05\xBB^\x02\u01F5" + + "x\x03\x02\x02\x02\u01F6\u01F7\x05\xCBf\x02\u01F7\u01F8\x05\xAFX\x02\u01F8" + + "\u01F9\x05\xABV\x02\u01F9\u01FA\x05\xC3b\x02\u01FA\u01FB\x05\xC1a\x02" + + "\u01FB\u01FC\x05\xADW\x02\u01FC\u01FD\x05\xCBf\x02\u01FDz\x03\x02\x02" + + "\x02\u01FE\u01FF\x05\xCBf\x02\u01FF\u0200\x05\xAFX\x02\u0200\u0201\x05" + + "\xABV\x02\u0201\u0202\x05\xC3b\x02\u0202\u0203\x05\xC1a\x02\u0203\u0204" + + "\x05\xADW\x02\u0204|\x03\x02\x02\x02\u0205\u0206\x05\xB3Z\x02\u0206\u0207" + + "\x05\xBD_\x02\u0207\u0208\x05\xC3b\x02\u0208\u0209\x05\xA9U\x02\u0209" + + "\u020A\x05\xA7T\x02\u020A\u020B\x05\xBD_\x02\u020B\u020E\x03\x02\x02\x02" + + "\u020C\u020E\x05\xB3Z\x02\u020D\u0205\x03\x02\x02\x02\u020D\u020C\x03" + + "\x02\x02\x02\u020E~\x03\x02\x02\x02\u020F\u0216\x07-\x02\x02\u0210\u0211" + + "\x05\xC5c\x02\u0211\u0212\x05\xBD_\x02\u0212\u0213\x05\xCFh\x02\u0213" + + "\u0214\x05\xCBf\x02\u0214\u0216\x03\x02\x02\x02\u0215\u020F\x03\x02\x02" + + "\x02\u0215\u0210\x03\x02\x02\x02\u0216\x80\x03\x02\x02\x02\u0217\u0218" + + "\x05\xC9e\x02\u0218\u0219\x05\xAFX\x02\u0219\u021A\x05\xADW\x02\u021A" + + "\u021B"; private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u022C\u022D\x07/\x02\x02\u022D\u022E\x07/\x02\x02\u022E" + - "\u0232\x03\x02\x02\x02\u022F\u0231\n\x07\x02\x02\u0230\u022F\x03\x02\x02" + - "\x02\u0231\u0234\x03\x02\x02\x02\u0232\u0230\x03\x02\x02\x02\u0232\u0233" + - "\x03\x02\x02\x02\u0233\u0235\x03\x02\x02\x02\u0234\u0232\x03\x02\x02\x02" + - "\u0235\u0236\bI\x02\x02\u0236\x92\x03\x02\x02\x02\u0237\u0239\t\b\x02" + - "\x02\u0238\u0237\x03\x02\x02\x02\u0239\u023A\x03\x02\x02\x02\u023A\u0238" + - "\x03\x02\x02\x02\u023A\u023B\x03\x02\x02\x02\u023B\u023C\x03\x02\x02\x02" + - "\u023C\u023D\bJ\x02\x02\u023D\x94\x03\x02\x02\x02\u023E\u023F\x06K\x02" + - "\x02\u023F\u0240\v\x02\x02\x02\u0240\u0241\x03\x02\x02\x02\u0241\u0242" + - "\bK\x02\x02\u0242\x96\x03\x02\x02\x02\u0243\u0244\t\t\x02\x02\u0244\x98" + - "\x03\x02\x02\x02\u0245\u0246\t\n\x02\x02\u0246\x9A\x03\x02\x02\x02\u0247" + - "\u0248\t\v\x02\x02\u0248\x9C\x03\x02\x02\x02\u0249\u024A\t\f\x02\x02\u024A" + - "\x9E\x03\x02\x02\x02\u024B\u024C\t\r\x02\x02\u024C\xA0\x03\x02\x02\x02" + - "\u024D\u024E\t\x0E\x02\x02\u024E\xA2\x03\x02\x02\x02\u024F\u0250\t\x03" + - "\x02\x02\u0250\xA4\x03\x02\x02\x02\u0251\u0252\t\x0F\x02\x02\u0252\xA6" + - "\x03\x02\x02\x02\u0253\u0254\t\x10\x02\x02\u0254\xA8\x03\x02\x02\x02\u0255" + - "\u0256\t\x11\x02\x02\u0256\xAA\x03\x02\x02\x02\u0257\u0258\t\x12\x02\x02" + - "\u0258\xAC\x03\x02\x02\x02\u0259\u025A\t\x13\x02\x02\u025A\xAE\x03\x02" + - "\x02\x02\u025B\u025C\t\x14\x02\x02\u025C\xB0\x03\x02\x02\x02\u025D\u025E" + - "\t\x15\x02\x02\u025E\xB2\x03\x02\x02\x02\u025F\u0260\t\x16\x02\x02\u0260" + - "\xB4\x03\x02\x02\x02\u0261\u0262\t\x17\x02\x02\u0262\xB6\x03\x02\x02\x02" + - "\u0263\u0264\t\x18\x02\x02\u0264\xB8\x03\x02\x02\x02\u0265\u0266\t\x19" + - "\x02\x02\u0266\xBA\x03\x02\x02\x02\u0267\u0268\t\x1A\x02\x02\u0268\xBC" + - "\x03\x02\x02\x02\u0269\u026A\t\x1B\x02\x02\u026A\xBE\x03\x02\x02\x02\u026B" + - "\u026C\t\x1C\x02\x02\u026C\xC0\x03\x02\x02\x02\u026D\u026E\t\x1D\x02\x02" + - "\u026E\xC2\x03\x02\x02\x02\u026F\u0270\t\x1E\x02\x02\u0270\xC4\x03\x02" + - "\x02\x02\u0271\u0272\t\x1F\x02\x02\u0272\xC6\x03\x02\x02\x02\u0273\u0274" + - "\t \x02\x02\u0274\xC8\x03\x02\x02\x02\u0275\u0276\t!\x02\x02\u0276\xCA" + - "\x03\x02\x02\x02\r\x02\u01D4\u01DC\u020E\u0215\u021B\u021F\u0225\u0227" + - "\u0232\u023A\x03\x02\x03\x02"; + "\x05\xCBf\x02\u021B\u021C\x05\xCDg\x02\u021C\u021D\x05\xC3b\x02\u021D" + + "\u021E\x05\xC1a\x02\u021E\u021F\x05\xAFX\x02\u021F\x82\x03\x02\x02\x02" + + "\u0220\u0221\x05\xC5c\x02\u0221\u0222\x05\xCFh\x02\u0222\u0223\x05\xBD" + + "_\x02\u0223\u0224\x05\xCBf\x02\u0224\u0225\x05\xAFX\x02\u0225\x84\x03" + + "\x02\x02\x02\u0226\u0227\x05\xADW\x02\u0227\u0228\x05\xC3b\x02\u0228\x86" + + "\x03\x02\x02\x02\u0229\u022A\x05\xAFX\x02\u022A\u022B\x05\xC1a\x02\u022B" + + "\u022C\x05\xADW\x02\u022C\x88\x03\x02\x02\x02\u022D\u022E\x05\xC1a\x02" + + "\u022E\u022F\x05\xA7T\x02\u022F\u0230\x05\xBF`\x02\u0230\u0231\x05\xAF" + + "X\x02\u0231\x8A\x03\x02\x02\x02\u0232\u0233\x05\xAFX\x02\u0233\u0234\x05" + + "\xD1i\x02\u0234\u0235\x05\xAFX\x02\u0235\u0236\x05\xC9e\x02\u0236\u0237" + + "\x05\xD7l\x02\u0237\x8C\x03\x02\x02\x02\u0238\u0239\x07.\x02\x02\u0239" + + "\x8E\x03\x02\x02\x02\u023A\u023B\x07<\x02\x02\u023B\x90\x03\x02\x02\x02" + + "\u023C\u023D\x071\x02\x02\u023D\x92\x03\x02\x02\x02\u023E\u023F\x07/\x02" + + "\x02\u023F\x94\x03\x02\x02\x02\u0240\u0241\x07*\x02\x02\u0241\x96\x03" + + "\x02\x02\x02\u0242\u0243\x07+\x02\x02\u0243\x98\x03\x02\x02\x02\u0244" + + "\u0246\t\x02\x02\x02\u0245\u0244\x03\x02\x02\x02\u0246\u0247\x03\x02\x02" + + "\x02\u0247\u0245\x03\x02\x02\x02\u0247\u0248\x03\x02\x02\x02\u0248\u0249" + + "\x03\x02\x02\x02\u0249\u024A\t\x03\x02\x02\u024A\x9A\x03\x02\x02\x02\u024B" + + "\u024D\t\x02\x02\x02\u024C\u024B\x03\x02\x02\x02\u024D\u024E\x03\x02\x02" + + "\x02\u024E\u024C\x03\x02\x02\x02\u024E\u024F\x03\x02\x02\x02\u024F\x9C" + + "\x03\x02\x02\x02\u0250\u0254\t\x04\x02\x02\u0251\u0253\t\x05\x02\x02\u0252" + + "\u0251\x03\x02\x02\x02\u0253\u0256\x03\x02\x02\x02\u0254\u0252\x03\x02" + + "\x02\x02\u0254\u0255\x03\x02\x02\x02\u0255\u0259\x03\x02\x02\x02\u0256" + + "\u0254\x03\x02\x02\x02\u0257\u0259\x07,\x02\x02\u0258\u0250\x03\x02\x02" + + "\x02\u0258\u0257\x03\x02\x02\x02\u0259\x9E\x03\x02\x02\x02\u025A\u0260" + + "\x07$\x02\x02\u025B\u025F\n\x06\x02\x02\u025C\u025D\x07^\x02\x02\u025D" + + "\u025F\x07$\x02\x02\u025E\u025B\x03\x02\x02\x02\u025E\u025C\x03\x02\x02" + + "\x02\u025F\u0262\x03\x02\x02\x02\u0260\u025E\x03\x02\x02\x02\u0260\u0261" + + "\x03\x02\x02\x02\u0261\u0263\x03\x02\x02\x02\u0262\u0260\x03\x02\x02\x02" + + "\u0263\u0264\x07$\x02\x02\u0264\xA0\x03\x02\x02\x02\u0265\u0266\x07/\x02" + + "\x02\u0266\u0267\x07/\x02\x02\u0267\u026B\x03\x02\x02\x02\u0268\u026A" + + "\n\x07\x02\x02\u0269\u0268\x03\x02\x02\x02\u026A\u026D\x03\x02\x02\x02" + + "\u026B\u0269\x03\x02\x02\x02\u026B\u026C\x03\x02\x02\x02\u026C\u026E\x03" + + "\x02\x02\x02\u026D\u026B\x03\x02\x02\x02\u026E\u026F\bQ\x02\x02\u026F" + + "\xA2\x03\x02\x02\x02\u0270\u0272\t\b\x02\x02\u0271\u0270\x03\x02\x02\x02" + + "\u0272\u0273\x03\x02\x02\x02\u0273\u0271\x03\x02\x02\x02\u0273\u0274\x03" + + "\x02\x02\x02\u0274\u0275\x03\x02\x02\x02\u0275\u0276\bR\x02\x02\u0276" + + "\xA4\x03\x02\x02\x02\u0277\u0278\x06S\x02\x02\u0278\u0279\v\x02\x02\x02" + + "\u0279\u027A\x03\x02\x02\x02\u027A\u027B\bS\x02\x02\u027B\xA6\x03\x02" + + "\x02\x02\u027C\u027D\t\t\x02\x02\u027D\xA8\x03\x02\x02\x02\u027E\u027F" + + "\t\n\x02\x02\u027F\xAA\x03\x02\x02\x02\u0280\u0281\t\v\x02\x02\u0281\xAC" + + "\x03\x02\x02\x02\u0282\u0283\t\f\x02\x02\u0283\xAE\x03\x02\x02\x02\u0284" + + "\u0285\t\r\x02\x02\u0285\xB0\x03\x02\x02\x02\u0286\u0287\t\x0E\x02\x02" + + "\u0287\xB2\x03\x02\x02\x02\u0288\u0289\t\x03\x02\x02\u0289\xB4\x03\x02" + + "\x02\x02\u028A\u028B\t\x0F\x02\x02\u028B\xB6\x03\x02\x02\x02\u028C\u028D" + + "\t\x10\x02\x02\u028D\xB8\x03\x02\x02\x02\u028E\u028F\t\x11\x02\x02\u028F" + + "\xBA\x03\x02\x02\x02\u0290\u0291\t\x12\x02\x02\u0291\xBC\x03\x02\x02\x02" + + "\u0292\u0293\t\x13\x02\x02\u0293\xBE\x03\x02\x02\x02\u0294\u0295\t\x14" + + "\x02\x02\u0295\xC0\x03\x02\x02\x02\u0296\u0297\t\x15\x02\x02\u0297\xC2" + + "\x03\x02\x02\x02\u0298\u0299\t\x16\x02\x02\u0299\xC4\x03\x02\x02\x02\u029A" + + "\u029B\t\x17\x02\x02\u029B\xC6\x03\x02\x02\x02\u029C\u029D\t\x18\x02\x02" + + "\u029D\xC8\x03\x02\x02\x02\u029E\u029F\t\x19\x02\x02\u029F\xCA\x03\x02" + + "\x02\x02\u02A0\u02A1\t\x1A\x02\x02\u02A1\xCC\x03\x02\x02\x02\u02A2\u02A3" + + "\t\x1B\x02\x02\u02A3\xCE\x03\x02\x02\x02\u02A4\u02A5\t\x1C\x02\x02\u02A5" + + "\xD0\x03\x02\x02\x02\u02A6\u02A7\t\x1D\x02\x02\u02A7\xD2\x03\x02\x02\x02" + + "\u02A8\u02A9\t\x1E\x02\x02\u02A9\xD4\x03\x02\x02\x02\u02AA\u02AB\t\x1F" + + "\x02\x02\u02AB\xD6\x03\x02\x02\x02\u02AC\u02AD\t \x02\x02\u02AD\xD8\x03" + + "\x02\x02\x02\u02AE\u02AF\t!\x02\x02\u02AF\xDA\x03\x02\x02\x02\r\x02\u020D" + + "\u0215\u0247\u024E\u0254\u0258\u025E\u0260\u026B\u0273\x03\x02\x03\x02"; public static readonly _serializedATN: string = Utils.join( [ SFMLLexer._serializedATNSegment0, diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLListener.ts b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLListener.ts index ec7ef9df2..3cf9507eb 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLListener.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLListener.ts @@ -64,6 +64,7 @@ import { SetOpContext } from "./SFMLParser"; import { LabelAccessContext } from "./SFMLParser"; import { RoundrobinContext } from "./SFMLParser"; import { LabelContext } from "./SFMLParser"; +import { EmptyslotsContext } from "./SFMLParser"; import { IdentifierContext } from "./SFMLParser"; import { StringContext } from "./SFMLParser"; import { NumberContext } from "./SFMLParser"; @@ -797,6 +798,17 @@ export interface SFMLListener extends ParseTreeListener { */ exitLabel?: (ctx: LabelContext) => void; + /** + * Enter a parse tree produced by `SFMLParser.emptyslots`. + * @param ctx the parse tree + */ + enterEmptyslots?: (ctx: EmptyslotsContext) => void; + /** + * Exit a parse tree produced by `SFMLParser.emptyslots`. + * @param ctx the parse tree + */ + exitEmptyslots?: (ctx: EmptyslotsContext) => void; + /** * Enter a parse tree produced by `SFMLParser.identifier`. * @param ctx the parse tree diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLParser.ts b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLParser.ts index a3015720c..70174779e 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLParser.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLParser.ts @@ -57,51 +57,59 @@ export class SFMLParser extends Parser { public static readonly OUTPUT = 27; public static readonly WHERE = 28; public static readonly SLOTS = 29; - public static readonly RETAIN = 30; - public static readonly EACH = 31; - public static readonly EXCEPT = 32; - public static readonly FORGET = 33; - public static readonly WITHOUT = 34; - public static readonly WITH = 35; - public static readonly TAG = 36; - public static readonly HASHTAG = 37; - public static readonly ROUND = 38; - public static readonly ROBIN = 39; - public static readonly BY = 40; - public static readonly LABEL = 41; - public static readonly BLOCK = 42; - public static readonly TOP = 43; - public static readonly BOTTOM = 44; - public static readonly NORTH = 45; - public static readonly EAST = 46; - public static readonly SOUTH = 47; - public static readonly WEST = 48; - public static readonly SIDE = 49; - public static readonly TICKS = 50; - public static readonly TICK = 51; - public static readonly SECONDS = 52; - public static readonly SECOND = 53; - public static readonly GLOBAL = 54; - public static readonly PLUS = 55; - public static readonly REDSTONE = 56; - public static readonly PULSE = 57; - public static readonly DO = 58; - public static readonly END = 59; - public static readonly NAME = 60; - public static readonly EVERY = 61; - public static readonly COMMA = 62; - public static readonly COLON = 63; - public static readonly SLASH = 64; - public static readonly DASH = 65; - public static readonly LPAREN = 66; - public static readonly RPAREN = 67; - public static readonly NUMBER_WITH_G_SUFFIX = 68; - public static readonly NUMBER = 69; - public static readonly IDENTIFIER = 70; - public static readonly STRING = 71; - public static readonly LINE_COMMENT = 72; - public static readonly WS = 73; - public static readonly UNUSED = 74; + public static readonly SLOT = 30; + public static readonly RETAIN = 31; + public static readonly EACH = 32; + public static readonly EXCEPT = 33; + public static readonly FORGET = 34; + public static readonly EMPTY = 35; + public static readonly IN = 36; + public static readonly WITHOUT = 37; + public static readonly WITH = 38; + public static readonly TAG = 39; + public static readonly HASHTAG = 40; + public static readonly ROUND = 41; + public static readonly ROBIN = 42; + public static readonly BY = 43; + public static readonly LABEL = 44; + public static readonly BLOCK = 45; + public static readonly TOP = 46; + public static readonly BOTTOM = 47; + public static readonly NORTH = 48; + public static readonly EAST = 49; + public static readonly SOUTH = 50; + public static readonly WEST = 51; + public static readonly SIDE = 52; + public static readonly LEFT = 53; + public static readonly RIGHT = 54; + public static readonly FRONT = 55; + public static readonly BACK = 56; + public static readonly NULL = 57; + public static readonly TICKS = 58; + public static readonly TICK = 59; + public static readonly SECONDS = 60; + public static readonly SECOND = 61; + public static readonly GLOBAL = 62; + public static readonly PLUS = 63; + public static readonly REDSTONE = 64; + public static readonly PULSE = 65; + public static readonly DO = 66; + public static readonly END = 67; + public static readonly NAME = 68; + public static readonly EVERY = 69; + public static readonly COMMA = 70; + public static readonly COLON = 71; + public static readonly SLASH = 72; + public static readonly DASH = 73; + public static readonly LPAREN = 74; + public static readonly RPAREN = 75; + public static readonly NUMBER_WITH_G_SUFFIX = 76; + public static readonly NUMBER = 77; + public static readonly IDENTIFIER = 78; + public static readonly STRING = 79; + public static readonly LINE_COMMENT = 80; + public static readonly WS = 81; + public static readonly UNUSED = 82; public static readonly RULE_program = 0; public static readonly RULE_name = 1; public static readonly RULE_trigger = 2; @@ -137,9 +145,10 @@ export class SFMLParser extends Parser { public static readonly RULE_labelAccess = 32; public static readonly RULE_roundrobin = 33; public static readonly RULE_label = 34; - public static readonly RULE_identifier = 35; - public static readonly RULE_string = 36; - public static readonly RULE_number = 37; + public static readonly RULE_emptyslots = 35; + public static readonly RULE_identifier = 36; + public static readonly RULE_string = 37; + public static readonly RULE_number = 38; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "program", "name", "trigger", "interval", "block", "statement", "forgetStatement", @@ -148,7 +157,8 @@ export class SFMLParser extends Parser { "resourceExclusion", "resourceId", "resourceIdList", "resourceIdDisjunction", "with", "withClause", "tagMatcher", "sidequalifier", "side", "slotqualifier", "rangeset", "range", "ifStatement", "boolexpr", "comparisonOp", "setOp", - "labelAccess", "roundrobin", "label", "identifier", "string", "number", + "labelAccess", "roundrobin", "label", "emptyslots", "identifier", "string", + "number", ]; private static readonly _LITERAL_NAMES: Array = [ @@ -157,21 +167,23 @@ export class SFMLParser extends Parser { undefined, "'>'", undefined, "'<'", undefined, "'='", undefined, "'<='", undefined, "'>='", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, "'#'", undefined, undefined, undefined, undefined, undefined, + undefined, undefined, undefined, undefined, "'#'", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, "','", "':'", "'/'", - "'-'", "'('", "')'", + undefined, undefined, undefined, undefined, undefined, undefined, undefined, + undefined, undefined, undefined, undefined, undefined, undefined, "','", + "':'", "'/'", "'-'", "'('", "')'", ]; private static readonly _SYMBOLIC_NAMES: Array = [ undefined, "IF", "THEN", "ELSE", "HAS", "OVERALL", "SOME", "ONE", "LONE", "TRUE", "FALSE", "NOT", "AND", "OR", "GT", "GT_SYMBOL", "LT", "LT_SYMBOL", "EQ", "EQ_SYMBOL", "LE", "LE_SYMBOL", "GE", "GE_SYMBOL", "FROM", "TO", - "INPUT", "OUTPUT", "WHERE", "SLOTS", "RETAIN", "EACH", "EXCEPT", "FORGET", - "WITHOUT", "WITH", "TAG", "HASHTAG", "ROUND", "ROBIN", "BY", "LABEL", - "BLOCK", "TOP", "BOTTOM", "NORTH", "EAST", "SOUTH", "WEST", "SIDE", "TICKS", - "TICK", "SECONDS", "SECOND", "GLOBAL", "PLUS", "REDSTONE", "PULSE", "DO", - "END", "NAME", "EVERY", "COMMA", "COLON", "SLASH", "DASH", "LPAREN", "RPAREN", + "INPUT", "OUTPUT", "WHERE", "SLOTS", "SLOT", "RETAIN", "EACH", "EXCEPT", + "FORGET", "EMPTY", "IN", "WITHOUT", "WITH", "TAG", "HASHTAG", "ROUND", + "ROBIN", "BY", "LABEL", "BLOCK", "TOP", "BOTTOM", "NORTH", "EAST", "SOUTH", + "WEST", "SIDE", "LEFT", "RIGHT", "FRONT", "BACK", "NULL", "TICKS", "TICK", + "SECONDS", "SECOND", "GLOBAL", "PLUS", "REDSTONE", "PULSE", "DO", "END", + "NAME", "EVERY", "COMMA", "COLON", "SLASH", "DASH", "LPAREN", "RPAREN", "NUMBER_WITH_G_SUFFIX", "NUMBER", "IDENTIFIER", "STRING", "LINE_COMMENT", "WS", "UNUSED", ]; @@ -209,31 +221,31 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 77; + this.state = 79; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.NAME) { { - this.state = 76; + this.state = 78; this.name(); } } - this.state = 82; + this.state = 84; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === SFMLParser.EVERY) { { { - this.state = 79; + this.state = 81; this.trigger(); } } - this.state = 84; + this.state = 86; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 85; + this.state = 87; this.match(SFMLParser.EOF); } } @@ -258,9 +270,9 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 87; + this.state = 89; this.match(SFMLParser.NAME); - this.state = 88; + this.state = 90; this.string(); } } @@ -283,22 +295,22 @@ export class SFMLParser extends Parser { let _localctx: TriggerContext = new TriggerContext(this._ctx, this.state); this.enterRule(_localctx, 4, SFMLParser.RULE_trigger); try { - this.state = 103; + this.state = 105; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) { case 1: _localctx = new TimerTriggerContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 90; + this.state = 92; this.match(SFMLParser.EVERY); - this.state = 91; + this.state = 93; this.interval(); - this.state = 92; + this.state = 94; this.match(SFMLParser.DO); - this.state = 93; + this.state = 95; this.block(); - this.state = 94; + this.state = 96; this.match(SFMLParser.END); } break; @@ -307,17 +319,17 @@ export class SFMLParser extends Parser { _localctx = new PulseTriggerContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 96; + this.state = 98; this.match(SFMLParser.EVERY); - this.state = 97; + this.state = 99; this.match(SFMLParser.REDSTONE); - this.state = 98; + this.state = 100; this.match(SFMLParser.PULSE); - this.state = 99; + this.state = 101; this.match(SFMLParser.DO); - this.state = 100; + this.state = 102; this.block(); - this.state = 101; + this.state = 103; this.match(SFMLParser.END); } break; @@ -343,7 +355,7 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 6, SFMLParser.RULE_interval); let _la: number; try { - this.state = 122; + this.state = 124; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.TICKS: @@ -356,41 +368,41 @@ export class SFMLParser extends Parser { _localctx = new IntervalSpaceContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 106; + this.state = 108; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.NUMBER) { { - this.state = 105; + this.state = 107; this.match(SFMLParser.NUMBER); } } - this.state = 109; + this.state = 111; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.GLOBAL) { { - this.state = 108; + this.state = 110; this.match(SFMLParser.GLOBAL); } } - this.state = 113; + this.state = 115; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.PLUS) { { - this.state = 111; + this.state = 113; this.match(SFMLParser.PLUS); - this.state = 112; + this.state = 114; this.match(SFMLParser.NUMBER); } } - this.state = 115; + this.state = 117; _la = this._input.LA(1); - if (!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & ((1 << (SFMLParser.TICKS - 50)) | (1 << (SFMLParser.TICK - 50)) | (1 << (SFMLParser.SECONDS - 50)) | (1 << (SFMLParser.SECOND - 50)))) !== 0))) { + if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (SFMLParser.TICKS - 58)) | (1 << (SFMLParser.TICK - 58)) | (1 << (SFMLParser.SECONDS - 58)) | (1 << (SFMLParser.SECOND - 58)))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -406,23 +418,23 @@ export class SFMLParser extends Parser { _localctx = new IntervalNoSpaceContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 116; + this.state = 118; this.match(SFMLParser.NUMBER_WITH_G_SUFFIX); - this.state = 119; + this.state = 121; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.PLUS) { { - this.state = 117; + this.state = 119; this.match(SFMLParser.PLUS); - this.state = 118; + this.state = 120; this.match(SFMLParser.NUMBER); } } - this.state = 121; + this.state = 123; _la = this._input.LA(1); - if (!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & ((1 << (SFMLParser.TICKS - 50)) | (1 << (SFMLParser.TICK - 50)) | (1 << (SFMLParser.SECONDS - 50)) | (1 << (SFMLParser.SECOND - 50)))) !== 0))) { + if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (SFMLParser.TICKS - 58)) | (1 << (SFMLParser.TICK - 58)) | (1 << (SFMLParser.SECONDS - 58)) | (1 << (SFMLParser.SECOND - 58)))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -460,17 +472,17 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 127; + this.state = 129; this._errHandler.sync(this); _la = this._input.LA(1); while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SFMLParser.IF) | (1 << SFMLParser.FROM) | (1 << SFMLParser.TO) | (1 << SFMLParser.INPUT) | (1 << SFMLParser.OUTPUT))) !== 0) || _la === SFMLParser.FORGET) { { { - this.state = 124; + this.state = 126; this.statement(); } } - this.state = 129; + this.state = 131; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -495,14 +507,14 @@ export class SFMLParser extends Parser { let _localctx: StatementContext = new StatementContext(this._ctx, this.state); this.enterRule(_localctx, 10, SFMLParser.RULE_statement); try { - this.state = 134; + this.state = 136; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.FROM: case SFMLParser.INPUT: this.enterOuterAlt(_localctx, 1); { - this.state = 130; + this.state = 132; this.inputStatement(); } break; @@ -510,21 +522,21 @@ export class SFMLParser extends Parser { case SFMLParser.OUTPUT: this.enterOuterAlt(_localctx, 2); { - this.state = 131; + this.state = 133; this.outputStatement(); } break; case SFMLParser.IF: this.enterOuterAlt(_localctx, 3); { - this.state = 132; + this.state = 134; this.ifStatement(); } break; case SFMLParser.FORGET: this.enterOuterAlt(_localctx, 4); { - this.state = 133; + this.state = 135; this.forgetStatement(); } break; @@ -555,42 +567,42 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 136; - this.match(SFMLParser.FORGET); this.state = 138; + this.match(SFMLParser.FORGET); + this.state = 140; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 52)) & ~0x1F) === 0 && ((1 << (_la - 52)) & ((1 << (SFMLParser.SECONDS - 52)) | (1 << (SFMLParser.SECOND - 52)) | (1 << (SFMLParser.GLOBAL - 52)) | (1 << (SFMLParser.REDSTONE - 52)) | (1 << (SFMLParser.IDENTIFIER - 52)) | (1 << (SFMLParser.STRING - 52)))) !== 0)) { + if (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & ((1 << (SFMLParser.TOP - 46)) | (1 << (SFMLParser.BOTTOM - 46)) | (1 << (SFMLParser.LEFT - 46)) | (1 << (SFMLParser.RIGHT - 46)) | (1 << (SFMLParser.FRONT - 46)) | (1 << (SFMLParser.BACK - 46)) | (1 << (SFMLParser.SECONDS - 46)) | (1 << (SFMLParser.SECOND - 46)) | (1 << (SFMLParser.GLOBAL - 46)) | (1 << (SFMLParser.REDSTONE - 46)))) !== 0) || _la === SFMLParser.IDENTIFIER || _la === SFMLParser.STRING) { { - this.state = 137; + this.state = 139; this.label(); } } - this.state = 144; + this.state = 146; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 11, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 140; + this.state = 142; this.match(SFMLParser.COMMA); - this.state = 141; + this.state = 143; this.label(); } } } - this.state = 146; + this.state = 148; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 11, this._ctx); } - this.state = 148; + this.state = 150; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.COMMA) { { - this.state = 147; + this.state = 149; this.match(SFMLParser.COMMA); } } @@ -617,85 +629,85 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 14, SFMLParser.RULE_inputStatement); let _la: number; try { - this.state = 174; + this.state = 176; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.INPUT: this.enterOuterAlt(_localctx, 1); { - this.state = 150; - this.match(SFMLParser.INPUT); this.state = 152; + this.match(SFMLParser.INPUT); + this.state = 154; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (SFMLParser.RETAIN - 30)) | (1 << (SFMLParser.WITHOUT - 30)) | (1 << (SFMLParser.WITH - 30)) | (1 << (SFMLParser.SECONDS - 30)) | (1 << (SFMLParser.SECOND - 30)) | (1 << (SFMLParser.GLOBAL - 30)) | (1 << (SFMLParser.REDSTONE - 30)))) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & ((1 << (SFMLParser.NUMBER - 69)) | (1 << (SFMLParser.IDENTIFIER - 69)) | (1 << (SFMLParser.STRING - 69)))) !== 0)) { + if (((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (SFMLParser.RETAIN - 31)) | (1 << (SFMLParser.WITHOUT - 31)) | (1 << (SFMLParser.WITH - 31)) | (1 << (SFMLParser.TOP - 31)) | (1 << (SFMLParser.BOTTOM - 31)) | (1 << (SFMLParser.LEFT - 31)) | (1 << (SFMLParser.RIGHT - 31)) | (1 << (SFMLParser.FRONT - 31)) | (1 << (SFMLParser.BACK - 31)) | (1 << (SFMLParser.SECONDS - 31)) | (1 << (SFMLParser.SECOND - 31)) | (1 << (SFMLParser.GLOBAL - 31)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (SFMLParser.REDSTONE - 64)) | (1 << (SFMLParser.NUMBER - 64)) | (1 << (SFMLParser.IDENTIFIER - 64)) | (1 << (SFMLParser.STRING - 64)))) !== 0)) { { - this.state = 151; + this.state = 153; this.inputResourceLimits(); } } - this.state = 155; + this.state = 157; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EXCEPT) { { - this.state = 154; + this.state = 156; this.resourceExclusion(); } } - this.state = 157; - this.match(SFMLParser.FROM); this.state = 159; + this.match(SFMLParser.FROM); + this.state = 161; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 158; + this.state = 160; this.match(SFMLParser.EACH); } } - this.state = 161; + this.state = 163; this.labelAccess(); } break; case SFMLParser.FROM: this.enterOuterAlt(_localctx, 2); { - this.state = 162; - this.match(SFMLParser.FROM); this.state = 164; + this.match(SFMLParser.FROM); + this.state = 166; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 163; + this.state = 165; this.match(SFMLParser.EACH); } } - this.state = 166; + this.state = 168; this.labelAccess(); - this.state = 167; - this.match(SFMLParser.INPUT); this.state = 169; + this.match(SFMLParser.INPUT); + this.state = 171; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (SFMLParser.RETAIN - 30)) | (1 << (SFMLParser.WITHOUT - 30)) | (1 << (SFMLParser.WITH - 30)) | (1 << (SFMLParser.SECONDS - 30)) | (1 << (SFMLParser.SECOND - 30)) | (1 << (SFMLParser.GLOBAL - 30)) | (1 << (SFMLParser.REDSTONE - 30)))) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & ((1 << (SFMLParser.NUMBER - 69)) | (1 << (SFMLParser.IDENTIFIER - 69)) | (1 << (SFMLParser.STRING - 69)))) !== 0)) { + if (((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (SFMLParser.RETAIN - 31)) | (1 << (SFMLParser.WITHOUT - 31)) | (1 << (SFMLParser.WITH - 31)) | (1 << (SFMLParser.TOP - 31)) | (1 << (SFMLParser.BOTTOM - 31)) | (1 << (SFMLParser.LEFT - 31)) | (1 << (SFMLParser.RIGHT - 31)) | (1 << (SFMLParser.FRONT - 31)) | (1 << (SFMLParser.BACK - 31)) | (1 << (SFMLParser.SECONDS - 31)) | (1 << (SFMLParser.SECOND - 31)) | (1 << (SFMLParser.GLOBAL - 31)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (SFMLParser.REDSTONE - 64)) | (1 << (SFMLParser.NUMBER - 64)) | (1 << (SFMLParser.IDENTIFIER - 64)) | (1 << (SFMLParser.STRING - 64)))) !== 0)) { { - this.state = 168; + this.state = 170; this.inputResourceLimits(); } } - this.state = 172; + this.state = 174; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EXCEPT) { { - this.state = 171; + this.state = 173; this.resourceExclusion(); } } @@ -726,85 +738,105 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 16, SFMLParser.RULE_outputStatement); let _la: number; try { - this.state = 200; + this.state = 208; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.OUTPUT: this.enterOuterAlt(_localctx, 1); { - this.state = 176; - this.match(SFMLParser.OUTPUT); this.state = 178; + this.match(SFMLParser.OUTPUT); + this.state = 180; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (SFMLParser.RETAIN - 30)) | (1 << (SFMLParser.WITHOUT - 30)) | (1 << (SFMLParser.WITH - 30)) | (1 << (SFMLParser.SECONDS - 30)) | (1 << (SFMLParser.SECOND - 30)) | (1 << (SFMLParser.GLOBAL - 30)) | (1 << (SFMLParser.REDSTONE - 30)))) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & ((1 << (SFMLParser.NUMBER - 69)) | (1 << (SFMLParser.IDENTIFIER - 69)) | (1 << (SFMLParser.STRING - 69)))) !== 0)) { + if (((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (SFMLParser.RETAIN - 31)) | (1 << (SFMLParser.WITHOUT - 31)) | (1 << (SFMLParser.WITH - 31)) | (1 << (SFMLParser.TOP - 31)) | (1 << (SFMLParser.BOTTOM - 31)) | (1 << (SFMLParser.LEFT - 31)) | (1 << (SFMLParser.RIGHT - 31)) | (1 << (SFMLParser.FRONT - 31)) | (1 << (SFMLParser.BACK - 31)) | (1 << (SFMLParser.SECONDS - 31)) | (1 << (SFMLParser.SECOND - 31)) | (1 << (SFMLParser.GLOBAL - 31)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (SFMLParser.REDSTONE - 64)) | (1 << (SFMLParser.NUMBER - 64)) | (1 << (SFMLParser.IDENTIFIER - 64)) | (1 << (SFMLParser.STRING - 64)))) !== 0)) { { - this.state = 177; + this.state = 179; this.outputResourceLimits(); } } - this.state = 181; + this.state = 183; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EXCEPT) { { - this.state = 180; + this.state = 182; this.resourceExclusion(); } } - this.state = 183; - this.match(SFMLParser.TO); this.state = 185; + this.match(SFMLParser.TO); + this.state = 187; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === SFMLParser.EMPTY) { + { + this.state = 186; + this.emptyslots(); + } + } + + this.state = 190; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 184; + this.state = 189; this.match(SFMLParser.EACH); } } - this.state = 187; + this.state = 192; this.labelAccess(); } break; case SFMLParser.TO: this.enterOuterAlt(_localctx, 2); { - this.state = 188; + this.state = 193; this.match(SFMLParser.TO); - this.state = 190; + this.state = 195; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === SFMLParser.EMPTY) { + { + this.state = 194; + this.emptyslots(); + } + } + + this.state = 198; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 189; + this.state = 197; this.match(SFMLParser.EACH); } } - this.state = 192; + this.state = 200; this.labelAccess(); - this.state = 193; + this.state = 201; this.match(SFMLParser.OUTPUT); - this.state = 195; + this.state = 203; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (SFMLParser.RETAIN - 30)) | (1 << (SFMLParser.WITHOUT - 30)) | (1 << (SFMLParser.WITH - 30)) | (1 << (SFMLParser.SECONDS - 30)) | (1 << (SFMLParser.SECOND - 30)) | (1 << (SFMLParser.GLOBAL - 30)) | (1 << (SFMLParser.REDSTONE - 30)))) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & ((1 << (SFMLParser.NUMBER - 69)) | (1 << (SFMLParser.IDENTIFIER - 69)) | (1 << (SFMLParser.STRING - 69)))) !== 0)) { + if (((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (SFMLParser.RETAIN - 31)) | (1 << (SFMLParser.WITHOUT - 31)) | (1 << (SFMLParser.WITH - 31)) | (1 << (SFMLParser.TOP - 31)) | (1 << (SFMLParser.BOTTOM - 31)) | (1 << (SFMLParser.LEFT - 31)) | (1 << (SFMLParser.RIGHT - 31)) | (1 << (SFMLParser.FRONT - 31)) | (1 << (SFMLParser.BACK - 31)) | (1 << (SFMLParser.SECONDS - 31)) | (1 << (SFMLParser.SECOND - 31)) | (1 << (SFMLParser.GLOBAL - 31)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (SFMLParser.REDSTONE - 64)) | (1 << (SFMLParser.NUMBER - 64)) | (1 << (SFMLParser.IDENTIFIER - 64)) | (1 << (SFMLParser.STRING - 64)))) !== 0)) { { - this.state = 194; + this.state = 202; this.outputResourceLimits(); } } - this.state = 198; + this.state = 206; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EXCEPT) { { - this.state = 197; + this.state = 205; this.resourceExclusion(); } } @@ -836,7 +868,7 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 202; + this.state = 210; this.resourceLimitList(); } } @@ -861,7 +893,7 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 204; + this.state = 212; this.resourceLimitList(); } } @@ -888,32 +920,32 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 206; + this.state = 214; this.resourceLimit(); - this.state = 211; + this.state = 219; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 207; + this.state = 215; this.match(SFMLParser.COMMA); - this.state = 208; + this.state = 216; this.resourceLimit(); } } } - this.state = 213; + this.state = 221; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); } - this.state = 215; + this.state = 223; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.COMMA) { { - this.state = 214; + this.state = 222; this.match(SFMLParser.COMMA); } } @@ -940,30 +972,30 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 24, SFMLParser.RULE_resourceLimit); let _la: number; try { - this.state = 229; + this.state = 237; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 32, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 34, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 218; + this.state = 226; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.RETAIN || _la === SFMLParser.NUMBER) { { - this.state = 217; + this.state = 225; this.limit(); } } - this.state = 220; + this.state = 228; this.resourceIdDisjunction(); - this.state = 222; + this.state = 230; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.WITHOUT || _la === SFMLParser.WITH) { { - this.state = 221; + this.state = 229; this.with(); } } @@ -974,14 +1006,14 @@ export class SFMLParser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 224; + this.state = 232; this.limit(); - this.state = 226; + this.state = 234; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.WITHOUT || _la === SFMLParser.WITH) { { - this.state = 225; + this.state = 233; this.with(); } } @@ -992,7 +1024,7 @@ export class SFMLParser extends Parser { case 3: this.enterOuterAlt(_localctx, 3); { - this.state = 228; + this.state = 236; this.with(); } break; @@ -1017,16 +1049,16 @@ export class SFMLParser extends Parser { let _localctx: LimitContext = new LimitContext(this._ctx, this.state); this.enterRule(_localctx, 26, SFMLParser.RULE_limit); try { - this.state = 236; + this.state = 244; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 35, this._ctx) ) { case 1: _localctx = new QuantityRetentionLimitContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 231; + this.state = 239; this.quantity(); - this.state = 232; + this.state = 240; this.retention(); } break; @@ -1035,7 +1067,7 @@ export class SFMLParser extends Parser { _localctx = new RetentionLimitContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 234; + this.state = 242; this.retention(); } break; @@ -1044,7 +1076,7 @@ export class SFMLParser extends Parser { _localctx = new QuantityLimitContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 235; + this.state = 243; this.quantity(); } break; @@ -1072,14 +1104,14 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 238; + this.state = 246; this.number(); - this.state = 240; + this.state = 248; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 239; + this.state = 247; this.match(SFMLParser.EACH); } } @@ -1108,16 +1140,16 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 242; + this.state = 250; this.match(SFMLParser.RETAIN); - this.state = 243; + this.state = 251; this.number(); - this.state = 245; + this.state = 253; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.EACH) { { - this.state = 244; + this.state = 252; this.match(SFMLParser.EACH); } } @@ -1145,9 +1177,9 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 247; + this.state = 255; this.match(SFMLParser.EXCEPT); - this.state = 248; + this.state = 256; this.resourceIdList(); } } @@ -1170,9 +1202,15 @@ export class SFMLParser extends Parser { let _localctx: ResourceIdContext = new ResourceIdContext(this._ctx, this.state); this.enterRule(_localctx, 34, SFMLParser.RULE_resourceId); try { - this.state = 270; + this.state = 278; this._errHandler.sync(this); switch (this._input.LA(1)) { + case SFMLParser.TOP: + case SFMLParser.BOTTOM: + case SFMLParser.LEFT: + case SFMLParser.RIGHT: + case SFMLParser.FRONT: + case SFMLParser.BACK: case SFMLParser.SECONDS: case SFMLParser.SECOND: case SFMLParser.GLOBAL: @@ -1182,56 +1220,56 @@ export class SFMLParser extends Parser { this.enterOuterAlt(_localctx, 1); { { - this.state = 250; + this.state = 258; this.identifier(); } - this.state = 267; + this.state = 275; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 41, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 43, this._ctx) ) { case 1: { - this.state = 251; + this.state = 259; this.match(SFMLParser.COLON); - this.state = 253; + this.state = 261; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) { case 1: { - this.state = 252; + this.state = 260; this.identifier(); } break; } - this.state = 265; + this.state = 273; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { case 1: { - this.state = 255; + this.state = 263; this.match(SFMLParser.COLON); - this.state = 257; + this.state = 265; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 37, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 39, this._ctx) ) { case 1: { - this.state = 256; + this.state = 264; this.identifier(); } break; } - this.state = 263; + this.state = 271; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 39, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 41, this._ctx) ) { case 1: { - this.state = 259; + this.state = 267; this.match(SFMLParser.COLON); - this.state = 261; + this.state = 269; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) { case 1: { - this.state = 260; + this.state = 268; this.identifier(); } break; @@ -1251,7 +1289,7 @@ export class SFMLParser extends Parser { _localctx = new StringResourceContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 269; + this.state = 277; this.string(); } break; @@ -1281,32 +1319,32 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 272; + this.state = 280; this.resourceId(); - this.state = 277; + this.state = 285; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 43, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 273; + this.state = 281; this.match(SFMLParser.COMMA); - this.state = 274; + this.state = 282; this.resourceId(); } } } - this.state = 279; + this.state = 287; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 43, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); } - this.state = 281; + this.state = 289; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 44, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { case 1: { - this.state = 280; + this.state = 288; this.match(SFMLParser.COMMA); } break; @@ -1335,32 +1373,32 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 283; + this.state = 291; this.resourceId(); - this.state = 288; + this.state = 296; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 284; + this.state = 292; this.match(SFMLParser.OR); - this.state = 285; + this.state = 293; this.resourceId(); } } } - this.state = 290; + this.state = 298; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); } - this.state = 292; + this.state = 300; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 291; + this.state = 299; this.match(SFMLParser.OR); } break; @@ -1386,24 +1424,24 @@ export class SFMLParser extends Parser { let _localctx: WithContext = new WithContext(this._ctx, this.state); this.enterRule(_localctx, 40, SFMLParser.RULE_with); try { - this.state = 298; + this.state = 306; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.WITH: this.enterOuterAlt(_localctx, 1); { - this.state = 294; + this.state = 302; this.match(SFMLParser.WITH); - this.state = 295; + this.state = 303; this.withClause(0); } break; case SFMLParser.WITHOUT: this.enterOuterAlt(_localctx, 2); { - this.state = 296; + this.state = 304; this.match(SFMLParser.WITHOUT); - this.state = 297; + this.state = 305; this.withClause(0); } break; @@ -1445,7 +1483,7 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 315; + this.state = 323; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.LPAREN: @@ -1454,11 +1492,11 @@ export class SFMLParser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 301; + this.state = 309; this.match(SFMLParser.LPAREN); - this.state = 302; + this.state = 310; this.withClause(0); - this.state = 303; + this.state = 311; this.match(SFMLParser.RPAREN); } break; @@ -1467,9 +1505,9 @@ export class SFMLParser extends Parser { _localctx = new WithNegationContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 305; + this.state = 313; this.match(SFMLParser.NOT); - this.state = 306; + this.state = 314; this.withClause(4); } break; @@ -1479,19 +1517,19 @@ export class SFMLParser extends Parser { _localctx = new WithTagContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 312; + this.state = 320; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.TAG: { - this.state = 307; + this.state = 315; this.match(SFMLParser.TAG); - this.state = 309; + this.state = 317; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.HASHTAG) { { - this.state = 308; + this.state = 316; this.match(SFMLParser.HASHTAG); } } @@ -1500,14 +1538,14 @@ export class SFMLParser extends Parser { break; case SFMLParser.HASHTAG: { - this.state = 311; + this.state = 319; this.match(SFMLParser.HASHTAG); } break; default: throw new NoViableAltException(this); } - this.state = 314; + this.state = 322; this.tagMatcher(); } break; @@ -1515,9 +1553,9 @@ export class SFMLParser extends Parser { throw new NoViableAltException(this); } this._ctx._stop = this._input.tryLT(-1); - this.state = 325; + this.state = 333; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 52, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 54, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -1525,20 +1563,20 @@ export class SFMLParser extends Parser { } _prevctx = _localctx; { - this.state = 323; + this.state = 331; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 51, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 53, this._ctx) ) { case 1: { _localctx = new WithConjunctionContext(new WithClauseContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, SFMLParser.RULE_withClause); - this.state = 317; + this.state = 325; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 318; + this.state = 326; this.match(SFMLParser.AND); - this.state = 319; + this.state = 327; this.withClause(4); } break; @@ -1547,22 +1585,22 @@ export class SFMLParser extends Parser { { _localctx = new WithDisjunctionContext(new WithClauseContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, SFMLParser.RULE_withClause); - this.state = 320; + this.state = 328; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 321; + this.state = 329; this.match(SFMLParser.OR); - this.state = 322; + this.state = 330; this.withClause(3); } break; } } } - this.state = 327; + this.state = 335; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 52, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 54, this._ctx); } } } @@ -1586,35 +1624,35 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 44, SFMLParser.RULE_tagMatcher); try { let _alt: number; - this.state = 346; + this.state = 354; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 55, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 57, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 328; + this.state = 336; this.identifier(); - this.state = 329; + this.state = 337; this.match(SFMLParser.COLON); - this.state = 330; + this.state = 338; this.identifier(); - this.state = 335; + this.state = 343; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 53, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 55, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 331; + this.state = 339; this.match(SFMLParser.SLASH); - this.state = 332; + this.state = 340; this.identifier(); } } } - this.state = 337; + this.state = 345; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 53, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 55, this._ctx); } } break; @@ -1622,25 +1660,25 @@ export class SFMLParser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 338; + this.state = 346; this.identifier(); - this.state = 343; + this.state = 351; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 54, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 56, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 339; + this.state = 347; this.match(SFMLParser.SLASH); - this.state = 340; + this.state = 348; this.identifier(); } } } - this.state = 345; + this.state = 353; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 54, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 56, this._ctx); } } break; @@ -1666,16 +1704,16 @@ export class SFMLParser extends Parser { this.enterRule(_localctx, 46, SFMLParser.RULE_sidequalifier); let _la: number; try { - this.state = 360; + this.state = 368; this._errHandler.sync(this); switch (this._input.LA(1)) { case SFMLParser.EACH: _localctx = new EachSideContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 348; + this.state = 356; this.match(SFMLParser.EACH); - this.state = 349; + this.state = 357; this.match(SFMLParser.SIDE); } break; @@ -1685,28 +1723,33 @@ export class SFMLParser extends Parser { case SFMLParser.EAST: case SFMLParser.SOUTH: case SFMLParser.WEST: + case SFMLParser.LEFT: + case SFMLParser.RIGHT: + case SFMLParser.FRONT: + case SFMLParser.BACK: + case SFMLParser.NULL: _localctx = new ListedSidesContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 350; + this.state = 358; this.side(); - this.state = 355; + this.state = 363; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === SFMLParser.COMMA) { { { - this.state = 351; + this.state = 359; this.match(SFMLParser.COMMA); - this.state = 352; + this.state = 360; this.side(); } } - this.state = 357; + this.state = 365; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 358; + this.state = 366; this.match(SFMLParser.SIDE); } break; @@ -1736,9 +1779,9 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 362; + this.state = 370; _la = this._input.LA(1); - if (!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & ((1 << (SFMLParser.TOP - 43)) | (1 << (SFMLParser.BOTTOM - 43)) | (1 << (SFMLParser.NORTH - 43)) | (1 << (SFMLParser.EAST - 43)) | (1 << (SFMLParser.SOUTH - 43)) | (1 << (SFMLParser.WEST - 43)))) !== 0))) { + if (!(((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & ((1 << (SFMLParser.TOP - 46)) | (1 << (SFMLParser.BOTTOM - 46)) | (1 << (SFMLParser.NORTH - 46)) | (1 << (SFMLParser.EAST - 46)) | (1 << (SFMLParser.SOUTH - 46)) | (1 << (SFMLParser.WEST - 46)) | (1 << (SFMLParser.LEFT - 46)) | (1 << (SFMLParser.RIGHT - 46)) | (1 << (SFMLParser.FRONT - 46)) | (1 << (SFMLParser.BACK - 46)) | (1 << (SFMLParser.NULL - 46)))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -1768,12 +1811,23 @@ export class SFMLParser extends Parser { public slotqualifier(): SlotqualifierContext { let _localctx: SlotqualifierContext = new SlotqualifierContext(this._ctx, this.state); this.enterRule(_localctx, 50, SFMLParser.RULE_slotqualifier); + let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 364; - this.match(SFMLParser.SLOTS); - this.state = 365; + this.state = 372; + _la = this._input.LA(1); + if (!(_la === SFMLParser.SLOTS || _la === SFMLParser.SLOT)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 373; this.rangeset(); } } @@ -1799,21 +1853,21 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 367; + this.state = 375; this.range(); - this.state = 372; + this.state = 380; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === SFMLParser.COMMA) { { { - this.state = 368; + this.state = 376; this.match(SFMLParser.COMMA); - this.state = 369; + this.state = 377; this.range(); } } - this.state = 374; + this.state = 382; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -1841,16 +1895,16 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 375; + this.state = 383; this.number(); - this.state = 378; + this.state = 386; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.DASH) { { - this.state = 376; + this.state = 384; this.match(SFMLParser.DASH); - this.state = 377; + this.state = 385; this.number(); } } @@ -1880,51 +1934,51 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 380; + this.state = 388; this.match(SFMLParser.IF); - this.state = 381; + this.state = 389; this.boolexpr(0); - this.state = 382; + this.state = 390; this.match(SFMLParser.THEN); - this.state = 383; + this.state = 391; this.block(); - this.state = 392; + this.state = 400; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 62, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 384; + this.state = 392; this.match(SFMLParser.ELSE); - this.state = 385; + this.state = 393; this.match(SFMLParser.IF); - this.state = 386; + this.state = 394; this.boolexpr(0); - this.state = 387; + this.state = 395; this.match(SFMLParser.THEN); - this.state = 388; + this.state = 396; this.block(); } } } - this.state = 394; + this.state = 402; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 62, this._ctx); } - this.state = 397; + this.state = 405; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.ELSE) { { - this.state = 395; + this.state = 403; this.match(SFMLParser.ELSE); - this.state = 396; + this.state = 404; this.block(); } } - this.state = 399; + this.state = 407; this.match(SFMLParser.END); } } @@ -1962,16 +2016,16 @@ export class SFMLParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 433; + this.state = 441; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 69, this._ctx) ) { case 1: { _localctx = new BooleanTrueContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 402; + this.state = 410; this.match(SFMLParser.TRUE); } break; @@ -1981,7 +2035,7 @@ export class SFMLParser extends Parser { _localctx = new BooleanFalseContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 403; + this.state = 411; this.match(SFMLParser.FALSE); } break; @@ -1991,11 +2045,11 @@ export class SFMLParser extends Parser { _localctx = new BooleanParenContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 404; + this.state = 412; this.match(SFMLParser.LPAREN); - this.state = 405; + this.state = 413; this.boolexpr(0); - this.state = 406; + this.state = 414; this.match(SFMLParser.RPAREN); } break; @@ -2005,9 +2059,9 @@ export class SFMLParser extends Parser { _localctx = new BooleanNegationContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 408; + this.state = 416; this.match(SFMLParser.NOT); - this.state = 409; + this.state = 417; this.boolexpr(5); } break; @@ -2017,52 +2071,52 @@ export class SFMLParser extends Parser { _localctx = new BooleanHasContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 411; + this.state = 419; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SFMLParser.OVERALL) | (1 << SFMLParser.SOME) | (1 << SFMLParser.ONE) | (1 << SFMLParser.LONE) | (1 << SFMLParser.EACH))) !== 0) || _la === SFMLParser.EVERY) { + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (SFMLParser.OVERALL - 5)) | (1 << (SFMLParser.SOME - 5)) | (1 << (SFMLParser.ONE - 5)) | (1 << (SFMLParser.LONE - 5)) | (1 << (SFMLParser.EACH - 5)))) !== 0) || _la === SFMLParser.EVERY) { { - this.state = 410; + this.state = 418; this.setOp(); } } - this.state = 413; + this.state = 421; this.labelAccess(); - this.state = 414; + this.state = 422; this.match(SFMLParser.HAS); - this.state = 415; + this.state = 423; this.comparisonOp(); - this.state = 416; + this.state = 424; this.number(); - this.state = 418; + this.state = 426; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 63, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 65, this._ctx) ) { case 1: { - this.state = 417; + this.state = 425; this.resourceIdDisjunction(); } break; } - this.state = 421; + this.state = 429; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 64, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) { case 1: { - this.state = 420; + this.state = 428; this.with(); } break; } - this.state = 425; + this.state = 433; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 65, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) { case 1: { - this.state = 423; + this.state = 431; this.match(SFMLParser.EXCEPT); - this.state = 424; + this.state = 432; this.resourceIdList(); } break; @@ -2075,16 +2129,16 @@ export class SFMLParser extends Parser { _localctx = new BooleanRedstoneContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 427; + this.state = 435; this.match(SFMLParser.REDSTONE); - this.state = 431; + this.state = 439; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 68, this._ctx) ) { case 1: { - this.state = 428; + this.state = 436; this.comparisonOp(); - this.state = 429; + this.state = 437; this.number(); } break; @@ -2093,9 +2147,9 @@ export class SFMLParser extends Parser { break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 443; + this.state = 451; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 69, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 71, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -2103,20 +2157,20 @@ export class SFMLParser extends Parser { } _prevctx = _localctx; { - this.state = 441; + this.state = 449; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 68, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 70, this._ctx) ) { case 1: { _localctx = new BooleanConjunctionContext(new BoolexprContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, SFMLParser.RULE_boolexpr); - this.state = 435; + this.state = 443; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 436; + this.state = 444; this.match(SFMLParser.AND); - this.state = 437; + this.state = 445; this.boolexpr(5); } break; @@ -2125,22 +2179,22 @@ export class SFMLParser extends Parser { { _localctx = new BooleanDisjunctionContext(new BoolexprContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, SFMLParser.RULE_boolexpr); - this.state = 438; + this.state = 446; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 439; + this.state = 447; this.match(SFMLParser.OR); - this.state = 440; + this.state = 448; this.boolexpr(4); } break; } } } - this.state = 445; + this.state = 453; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 69, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 71, this._ctx); } } } @@ -2166,7 +2220,7 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 446; + this.state = 454; _la = this._input.LA(1); if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SFMLParser.GT) | (1 << SFMLParser.GT_SYMBOL) | (1 << SFMLParser.LT) | (1 << SFMLParser.LT_SYMBOL) | (1 << SFMLParser.EQ) | (1 << SFMLParser.EQ_SYMBOL) | (1 << SFMLParser.LE) | (1 << SFMLParser.LE_SYMBOL) | (1 << SFMLParser.GE) | (1 << SFMLParser.GE_SYMBOL))) !== 0))) { this._errHandler.recoverInline(this); @@ -2202,9 +2256,9 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 448; + this.state = 456; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SFMLParser.OVERALL) | (1 << SFMLParser.SOME) | (1 << SFMLParser.ONE) | (1 << SFMLParser.LONE) | (1 << SFMLParser.EACH))) !== 0) || _la === SFMLParser.EVERY)) { + if (!(((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (SFMLParser.OVERALL - 5)) | (1 << (SFMLParser.SOME - 5)) | (1 << (SFMLParser.ONE - 5)) | (1 << (SFMLParser.LONE - 5)) | (1 << (SFMLParser.EACH - 5)))) !== 0) || _la === SFMLParser.EVERY)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2238,50 +2292,50 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 450; + this.state = 458; this.label(); - this.state = 455; + this.state = 463; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === SFMLParser.COMMA) { { { - this.state = 451; + this.state = 459; this.match(SFMLParser.COMMA); - this.state = 452; + this.state = 460; this.label(); } } - this.state = 457; + this.state = 465; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 459; + this.state = 467; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === SFMLParser.ROUND) { { - this.state = 458; + this.state = 466; this.roundrobin(); } } - this.state = 462; + this.state = 470; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & ((1 << (SFMLParser.EACH - 31)) | (1 << (SFMLParser.TOP - 31)) | (1 << (SFMLParser.BOTTOM - 31)) | (1 << (SFMLParser.NORTH - 31)) | (1 << (SFMLParser.EAST - 31)) | (1 << (SFMLParser.SOUTH - 31)) | (1 << (SFMLParser.WEST - 31)))) !== 0)) { + if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (SFMLParser.EACH - 32)) | (1 << (SFMLParser.TOP - 32)) | (1 << (SFMLParser.BOTTOM - 32)) | (1 << (SFMLParser.NORTH - 32)) | (1 << (SFMLParser.EAST - 32)) | (1 << (SFMLParser.SOUTH - 32)) | (1 << (SFMLParser.WEST - 32)) | (1 << (SFMLParser.LEFT - 32)) | (1 << (SFMLParser.RIGHT - 32)) | (1 << (SFMLParser.FRONT - 32)) | (1 << (SFMLParser.BACK - 32)) | (1 << (SFMLParser.NULL - 32)))) !== 0)) { { - this.state = 461; + this.state = 469; this.sidequalifier(); } } - this.state = 465; + this.state = 473; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SFMLParser.SLOTS) { + if (_la === SFMLParser.SLOTS || _la === SFMLParser.SLOT) { { - this.state = 464; + this.state = 472; this.slotqualifier(); } } @@ -2310,13 +2364,13 @@ export class SFMLParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 467; + this.state = 475; this.match(SFMLParser.ROUND); - this.state = 468; + this.state = 476; this.match(SFMLParser.ROBIN); - this.state = 469; + this.state = 477; this.match(SFMLParser.BY); - this.state = 470; + this.state = 478; _la = this._input.LA(1); if (!(_la === SFMLParser.LABEL || _la === SFMLParser.BLOCK)) { this._errHandler.recoverInline(this); @@ -2349,9 +2403,15 @@ export class SFMLParser extends Parser { let _localctx: LabelContext = new LabelContext(this._ctx, this.state); this.enterRule(_localctx, 68, SFMLParser.RULE_label); try { - this.state = 474; + this.state = 482; this._errHandler.sync(this); switch (this._input.LA(1)) { + case SFMLParser.TOP: + case SFMLParser.BOTTOM: + case SFMLParser.LEFT: + case SFMLParser.RIGHT: + case SFMLParser.FRONT: + case SFMLParser.BACK: case SFMLParser.SECONDS: case SFMLParser.SECOND: case SFMLParser.GLOBAL: @@ -2361,7 +2421,7 @@ export class SFMLParser extends Parser { this.enterOuterAlt(_localctx, 1); { { - this.state = 472; + this.state = 480; this.identifier(); } } @@ -2370,7 +2430,7 @@ export class SFMLParser extends Parser { _localctx = new StringLabelContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 473; + this.state = 481; this.string(); } break; @@ -2393,16 +2453,56 @@ export class SFMLParser extends Parser { return _localctx; } // @RuleVersion(0) + public emptyslots(): EmptyslotsContext { + let _localctx: EmptyslotsContext = new EmptyslotsContext(this._ctx, this.state); + this.enterRule(_localctx, 70, SFMLParser.RULE_emptyslots); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 484; + this.match(SFMLParser.EMPTY); + this.state = 485; + _la = this._input.LA(1); + if (!(_la === SFMLParser.SLOTS || _la === SFMLParser.SLOT)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 486; + this.match(SFMLParser.IN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) public identifier(): IdentifierContext { let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 70, SFMLParser.RULE_identifier); + this.enterRule(_localctx, 72, SFMLParser.RULE_identifier); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 476; + this.state = 488; _la = this._input.LA(1); - if (!(((((_la - 52)) & ~0x1F) === 0 && ((1 << (_la - 52)) & ((1 << (SFMLParser.SECONDS - 52)) | (1 << (SFMLParser.SECOND - 52)) | (1 << (SFMLParser.GLOBAL - 52)) | (1 << (SFMLParser.REDSTONE - 52)) | (1 << (SFMLParser.IDENTIFIER - 52)))) !== 0))) { + if (!(((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & ((1 << (SFMLParser.TOP - 46)) | (1 << (SFMLParser.BOTTOM - 46)) | (1 << (SFMLParser.LEFT - 46)) | (1 << (SFMLParser.RIGHT - 46)) | (1 << (SFMLParser.FRONT - 46)) | (1 << (SFMLParser.BACK - 46)) | (1 << (SFMLParser.SECONDS - 46)) | (1 << (SFMLParser.SECOND - 46)) | (1 << (SFMLParser.GLOBAL - 46)) | (1 << (SFMLParser.REDSTONE - 46)))) !== 0) || _la === SFMLParser.IDENTIFIER)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2431,11 +2531,11 @@ export class SFMLParser extends Parser { // @RuleVersion(0) public string(): StringContext { let _localctx: StringContext = new StringContext(this._ctx, this.state); - this.enterRule(_localctx, 72, SFMLParser.RULE_string); + this.enterRule(_localctx, 74, SFMLParser.RULE_string); try { this.enterOuterAlt(_localctx, 1); { - this.state = 478; + this.state = 490; this.match(SFMLParser.STRING); } } @@ -2456,11 +2556,11 @@ export class SFMLParser extends Parser { // @RuleVersion(0) public number(): NumberContext { let _localctx: NumberContext = new NumberContext(this._ctx, this.state); - this.enterRule(_localctx, 74, SFMLParser.RULE_number); + this.enterRule(_localctx, 76, SFMLParser.RULE_number); try { this.enterOuterAlt(_localctx, 1); { - this.state = 480; + this.state = 492; this.match(SFMLParser.NUMBER); } } @@ -2511,249 +2611,255 @@ export class SFMLParser extends Parser { } public static readonly _serializedATN: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03L\u01E5\x04\x02" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03T\u01F1\x04\x02" + "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + - "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x03\x02\x05\x02P\n\x02\x03\x02\x07" + - "\x02S\n\x02\f\x02\x0E\x02V\v\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03" + - "\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04" + - "\x03\x04\x03\x04\x03\x04\x03\x04\x05\x04j\n\x04\x03\x05\x05\x05m\n\x05" + - "\x03\x05\x05\x05p\n\x05\x03\x05\x03\x05\x05\x05t\n\x05\x03\x05\x03\x05" + - "\x03\x05\x03\x05\x05\x05z\n\x05\x03\x05\x05\x05}\n\x05\x03\x06\x07\x06" + - "\x80\n\x06\f\x06\x0E\x06\x83\v\x06\x03\x07\x03\x07\x03\x07\x03\x07\x05" + - "\x07\x89\n\x07\x03\b\x03\b\x05\b\x8D\n\b\x03\b\x03\b\x07\b\x91\n\b\f\b" + - "\x0E\b\x94\v\b\x03\b\x05\b\x97\n\b\x03\t\x03\t\x05\t\x9B\n\t\x03\t\x05" + - "\t\x9E\n\t\x03\t\x03\t\x05\t\xA2\n\t\x03\t\x03\t\x03\t\x05\t\xA7\n\t\x03" + - "\t\x03\t\x03\t\x05\t\xAC\n\t\x03\t\x05\t\xAF\n\t\x05\t\xB1\n\t\x03\n\x03" + - "\n\x05\n\xB5\n\n\x03\n\x05\n\xB8\n\n\x03\n\x03\n\x05\n\xBC\n\n\x03\n\x03" + - "\n\x03\n\x05\n\xC1\n\n\x03\n\x03\n\x03\n\x05\n\xC6\n\n\x03\n\x05\n\xC9" + - "\n\n\x05\n\xCB\n\n\x03\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03\r\x07\r\xD4" + - "\n\r\f\r\x0E\r\xD7\v\r\x03\r\x05\r\xDA\n\r\x03\x0E\x05\x0E\xDD\n\x0E\x03" + - "\x0E\x03\x0E\x05\x0E\xE1\n\x0E\x03\x0E\x03\x0E\x05\x0E\xE5\n\x0E\x03\x0E" + - "\x05\x0E\xE8\n\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x05\x0F\xEF" + - "\n\x0F\x03\x10\x03\x10\x05\x10\xF3\n\x10\x03\x11\x03\x11\x03\x11\x05\x11" + - "\xF8\n\x11\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x05\x13\u0100" + - "\n\x13\x03\x13\x03\x13\x05\x13\u0104\n\x13\x03\x13\x03\x13\x05\x13\u0108" + - "\n\x13\x05\x13\u010A\n\x13\x05\x13\u010C\n\x13\x05\x13\u010E\n\x13\x03" + - "\x13\x05\x13\u0111\n\x13\x03\x14\x03\x14\x03\x14\x07\x14\u0116\n\x14\f" + - "\x14\x0E\x14\u0119\v\x14\x03\x14\x05\x14\u011C\n\x14\x03\x15\x03\x15\x03" + - "\x15\x07\x15\u0121\n\x15\f\x15\x0E\x15\u0124\v\x15\x03\x15\x05\x15\u0127" + - "\n\x15\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\u012D\n\x16\x03\x17\x03" + - "\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x05\x17\u0138" + - "\n\x17\x03\x17\x05\x17\u013B\n\x17\x03\x17\x05\x17\u013E\n\x17\x03\x17" + - "\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x07\x17\u0146\n\x17\f\x17\x0E" + - "\x17\u0149\v\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x07\x18\u0150" + - "\n\x18\f\x18\x0E\x18\u0153\v\x18\x03\x18\x03\x18\x03\x18\x07\x18\u0158" + - "\n\x18\f\x18\x0E\x18\u015B\v\x18\x05\x18\u015D\n\x18\x03\x19\x03\x19\x03" + - "\x19\x03\x19\x03\x19\x07\x19\u0164\n\x19\f\x19\x0E\x19\u0167\v\x19\x03" + - "\x19\x03\x19\x05\x19\u016B\n\x19\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B" + - "\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0175\n\x1C\f\x1C\x0E\x1C\u0178\v\x1C" + - "\x03\x1D\x03\x1D\x03\x1D\x05\x1D\u017D\n\x1D\x03\x1E\x03\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07\x1E\u0189\n\x1E" + - "\f\x1E\x0E\x1E\u018C\v\x1E\x03\x1E\x03\x1E\x05\x1E\u0190\n\x1E\x03\x1E" + - "\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F" + - "\x03\x1F\x03\x1F\x05\x1F\u019E\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03" + - "\x1F\x05\x1F\u01A5\n\x1F\x03\x1F\x05\x1F\u01A8\n\x1F\x03\x1F\x03\x1F\x05" + - "\x1F\u01AC\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F\u01B2\n\x1F\x05" + - "\x1F\u01B4\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x07\x1F" + - "\u01BC\n\x1F\f\x1F\x0E\x1F\u01BF\v\x1F\x03 \x03 \x03!\x03!\x03\"\x03\"" + - "\x03\"\x07\"\u01C8\n\"\f\"\x0E\"\u01CB\v\"\x03\"\x05\"\u01CE\n\"\x03\"" + - "\x05\"\u01D1\n\"\x03\"\x05\"\u01D4\n\"\x03#\x03#\x03#\x03#\x03#\x03$\x03" + - "$\x05$\u01DD\n$\x03%\x03%\x03&\x03&\x03\'\x03\'\x03\'\x02\x02\x04,<(\x02" + - "\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02" + - "\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02" + - ",\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02" + - "H\x02J\x02L\x02\x02\b\x03\x0247\x03\x02-2\x03\x02\x10\x19\x05\x02\x07" + - "\n!!??\x03\x02+,\x05\x0268::HH\x02\u0212\x02O\x03\x02\x02\x02\x04Y\x03" + - "\x02\x02\x02\x06i\x03\x02\x02\x02\b|\x03\x02\x02\x02\n\x81\x03\x02\x02" + - "\x02\f\x88\x03\x02\x02\x02\x0E\x8A\x03\x02\x02\x02\x10\xB0\x03\x02\x02" + - "\x02\x12\xCA\x03\x02\x02\x02\x14\xCC\x03\x02\x02\x02\x16\xCE\x03\x02\x02" + - "\x02\x18\xD0\x03\x02\x02\x02\x1A\xE7\x03\x02\x02\x02\x1C\xEE\x03\x02\x02" + - "\x02\x1E\xF0\x03\x02\x02\x02 \xF4\x03\x02\x02\x02\"\xF9\x03\x02\x02\x02" + - "$\u0110\x03\x02\x02\x02&\u0112\x03\x02\x02\x02(\u011D\x03\x02\x02\x02" + - "*\u012C\x03\x02\x02\x02,\u013D\x03\x02\x02\x02.\u015C\x03\x02\x02\x02" + - "0\u016A\x03\x02\x02\x022\u016C\x03\x02\x02\x024\u016E\x03\x02\x02\x02" + - "6\u0171\x03\x02\x02\x028\u0179\x03\x02\x02\x02:\u017E\x03\x02\x02\x02" + - "<\u01B3\x03\x02\x02\x02>\u01C0\x03\x02\x02\x02@\u01C2\x03\x02\x02\x02" + - "B\u01C4\x03\x02\x02\x02D\u01D5\x03\x02\x02\x02F\u01DC\x03\x02\x02\x02" + - "H\u01DE\x03\x02\x02\x02J\u01E0\x03\x02\x02\x02L\u01E2\x03\x02\x02\x02" + - "NP\x05\x04\x03\x02ON\x03\x02\x02\x02OP\x03\x02\x02\x02PT\x03\x02\x02\x02" + - "QS\x05\x06\x04\x02RQ\x03\x02\x02\x02SV\x03\x02\x02\x02TR\x03\x02\x02\x02" + - "TU\x03\x02\x02\x02UW\x03\x02\x02\x02VT\x03\x02\x02\x02WX\x07\x02\x02\x03" + - "X\x03\x03\x02\x02\x02YZ\x07>\x02\x02Z[\x05J&\x02[\x05\x03\x02\x02\x02" + - "\\]\x07?\x02\x02]^\x05\b\x05\x02^_\x07<\x02\x02_`\x05\n\x06\x02`a\x07" + - "=\x02\x02aj\x03\x02\x02\x02bc\x07?\x02\x02cd\x07:\x02\x02de\x07;\x02\x02" + - "ef\x07<\x02\x02fg\x05\n\x06\x02gh\x07=\x02\x02hj\x03\x02\x02\x02i\\\x03" + - "\x02\x02\x02ib\x03\x02\x02\x02j\x07\x03\x02\x02\x02km\x07G\x02\x02lk\x03" + - "\x02\x02\x02lm\x03\x02\x02\x02mo\x03\x02\x02\x02np\x078\x02\x02on\x03" + - "\x02\x02\x02op\x03\x02\x02\x02ps\x03\x02\x02\x02qr\x079\x02\x02rt\x07" + - "G\x02\x02sq\x03\x02\x02\x02st\x03\x02\x02\x02tu\x03\x02\x02\x02u}\t\x02" + - "\x02\x02vy\x07F\x02\x02wx\x079\x02\x02xz\x07G\x02\x02yw\x03\x02\x02\x02" + - "yz\x03\x02\x02\x02z{\x03\x02\x02\x02{}\t\x02\x02\x02|l\x03\x02\x02\x02" + - "|v\x03\x02\x02\x02}\t\x03\x02\x02\x02~\x80\x05\f\x07\x02\x7F~\x03\x02" + - "\x02\x02\x80\x83\x03\x02\x02\x02\x81\x7F\x03\x02\x02\x02\x81\x82\x03\x02" + - "\x02\x02\x82\v\x03\x02\x02\x02\x83\x81\x03\x02\x02\x02\x84\x89\x05\x10" + - "\t\x02\x85\x89\x05\x12\n\x02\x86\x89\x05:\x1E\x02\x87\x89\x05\x0E\b\x02" + - "\x88\x84\x03\x02\x02\x02\x88\x85\x03\x02\x02\x02\x88\x86\x03\x02\x02\x02" + - "\x88\x87\x03\x02\x02\x02\x89\r\x03\x02\x02\x02\x8A\x8C\x07#\x02\x02\x8B" + - "\x8D\x05F$\x02\x8C\x8B\x03\x02\x02\x02\x8C\x8D\x03\x02\x02\x02\x8D\x92" + - "\x03\x02\x02\x02\x8E\x8F\x07@\x02\x02\x8F\x91\x05F$\x02\x90\x8E\x03\x02" + - "\x02\x02\x91\x94\x03\x02\x02\x02\x92\x90\x03\x02\x02\x02\x92\x93\x03\x02" + - "\x02\x02\x93\x96\x03\x02\x02\x02\x94\x92\x03\x02\x02\x02\x95\x97\x07@" + - "\x02\x02\x96\x95\x03\x02\x02\x02\x96\x97\x03\x02\x02\x02\x97\x0F\x03\x02" + - "\x02\x02\x98\x9A\x07\x1C\x02\x02\x99\x9B\x05\x14\v\x02\x9A\x99\x03\x02" + - "\x02\x02\x9A\x9B\x03\x02\x02\x02\x9B\x9D\x03\x02\x02\x02\x9C\x9E\x05\"" + - "\x12\x02\x9D\x9C\x03\x02\x02\x02\x9D\x9E\x03\x02\x02\x02\x9E\x9F\x03\x02" + - "\x02\x02\x9F\xA1\x07\x1A\x02\x02\xA0\xA2\x07!\x02\x02\xA1\xA0\x03\x02" + - "\x02\x02\xA1\xA2\x03\x02\x02\x02\xA2\xA3\x03\x02\x02\x02\xA3\xB1\x05B" + - "\"\x02\xA4\xA6\x07\x1A\x02\x02\xA5\xA7\x07!\x02\x02\xA6\xA5\x03\x02\x02" + - "\x02\xA6\xA7\x03\x02\x02\x02\xA7\xA8\x03\x02\x02\x02\xA8\xA9\x05B\"\x02" + - "\xA9\xAB\x07\x1C\x02\x02\xAA\xAC\x05\x14\v\x02\xAB\xAA\x03\x02\x02\x02" + - "\xAB\xAC\x03\x02\x02\x02\xAC\xAE\x03\x02\x02\x02\xAD\xAF\x05\"\x12\x02" + - "\xAE\xAD\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB1\x03\x02\x02\x02" + - "\xB0\x98\x03\x02\x02\x02\xB0\xA4\x03\x02\x02\x02\xB1\x11\x03\x02\x02\x02" + - "\xB2\xB4\x07\x1D\x02\x02\xB3\xB5\x05\x16\f\x02\xB4\xB3\x03\x02\x02\x02" + - "\xB4\xB5\x03\x02\x02\x02\xB5\xB7\x03\x02\x02\x02\xB6\xB8\x05\"\x12\x02" + - "\xB7\xB6\x03\x02\x02\x02\xB7\xB8\x03\x02\x02\x02\xB8\xB9\x03\x02\x02\x02" + - "\xB9\xBB\x07\x1B\x02\x02\xBA\xBC\x07!\x02\x02\xBB\xBA\x03\x02\x02\x02" + - "\xBB\xBC\x03\x02\x02\x02\xBC\xBD\x03\x02\x02\x02\xBD\xCB\x05B\"\x02\xBE" + - "\xC0\x07\x1B\x02\x02\xBF\xC1\x07!\x02\x02\xC0\xBF\x03\x02\x02\x02\xC0" + - "\xC1\x03\x02\x02\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC3\x05B\"\x02\xC3\xC5" + - "\x07\x1D\x02\x02\xC4\xC6\x05\x16\f\x02\xC5\xC4\x03\x02\x02\x02\xC5\xC6" + - "\x03\x02\x02\x02\xC6\xC8\x03\x02\x02\x02\xC7\xC9\x05\"\x12\x02\xC8\xC7" + - "\x03\x02\x02\x02\xC8\xC9\x03\x02\x02\x02\xC9\xCB\x03\x02\x02\x02\xCA\xB2" + - "\x03\x02\x02\x02\xCA\xBE\x03\x02\x02\x02\xCB\x13\x03\x02\x02\x02\xCC\xCD" + - "\x05\x18\r\x02\xCD\x15\x03\x02\x02\x02\xCE\xCF\x05\x18\r\x02\xCF\x17\x03" + - "\x02\x02\x02\xD0\xD5\x05\x1A\x0E\x02\xD1\xD2\x07@\x02\x02\xD2\xD4\x05" + - "\x1A\x0E\x02\xD3\xD1\x03\x02\x02\x02\xD4\xD7\x03\x02\x02\x02\xD5\xD3\x03" + - "\x02\x02\x02\xD5\xD6\x03\x02\x02\x02\xD6\xD9\x03\x02\x02\x02\xD7\xD5\x03" + - "\x02\x02\x02\xD8\xDA\x07@\x02\x02\xD9\xD8\x03\x02\x02\x02\xD9\xDA\x03" + - "\x02\x02\x02\xDA\x19\x03\x02\x02\x02\xDB\xDD\x05\x1C\x0F\x02\xDC\xDB\x03" + - "\x02\x02\x02\xDC\xDD\x03\x02\x02\x02\xDD\xDE\x03\x02\x02\x02\xDE\xE0\x05" + - "(\x15\x02\xDF\xE1\x05*\x16\x02\xE0\xDF\x03\x02\x02\x02\xE0\xE1\x03\x02" + - "\x02\x02\xE1\xE8\x03\x02\x02\x02\xE2\xE4\x05\x1C\x0F\x02\xE3\xE5\x05*" + - "\x16\x02\xE4\xE3\x03\x02\x02\x02\xE4\xE5\x03\x02\x02\x02\xE5\xE8\x03\x02" + - "\x02\x02\xE6\xE8\x05*\x16\x02\xE7\xDC\x03\x02\x02\x02\xE7\xE2\x03\x02" + - "\x02\x02\xE7\xE6\x03\x02\x02\x02\xE8\x1B\x03\x02\x02\x02\xE9\xEA\x05\x1E" + - "\x10\x02\xEA\xEB\x05 \x11\x02\xEB\xEF\x03\x02\x02\x02\xEC\xEF\x05 \x11" + - "\x02\xED\xEF\x05\x1E\x10\x02\xEE\xE9\x03\x02\x02\x02\xEE\xEC\x03\x02\x02" + - "\x02\xEE\xED\x03\x02\x02\x02\xEF\x1D\x03\x02\x02\x02\xF0\xF2\x05L\'\x02" + - "\xF1\xF3\x07!\x02\x02\xF2\xF1\x03\x02\x02\x02\xF2\xF3\x03\x02\x02\x02" + - "\xF3\x1F\x03\x02\x02\x02\xF4\xF5\x07 \x02\x02\xF5\xF7\x05L\'\x02\xF6\xF8" + - "\x07!\x02\x02\xF7\xF6\x03\x02\x02\x02\xF7\xF8\x03\x02\x02\x02\xF8!\x03" + - "\x02\x02\x02\xF9\xFA\x07\"\x02\x02\xFA\xFB\x05&\x14\x02\xFB#\x03\x02\x02" + - "\x02\xFC\u010D\x05H%\x02\xFD\xFF\x07A\x02\x02\xFE\u0100\x05H%\x02\xFF" + - "\xFE\x03\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\u010B\x03\x02\x02" + - "\x02\u0101\u0103\x07A\x02\x02\u0102\u0104\x05H%\x02\u0103\u0102\x03\x02" + - "\x02\x02\u0103\u0104\x03\x02\x02\x02\u0104\u0109\x03\x02\x02\x02\u0105" + - "\u0107\x07A\x02\x02\u0106\u0108\x05H%\x02\u0107\u0106\x03\x02\x02\x02" + - "\u0107\u0108\x03\x02\x02\x02\u0108\u010A\x03\x02\x02\x02\u0109\u0105\x03" + - "\x02\x02\x02\u0109\u010A\x03\x02\x02\x02\u010A\u010C\x03\x02\x02\x02\u010B" + - "\u0101\x03\x02\x02\x02\u010B\u010C\x03\x02\x02\x02\u010C\u010E\x03\x02" + - "\x02\x02\u010D\xFD\x03\x02\x02\x02\u010D\u010E\x03\x02\x02\x02\u010E\u0111" + - "\x03\x02\x02\x02\u010F\u0111\x05J&\x02\u0110\xFC\x03\x02\x02\x02\u0110" + - "\u010F\x03\x02\x02\x02\u0111%\x03\x02\x02\x02\u0112\u0117\x05$\x13\x02" + - "\u0113\u0114\x07@\x02\x02\u0114\u0116\x05$\x13\x02\u0115\u0113\x03\x02" + - "\x02\x02\u0116\u0119\x03\x02\x02\x02\u0117\u0115\x03\x02\x02\x02\u0117" + - "\u0118\x03\x02\x02\x02\u0118\u011B\x03\x02\x02\x02\u0119\u0117\x03\x02" + - "\x02\x02\u011A\u011C\x07@\x02\x02\u011B\u011A\x03\x02\x02\x02\u011B\u011C" + - "\x03\x02\x02\x02\u011C\'\x03\x02\x02\x02\u011D\u0122\x05$\x13\x02\u011E" + - "\u011F\x07\x0F\x02\x02\u011F\u0121\x05$\x13\x02\u0120\u011E\x03\x02\x02" + - "\x02\u0121\u0124\x03\x02\x02\x02\u0122\u0120\x03\x02\x02\x02\u0122\u0123" + - "\x03\x02\x02\x02\u0123\u0126\x03\x02\x02\x02\u0124\u0122\x03\x02\x02\x02" + - "\u0125\u0127\x07\x0F\x02\x02\u0126\u0125\x03\x02\x02\x02\u0126\u0127\x03" + - "\x02\x02\x02\u0127)\x03\x02\x02\x02\u0128\u0129\x07%\x02\x02\u0129\u012D" + - "\x05,\x17\x02\u012A\u012B\x07$\x02\x02\u012B\u012D\x05,\x17\x02\u012C" + - "\u0128\x03\x02\x02\x02\u012C\u012A\x03\x02\x02\x02\u012D+\x03\x02\x02" + - "\x02\u012E\u012F\b\x17\x01\x02\u012F\u0130\x07D\x02\x02\u0130\u0131\x05" + - ",\x17\x02\u0131\u0132\x07E\x02\x02\u0132\u013E\x03\x02\x02\x02\u0133\u0134" + - "\x07\r\x02\x02\u0134\u013E\x05,\x17\x06\u0135\u0137\x07&\x02\x02\u0136" + - "\u0138\x07\'\x02\x02\u0137\u0136\x03\x02\x02\x02\u0137\u0138\x03\x02\x02" + - "\x02\u0138\u013B\x03\x02\x02\x02\u0139\u013B\x07\'\x02\x02\u013A\u0135" + - "\x03\x02\x02\x02\u013A\u0139\x03\x02\x02\x02\u013B\u013C\x03\x02\x02\x02" + - "\u013C\u013E\x05.\x18\x02\u013D\u012E\x03\x02\x02\x02\u013D\u0133\x03" + - "\x02\x02\x02\u013D\u013A\x03\x02\x02\x02\u013E\u0147\x03\x02\x02\x02\u013F" + - "\u0140\f\x05\x02\x02\u0140\u0141\x07\x0E\x02\x02\u0141\u0146\x05,\x17" + - "\x06\u0142\u0143\f\x04\x02\x02\u0143\u0144\x07\x0F\x02\x02\u0144\u0146" + - "\x05,\x17\x05\u0145\u013F\x03\x02\x02\x02\u0145\u0142\x03\x02\x02\x02" + - "\u0146\u0149\x03\x02\x02\x02\u0147\u0145\x03\x02\x02\x02\u0147\u0148\x03" + - "\x02\x02\x02\u0148-\x03\x02\x02\x02\u0149\u0147\x03\x02\x02\x02\u014A" + - "\u014B\x05H%\x02\u014B\u014C\x07A\x02\x02\u014C\u0151\x05H%\x02\u014D" + - "\u014E\x07B\x02\x02\u014E\u0150\x05H%\x02\u014F\u014D\x03\x02\x02\x02" + - "\u0150\u0153\x03\x02\x02\x02\u0151\u014F\x03\x02\x02\x02\u0151\u0152\x03" + - "\x02\x02\x02\u0152\u015D\x03\x02\x02\x02\u0153\u0151\x03\x02\x02\x02\u0154" + - "\u0159\x05H%\x02\u0155\u0156\x07B\x02\x02\u0156\u0158\x05H%\x02\u0157" + - "\u0155\x03\x02\x02\x02\u0158\u015B\x03\x02\x02\x02\u0159\u0157\x03\x02" + - "\x02\x02\u0159\u015A\x03\x02\x02\x02\u015A\u015D\x03\x02\x02\x02\u015B" + - "\u0159\x03\x02\x02\x02\u015C\u014A\x03\x02\x02\x02\u015C\u0154\x03\x02" + - "\x02\x02\u015D/\x03\x02\x02\x02\u015E\u015F\x07!\x02\x02\u015F\u016B\x07" + - "3\x02\x02\u0160\u0165\x052\x1A\x02\u0161\u0162\x07@\x02\x02\u0162\u0164" + - "\x052\x1A\x02\u0163\u0161\x03\x02\x02\x02\u0164\u0167\x03\x02\x02\x02" + - "\u0165\u0163\x03\x02\x02\x02\u0165\u0166\x03\x02\x02\x02\u0166\u0168\x03" + - "\x02\x02\x02\u0167\u0165\x03\x02\x02\x02\u0168\u0169\x073\x02\x02\u0169" + - "\u016B\x03\x02\x02\x02\u016A\u015E\x03\x02\x02\x02\u016A\u0160\x03\x02" + - "\x02\x02\u016B1\x03\x02\x02\x02\u016C\u016D\t\x03\x02\x02\u016D3\x03\x02" + - "\x02\x02\u016E\u016F\x07\x1F\x02\x02\u016F\u0170\x056\x1C\x02\u01705\x03" + - "\x02\x02\x02\u0171\u0176\x058\x1D\x02\u0172\u0173\x07@\x02\x02\u0173\u0175" + - "\x058\x1D\x02\u0174\u0172\x03\x02\x02\x02\u0175\u0178\x03\x02\x02\x02" + - "\u0176\u0174\x03\x02\x02\x02\u0176\u0177\x03\x02\x02\x02\u01777\x03\x02" + - "\x02\x02\u0178\u0176\x03\x02\x02\x02\u0179\u017C\x05L\'\x02\u017A\u017B" + - "\x07C\x02\x02\u017B\u017D\x05L\'\x02\u017C\u017A\x03\x02\x02\x02\u017C" + - "\u017D\x03\x02\x02\x02\u017D9\x03\x02\x02\x02\u017E\u017F\x07\x03\x02" + - "\x02\u017F\u0180\x05<\x1F\x02\u0180\u0181\x07\x04\x02\x02\u0181\u018A" + - "\x05\n\x06\x02\u0182\u0183\x07\x05\x02\x02\u0183\u0184\x07\x03\x02\x02" + - "\u0184\u0185\x05<\x1F\x02\u0185\u0186\x07\x04\x02\x02\u0186\u0187\x05" + - "\n\x06\x02\u0187\u0189\x03\x02\x02\x02\u0188\u0182\x03\x02\x02\x02\u0189" + - "\u018C\x03\x02\x02\x02\u018A\u0188\x03\x02\x02\x02\u018A\u018B\x03\x02" + - "\x02\x02\u018B\u018F\x03\x02\x02\x02\u018C\u018A\x03\x02\x02\x02\u018D" + - "\u018E\x07\x05\x02\x02\u018E\u0190\x05\n\x06\x02\u018F\u018D\x03\x02\x02" + - "\x02\u018F\u0190\x03\x02\x02\x02\u0190\u0191\x03\x02\x02\x02\u0191\u0192" + - "\x07=\x02\x02\u0192;\x03\x02\x02\x02\u0193\u0194\b\x1F\x01\x02\u0194\u01B4" + - "\x07\v\x02\x02\u0195\u01B4\x07\f\x02\x02\u0196\u0197\x07D\x02\x02\u0197" + - "\u0198\x05<\x1F\x02\u0198\u0199\x07E\x02\x02\u0199\u01B4\x03\x02\x02\x02" + - "\u019A\u019B\x07\r\x02\x02\u019B\u01B4\x05<\x1F\x07\u019C\u019E\x05@!" + - "\x02\u019D\u019C\x03\x02\x02\x02\u019D\u019E\x03\x02\x02\x02\u019E\u019F" + - "\x03\x02\x02\x02\u019F\u01A0\x05B\"\x02\u01A0\u01A1\x07\x06\x02\x02\u01A1" + - "\u01A2\x05> \x02\u01A2\u01A4\x05L\'\x02\u01A3\u01A5\x05(\x15\x02\u01A4" + - "\u01A3\x03\x02\x02\x02\u01A4\u01A5\x03\x02\x02\x02\u01A5\u01A7\x03\x02" + - "\x02\x02\u01A6\u01A8\x05*\x16\x02\u01A7\u01A6\x03\x02\x02\x02\u01A7\u01A8" + - "\x03\x02\x02\x02\u01A8\u01AB\x03\x02\x02\x02\u01A9\u01AA\x07\"\x02\x02" + - "\u01AA\u01AC\x05&\x14\x02\u01AB\u01A9\x03\x02\x02\x02\u01AB\u01AC\x03" + - "\x02\x02\x02\u01AC\u01B4\x03\x02\x02\x02\u01AD\u01B1\x07:\x02\x02\u01AE" + - "\u01AF\x05> \x02\u01AF\u01B0\x05L\'\x02\u01B0\u01B2\x03\x02\x02\x02\u01B1" + - "\u01AE\x03\x02\x02\x02\u01B1\u01B2\x03\x02\x02\x02\u01B2\u01B4\x03\x02" + - "\x02\x02\u01B3\u0193\x03\x02\x02\x02\u01B3\u0195\x03\x02\x02\x02\u01B3" + - "\u0196\x03\x02\x02\x02\u01B3\u019A\x03\x02\x02\x02\u01B3\u019D\x03\x02" + - "\x02\x02\u01B3\u01AD\x03\x02\x02\x02\u01B4\u01BD\x03\x02\x02\x02\u01B5" + - "\u01B6\f\x06\x02\x02\u01B6\u01B7\x07\x0E\x02\x02\u01B7\u01BC\x05<\x1F" + - "\x07\u01B8\u01B9\f\x05\x02\x02\u01B9\u01BA\x07\x0F\x02\x02\u01BA\u01BC" + - "\x05<\x1F\x06\u01BB\u01B5\x03\x02\x02\x02\u01BB\u01B8\x03\x02\x02\x02" + - "\u01BC\u01BF\x03\x02\x02\x02\u01BD\u01BB\x03\x02\x02\x02\u01BD\u01BE\x03" + - "\x02\x02\x02\u01BE=\x03\x02\x02\x02\u01BF\u01BD\x03\x02\x02\x02\u01C0" + - "\u01C1\t\x04\x02\x02\u01C1?\x03\x02\x02\x02\u01C2\u01C3\t\x05\x02\x02" + - "\u01C3A\x03\x02\x02\x02\u01C4\u01C9\x05F$\x02\u01C5\u01C6\x07@\x02\x02" + - "\u01C6\u01C8\x05F$\x02\u01C7\u01C5\x03\x02\x02\x02\u01C8\u01CB\x03\x02" + - "\x02\x02\u01C9\u01C7\x03\x02\x02\x02\u01C9\u01CA\x03\x02\x02\x02\u01CA" + - "\u01CD\x03\x02\x02\x02\u01CB\u01C9\x03\x02\x02\x02\u01CC\u01CE\x05D#\x02" + - "\u01CD\u01CC\x03\x02\x02\x02\u01CD\u01CE\x03\x02\x02\x02\u01CE\u01D0\x03" + - "\x02\x02\x02\u01CF\u01D1\x050\x19\x02\u01D0\u01CF\x03\x02\x02\x02\u01D0" + - "\u01D1\x03\x02\x02\x02\u01D1\u01D3\x03\x02\x02\x02\u01D2\u01D4\x054\x1B" + - "\x02\u01D3\u01D2\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02\u01D4C\x03" + - "\x02\x02\x02\u01D5\u01D6\x07(\x02\x02\u01D6\u01D7\x07)\x02\x02\u01D7\u01D8" + - "\x07*\x02\x02\u01D8\u01D9\t\x06\x02\x02\u01D9E\x03\x02\x02\x02\u01DA\u01DD" + - "\x05H%\x02\u01DB\u01DD\x05J&\x02\u01DC\u01DA\x03\x02\x02\x02\u01DC\u01DB" + - "\x03\x02\x02\x02\u01DDG\x03\x02\x02\x02\u01DE\u01DF\t\x07\x02\x02\u01DF" + - "I\x03\x02\x02\x02\u01E0\u01E1\x07I\x02\x02\u01E1K\x03\x02\x02\x02\u01E2" + - "\u01E3\x07G\x02\x02\u01E3M\x03\x02\x02\x02MOTilosy|\x81\x88\x8C\x92\x96" + - "\x9A\x9D\xA1\xA6\xAB\xAE\xB0\xB4\xB7\xBB\xC0\xC5\xC8\xCA\xD5\xD9\xDC\xE0" + - "\xE4\xE7\xEE\xF2\xF7\xFF\u0103\u0107\u0109\u010B\u010D\u0110\u0117\u011B" + - "\u0122\u0126\u012C\u0137\u013A\u013D\u0145\u0147\u0151\u0159\u015C\u0165" + - "\u016A\u0176\u017C\u018A\u018F\u019D\u01A4\u01A7\u01AB\u01B1\u01B3\u01BB" + - "\u01BD\u01C9\u01CD\u01D0\u01D3\u01DC"; + "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x03\x02\x05\x02R\n\x02\x03" + + "\x02\x07\x02U\n\x02\f\x02\x0E\x02X\v\x02\x03\x02\x03\x02\x03\x03\x03\x03" + + "\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04" + + "\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x05\x04l\n\x04\x03\x05\x05\x05" + + "o\n\x05\x03\x05\x05\x05r\n\x05\x03\x05\x03\x05\x05\x05v\n\x05\x03\x05" + + "\x03\x05\x03\x05\x03\x05\x05\x05|\n\x05\x03\x05\x05\x05\x7F\n\x05\x03" + + "\x06\x07\x06\x82\n\x06\f\x06\x0E\x06\x85\v\x06\x03\x07\x03\x07\x03\x07" + + "\x03\x07\x05\x07\x8B\n\x07\x03\b\x03\b\x05\b\x8F\n\b\x03\b\x03\b\x07\b" + + "\x93\n\b\f\b\x0E\b\x96\v\b\x03\b\x05\b\x99\n\b\x03\t\x03\t\x05\t\x9D\n" + + "\t\x03\t\x05\t\xA0\n\t\x03\t\x03\t\x05\t\xA4\n\t\x03\t\x03\t\x03\t\x05" + + "\t\xA9\n\t\x03\t\x03\t\x03\t\x05\t\xAE\n\t\x03\t\x05\t\xB1\n\t\x05\t\xB3" + + "\n\t\x03\n\x03\n\x05\n\xB7\n\n\x03\n\x05\n\xBA\n\n\x03\n\x03\n\x05\n\xBE" + + "\n\n\x03\n\x05\n\xC1\n\n\x03\n\x03\n\x03\n\x05\n\xC6\n\n\x03\n\x05\n\xC9" + + "\n\n\x03\n\x03\n\x03\n\x05\n\xCE\n\n\x03\n\x05\n\xD1\n\n\x05\n\xD3\n\n" + + "\x03\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03\r\x07\r\xDC\n\r\f\r\x0E\r\xDF" + + "\v\r\x03\r\x05\r\xE2\n\r\x03\x0E\x05\x0E\xE5\n\x0E\x03\x0E\x03\x0E\x05" + + "\x0E\xE9\n\x0E\x03\x0E\x03\x0E\x05\x0E\xED\n\x0E\x03\x0E\x05\x0E\xF0\n" + + "\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x05\x0F\xF7\n\x0F\x03\x10" + + "\x03\x10\x05\x10\xFB\n\x10\x03\x11\x03\x11\x03\x11\x05\x11\u0100\n\x11" + + "\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x05\x13\u0108\n\x13\x03" + + "\x13\x03\x13\x05\x13\u010C\n\x13\x03\x13\x03\x13\x05\x13\u0110\n\x13\x05" + + "\x13\u0112\n\x13\x05\x13\u0114\n\x13\x05\x13\u0116\n\x13\x03\x13\x05\x13" + + "\u0119\n\x13\x03\x14\x03\x14\x03\x14\x07\x14\u011E\n\x14\f\x14\x0E\x14" + + "\u0121\v\x14\x03\x14\x05\x14\u0124\n\x14\x03\x15\x03\x15\x03\x15\x07\x15" + + "\u0129\n\x15\f\x15\x0E\x15\u012C\v\x15\x03\x15\x05\x15\u012F\n\x15\x03" + + "\x16\x03\x16\x03\x16\x03\x16\x05\x16\u0135\n\x16\x03\x17\x03\x17\x03\x17" + + "\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x05\x17\u0140\n\x17\x03" + + "\x17\x05\x17\u0143\n\x17\x03\x17\x05\x17\u0146\n\x17\x03\x17\x03\x17\x03" + + "\x17\x03\x17\x03\x17\x03\x17\x07\x17\u014E\n\x17\f\x17\x0E\x17\u0151\v" + + "\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x07\x18\u0158\n\x18\f\x18" + + "\x0E\x18\u015B\v\x18\x03\x18\x03\x18\x03\x18\x07\x18\u0160\n\x18\f\x18" + + "\x0E\x18\u0163\v\x18\x05\x18\u0165\n\x18\x03\x19\x03\x19\x03\x19\x03\x19" + + "\x03\x19\x07\x19\u016C\n\x19\f\x19\x0E\x19\u016F\v\x19\x03\x19\x03\x19" + + "\x05\x19\u0173\n\x19\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03" + + "\x1C\x03\x1C\x07\x1C\u017D\n\x1C\f\x1C\x0E\x1C\u0180\v\x1C\x03\x1D\x03" + + "\x1D\x03\x1D\x05\x1D\u0185\n\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E" + + "\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07\x1E\u0191\n\x1E\f\x1E\x0E" + + "\x1E\u0194\v\x1E\x03\x1E\x03\x1E\x05\x1E\u0198\n\x1E\x03\x1E\x03\x1E\x03" + + "\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03" + + "\x1F\x05\x1F\u01A6\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F" + + "\u01AD\n\x1F\x03\x1F\x05\x1F\u01B0\n\x1F\x03\x1F\x03\x1F\x05\x1F\u01B4" + + "\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F\u01BA\n\x1F\x05\x1F\u01BC" + + "\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x07\x1F\u01C4\n" + + "\x1F\f\x1F\x0E\x1F\u01C7\v\x1F\x03 \x03 \x03!\x03!\x03\"\x03\"\x03\"\x07" + + "\"\u01D0\n\"\f\"\x0E\"\u01D3\v\"\x03\"\x05\"\u01D6\n\"\x03\"\x05\"\u01D9" + + "\n\"\x03\"\x05\"\u01DC\n\"\x03#\x03#\x03#\x03#\x03#\x03$\x03$\x05$\u01E5" + + "\n$\x03%\x03%\x03%\x03%\x03&\x03&\x03\'\x03\'\x03(\x03(\x03(\x02\x02\x04" + + ",<)\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02" + + "\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02" + + "(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02" + + "D\x02F\x02H\x02J\x02L\x02N\x02\x02\t\x03\x02@BBPP\x02" + + "\u021F\x02Q\x03\x02\x02\x02\x04[\x03\x02\x02\x02\x06k\x03\x02\x02\x02" + + "\b~\x03\x02\x02\x02\n\x83\x03\x02\x02\x02\f\x8A\x03\x02\x02\x02\x0E\x8C" + + "\x03\x02\x02\x02\x10\xB2\x03\x02\x02\x02\x12\xD2\x03\x02\x02\x02\x14\xD4" + + "\x03\x02\x02\x02\x16\xD6\x03\x02\x02\x02\x18\xD8\x03\x02\x02\x02\x1A\xEF" + + "\x03\x02\x02\x02\x1C\xF6\x03\x02\x02\x02\x1E\xF8\x03\x02\x02\x02 \xFC" + + "\x03\x02\x02\x02\"\u0101\x03\x02\x02\x02$\u0118\x03\x02\x02\x02&\u011A" + + "\x03\x02\x02\x02(\u0125\x03\x02\x02\x02*\u0134\x03\x02\x02\x02,\u0145" + + "\x03\x02\x02\x02.\u0164\x03\x02\x02\x020\u0172\x03\x02\x02\x022\u0174" + + "\x03\x02\x02\x024\u0176\x03\x02\x02\x026\u0179\x03\x02\x02\x028\u0181" + + "\x03\x02\x02\x02:\u0186\x03\x02\x02\x02<\u01BB\x03\x02\x02\x02>\u01C8" + + "\x03\x02\x02\x02@\u01CA\x03\x02\x02\x02B\u01CC\x03\x02\x02\x02D\u01DD" + + "\x03\x02\x02\x02F\u01E4\x03\x02\x02\x02H\u01E6\x03\x02\x02\x02J\u01EA" + + "\x03\x02\x02\x02L\u01EC\x03\x02\x02\x02N\u01EE\x03\x02\x02\x02PR\x05\x04" + + "\x03\x02QP\x03\x02\x02\x02QR\x03\x02\x02\x02RV\x03\x02\x02\x02SU\x05\x06" + + "\x04\x02TS\x03\x02\x02\x02UX\x03\x02\x02\x02VT\x03\x02\x02\x02VW\x03\x02" + + "\x02\x02WY\x03\x02\x02\x02XV\x03\x02\x02\x02YZ\x07\x02\x02\x03Z\x03\x03" + + "\x02\x02\x02[\\\x07F\x02\x02\\]\x05L\'\x02]\x05\x03\x02\x02\x02^_\x07" + + "G\x02\x02_`\x05\b\x05\x02`a\x07D\x02\x02ab\x05\n\x06\x02bc\x07E\x02\x02" + + "cl\x03\x02\x02\x02de\x07G\x02\x02ef\x07B\x02\x02fg\x07C\x02\x02gh\x07" + + "D\x02\x02hi\x05\n\x06\x02ij\x07E\x02\x02jl\x03\x02\x02\x02k^\x03\x02\x02" + + "\x02kd\x03\x02\x02\x02l\x07\x03\x02\x02\x02mo\x07O\x02\x02nm\x03\x02\x02" + + "\x02no\x03\x02\x02\x02oq\x03\x02\x02\x02pr\x07@\x02\x02qp\x03\x02\x02" + + "\x02qr\x03\x02\x02\x02ru\x03\x02\x02\x02st\x07A\x02\x02tv\x07O\x02\x02" + + "us\x03\x02\x02\x02uv\x03\x02\x02\x02vw\x03\x02\x02\x02w\x7F\t\x02\x02" + + "\x02x{\x07N\x02\x02yz\x07A\x02\x02z|\x07O\x02\x02{y\x03\x02\x02\x02{|" + + "\x03\x02\x02\x02|}\x03\x02\x02\x02}\x7F\t\x02\x02\x02~n\x03\x02\x02\x02" + + "~x\x03\x02\x02\x02\x7F\t\x03\x02\x02\x02\x80\x82\x05\f\x07\x02\x81\x80" + + "\x03\x02\x02\x02\x82\x85\x03\x02\x02\x02\x83\x81\x03\x02\x02\x02\x83\x84" + + "\x03\x02\x02\x02\x84\v\x03\x02\x02\x02\x85\x83\x03\x02\x02\x02\x86\x8B" + + "\x05\x10\t\x02\x87\x8B\x05\x12\n\x02\x88\x8B\x05:\x1E\x02\x89\x8B\x05" + + "\x0E\b\x02\x8A\x86\x03\x02\x02\x02\x8A\x87\x03\x02\x02\x02\x8A\x88\x03" + + "\x02\x02\x02\x8A\x89\x03\x02\x02\x02\x8B\r\x03\x02\x02\x02\x8C\x8E\x07" + + "$\x02\x02\x8D\x8F\x05F$\x02\x8E\x8D\x03\x02\x02\x02\x8E\x8F\x03\x02\x02" + + "\x02\x8F\x94\x03\x02\x02\x02\x90\x91\x07H\x02\x02\x91\x93\x05F$\x02\x92" + + "\x90\x03\x02\x02\x02\x93\x96\x03\x02\x02\x02\x94\x92\x03\x02\x02\x02\x94" + + "\x95\x03\x02\x02\x02\x95\x98\x03\x02\x02\x02\x96\x94\x03\x02\x02\x02\x97" + + "\x99\x07H\x02\x02\x98\x97\x03\x02\x02\x02\x98\x99\x03\x02\x02\x02\x99" + + "\x0F\x03\x02\x02\x02\x9A\x9C\x07\x1C\x02\x02\x9B\x9D\x05\x14\v\x02\x9C" + + "\x9B\x03\x02\x02\x02\x9C\x9D\x03\x02\x02\x02\x9D\x9F\x03\x02\x02\x02\x9E" + + "\xA0\x05\"\x12\x02\x9F\x9E\x03\x02\x02\x02\x9F\xA0\x03\x02\x02\x02\xA0" + + "\xA1\x03\x02\x02\x02\xA1\xA3\x07\x1A\x02\x02\xA2\xA4\x07\"\x02\x02\xA3" + + "\xA2\x03\x02\x02\x02\xA3\xA4\x03\x02\x02\x02\xA4\xA5\x03\x02\x02\x02\xA5" + + "\xB3\x05B\"\x02\xA6\xA8\x07\x1A\x02\x02\xA7\xA9\x07\"\x02\x02\xA8\xA7" + + "\x03\x02\x02\x02\xA8\xA9\x03\x02\x02\x02\xA9\xAA\x03\x02\x02\x02\xAA\xAB" + + "\x05B\"\x02\xAB\xAD\x07\x1C\x02\x02\xAC\xAE\x05\x14\v\x02\xAD\xAC\x03" + + "\x02\x02\x02\xAD\xAE\x03\x02\x02\x02\xAE\xB0\x03\x02\x02\x02\xAF\xB1\x05" + + "\"\x12\x02\xB0\xAF\x03\x02\x02\x02\xB0\xB1\x03\x02\x02\x02\xB1\xB3\x03" + + "\x02\x02\x02\xB2\x9A\x03\x02\x02\x02\xB2\xA6\x03\x02\x02\x02\xB3\x11\x03" + + "\x02\x02\x02\xB4\xB6\x07\x1D\x02\x02\xB5\xB7\x05\x16\f\x02\xB6\xB5\x03" + + "\x02\x02\x02\xB6\xB7\x03\x02\x02\x02\xB7\xB9\x03\x02\x02\x02\xB8\xBA\x05" + + "\"\x12\x02\xB9\xB8\x03\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBB\x03" + + "\x02\x02\x02\xBB\xBD\x07\x1B\x02\x02\xBC\xBE\x05H%\x02\xBD\xBC\x03\x02" + + "\x02\x02\xBD\xBE\x03\x02\x02\x02\xBE\xC0\x03\x02\x02\x02\xBF\xC1\x07\"" + + "\x02\x02\xC0\xBF\x03\x02\x02\x02\xC0\xC1\x03\x02\x02\x02\xC1\xC2\x03\x02" + + "\x02\x02\xC2\xD3\x05B\"\x02\xC3\xC5\x07\x1B\x02\x02\xC4\xC6\x05H%\x02" + + "\xC5\xC4\x03\x02\x02\x02\xC5\xC6\x03\x02\x02\x02\xC6\xC8\x03\x02\x02\x02" + + "\xC7\xC9\x07\"\x02\x02\xC8\xC7\x03\x02\x02\x02\xC8\xC9\x03\x02\x02\x02" + + "\xC9\xCA\x03\x02\x02\x02\xCA\xCB\x05B\"\x02\xCB\xCD\x07\x1D\x02\x02\xCC" + + "\xCE\x05\x16\f\x02\xCD\xCC\x03\x02\x02\x02\xCD\xCE\x03\x02\x02\x02\xCE" + + "\xD0\x03\x02\x02\x02\xCF\xD1\x05\"\x12\x02\xD0\xCF\x03\x02\x02\x02\xD0" + + "\xD1\x03\x02\x02\x02\xD1\xD3\x03\x02\x02\x02\xD2\xB4\x03\x02\x02\x02\xD2" + + "\xC3\x03\x02\x02\x02\xD3\x13\x03\x02\x02\x02\xD4\xD5\x05\x18\r\x02\xD5" + + "\x15\x03\x02\x02\x02\xD6\xD7\x05\x18\r\x02\xD7\x17\x03\x02\x02\x02\xD8" + + "\xDD\x05\x1A\x0E\x02\xD9\xDA\x07H\x02\x02\xDA\xDC\x05\x1A\x0E\x02\xDB" + + "\xD9\x03\x02\x02\x02\xDC\xDF\x03\x02\x02\x02\xDD\xDB\x03\x02\x02\x02\xDD" + + "\xDE\x03\x02\x02\x02\xDE\xE1\x03\x02\x02\x02\xDF\xDD\x03\x02\x02\x02\xE0" + + "\xE2\x07H\x02\x02\xE1\xE0\x03\x02\x02\x02\xE1\xE2\x03\x02\x02\x02\xE2" + + "\x19\x03\x02\x02\x02\xE3\xE5\x05\x1C\x0F\x02\xE4\xE3\x03\x02\x02\x02\xE4" + + "\xE5\x03\x02\x02\x02\xE5\xE6\x03\x02\x02\x02\xE6\xE8\x05(\x15\x02\xE7" + + "\xE9\x05*\x16\x02\xE8\xE7\x03\x02\x02\x02\xE8\xE9\x03\x02\x02\x02\xE9" + + "\xF0\x03\x02\x02\x02\xEA\xEC\x05\x1C\x0F\x02\xEB\xED\x05*\x16\x02\xEC" + + "\xEB\x03\x02\x02\x02\xEC\xED\x03\x02\x02\x02\xED\xF0\x03\x02\x02\x02\xEE" + + "\xF0\x05*\x16\x02\xEF\xE4\x03\x02\x02\x02\xEF\xEA\x03\x02\x02\x02\xEF" + + "\xEE\x03\x02\x02\x02\xF0\x1B\x03\x02\x02\x02\xF1\xF2\x05\x1E\x10\x02\xF2" + + "\xF3\x05 \x11\x02\xF3\xF7\x03\x02\x02\x02\xF4\xF7\x05 \x11\x02\xF5\xF7" + + "\x05\x1E\x10\x02\xF6\xF1\x03\x02\x02\x02\xF6\xF4\x03\x02\x02\x02\xF6\xF5" + + "\x03\x02\x02\x02\xF7\x1D\x03\x02\x02\x02\xF8\xFA\x05N(\x02\xF9\xFB\x07" + + "\"\x02\x02\xFA\xF9\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\x1F\x03" + + "\x02\x02\x02\xFC\xFD\x07!\x02\x02\xFD\xFF\x05N(\x02\xFE\u0100\x07\"\x02" + + "\x02\xFF\xFE\x03\x02\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100!\x03\x02" + + "\x02\x02\u0101\u0102\x07#\x02\x02\u0102\u0103\x05&\x14\x02\u0103#\x03" + + "\x02\x02\x02\u0104\u0115\x05J&\x02\u0105\u0107\x07I\x02\x02\u0106\u0108" + + "\x05J&\x02\u0107\u0106\x03\x02\x02\x02\u0107\u0108\x03\x02\x02\x02\u0108" + + "\u0113\x03\x02\x02\x02\u0109\u010B\x07I\x02\x02\u010A\u010C\x05J&\x02" + + "\u010B\u010A\x03\x02\x02\x02\u010B\u010C\x03\x02\x02\x02\u010C\u0111\x03" + + "\x02\x02\x02\u010D\u010F\x07I\x02\x02\u010E\u0110\x05J&\x02\u010F\u010E" + + "\x03\x02\x02\x02\u010F\u0110\x03\x02\x02\x02\u0110\u0112\x03\x02\x02\x02" + + "\u0111\u010D\x03\x02\x02\x02\u0111\u0112\x03\x02\x02\x02\u0112\u0114\x03" + + "\x02\x02\x02\u0113\u0109\x03\x02\x02\x02\u0113\u0114\x03\x02\x02\x02\u0114" + + "\u0116\x03\x02\x02\x02\u0115\u0105\x03\x02\x02\x02\u0115\u0116\x03\x02" + + "\x02\x02\u0116\u0119\x03\x02\x02\x02\u0117\u0119\x05L\'\x02\u0118\u0104" + + "\x03\x02\x02\x02\u0118\u0117\x03\x02\x02\x02\u0119%\x03\x02\x02\x02\u011A" + + "\u011F\x05$\x13\x02\u011B\u011C\x07H\x02\x02\u011C\u011E\x05$\x13\x02" + + "\u011D\u011B\x03\x02\x02\x02\u011E\u0121\x03\x02\x02\x02\u011F\u011D\x03" + + "\x02\x02\x02\u011F\u0120\x03\x02\x02\x02\u0120\u0123\x03\x02\x02\x02\u0121" + + "\u011F\x03\x02\x02\x02\u0122\u0124\x07H\x02\x02\u0123\u0122\x03\x02\x02" + + "\x02\u0123\u0124\x03\x02\x02\x02\u0124\'\x03\x02\x02\x02\u0125\u012A\x05" + + "$\x13\x02\u0126\u0127\x07\x0F\x02\x02\u0127\u0129\x05$\x13\x02\u0128\u0126" + + "\x03\x02\x02\x02\u0129\u012C\x03\x02\x02\x02\u012A\u0128\x03\x02\x02\x02" + + "\u012A\u012B\x03\x02\x02\x02\u012B\u012E\x03\x02\x02\x02\u012C\u012A\x03" + + "\x02\x02\x02\u012D\u012F\x07\x0F\x02\x02\u012E\u012D\x03\x02\x02\x02\u012E" + + "\u012F\x03\x02\x02\x02\u012F)\x03\x02\x02\x02\u0130\u0131\x07(\x02\x02" + + "\u0131\u0135\x05,\x17\x02\u0132\u0133\x07\'\x02\x02\u0133\u0135\x05,\x17" + + "\x02\u0134\u0130\x03\x02\x02\x02\u0134\u0132\x03\x02\x02\x02\u0135+\x03" + + "\x02\x02\x02\u0136\u0137\b\x17\x01\x02\u0137\u0138\x07L\x02\x02\u0138" + + "\u0139\x05,\x17\x02\u0139\u013A\x07M\x02\x02\u013A\u0146\x03\x02\x02\x02" + + "\u013B\u013C\x07\r\x02\x02\u013C\u0146\x05,\x17\x06\u013D\u013F\x07)\x02" + + "\x02\u013E\u0140\x07*\x02\x02\u013F\u013E\x03\x02\x02\x02\u013F\u0140" + + "\x03\x02\x02\x02\u0140\u0143\x03\x02\x02\x02\u0141\u0143\x07*\x02\x02" + + "\u0142\u013D\x03\x02\x02\x02\u0142\u0141\x03\x02\x02\x02\u0143\u0144\x03" + + "\x02\x02\x02\u0144\u0146\x05.\x18\x02\u0145\u0136\x03\x02\x02\x02\u0145" + + "\u013B\x03\x02\x02\x02\u0145\u0142\x03\x02\x02\x02\u0146\u014F\x03\x02" + + "\x02\x02\u0147\u0148\f\x05\x02\x02\u0148\u0149\x07\x0E\x02\x02\u0149\u014E" + + "\x05,\x17\x06\u014A\u014B\f\x04\x02\x02\u014B\u014C\x07\x0F\x02\x02\u014C" + + "\u014E\x05,\x17\x05\u014D\u0147\x03\x02\x02\x02\u014D\u014A\x03\x02\x02" + + "\x02\u014E\u0151\x03\x02\x02\x02\u014F\u014D\x03\x02\x02\x02\u014F\u0150" + + "\x03\x02\x02\x02\u0150-\x03\x02\x02\x02\u0151\u014F\x03\x02\x02\x02\u0152" + + "\u0153\x05J&\x02\u0153\u0154\x07I\x02\x02\u0154\u0159\x05J&\x02\u0155" + + "\u0156\x07J\x02\x02\u0156\u0158\x05J&\x02\u0157\u0155\x03\x02\x02\x02" + + "\u0158\u015B\x03\x02\x02\x02\u0159\u0157\x03\x02\x02\x02\u0159\u015A\x03" + + "\x02\x02\x02\u015A\u0165\x03\x02\x02\x02\u015B\u0159\x03\x02\x02\x02\u015C" + + "\u0161\x05J&\x02\u015D\u015E\x07J\x02\x02\u015E\u0160\x05J&\x02\u015F" + + "\u015D\x03\x02\x02\x02\u0160\u0163\x03\x02\x02\x02\u0161\u015F\x03\x02" + + "\x02\x02\u0161\u0162\x03\x02\x02\x02\u0162\u0165\x03\x02\x02\x02\u0163" + + "\u0161\x03\x02\x02\x02\u0164\u0152\x03\x02\x02\x02\u0164\u015C\x03\x02" + + "\x02\x02\u0165/\x03\x02\x02\x02\u0166\u0167\x07\"\x02\x02\u0167\u0173" + + "\x076\x02\x02\u0168\u016D\x052\x1A\x02\u0169\u016A\x07H\x02\x02\u016A" + + "\u016C\x052\x1A\x02\u016B\u0169\x03\x02\x02\x02\u016C\u016F\x03\x02\x02" + + "\x02\u016D\u016B\x03\x02\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E\u0170" + + "\x03\x02\x02\x02\u016F\u016D\x03\x02\x02\x02\u0170\u0171\x076\x02\x02" + + "\u0171\u0173\x03\x02\x02\x02\u0172\u0166\x03\x02\x02\x02\u0172\u0168\x03" + + "\x02\x02\x02\u01731\x03\x02\x02\x02\u0174\u0175\t\x03\x02\x02\u01753\x03" + + "\x02\x02\x02\u0176\u0177\t\x04\x02\x02\u0177\u0178\x056\x1C\x02\u0178" + + "5\x03\x02\x02\x02\u0179\u017E\x058\x1D\x02\u017A\u017B\x07H\x02\x02\u017B" + + "\u017D\x058\x1D\x02\u017C\u017A\x03\x02\x02\x02\u017D\u0180\x03\x02\x02" + + "\x02\u017E\u017C\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02\u017F7\x03" + + "\x02\x02\x02\u0180\u017E\x03\x02\x02\x02\u0181\u0184\x05N(\x02\u0182\u0183" + + "\x07K\x02\x02\u0183\u0185\x05N(\x02\u0184\u0182\x03\x02\x02\x02\u0184" + + "\u0185\x03\x02\x02\x02\u01859\x03\x02\x02\x02\u0186\u0187\x07\x03\x02" + + "\x02\u0187\u0188\x05<\x1F\x02\u0188\u0189\x07\x04\x02\x02\u0189\u0192" + + "\x05\n\x06\x02\u018A\u018B\x07\x05\x02\x02\u018B\u018C\x07\x03\x02\x02" + + "\u018C\u018D\x05<\x1F\x02\u018D\u018E\x07\x04\x02\x02\u018E\u018F\x05" + + "\n\x06\x02\u018F\u0191\x03\x02\x02\x02\u0190\u018A\x03\x02\x02\x02\u0191" + + "\u0194\x03\x02\x02\x02\u0192\u0190\x03\x02\x02\x02\u0192\u0193\x03\x02" + + "\x02\x02\u0193\u0197\x03\x02\x02\x02\u0194\u0192\x03\x02\x02\x02\u0195" + + "\u0196\x07\x05\x02\x02\u0196\u0198\x05\n\x06\x02\u0197\u0195\x03\x02\x02" + + "\x02\u0197\u0198\x03\x02\x02\x02\u0198\u0199\x03\x02\x02\x02\u0199\u019A" + + "\x07E\x02\x02\u019A;\x03\x02\x02\x02\u019B\u019C\b\x1F\x01\x02\u019C\u01BC" + + "\x07\v\x02\x02\u019D\u01BC\x07\f\x02\x02\u019E\u019F\x07L\x02\x02\u019F" + + "\u01A0\x05<\x1F\x02\u01A0\u01A1\x07M\x02\x02\u01A1\u01BC\x03\x02\x02\x02" + + "\u01A2\u01A3\x07\r\x02\x02\u01A3\u01BC\x05<\x1F\x07\u01A4\u01A6\x05@!" + + "\x02\u01A5\u01A4\x03\x02\x02\x02\u01A5\u01A6\x03\x02\x02\x02\u01A6\u01A7" + + "\x03\x02\x02\x02\u01A7\u01A8\x05B\"\x02\u01A8\u01A9\x07\x06\x02\x02\u01A9" + + "\u01AA\x05> \x02\u01AA\u01AC\x05N(\x02\u01AB\u01AD\x05(\x15\x02\u01AC" + + "\u01AB\x03\x02\x02\x02\u01AC\u01AD\x03\x02\x02\x02\u01AD\u01AF\x03\x02" + + "\x02\x02\u01AE\u01B0\x05*\x16\x02\u01AF\u01AE\x03\x02\x02\x02\u01AF\u01B0" + + "\x03\x02\x02\x02\u01B0\u01B3\x03\x02\x02\x02\u01B1\u01B2\x07#\x02\x02" + + "\u01B2\u01B4\x05&\x14\x02\u01B3\u01B1\x03\x02\x02\x02\u01B3\u01B4\x03" + + "\x02\x02\x02\u01B4\u01BC\x03\x02\x02\x02\u01B5\u01B9\x07B\x02\x02\u01B6" + + "\u01B7\x05> \x02\u01B7\u01B8\x05N(\x02\u01B8\u01BA\x03\x02\x02\x02\u01B9" + + "\u01B6\x03\x02\x02\x02\u01B9\u01BA\x03\x02\x02\x02\u01BA\u01BC\x03\x02" + + "\x02\x02\u01BB\u019B\x03\x02\x02\x02\u01BB\u019D\x03\x02\x02\x02\u01BB" + + "\u019E\x03\x02\x02\x02\u01BB\u01A2\x03\x02\x02\x02\u01BB\u01A5\x03\x02" + + "\x02\x02\u01BB\u01B5\x03\x02\x02\x02\u01BC\u01C5\x03\x02\x02\x02\u01BD" + + "\u01BE\f\x06\x02\x02\u01BE\u01BF\x07\x0E\x02\x02\u01BF\u01C4\x05<\x1F" + + "\x07\u01C0\u01C1\f\x05\x02\x02\u01C1\u01C2\x07\x0F\x02\x02\u01C2\u01C4" + + "\x05<\x1F\x06\u01C3\u01BD\x03\x02\x02\x02\u01C3\u01C0\x03\x02\x02\x02" + + "\u01C4\u01C7\x03\x02\x02\x02\u01C5\u01C3\x03\x02\x02\x02\u01C5\u01C6\x03" + + "\x02\x02\x02\u01C6=\x03\x02\x02\x02\u01C7\u01C5\x03\x02\x02\x02\u01C8" + + "\u01C9\t\x05\x02\x02\u01C9?\x03\x02\x02\x02\u01CA\u01CB\t\x06\x02\x02" + + "\u01CBA\x03\x02\x02\x02\u01CC\u01D1\x05F$\x02\u01CD\u01CE\x07H\x02\x02" + + "\u01CE\u01D0\x05F$\x02\u01CF\u01CD\x03\x02\x02\x02\u01D0\u01D3\x03\x02" + + "\x02\x02\u01D1\u01CF\x03\x02\x02\x02\u01D1\u01D2\x03\x02\x02\x02\u01D2" + + "\u01D5\x03\x02\x02\x02\u01D3\u01D1\x03\x02\x02\x02\u01D4\u01D6\x05D#\x02" + + "\u01D5\u01D4\x03\x02\x02\x02\u01D5\u01D6\x03\x02\x02\x02\u01D6\u01D8\x03" + + "\x02\x02\x02\u01D7\u01D9\x050\x19\x02\u01D8\u01D7\x03\x02\x02\x02\u01D8" + + "\u01D9\x03\x02\x02\x02\u01D9\u01DB\x03\x02\x02\x02\u01DA\u01DC\x054\x1B" + + "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u01DC\x03\x02\x02\x02\u01DCC\x03" + + "\x02\x02\x02\u01DD\u01DE\x07+\x02\x02\u01DE\u01DF\x07,\x02\x02\u01DF\u01E0" + + "\x07-\x02\x02\u01E0\u01E1\t\x07\x02\x02\u01E1E\x03\x02\x02\x02\u01E2\u01E5" + + "\x05J&\x02\u01E3\u01E5\x05L\'\x02\u01E4\u01E2\x03\x02\x02\x02\u01E4\u01E3" + + "\x03\x02\x02\x02\u01E5G\x03\x02\x02\x02\u01E6\u01E7\x07%\x02\x02\u01E7" + + "\u01E8\t\x04\x02\x02\u01E8\u01E9\x07&\x02\x02\u01E9I\x03\x02\x02\x02\u01EA" + + "\u01EB\t\b\x02\x02\u01EBK\x03\x02\x02\x02\u01EC\u01ED\x07Q\x02\x02\u01ED" + + "M\x03\x02\x02\x02\u01EE\u01EF\x07O\x02\x02\u01EFO\x03\x02\x02\x02OQVk" + + "nqu{~\x83\x8A\x8E\x94\x98\x9C\x9F\xA3\xA8\xAD\xB0\xB2\xB6\xB9\xBD\xC0" + + "\xC5\xC8\xCD\xD0\xD2\xDD\xE1\xE4\xE8\xEC\xEF\xF6\xFA\xFF\u0107\u010B\u010F" + + "\u0111\u0113\u0115\u0118\u011F\u0123\u012A\u012E\u0134\u013F\u0142\u0145" + + "\u014D\u014F\u0159\u0161\u0164\u016D\u0172\u017E\u0184\u0192\u0197\u01A5" + + "\u01AC\u01AF\u01B3\u01B9\u01BB\u01C3\u01C5\u01D1\u01D5\u01D8\u01DB\u01E4"; public static __ATN: ATN; public static get _ATN(): ATN { if (!SFMLParser.__ATN) { @@ -3187,6 +3293,9 @@ export class OutputStatementContext extends ParserRuleContext { public resourceExclusion(): ResourceExclusionContext | undefined { return this.tryGetRuleContext(0, ResourceExclusionContext); } + public emptyslots(): EmptyslotsContext | undefined { + return this.tryGetRuleContext(0, EmptyslotsContext); + } public EACH(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.EACH, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); @@ -4096,6 +4205,11 @@ export class SideContext extends ParserRuleContext { public EAST(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.EAST, 0); } public SOUTH(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SOUTH, 0); } public WEST(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.WEST, 0); } + public LEFT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.LEFT, 0); } + public RIGHT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.RIGHT, 0); } + public FRONT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.FRONT, 0); } + public BACK(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.BACK, 0); } + public NULL(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.NULL, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -4125,10 +4239,11 @@ export class SideContext extends ParserRuleContext { export class SlotqualifierContext extends ParserRuleContext { - public SLOTS(): TerminalNode { return this.getToken(SFMLParser.SLOTS, 0); } public rangeset(): RangesetContext { return this.getRuleContext(0, RangesetContext); } + public SLOTS(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SLOTS, 0); } + public SLOT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SLOT, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -4833,12 +4948,51 @@ export class StringLabelContext extends LabelContext { } +export class EmptyslotsContext extends ParserRuleContext { + public EMPTY(): TerminalNode { return this.getToken(SFMLParser.EMPTY, 0); } + public IN(): TerminalNode { return this.getToken(SFMLParser.IN, 0); } + public SLOTS(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SLOTS, 0); } + public SLOT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SLOT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return SFMLParser.RULE_emptyslots; } + // @Override + public enterRule(listener: SFMLListener): void { + if (listener.enterEmptyslots) { + listener.enterEmptyslots(this); + } + } + // @Override + public exitRule(listener: SFMLListener): void { + if (listener.exitEmptyslots) { + listener.exitEmptyslots(this); + } + } + // @Override + public accept(visitor: SFMLVisitor): Result { + if (visitor.visitEmptyslots) { + return visitor.visitEmptyslots(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class IdentifierContext extends ParserRuleContext { public IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.IDENTIFIER, 0); } public REDSTONE(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.REDSTONE, 0); } public GLOBAL(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.GLOBAL, 0); } public SECOND(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SECOND, 0); } public SECONDS(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.SECONDS, 0); } + public TOP(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.TOP, 0); } + public BOTTOM(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.BOTTOM, 0); } + public LEFT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.LEFT, 0); } + public RIGHT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.RIGHT, 0); } + public FRONT(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.FRONT, 0); } + public BACK(): TerminalNode | undefined { return this.tryGetToken(SFMLParser.BACK, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } diff --git a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLVisitor.ts b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLVisitor.ts index 909fbe073..49ff215b5 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLVisitor.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/generated/SFMLVisitor.ts @@ -64,6 +64,7 @@ import { SetOpContext } from "./SFMLParser"; import { LabelAccessContext } from "./SFMLParser"; import { RoundrobinContext } from "./SFMLParser"; import { LabelContext } from "./SFMLParser"; +import { EmptyslotsContext } from "./SFMLParser"; import { IdentifierContext } from "./SFMLParser"; import { StringContext } from "./SFMLParser"; import { NumberContext } from "./SFMLParser"; @@ -530,6 +531,13 @@ export interface SFMLVisitor extends ParseTreeVisitor { */ visitLabel?: (ctx: LabelContext) => Result; + /** + * Visit a parse tree produced by `SFMLParser.emptyslots`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEmptyslots?: (ctx: EmptyslotsContext) => Result; + /** * Visit a parse tree produced by `SFMLParser.identifier`. * @param ctx the parse tree diff --git a/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/map.ts b/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/map.ts index 3a732d6a5..9d465acfb 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/map.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/map.ts @@ -26,10 +26,13 @@ export const keywordToTokenType: { [key: string]: number } = { 'output': SFMLLexer.OUTPUT, 'where': SFMLLexer.WHERE, 'slots': SFMLLexer.SLOTS, + 'slot': SFMLLexer.SLOT, 'retain': SFMLLexer.RETAIN, 'each': SFMLLexer.EACH, 'except': SFMLLexer.EXCEPT, 'forget': SFMLLexer.FORGET, + 'empty': SFMLLexer.EMPTY, + 'in': SFMLLexer.IN, 'without': SFMLLexer.WITHOUT, 'with': SFMLLexer.WITH, 'tag': SFMLLexer.TAG, @@ -45,11 +48,17 @@ export const keywordToTokenType: { [key: string]: number } = { 'south': SFMLLexer.SOUTH, 'west': SFMLLexer.WEST, 'side': SFMLLexer.SIDE, + 'left': SFMLLexer.LEFT, + 'right': SFMLLexer.RIGHT, + 'front': SFMLLexer.FRONT, + 'back': SFMLLexer.BACK, + 'null': SFMLLexer.NULL, 'ticks': SFMLLexer.TICKS, 'tick': SFMLLexer.TICK, 'seconds': SFMLLexer.SECONDS, 'second': SFMLLexer.SECOND, 'global': SFMLLexer.GLOBAL, + 'g': SFMLLexer.GLOBAL, 'plus': SFMLLexer.PLUS, 'redstone': SFMLLexer.REDSTONE, 'pulse': SFMLLexer.PULSE, @@ -62,6 +71,7 @@ export const keywordToTokenType: { [key: string]: number } = { '=': SFMLLexer.EQ_SYMBOL, '<=': SFMLLexer.LE_SYMBOL, '>=': SFMLLexer.GE_SYMBOL, + '+': SFMLLexer.PLUS, ',': SFMLLexer.COMMA, ':': SFMLLexer.COLON, '/': SFMLLexer.SLASH, diff --git a/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/syntax.ts b/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/syntax.ts index 6a05f1b0b..22e520922 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/syntax.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/syntaxes/syntax.ts @@ -86,12 +86,17 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv [SFMLLexer.OUTPUT, 'keyword'], [SFMLLexer.WHERE, 'keyword'], [SFMLLexer.SLOTS, 'keyword'], + [SFMLLexer.SLOT, 'keyword'], [SFMLLexer.RETAIN, 'keyword'], [SFMLLexer.EACH, 'keyword'], [SFMLLexer.EXCEPT, 'keyword'], - [SFMLLexer.WITH, 'keyword'], + [SFMLLexer.EMPTY, 'keyword'], + [SFMLLexer.IN, 'keyword'], [SFMLLexer.WITHOUT, 'keyword'], + [SFMLLexer.WITH, 'keyword'], + [SFMLLexer.TAG, 'keyword'], [SFMLLexer.SIDE, 'keyword'], + [SFMLLexer.REDSTONE, 'keyword'], [SFMLLexer.PULSE, 'keyword'], [SFMLLexer.DO, 'keyword'], [SFMLLexer.END, 'keyword'], @@ -100,12 +105,14 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv //number zone [SFMLLexer.NUMBER, 'number'], + [SFMLLexer.NUMBER_WITH_G_SUFFIX, 'number'], [SFMLLexer.OVERALL, 'number'], [SFMLLexer.SOME, 'number'], [SFMLLexer.ONE, 'number'], [SFMLLexer.LONE, 'number'], [SFMLLexer.TRUE, 'number'], [SFMLLexer.FALSE, 'number'], + [SFMLLexer.NULL, 'number'], [SFMLLexer.NOT, 'number'], [SFMLLexer.AND, 'number'], [SFMLLexer.OR, 'number'], @@ -128,6 +135,10 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv [SFMLLexer.EAST, 'number'], [SFMLLexer.SOUTH, 'number'], [SFMLLexer.WEST, 'number'], + [SFMLLexer.LEFT, 'number'], + [SFMLLexer.RIGHT, 'number'], + [SFMLLexer.FRONT, 'number'], + [SFMLLexer.BACK, 'number'], //string zone [SFMLLexer.STRING, 'string'], @@ -140,6 +151,7 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv [SFMLLexer.SECOND, 'string'], [SFMLLexer.GLOBAL, 'string'], [SFMLLexer.PLUS, 'string'], + //comments zone [SFMLLexer.LINE_COMMENT, 'comment'], diff --git a/platform/visual-studio-code/super-factory-manager-language/src/tooltip/tooltip.ts b/platform/visual-studio-code/super-factory-manager-language/src/tooltip/tooltip.ts index 2f3758fc0..b93f4af05 100644 --- a/platform/visual-studio-code/super-factory-manager-language/src/tooltip/tooltip.ts +++ b/platform/visual-studio-code/super-factory-manager-language/src/tooltip/tooltip.ts @@ -16,12 +16,25 @@ const TOOLTIP_DEFINITIONS: Record 5 then ... end" + ] + }, [SFMLLexer.ELSE]: { description: "**ELSE**\n\nOptional branch for IF statements when the condition is false", examples: [ "if redstone > 5 then ... else ... end" ] }, + [SFMLLexer.HAS]: { + description: "**HAS**\n\nChecks if an inventory or target contains specific items, fluids, or quantities", + examples: [ + "if chest has > 10 coal then ... end", + "if chest has fluid::lava then ... end" + ] + }, [SFMLLexer.OVERALL]: { description: "**OVERALL**\n\nChecks if the condition applies to the entire inventory collectively (same as leaving empty)", examples: [ @@ -40,6 +53,24 @@ const TOOLTIP_DEFINITIONS: Record 64 coal then ... end" + ] + }, + [SFMLLexer.TRUE]: { + description: "**TRUE**\n\nBoolean constant representing a true value", + examples: [ + "if true then ... end" + ] + }, + [SFMLLexer.FALSE]: { + description: "**FALSE**\n\nBoolean constant representing a false value", + examples: [ + "if false then ... end" + ] + }, [SFMLLexer.NOT]: { description: "**NOT**\n\nNegate the expression (true -> false and false -> true)", examples: [ @@ -82,75 +113,100 @@ const TOOLTIP_DEFINITIONS: Record= (GE)**\n\nGreater than or equal comparison", examples: [ - "if redstone ge 12 then", - "if chest has ge 64 coal then" + "if redstone ge 12 then ... end", + "if chest has ge 64 coal then ... end" ] }, [SFMLLexer.GE_SYMBOL]: { description: "**>= (GE)**\n\nGreater than or equal comparison", examples: [ - "if redstone >= 12 then", - "if chest has >= 64 coal then" + "if redstone >= 12 then ... end", + "if chest has >= 64 coal then ... end" + ] + }, + [SFMLLexer.FROM]: { + description: "**FROM**\n\nSpecifies the source inventory or container for an extraction operation", + examples: [ + "input from chest", + "from chest input coal" + ] + }, + [SFMLLexer.TO]: { + description: "**TO**\n\nSpecifies the destination inventory or container for an insertion operation", + examples: [ + "output to chest", + "to furnace output coal" ] }, [SFMLLexer.INPUT]: { description: "**INPUT**\n\nExtracts contents from an inventory", examples: [ "input from chest", - "input fluid::, item::, gas:: from interface", - "input fe:: from \"mek_cube™️\" top side" + "input 64 coal from chest" ] }, [SFMLLexer.OUTPUT]: { description: "**OUTPUT**\n\nSends contents to an inventory", examples: [ "output to chest", - "output fluid::, item::, gas:: to interface", - "output fe:: to \"mek_cube™️\" top side" + "output retain 4 coal to furnace" + ] + }, + [SFMLLexer.WHERE]: { + description: "**WHERE**\n\nReserved filter keyword", + examples: [ + "input where item = minecraft:dirt" ] }, [SFMLLexer.SLOTS]: { - description: "**SLOTS**\n\nSpecifies a particular inventory slots (not all slots are available)", + description: "**SLOTS**\n\nSpecifies a range or list of inventory slots", examples: [ - "output fluid:: to furnace slots 1-3", + "output to furnace slots 1-3", "input from chest slots 5,9,13" ] }, + [SFMLLexer.SLOT]: { + description: "**SLOT**\n\nSpecifies a single inventory slot", + examples: [ + "output to furnace slot 1", + "input from chest slot 0" + ] + }, [SFMLLexer.RETAIN]: { description: "**RETAIN**\n\nKeeps a minimum quantity of items in the source inventory if used on input\n Send as maximum as the limit if used on output", examples: [ @@ -159,24 +215,39 @@ const TOOLTIP_DEFINITIONS: Record 0 then ... end" + "input from machine each side" ] }, [SFMLLexer.EXCEPT]: { - description: "**EXCEPT**\n\nExcludes specific items, fluids, gas, energy from the operation", + description: "**EXCEPT**\n\nExcludes specific items, fluids, gas, or energy from the operation", examples: [ "input * except cobblestone, dirt from chest", "output fluid:: except fluid::lava to interface" ] }, [SFMLLexer.FORGET]: { - description: "**FORGET**\n\nClears the previous inputs, can be used to forget labels too", + description: "**FORGET**\n\nClears previous inputs or specific labels", examples: [ "forget", - "forget chest" + "forget chest", + "forget chest, furnace" + ] + }, + [SFMLLexer.EMPTY]: { + description: "**EMPTY**\n\nUsed with `IN` to target empty inventory slots", + examples: [ + "output to empty slots in chest", + "output to empty slot in furnace" + ] + }, + [SFMLLexer.IN]: { + description: "**IN**\n\nSpecifies the container for empty slots target", + examples: [ + "output to empty slots in chest", + "output to empty slot in furnace" ] }, [SFMLLexer.WITHOUT]: { @@ -187,33 +258,59 @@ const TOOLTIP_DEFINITIONS: Record 0 then", - "every redstone pulse do" + "if redstone > 0 then ... end", + "every redstone pulse do ... end" ] }, [SFMLLexer.PULSE]: { description: "**PULSE**\n\nTriggers on redstone signal changes on the manager block", examples: [ - "every redstone pulse do" + "every redstone pulse do ... end" + ] + }, + [SFMLLexer.DO]: { + description: "**DO**\n\nMarks the beginning of an executable trigger block", + examples: [ + "every 5 ticks do ... end", + "every redstone pulse do ... end" + ] + }, + [SFMLLexer.END]: { + description: "**END**\n\nCloses an open block (IF, EVERY, etc.)", + examples: [ + "if redstone > 0 then ... end", + "every 5 ticks do ... end" ] }, [SFMLLexer.NAME]: { - description: "**NAME**\n\nNames the current program (optional)", + description: "**NAME**\n\nNames the current program (optional header)", examples: [ "name \"My super dupper laggy program\"", "name \"Redstone factory v3\"" ] }, [SFMLLexer.EVERY]: { - description: "**EVERY**\n\nCreates a timed trigger", + description: "**EVERY**\n\nCreates a timed or event trigger block", examples: [ "every 5 ticks do ... end", - "every 10 ticks do ... end", - "every redstone pulse do ... end", - "every second do ... end" + "every redstone pulse do ... end" ] } }; diff --git a/platform/visual-studio-code/super-factory-manager-language/syntaxes/SFML.g4 b/platform/visual-studio-code/super-factory-manager-language/syntaxes/SFML.g4 index c50c7099d..b9a0e1f92 100644 --- a/platform/visual-studio-code/super-factory-manager-language/syntaxes/SFML.g4 +++ b/platform/visual-studio-code/super-factory-manager-language/syntaxes/SFML.g4 @@ -2,7 +2,7 @@ grammar SFML; //Need to get rip of the @header when copying -//go to SFMLLexer.ts after going antlr command on the package.json and solve the 2 issues +//go to SFMLLexer.ts after going antlr command on the package.json and solve the 1 issues @lexer::members { public INCLUDE_UNUSED: boolean = false; // we want syntax highlighting to not break on unexpected tokens } @@ -279,7 +279,7 @@ WS ; UNUSED - : {this.INCLUDE_UNUSED}? . -> channel(HIDDEN) + : {INCLUDE_UNUSED}? . -> channel(HIDDEN) ; fragment A :('a' | 'A') ; diff --git a/platform/visual-studio-code/super-factory-manager-language/tsconfig.json b/platform/visual-studio-code/super-factory-manager-language/tsconfig.json index 83104c4f9..0c700348a 100644 --- a/platform/visual-studio-code/super-factory-manager-language/tsconfig.json +++ b/platform/visual-studio-code/super-factory-manager-language/tsconfig.json @@ -1,19 +1,23 @@ { "compilerOptions": { - "module": "commonjs", - "target": "es6", - "outDir": "out", - "rootDir": "src", - "sourceMap": true, - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true + "module": "commonjs", + "target": "es6", + "outDir": "out", + "rootDir": "src", + "sourceMap": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "types": [ + "node", + "vscode" + ] }, "include": [ - "src" + "src" ], "exclude": [ "node_modules", ".vscode-test" - ] - } \ No newline at end of file + ] +} \ No newline at end of file diff --git a/platform/visual-studio-code/super-factory-manager-language/vsce-versions/super-factory-manager-language-0.0.17.vsix b/platform/visual-studio-code/super-factory-manager-language/vsce-versions/super-factory-manager-language-0.0.17.vsix new file mode 100644 index 000000000..6120b0003 Binary files /dev/null and b/platform/visual-studio-code/super-factory-manager-language/vsce-versions/super-factory-manager-language-0.0.17.vsix differ