diff --git a/docs/package.json b/docs/package.json index 81179517..cecd5da6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -10,13 +10,13 @@ "copy_static": "cp ../tree.jquery.js . && cp ../jqtree.css ." }, "devDependencies": { - "@tailwindcss/typography": "^0.5.7", - "autoprefixer": "^10.4.12", - "postcss": "^8.4.18", - "postcss-cli": "^10", - "postcss-import": "^15", + "@tailwindcss/typography": "^0.5.9", + "autoprefixer": "^10.4.14", + "postcss": "^8.4.21", + "postcss-cli": "^10.1.0", + "postcss-import": "^15.1.0", "postcss-load-config": "^4.0.1", - "postcss-nested": "^6", - "tailwindcss": "^3.1.8" + "postcss-nested": "^6.0.1", + "tailwindcss": "^3.3.1" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 741f0c41..c983bc15 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -1,28 +1,68 @@ -lockfileVersion: 5.4 - -specifiers: - '@tailwindcss/typography': ^0.5.7 - autoprefixer: ^10.4.12 - postcss: ^8.4.18 - postcss-cli: ^10 - postcss-import: ^15 - postcss-load-config: ^4.0.1 - postcss-nested: ^6 - tailwindcss: ^3.1.8 +lockfileVersion: '6.0' devDependencies: - '@tailwindcss/typography': 0.5.7_tailwindcss@3.1.8 - autoprefixer: 10.4.12_postcss@8.4.18 - postcss: 8.4.18 - postcss-cli: 10.0.0_postcss@8.4.18 - postcss-import: 15.0.0_postcss@8.4.18 - postcss-load-config: 4.0.1_postcss@8.4.18 - postcss-nested: 6.0.0_postcss@8.4.18 - tailwindcss: 3.1.8_postcss@8.4.18 + '@tailwindcss/typography': + specifier: ^0.5.9 + version: 0.5.9(tailwindcss@3.3.1) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.21) + postcss: + specifier: ^8.4.21 + version: 8.4.21 + postcss-cli: + specifier: ^10.1.0 + version: 10.1.0(postcss@8.4.21) + postcss-import: + specifier: ^15.1.0 + version: 15.1.0(postcss@8.4.21) + postcss-load-config: + specifier: ^4.0.1 + version: 4.0.1(postcss@8.4.21) + postcss-nested: + specifier: ^6.0.1 + version: 6.0.1(postcss@8.4.21) + tailwindcss: + specifier: ^3.3.1 + version: 3.3.1(postcss@8.4.21) packages: - /@nodelib/fs.scandir/2.1.5: + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -30,21 +70,21 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 dev: true - /@tailwindcss/typography/0.5.7_tailwindcss@3.1.8: - resolution: {integrity: sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==} + /@tailwindcss/typography@0.5.9(tailwindcss@3.3.1): + resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: @@ -52,105 +92,101 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.1.8_postcss@8.4.18 - dev: true - - /acorn-node/1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} + tailwindcss: 3.3.1(postcss@8.4.21) dev: true - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /autoprefixer/10.4.12_postcss@8.4.18: - resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} + /autoprefixer@10.4.14(postcss@8.4.21): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001420 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001478 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.18 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true - /binary-extensions/2.2.0: + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /braces/3.0.2: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001420 - electron-to-chromium: 1.4.283 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + caniuse-lite: 1.0.30001478 + electron-to-chromium: 1.4.310 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10(browserslist@4.21.5) dev: true - /camelcase-css/2.0.1: + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: true - /caniuse-lite/1.0.30001420: - resolution: {integrity: sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==} + /caniuse-lite@1.0.30001478: + resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.2 + anymatch: 3.1.3 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 @@ -161,7 +197,7 @@ packages: fsevents: 2.3.2 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -170,71 +206,66 @@ packages: wrap-ansi: 7.0.0 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /cssesc/3.0.0: + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: true - /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: true - - /dependency-graph/0.11.0: + /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} dev: true - /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.7 - dev: true - - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /electron-to-chromium/1.4.283: - resolution: {integrity: sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==} + /electron-to-chromium@1.4.310: + resolution: {integrity: sha512-/xlATgfwkm5uDDwLw5nt/MNEf7c1oazLURMZLy39vOioGYyYzLWIDT8fZMJak6qTiAJ7udFTy7JG7ziyjNutiA==} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -245,33 +276,37 @@ packages: micromatch: 4.0.5 dev: true - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /fraction.js/4.2.0: + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + /fs-extra@11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true - /fsevents/2.3.2: + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -279,97 +314,124 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-stdin/9.0.0: + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /globby/13.1.2: - resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globby@13.1.3: + resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /ignore/5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true - /is-binary-path/2.1.0: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + /is-core-module@2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /jsonfile/6.1.0: + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + dev: true + + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -377,29 +439,33 @@ packages: graceful-fs: 4.2.10 dev: true - /lilconfig/2.0.6: + /lilconfig@2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} dev: true - /lodash.castarray/4.4.0: + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: true - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -407,60 +473,91 @@ packages: picomatch: 2.3.1 dev: true - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 dev: true - /nanoid/3.3.4: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize-range/0.1.2: + /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: true - /object-hash/3.0.0: + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: true - /path-parse/1.0.7: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true - /postcss-cli/10.0.0_postcss@8.4.18: - resolution: {integrity: sha512-Wjy/00wBBEgQqnSToznxLWDnATznokFGXsHtF/3G8glRZpz5KYlfHcBW/VMJmWAeF2x49zjgy4izjM3/Wx1dKA==} + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /postcss-cli@10.1.0(postcss@8.4.21): + resolution: {integrity: sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -468,56 +565,56 @@ packages: dependencies: chokidar: 3.5.3 dependency-graph: 0.11.0 - fs-extra: 10.1.0 + fs-extra: 11.1.0 get-stdin: 9.0.0 - globby: 13.1.2 + globby: 13.1.3 picocolors: 1.0.0 - postcss: 8.4.18 - postcss-load-config: 4.0.1_postcss@8.4.18 - postcss-reporter: 7.0.5_postcss@8.4.18 + postcss: 8.4.21 + postcss-load-config: 4.0.1(postcss@8.4.21) + postcss-reporter: 7.0.5(postcss@8.4.21) pretty-hrtime: 1.0.3 read-cache: 1.0.0 - slash: 4.0.0 - yargs: 17.6.0 + slash: 5.0.0 + yargs: 17.7.1 transitivePeerDependencies: - ts-node dev: true - /postcss-import/14.1.0_postcss@8.4.18: + /postcss-import@14.1.0(postcss@8.4.21): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.18 + postcss: 8.4.21 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 dev: true - /postcss-import/15.0.0_postcss@8.4.18: - resolution: {integrity: sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==} + /postcss-import@15.1.0(postcss@8.4.21): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.18 + postcss: 8.4.21 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 dev: true - /postcss-js/4.0.0_postcss@8.4.18: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + /postcss-js@4.0.1(postcss@8.4.21): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.18 + postcss: 8.4.21 dev: true - /postcss-load-config/3.1.4_postcss@8.4.18: + /postcss-load-config@3.1.4(postcss@8.4.21): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -530,11 +627,11 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - postcss: 8.4.18 + postcss: 8.4.21 yaml: 1.10.2 dev: true - /postcss-load-config/4.0.1_postcss@8.4.18: + /postcss-load-config@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -547,42 +644,42 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - postcss: 8.4.18 - yaml: 2.1.3 + postcss: 8.4.21 + yaml: 2.2.1 dev: true - /postcss-nested/5.0.6_postcss@8.4.18: - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + /postcss-nested@6.0.0(postcss@8.4.21): + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.18 - postcss-selector-parser: 6.0.10 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 dev: true - /postcss-nested/6.0.0_postcss@8.4.18: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + /postcss-nested@6.0.1(postcss@8.4.21): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.18 - postcss-selector-parser: 6.0.10 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 dev: true - /postcss-reporter/7.0.5_postcss@8.4.18: + /postcss-reporter@7.0.5(postcss@8.4.21): resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==} engines: {node: '>=10'} peerDependencies: postcss: ^8.1.0 dependencies: picocolors: 1.0.0 - postcss: 8.4.18 + postcss: 8.4.21 thenby: 1.3.4 dev: true - /postcss-selector-parser/6.0.10: + /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} dependencies: @@ -590,12 +687,20 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-value-parser/4.2.0: + /postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.18: - resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} + /postcss@8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -603,69 +708,74 @@ packages: source-map-js: 1.0.2 dev: true - /pretty-hrtime/1.0.3: + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: true - /read-cache/1.0.0: + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /source-map-js/1.0.2: + /slash@5.0.0: + resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} + engines: {node: '>=14.16'} + dev: true + + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -674,20 +784,34 @@ packages: strip-ansi: 6.0.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /tailwindcss/3.1.8_postcss@8.4.18: - resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} + /tailwindcss@3.3.1(postcss@8.4.21): + resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: @@ -696,61 +820,80 @@ packages: arg: 5.0.2 chokidar: 3.5.3 color-name: 1.1.4 - detective: 5.2.1 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.2.12 glob-parent: 6.0.2 is-glob: 4.0.3 + jiti: 1.18.2 lilconfig: 2.0.6 + micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.18 - postcss-import: 14.1.0_postcss@8.4.18 - postcss-js: 4.0.0_postcss@8.4.18 - postcss-load-config: 3.1.4_postcss@8.4.18 - postcss-nested: 5.0.6_postcss@8.4.18 - postcss-selector-parser: 6.0.10 + postcss: 8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 resolve: 1.22.1 + sucrase: 3.32.0 transitivePeerDependencies: - ts-node dev: true - /thenby/1.3.4: + /thenby@1.3.4: resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} dev: true - /to-regex-range/5.0.1: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /universalify/2.0.0: + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.5): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -759,33 +902,32 @@ packages: strip-ansi: 6.0.1 dev: true - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: true - /yaml/2.1.3: - resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} + /yaml@2.2.1: + resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/17.6.0: - resolution: {integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==} + /yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/docs/static/bower.json b/docs/static/bower.json index a4216293..bd33df39 100644 --- a/docs/static/bower.json +++ b/docs/static/bower.json @@ -1,7 +1,7 @@ { "name": "jqtree-docs", "dependencies": { - "fontawesome": "5.15.2", + "fontawesome": "6.3.0", "jquery": "3.6.3", "jquery-mockjax": "2.6.0" } diff --git a/docs/static/bower_components/fontawesome/css/all.min.css b/docs/static/bower_components/fontawesome/css/all.min.css index 4b0bad1f..df7439bc 100644 --- a/docs/static/bower_components/fontawesome/css/all.min.css +++ b/docs/static/bower_components/fontawesome/css/all.min.css @@ -1,5 +1,9 @@ /*! - * Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. */ -.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"} +.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot deleted file mode 100644 index 75a2c7f9..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.eot and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg deleted file mode 100644 index d6f80194..00000000 --- a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +++ /dev/null @@ -1,3717 +0,0 @@ - - - - -Created by FontForge 20200314 at Wed Jan 13 11:55:54 2021 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf index 4c57a4c8..911775ec 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf and b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff deleted file mode 100644 index 0ddd8b31..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 index f4d9f8db..ffec3955 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 and b/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot deleted file mode 100644 index c40a954e..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.eot and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg deleted file mode 100644 index 898dc42d..00000000 --- a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +++ /dev/null @@ -1,801 +0,0 @@ - - - - -Created by FontForge 20200314 at Wed Jan 13 11:55:54 2021 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf index 932df4ae..7c7df7fa 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf and b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff deleted file mode 100644 index 7f7b5b67..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 index 24a3df2d..eccc8c8f 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 and b/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot deleted file mode 100644 index 3fbb831e..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.eot and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg deleted file mode 100644 index c91788b0..00000000 --- a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +++ /dev/null @@ -1,5028 +0,0 @@ - - - - -Created by FontForge 20200314 at Wed Jan 13 11:55:54 2021 - By Robert Madole -Copyright (c) Font Awesome - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf index 49133379..94135a20 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf and b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff deleted file mode 100644 index c187c7fd..00000000 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff and /dev/null differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 index de099897..7e62f26e 100644 Binary files a/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 and b/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf b/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf new file mode 100644 index 00000000..9cc7d017 Binary files /dev/null and b/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.ttf differ diff --git a/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 b/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 00000000..87600727 Binary files /dev/null and b/docs/static/bower_components/fontawesome/webfonts/fa-v4compatibility.woff2 differ diff --git a/docs/static/documentation.css b/docs/static/documentation.css index 7f87b764..4fb3cabe 100644 --- a/docs/static/documentation.css +++ b/docs/static/documentation.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com +! tailwindcss v3.2.7 | MIT License | https://tailwindcss.com */ /* @@ -30,6 +30,7 @@ 2. Prevent adjustments of font size after orientation changes in iOS. 3. Use a more readable tab size. 4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. */ html { @@ -44,6 +45,8 @@ html { /* 3 */ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ + font-feature-settings: normal; + /* 5 */ } /* @@ -410,6 +413,12 @@ video { height: auto; } +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + *, ::before, ::after { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; @@ -509,6 +518,11 @@ video { max-width: 65ch; } +.prose :where(p):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; +} + .prose :where([class~="lead"]):not(:where([class~="not-prose"] *)) { color: var(--tw-prose-lead); font-size: 1.25em; @@ -861,11 +875,6 @@ video { line-height: 1.75; } -.prose :where(p):not(:where([class~="not-prose"] *)) { - margin-top: 1.25em; - margin-bottom: 1.25em; -} - .prose :where(video):not(:where([class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; @@ -962,151 +971,6 @@ video { margin-bottom: 0; } -.prose-sm :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) { - margin-top: 0.5714286em; - margin-bottom: 0.5714286em; -} - -.prose-sm :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.1428571em; -} - -.prose-sm :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.1428571em; -} - -.prose-sm :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.1428571em; -} - -.prose-sm :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.1428571em; -} - -.prose-sm :where(.prose > :first-child):not(:where([class~="not-prose"] *)) { - margin-top: 0; -} - -.prose-sm :where(.prose > :last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 0; -} - -.prose-base :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) { - margin-top: 0.75em; - margin-bottom: 0.75em; -} - -.prose-base :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.25em; -} - -.prose-base :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.25em; -} - -.prose-base :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.25em; -} - -.prose-base :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.25em; -} - -.prose-base :where(.prose > :first-child):not(:where([class~="not-prose"] *)) { - margin-top: 0; -} - -.prose-base :where(.prose > :last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 0; -} - -.prose-lg :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) { - margin-top: 0.8888889em; - margin-bottom: 0.8888889em; -} - -.prose-lg :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.3333333em; -} - -.prose-lg :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.3333333em; -} - -.prose-lg :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.3333333em; -} - -.prose-lg :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.3333333em; -} - -.prose-lg :where(.prose > :first-child):not(:where([class~="not-prose"] *)) { - margin-top: 0; -} - -.prose-lg :where(.prose > :last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 0; -} - -.prose-xl :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) { - margin-top: 0.8em; - margin-bottom: 0.8em; -} - -.prose-xl :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.2em; -} - -.prose-xl :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.2em; -} - -.prose-xl :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.2em; -} - -.prose-xl :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.2em; -} - -.prose-xl :where(.prose > :first-child):not(:where([class~="not-prose"] *)) { - margin-top: 0; -} - -.prose-xl :where(.prose > :last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 0; -} - -.prose-2xl :where(.prose > ul > li p):not(:where([class~="not-prose"] *)) { - margin-top: 0.8333333em; - margin-bottom: 0.8333333em; -} - -.prose-2xl :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.3333333em; -} - -.prose-2xl :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.3333333em; -} - -.prose-2xl :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)) { - margin-top: 1.3333333em; -} - -.prose-2xl :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 1.3333333em; -} - -.prose-2xl :where(.prose > :first-child):not(:where([class~="not-prose"] *)) { - margin-top: 0; -} - -.prose-2xl :where(.prose > :last-child):not(:where([class~="not-prose"] *)) { - margin-bottom: 0; -} - .fixed { position: fixed; } @@ -1131,40 +995,40 @@ video { margin-right: auto; } -.mt-8 { - margin-top: 2rem; +.mb-16 { + margin-bottom: 4rem; } .mb-3 { margin-bottom: 0.75rem; } -.mt-5 { - margin-top: 1.25rem; +.mb-4 { + margin-bottom: 1rem; } .mb-8 { margin-bottom: 2rem; } -.mb-4 { - margin-bottom: 1rem; +.ml-2 { + margin-left: 0.5rem; } -.mb-16 { - margin-bottom: 4rem; +.mr-4 { + margin-right: 1rem; } .mt-4 { margin-top: 1rem; } -.mr-4 { - margin-right: 1rem; +.mt-5 { + margin-top: 1.25rem; } -.ml-2 { - margin-left: 0.5rem; +.mt-8 { + margin-top: 2rem; } .block { @@ -1213,6 +1077,11 @@ video { border-left-width: 1px; } +.border-gray-300 { + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity)); +} + .border-slate-100 { --tw-border-opacity: 1; border-color: rgb(241 245 249 / var(--tw-border-opacity)); @@ -1222,11 +1091,6 @@ video { border-color: transparent; } -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - .bg-gray-50 { --tw-bg-opacity: 1; background-color: rgb(249 250 251 / var(--tw-bg-opacity)); @@ -1242,31 +1106,21 @@ video { background-color: rgb(255 255 255 / var(--tw-bg-opacity)); } -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - .px-10 { padding-left: 2.5rem; padding-right: 2.5rem; } -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.py-8 { - padding-top: 2rem; - padding-bottom: 2rem; -} - .px-4 { padding-left: 1rem; padding-right: 1rem; } +.px-8 { + padding-left: 2rem; + padding-right: 2rem; +} + .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; @@ -1277,12 +1131,14 @@ video { padding-bottom: 0.5rem; } -.pl-4 { - padding-left: 1rem; +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; } -.pt-16 { - padding-top: 4rem; +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; } .pb-24 { @@ -1293,58 +1149,71 @@ video { padding-bottom: 1.5rem; } +.pl-4 { + padding-left: 1rem; +} + +.pt-16 { + padding-top: 4rem; +} + .text-center { text-align: center; } +.text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; +} + .text-6xl { font-size: 3.75rem; line-height: 1; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - .text-lg { font-size: 1.125rem; line-height: 1.75rem; } -.text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; -} - .text-sm { font-size: 0.875rem; line-height: 1.25rem; } -.font-semibold { - font-weight: 600; -} - -.font-extrabold { - font-weight: 800; +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; } .font-bold { font-weight: 700; } +.font-extrabold { + font-weight: 800; +} + .font-medium { font-weight: 500; } +.font-semibold { + font-weight: 600; +} + .tracking-tight { letter-spacing: -0.025em; } -.text-slate-700 { +.text-gray-500 { --tw-text-opacity: 1; - color: rgb(51 65 85 / var(--tw-text-opacity)); + color: rgb(107 114 128 / var(--tw-text-opacity)); +} + +.text-gray-700 { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); } .text-gray-900 { @@ -1357,14 +1226,9 @@ video { color: rgb(79 70 229 / var(--tw-text-opacity)); } -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-white { +.text-slate-700 { --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); + color: rgb(51 65 85 / var(--tw-text-opacity)); } .text-slate-900 { @@ -1372,9 +1236,9 @@ video { color: rgb(15 23 42 / var(--tw-text-opacity)); } -.text-gray-700 { +.text-white { --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); + color: rgb(255 255 255 / var(--tw-text-opacity)); } .underline { @@ -1402,14 +1266,14 @@ video { border-color: rgb(148 163 184 / var(--tw-border-opacity)); } -.hover\:bg-indigo-700:hover { +.hover\:bg-gray-50:hover { --tw-bg-opacity: 1; - background-color: rgb(67 56 202 / var(--tw-bg-opacity)); + background-color: rgb(249 250 251 / var(--tw-bg-opacity)); } -.hover\:bg-gray-50:hover { +.hover\:bg-indigo-700:hover { --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); + background-color: rgb(67 56 202 / var(--tw-bg-opacity)); } .hover\:text-slate-900:hover { diff --git a/docs/tree.jquery.js b/docs/tree.jquery.js index a01dcbec..f184d61f 100644 --- a/docs/tree.jquery.js +++ b/docs/tree.jquery.js @@ -1,7 +1,7 @@ /* JqTree 1.7.0 -Copyright 2022 Marco Braak +Copyright 2023 Marco Braak Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -17,5 +17,5 @@ limitations under the License. @license */ -var jqtree=function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function n(e){for(var n=1;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function N(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var S;!function(e){e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None"}(S||(S={}));var b={before:S.Before,after:S.After,inside:S.Inside,none:S.None},_=function(e){for(var t in b)if(Object.prototype.hasOwnProperty.call(b,t)&&b[t]===e)return t;return""},D=function(e){return"object"===i(e)&&"children"in e&&e.children instanceof Array},I=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;r(this,e),a(this,"id",void 0),a(this,"name",void 0),a(this,"children",void 0),a(this,"parent",void 0),a(this,"idMapping",void 0),a(this,"tree",void 0),a(this,"nodeClass",void 0),a(this,"load_on_demand",void 0),a(this,"is_open",void 0),a(this,"element",void 0),a(this,"is_loading",void 0),a(this,"isEmptyFolder",void 0),this.name="",this.isEmptyFolder=!1,this.load_on_demand=!1,this.setData(t),this.children=[],this.parent=null,n&&(this.idMapping=new Map,this.tree=this,this.nodeClass=i)}return s(e,[{key:"setData",value:function(e){if(e)if("string"==typeof e)this.name=e;else if("object"===i(e))for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"label"===t||"name"===t?"string"==typeof n&&(this.name=n):"children"!==t&&"parent"!==t&&(this[t]=n)}}},{key:"loadFromData",value:function(e){this.removeChildren();var t,n=k(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this.createNode(i);this.addChild(r),D(i)&&(0===i.children.length?r.isEmptyFolder=!0:r.loadFromData(i.children))}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"addChild",value:function(e){this.children.push(e),e.setParent(this)}},{key:"addChildAtPosition",value:function(e,t){this.children.splice(t,0,e),e.setParent(this)}},{key:"removeChild",value:function(e){e.removeChildren(),this.doRemoveChild(e)}},{key:"getChildIndex",value:function(e){return this.children.indexOf(e)}},{key:"hasChildren",value:function(){return 0!==this.children.length}},{key:"isFolder",value:function(){return this.hasChildren()||this.load_on_demand}},{key:"iterate",value:function(e){!function t(n,i){if(n.children){var r,o=k(n.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;e(s,i)&&s.hasChildren()&&t(s,i+1)}}catch(e){o.e(e)}finally{o.f()}}}(this,0)}},{key:"moveNode",value:function(e,t,n){if(!e.parent||e.isParentOf(t))return!1;switch(e.parent.doRemoveChild(e),n){case S.After:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)+1),!0);case S.Before:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)),!0);case S.Inside:return t.addChildAtPosition(e,0),!0;default:return!1}}},{key:"getData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=function e(t){return t.map((function(t){var n={};for(var i in t)if(-1===["parent","children","element","idMapping","load_on_demand","nodeClass","tree","isEmptyFolder"].indexOf(i)&&Object.prototype.hasOwnProperty.call(t,i)){var r=t[i];n[i]=r}return t.hasChildren()&&(n.children=e(t.children)),n}))};return t(e?[this]:this.children)}},{key:"getNodeByName",value:function(e){return this.getNodeByCallback((function(t){return t.name===e}))}},{key:"getNodeByNameMustExist",value:function(e){var t=this.getNodeByCallback((function(t){return t.name===e}));if(!t)throw"Node with name ".concat(e," not found");return t}},{key:"getNodeByCallback",value:function(e){var t=null;return this.iterate((function(n){return!t&&(!e(n)||(t=n,!1))})),t}},{key:"addAfter",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n+1),D(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addBefore",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n),D(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addParent",value:function(e){if(this.parent){var t=this.createNode(e);this.tree&&t.setParent(this.tree);var n,i=this.parent,r=k(i.children);try{for(r.s();!(n=r.n()).done;){var o=n.value;t.addChild(o)}}catch(e){r.e(e)}finally{r.f()}return i.children=[],i.addChild(t),t}return null}},{key:"remove",value:function(){this.parent&&(this.parent.removeChild(this),this.parent=null)}},{key:"append",value:function(e){var t=this.createNode(e);return this.addChild(t),D(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"prepend",value:function(e){var t=this.createNode(e);return this.addChildAtPosition(t,0),D(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"isParentOf",value:function(e){for(var t=e.parent;t;){if(t===this)return!0;t=t.parent}return!1}},{key:"getLevel",value:function(){for(var e=0,t=this;t.parent;)e+=1,t=t.parent;return e}},{key:"getNodeById",value:function(e){return this.idMapping.get(e)||null}},{key:"addNodeToIndex",value:function(e){null!=e.id&&this.idMapping.set(e.id,e)}},{key:"removeNodeFromIndex",value:function(e){null!=e.id&&this.idMapping.delete(e.id)}},{key:"removeChildren",value:function(){var e=this;this.iterate((function(t){var n;return null===(n=e.tree)||void 0===n||n.removeNodeFromIndex(t),!0})),this.children=[]}},{key:"getPreviousSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)-1;return e>=0?this.parent.children[e]:null}return null}},{key:"getNextSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e0&&void 0!==arguments[0])||arguments[0];if(e&&this.hasChildren())return this.children[0];if(this.parent){var t=this.getNextSibling();return t||this.parent.getNextNode(!1)}return null}},{key:"getNextVisibleNode",value:function(){if(this.hasChildren()&&this.is_open)return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getPreviousNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()?e.getLastChild():e:this.getParent()}return null}},{key:"getPreviousVisibleNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()&&e.is_open?e.getLastChild():e:this.getParent()}return null}},{key:"getParent",value:function(){return this.parent&&this.parent.parent?this.parent:null}},{key:"getLastChild",value:function(){if(this.hasChildren()){var e=this.children[this.children.length-1];return e.hasChildren()&&e.is_open?e.getLastChild():e}return null}},{key:"initFromData",value:function(e){var t,n=this,i=function(e){var t,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.createNode();o.initFromData(r),n.addChild(o)}}catch(e){i.e(e)}finally{i.f()}};t=e,n.setData(t),D(t)&&t.children.length&&i(t.children)}},{key:"setParent",value:function(e){var t;this.parent=e,this.tree=e.tree,null===(t=this.tree)||void 0===t||t.addNodeToIndex(this)}},{key:"doRemoveChild",value:function(e){var t;this.children.splice(this.getChildIndex(e),1),null===(t=this.tree)||void 0===t||t.removeNodeFromIndex(e)}},{key:"getNodeClass",value:function(){var t;return this.nodeClass||(null==this||null===(t=this.tree)||void 0===t?void 0:t.nodeClass)||e}},{key:"createNode",value:function(e){return new(this.getNodeClass())(e)}}]),e}(),j=function(){function e(t){r(this,e),a(this,"hitAreas",void 0),a(this,"isDragging",void 0),a(this,"currentItem",void 0),a(this,"hoveredArea",void 0),a(this,"positionInfo",void 0),a(this,"treeWidget",void 0),a(this,"dragElement",void 0),a(this,"previousGhost",void 0),a(this,"openFolderTimer",void 0),this.treeWidget=t,this.hoveredArea=null,this.hitAreas=[],this.isDragging=!1,this.currentItem=null,this.positionInfo=null}return s(e,[{key:"mouseCapture",value:function(e){var t=jQuery(e.target);if(!this.mustCaptureElement(t))return null;if(this.treeWidget.options.onIsMoveHandle&&!this.treeWidget.options.onIsMoveHandle(t))return null;var n=this.treeWidget._getNodeElement(t);return n&&this.treeWidget.options.onCanMove&&(this.treeWidget.options.onCanMove(n.node)||(n=null)),this.currentItem=n,null!=this.currentItem}},{key:"mouseStart",value:function(e){var t;if(!this.currentItem||void 0===e.pageX||void 0===e.pageY)return!1;this.refresh();var n=jQuery(e.target).offset(),i=n?n.left:0,r=n?n.top:0,o=this.currentItem.node;return this.dragElement=new C(o.name,e.pageX-i,e.pageY-r,this.treeWidget.element,null===(t=this.treeWidget.options.autoEscape)||void 0===t||t),this.isDragging=!0,this.positionInfo=e,this.currentItem.$element.addClass("jqtree-moving"),!0}},{key:"mouseDrag",value:function(e){if(!this.currentItem||!this.dragElement||void 0===e.pageX||void 0===e.pageY)return!1;this.dragElement.move(e.pageX,e.pageY),this.positionInfo=e;var t=this.findHoveredArea(e.pageX,e.pageY);return t&&this.canMoveToArea(t)?(t.node.isFolder()||this.stopOpenFolderTimer(),this.hoveredArea!==t&&(this.hoveredArea=t,this.mustOpenFolderTimer(t)?this.startOpenFolderTimer(t.node):this.stopOpenFolderTimer(),this.updateDropHint())):(this.removeDropHint(),this.stopOpenFolderTimer(),this.hoveredArea=t),t||this.treeWidget.options.onDragMove&&this.treeWidget.options.onDragMove(this.currentItem.node,e.originalEvent),!0}},{key:"mouseStop",value:function(e){this.moveItem(e),this.clear(),this.removeHover(),this.removeDropHint(),this.removeHitAreas();var t=this.currentItem;return this.currentItem&&(this.currentItem.$element.removeClass("jqtree-moving"),this.currentItem=null),this.isDragging=!1,this.positionInfo=null,!this.hoveredArea&&t&&this.treeWidget.options.onDragStop&&this.treeWidget.options.onDragStop(t.node,e.originalEvent),!1}},{key:"refresh",value:function(){this.removeHitAreas(),this.currentItem&&(this.generateHitAreas(),this.currentItem=this.treeWidget._getNodeElementForNode(this.currentItem.node),this.isDragging&&this.currentItem.$element.addClass("jqtree-moving"))}},{key:"generateHitAreas",value:function(){if(this.currentItem){var e=new E(this.treeWidget.tree,this.currentItem.node,this.getTreeDimensions().bottom);this.hitAreas=e.generate()}else this.hitAreas=[]}},{key:"mustCaptureElement",value:function(e){return!e.is("input,select,textarea")}},{key:"canMoveToArea",value:function(e){if(!this.treeWidget.options.onCanMoveTo)return!0;if(!this.currentItem)return!1;var t=_(e.position);return this.treeWidget.options.onCanMoveTo(this.currentItem.node,e.node,t)}},{key:"removeHitAreas",value:function(){this.hitAreas=[]}},{key:"clear",value:function(){this.dragElement&&(this.dragElement.remove(),this.dragElement=null)}},{key:"removeDropHint",value:function(){this.previousGhost&&this.previousGhost.remove()}},{key:"removeHover",value:function(){this.hoveredArea=null}},{key:"findHoveredArea",value:function(e,t){var n=this.getTreeDimensions();if(en.right||t>n.bottom)return null;for(var i=0,r=this.hitAreas.length;i>1,s=this.hitAreas[o];if(ts.bottom))return s;i=o+1}}return null}},{key:"mustOpenFolderTimer",value:function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===S.Inside}},{key:"updateDropHint",value:function(){if(this.hoveredArea){this.removeDropHint();var e=this.treeWidget._getNodeElementForNode(this.hoveredArea.node);this.previousGhost=e.addDropHint(this.hoveredArea.position)}}},{key:"startOpenFolderTimer",value:function(e){var t=this;this.stopOpenFolderTimer();var n=this.treeWidget.options.openFolderDelay;!1!==n&&(this.openFolderTimer=window.setTimeout((function(){t.treeWidget._openNode(e,t.treeWidget.options.slide,(function(){t.refresh(),t.updateDropHint()}))}),n))}},{key:"stopOpenFolderTimer",value:function(){this.openFolderTimer&&(clearTimeout(this.openFolderTimer),this.openFolderTimer=null)}},{key:"moveItem",value:function(e){var t=this;if(this.currentItem&&this.hoveredArea&&this.hoveredArea.position!==S.None&&this.canMoveToArea(this.hoveredArea)){var n=this.currentItem.node,i=this.hoveredArea.node,r=this.hoveredArea.position,o=n.parent;r===S.Inside&&(this.hoveredArea.node.is_open=!0);var s=function(){t.treeWidget.tree.moveNode(n,i,r),t.treeWidget.element.empty(),t.treeWidget._refreshElements(null)};this.treeWidget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:_(r),previous_parent:o,do_move:s,original_event:e.originalEvent}}).isDefaultPrevented()||s()}}},{key:"getTreeDimensions",value:function(){var e=this.treeWidget.element.offset();if(e){var t=this.treeWidget.element,n=t.width()||0,i=t.height()||0,r=e.left+this.treeWidget._getScrollLeft();return{left:r,top:e.top,right:r+n,bottom:e.top+i+16}}return{left:0,top:0,right:0,bottom:0}}}]),e}(),E=function(e){l(n,e);var t=v(n);function n(e,i,o){var s;return r(this,n),a(h(s=t.call(this,e)),"currentNode",void 0),a(h(s),"treeBottom",void 0),a(h(s),"positions",void 0),a(h(s),"lastTop",void 0),s.currentNode=i,s.treeBottom=o,s}return s(n,[{key:"generate",value:function(){return this.positions=[],this.lastTop=0,this.iterate(),this.generateHitAreas(this.positions)}},{key:"generateHitAreas",value:function(e){var t,n=-1,i=[],r=[],o=k(e);try{for(o.s();!(t=o.n()).done;){var s=t.value;s.top!==n&&i.length&&(i.length&&this.generateHitAreasForGroup(r,i,n,s.top),n=s.top,i=[]),i.push(s)}}catch(e){o.e(e)}finally{o.f()}return this.generateHitAreasForGroup(r,i,n,this.treeBottom),r}},{key:"handleOpenFolder",value:function(e,t){return e!==this.currentNode&&(e.children[0]!==this.currentNode&&this.addPosition(e,S.Inside,this.getTop(t)),!0)}},{key:"handleClosedFolder",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,S.None,i):(this.addPosition(e,S.Inside,i),t!==this.currentNode&&this.addPosition(e,S.After,i))}},{key:"handleFirstNode",value:function(e){e!==this.currentNode&&this.addPosition(e,S.Before,this.getTop(jQuery(e.element)))}},{key:"handleAfterOpenFolder",value:function(e,t){e===this.currentNode||t===this.currentNode?this.addPosition(e,S.None,this.lastTop):this.addPosition(e,S.After,this.lastTop)}},{key:"handleNode",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,S.None,i):this.addPosition(e,S.Inside,i),t===this.currentNode||e===this.currentNode?this.addPosition(e,S.None,i):this.addPosition(e,S.After,i)}},{key:"getTop",value:function(e){var t=e.offset();return t?t.top:0}},{key:"addPosition",value:function(e,t,n){var i={top:n,bottom:0,node:e,position:t};this.positions.push(i),this.lastTop=n}},{key:"generateHitAreasForGroup",value:function(e,t,n,i){for(var r=Math.min(t.length,4),o=Math.round((i-n)/r),s=n,a=0;a").addClass("jqtree-title jqtree-dragging"),s?this.$element.text(t):this.$element.html(t),this.$element.css("position","absolute"),o.append(this.$element)}return s(e,[{key:"move",value:function(e,t){this.$element.offset({left:e-this.offsetX,top:t-this.offsetY})}},{key:"remove",value:function(){this.$element.remove()}}]),e}(),w=function(e){return e?"true":"false"},F=function(){function e(t){r(this,e),a(this,"openedIconElement",void 0),a(this,"closedIconElement",void 0),a(this,"treeWidget",void 0),this.treeWidget=t,this.openedIconElement=this.createButtonElement(t.options.openedIcon||"+"),this.closedIconElement=this.createButtonElement(t.options.closedIcon||"-")}return s(e,[{key:"render",value:function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()}},{key:"renderFromRoot",value:function(){var e=this.treeWidget.element;e.empty(),this.createDomElements(e[0],this.treeWidget.tree.children,!0,1)}},{key:"renderFromNode",value:function(e){var t=jQuery(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)}},{key:"createDomElements",value:function(e,t,n,i){var r=this.createUl(n);e.appendChild(r);var o,s=k(t);try{for(s.s();!(o=s.n()).done;){var a=o.value,l=this.createLi(a,i);r.appendChild(l),this.attachNodeData(a,l),a.hasChildren()&&this.createDomElements(l,a.children,!1,i+1)}}catch(e){s.e(e)}finally{s.f()}}},{key:"attachNodeData",value:function(e,t){e.element=t,jQuery(t).data("node",e)}},{key:"createUl",value:function(e){var t,n;e?(t="jqtree-tree",n="tree",this.treeWidget.options.rtl&&(t+=" jqtree-rtl")):(t="",n="group"),this.treeWidget.options.dragAndDrop&&(t+=" jqtree-dnd");var i=document.createElement("ul");return i.className="jqtree_common ".concat(t),i.setAttribute("role",n),i}},{key:"createLi",value:function(e,t){var n=Boolean(this.treeWidget.selectNodeHandler.isNodeSelected(e)),i=e.isFolder()||e.isEmptyFolder&&this.treeWidget.options.showEmptyFolder?this.createFolderLi(e,t,n):this.createNodeLi(e,t,n);return this.treeWidget.options.onCreateLi&&this.treeWidget.options.onCreateLi(e,jQuery(i),n),i}},{key:"createFolderLi",value:function(e,t,n){var i=this.getButtonClasses(e),r=this.getFolderClasses(e,n),o=e.is_open?this.openedIconElement:this.closedIconElement,s=document.createElement("li");s.className="jqtree_common ".concat(r),s.setAttribute("role","presentation");var a=document.createElement("div");a.className="jqtree-element jqtree_common",a.setAttribute("role","presentation"),s.appendChild(a);var l=document.createElement("a");return l.className=i,l.appendChild(o.cloneNode(!0)),l.setAttribute("role","presentation"),l.setAttribute("aria-hidden","true"),this.treeWidget.options.buttonLeft&&a.appendChild(l),a.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!0)),this.treeWidget.options.buttonLeft||a.appendChild(l),s}},{key:"createNodeLi",value:function(e,t,n){var i=["jqtree_common"];n&&i.push("jqtree-selected");var r=i.join(" "),o=document.createElement("li");o.className=r,o.setAttribute("role","presentation");var s=document.createElement("div");return s.className="jqtree-element jqtree_common",s.setAttribute("role","presentation"),o.appendChild(s),s.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!1)),o}},{key:"createTitleSpan",value:function(e,t,n,i,r){var o=document.createElement("span"),s="jqtree-title jqtree_common";if(r&&(s+=" jqtree-title-folder"),s+=" jqtree-title-button-".concat(this.treeWidget.options.buttonLeft?"left":"right"),o.className=s,o.setAttribute("role","treeitem"),o.setAttribute("aria-level","".concat(t)),o.setAttribute("aria-selected",w(n)),o.setAttribute("aria-expanded",w(i)),n){var a=this.treeWidget.options.tabIndex;void 0!==a&&o.setAttribute("tabindex","".concat(a))}return this.treeWidget.options.autoEscape?o.textContent=e:o.innerHTML=e,o}},{key:"getButtonClasses",value:function(e){var t=["jqtree-toggler","jqtree_common"];return e.is_open||t.push("jqtree-closed"),this.treeWidget.options.buttonLeft?t.push("jqtree-toggler-left"):t.push("jqtree-toggler-right"),t.join(" ")}},{key:"getFolderClasses",value:function(e,t){var n=["jqtree-folder"];return e.is_open||n.push("jqtree-closed"),t&&n.push("jqtree-selected"),e.is_loading&&n.push("jqtree-loading"),n.join(" ")}},{key:"createButtonElement",value:function(e){if("string"==typeof e){var t=document.createElement("div");return t.innerHTML=e,document.createTextNode(t.innerHTML)}return jQuery(e)[0]}}]),e}(),W=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),this.treeWidget=t}return s(e,[{key:"loadFromUrl",value:function(e,t,n){var i=this;if(e){var r=this.getDomElement(t);this.addLoadingClass(r),this.notifyLoading(!0,t,r);var o=function(){i.removeLoadingClass(r),i.notifyLoading(!1,t,r)};this.submitRequest(e,(function(e){o(),i.treeWidget.loadData(i.parseData(e),t),n&&"function"==typeof n&&n()}),(function(e){o(),i.treeWidget.options.onLoadFailed&&i.treeWidget.options.onLoadFailed(e)}))}}},{key:"addLoadingClass",value:function(e){e&&e.addClass("jqtree-loading")}},{key:"removeLoadingClass",value:function(e){e&&e.removeClass("jqtree-loading")}},{key:"getDomElement",value:function(e){return e?jQuery(e.element):this.treeWidget.element}},{key:"notifyLoading",value:function(e,t,n){this.treeWidget.options.onLoading&&this.treeWidget.options.onLoading(e,t,n),this.treeWidget._triggerEvent("tree.loading_data",{isLoading:e,node:t,$el:n})}},{key:"submitRequest",value:function(e,t,i){var r,o=n({method:"GET",cache:!1,dataType:"json",success:t,error:i},"string"==typeof e?{url:e}:e);o.method=(null===(r=o.method)||void 0===r?void 0:r.toUpperCase())||"GET",jQuery.ajax(o)}},{key:"parseData",value:function(e){var t=this.treeWidget.options.dataFilter,n="string"==typeof e?JSON.parse(e):e;return t?t(n):n}}]),e}(),T=function(){function e(t){var n=this;r(this,e),a(this,"treeWidget",void 0),a(this,"handleKeyDown",(function(t){if(!n.canHandleKeyboard())return!0;var i=n.treeWidget.getSelectedNode();if(!i)return!0;switch(t.which){case e.DOWN:return n.moveDown(i);case e.UP:return n.moveUp(i);case e.RIGHT:return n.moveRight(i);case e.LEFT:return n.moveLeft(i);default:return!0}})),this.treeWidget=t,t.options.keyboardSupport&&jQuery(document).on("keydown.jqtree",this.handleKeyDown)}return s(e,[{key:"deinit",value:function(){jQuery(document).off("keydown.jqtree")}},{key:"moveDown",value:function(e){return this.selectNode(e.getNextVisibleNode())}},{key:"moveUp",value:function(e){return this.selectNode(e.getPreviousVisibleNode())}},{key:"moveRight",value:function(e){return!e.isFolder()||(e.is_open?this.selectNode(e.getNextVisibleNode()):(this.treeWidget.openNode(e),!1))}},{key:"moveLeft",value:function(e){return e.isFolder()&&e.is_open?(this.treeWidget.closeNode(e),!1):this.selectNode(e.getParent())}},{key:"selectNode",value:function(e){return!e||(this.treeWidget.selectNode(e),this.treeWidget.scrollHandler.isScrolledIntoView(jQuery(e.element).find(".jqtree-element"))||this.treeWidget.scrollToNode(e),!1)}},{key:"canHandleKeyboard",value:function(){return!!this.treeWidget.options.keyboardSupport&&this.treeWidget.selectNodeHandler.isFocusOnTree()}}]),e}();a(T,"LEFT",37),a(T,"UP",38),a(T,"RIGHT",39),a(T,"DOWN",40);var P=function(e,t){var n=function(){return"simple_widget_".concat(t)},r=function(e,t){var n=jQuery.data(e,t);return n&&n instanceof L?n:null},o=function(t,i){var o,s=n(),a=k(t.get());try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!r(l,s)){var d=new e(l,i);jQuery.data(l,s)||jQuery.data(l,s,d),d.init()}}}catch(e){a.e(e)}finally{a.f()}return t},s=function(e){var t,i=n(),o=k(e.get());try{for(o.s();!(t=o.n()).done;){var s=t.value,a=r(s,i);a&&a.destroy(),jQuery.removeData(s,i)}}catch(e){o.e(e)}finally{o.f()}},a=function(e,t,i){var r,o=null,s=k(e.get());try{for(s.s();!(r=s.n()).done;){var a=r.value,l=jQuery.data(a,n());if(l&&l instanceof L){var d=l[t];d&&"function"==typeof d&&(o=d.apply(l,i))}}}catch(e){s.e(e)}finally{s.f()}return o};jQuery.fn[t]=function(t){if(!t)return o(this,null);if("object"===i(t)){var n=t;return o(this,n)}if("string"==typeof t&&"_"!==t[0]){var r=t;if("destroy"===r)return s(this);if("get_widget_class"===r)return e;for(var l=arguments.length,d=new Array(l>1?l-1:0),u=1;u1)){var n=t.changedTouches[0];e.handleMouseDown(A(n,t))}})),a(h(e),"touchMove",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseMove(t,A(n,t))}})),a(h(e),"touchEnd",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseUp(A(n,t))}})),e}return s(n,[{key:"init",value:function(){var e=this.$el.get(0);e&&(e.addEventListener("mousedown",this.mouseDown,{passive:!1}),e.addEventListener("touchstart",this.touchStart,{passive:!1})),this.isMouseStarted=!1,this.mouseDelayTimer=null,this.isMouseDelayMet=!1,this.mouseDownInfo=null}},{key:"deinit",value:function(){var e=this.$el.get(0);e&&(e.removeEventListener("mousedown",this.mouseDown,{passive:!1}),e.removeEventListener("touchstart",this.touchStart,{passive:!1})),this.removeMouseMoveEventListeners()}},{key:"handleMouseDown",value:function(e){return this.isMouseStarted&&this.handleMouseUp(e),this.mouseDownInfo=e,!!this.mouseCapture(e)&&(this.handleStartMouse(),!0)}},{key:"handleStartMouse",value:function(){document.addEventListener("mousemove",this.mouseMove,{passive:!1}),document.addEventListener("touchmove",this.touchMove,{passive:!1}),document.addEventListener("mouseup",this.mouseUp,{passive:!1}),document.addEventListener("touchend",this.touchEnd,{passive:!1});var e=this.getMouseDelay();e?this.startMouseDelayTimer(e):this.isMouseDelayMet=!0}},{key:"startMouseDelayTimer",value:function(e){var t=this;this.mouseDelayTimer&&clearTimeout(this.mouseDelayTimer),this.mouseDelayTimer=window.setTimeout((function(){t.mouseDownInfo&&(t.isMouseDelayMet=!0)}),e),this.isMouseDelayMet=!1}},{key:"handleMouseMove",value:function(e,t){if(this.isMouseStarted)return this.mouseDrag(t),void(e.cancelable&&e.preventDefault());this.isMouseDelayMet&&(this.mouseDownInfo&&(this.isMouseStarted=!1!==this.mouseStart(this.mouseDownInfo)),this.isMouseStarted?(this.mouseDrag(t),e.cancelable&&e.preventDefault()):this.handleMouseUp(t))}},{key:"handleMouseUp",value:function(e){this.removeMouseMoveEventListeners(),this.isMouseDelayMet=!1,this.mouseDownInfo=null,this.isMouseStarted&&(this.isMouseStarted=!1,this.mouseStop(e))}},{key:"removeMouseMoveEventListeners",value:function(){document.removeEventListener("mousemove",this.mouseMove,{passive:!1}),document.removeEventListener("touchmove",this.touchMove,{passive:!1}),document.removeEventListener("mouseup",this.mouseUp,{passive:!1}),document.removeEventListener("touchend",this.touchEnd,{passive:!1})}}]),n}(L),M=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"_supportsLocalStorage",void 0),this.treeWidget=t}return s(e,[{key:"saveState",value:function(){var e=JSON.stringify(this.getState());this.treeWidget.options.onSetStateFromStorage?this.treeWidget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)}},{key:"getStateFromStorage",value:function(){var e=this.loadFromStorage();return e?this.parseState(e):null}},{key:"getState",value:function(){var e,t,n=this;return{open_nodes:(t=[],n.treeWidget.tree.iterate((function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0})),t),selected_node:(e=[],n.treeWidget.getSelectedNodes().forEach((function(t){null!=t.id&&e.push(t.id)})),e)}}},{key:"setInitialState",value:function(e){if(e){var t=!1;return e.open_nodes&&(t=this.openInitialNodes(e.open_nodes)),e.selected_node&&(this.resetSelection(),this.selectInitialNodes(e.selected_node)),t}return!1}},{key:"setInitialStateOnDemand",value:function(e,t){e?this.doSetInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()}},{key:"getNodeIdToBeSelected",value:function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null}},{key:"parseState",value:function(e){var t,n=JSON.parse(e);return n&&n.selected_node&&("number"==typeof(t=n.selected_node)&&t%1==0)&&(n.selected_node=[n.selected_node]),n}},{key:"loadFromStorage",value:function(){return this.treeWidget.options.onGetStateFromStorage?this.treeWidget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):null}},{key:"openInitialNodes",value:function(e){var t,n=!1,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(o.load_on_demand?n=!0:o.is_open=!0)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"selectInitialNodes",value:function(e){var t,n=0,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(n+=1,this.treeWidget.selectNodeHandler.addToSelection(o))}}catch(e){i.e(e)}finally{i.f()}return 0!==n}},{key:"resetSelection",value:function(){var e=this.treeWidget.selectNodeHandler;e.getSelectedNodes().forEach((function(t){e.removeFromSelection(t)}))}},{key:"doSetInitialStateOnDemand",value:function(e,t,n){var i=this,r=0,o=e,s=function(){var e,s=[],l=k(o);try{for(l.s();!(e=l.n()).done;){var d=e.value,u=i.treeWidget.getNodeById(d);u?u.is_loading||(u.load_on_demand?a(u):i.treeWidget._openNode(u,!1,null)):s.push(d)}}catch(e){l.e(e)}finally{l.f()}o=s,i.selectInitialNodes(t)&&i.treeWidget._refreshElements(null),0===r&&n()},a=function(e){r+=1,i.treeWidget._openNode(e,!1,(function(){r-=1,s()}))};s()}},{key:"getKeyName",value:function(){return"string"==typeof this.treeWidget.options.saveState?this.treeWidget.options.saveState:"tree"}},{key:"supportsLocalStorage",value:function(){return null==this._supportsLocalStorage&&(this._supportsLocalStorage=function(){if(null==localStorage)return!1;try{var e="_storage_test";sessionStorage.setItem(e,"value"),sessionStorage.removeItem(e)}catch(e){return!1}return!0}()),this._supportsLocalStorage}}]),e}(),x=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"previousTop",void 0),a(this,"isInitialized",void 0),a(this,"$scrollParent",void 0),a(this,"scrollParentTop",void 0),this.treeWidget=t,this.previousTop=-1,this.isInitialized=!1}return s(e,[{key:"checkScrolling",value:function(){this.ensureInit(),this.checkVerticalScrolling(),this.checkHorizontalScrolling()}},{key:"scrollToY",value:function(e){if(this.ensureInit(),this.$scrollParent)this.$scrollParent[0].scrollTop=e;else{var t=this.treeWidget.$el.offset(),n=t?t.top:0;jQuery(document).scrollTop(e+n)}}},{key:"isScrolledIntoView",value:function(e){var t,n,i,r;this.ensureInit();var o=e.height()||0;if(this.$scrollParent){r=0,n=this.$scrollParent.height()||0;var s=e.offset();t=(i=(s?s.top:0)-this.scrollParentTop)+o}else{n=(r=jQuery(window).scrollTop()||0)+(jQuery(window).height()||0);var a=e.offset();t=(i=a?a.top:0)+o}return t<=n&&i>=r}},{key:"getScrollLeft",value:function(){return this.$scrollParent&&this.$scrollParent.scrollLeft()||0}},{key:"initScrollParent",value:function(){var e=this,t=function(){e.scrollParentTop=0,e.$scrollParent=null};"fixed"===this.treeWidget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;n0,s=n.left+i.clientWidth,a=n.left,l=e.pageX>s-20,d=e.pageX0,o=e.pageX>i-20,s=e.pageX-n<20;o?t.scrollLeft(n+20):s&&r&&t.scrollLeft(Math.max(n-20,0))}}}]),e}(),$=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"selectedNodes",void 0),a(this,"selectedSingleNode",void 0),this.treeWidget=t,this.selectedNodes=new Set,this.clear()}return s(e,[{key:"getSelectedNode",value:function(){var e=this.getSelectedNodes();return!!e.length&&e[0]}},{key:"getSelectedNodes",value:function(){var e=this;if(this.selectedSingleNode)return[this.selectedSingleNode];var t=[];return this.selectedNodes.forEach((function(n){var i=e.treeWidget.getNodeById(n);i&&t.push(i)})),t}},{key:"getSelectedNodesUnder",value:function(e){if(this.selectedSingleNode)return e.isParentOf(this.selectedSingleNode)?[this.selectedSingleNode]:[];var t=[];for(var n in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,n)){var i=this.treeWidget.getNodeById(n);i&&e.isParentOf(i)&&t.push(i)}return t}},{key:"isNodeSelected",value:function(e){return null!=e.id?this.selectedNodes.has(e.id):!!this.selectedSingleNode&&this.selectedSingleNode.element===e.element}},{key:"clear",value:function(){this.selectedNodes.clear(),this.selectedSingleNode=null}},{key:"removeFromSelection",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];null==e.id?this.selectedSingleNode&&e.element===this.selectedSingleNode.element&&(this.selectedSingleNode=null):(this.selectedNodes.delete(e.id),n&&e.iterate((function(){return null!=e.id&&t.selectedNodes.delete(e.id),!0})))}},{key:"addToSelection",value:function(e){null!=e.id?this.selectedNodes.add(e.id):this.selectedSingleNode=e}},{key:"isFocusOnTree",value:function(){var e=document.activeElement;return Boolean(e&&"SPAN"===e.tagName&&this.treeWidget._containsElement(e))}}]),e}(),q=function(){function e(t,n){r(this,e),a(this,"node",void 0),a(this,"$element",void 0),a(this,"treeWidget",void 0),this.init(t,n)}return s(e,[{key:"init",value:function(e,t){if(this.node=e,this.treeWidget=t,!e.element){var n=this.treeWidget.element.get(0);n&&(e.element=n)}e.element&&(this.$element=jQuery(e.element))}},{key:"addDropHint",value:function(e){return this.mustShowBorderDropHint(e)?new Q(this.$element,this.treeWidget._getScrollLeft()):new U(this.node,this.$element,e)}},{key:"select",value:function(e){var t,n=this.getLi();n.addClass("jqtree-selected"),n.attr("aria-selected","true");var i=this.getSpan();i.attr("tabindex",null!==(t=this.treeWidget.options.tabIndex)&&void 0!==t?t:null),e&&i.trigger("focus")}},{key:"deselect",value:function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.removeAttr("tabindex"),t.blur()}},{key:"getUl",value:function(){return this.$element.children("ul:first")}},{key:"getSpan",value:function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")}},{key:"getLi",value:function(){return this.$element}},{key:"mustShowBorderDropHint",value:function(e){return e===S.Inside}}]),e}(),B=function(e){l(n,e);var t=v(n);function n(){return r(this,n),t.apply(this,arguments)}return s(n,[{key:"open",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"fast";if(!this.node.is_open){this.node.is_open=!0;var r=this.getButton();r.removeClass("jqtree-closed"),r.html("");var o=r.get(0);if(o){var s=this.treeWidget.renderer.openedIconElement.cloneNode(!0);o.appendChild(s)}var a=function(){t.getLi().removeClass("jqtree-closed"),t.getSpan().attr("aria-expanded","true"),e&&e(t.node),t.treeWidget._triggerEvent("tree.open",{node:t.node})};n?this.getUl().slideDown(i,a):(this.getUl().show(),a())}}},{key:"close",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"fast";if(this.node.is_open){this.node.is_open=!1;var i=this.getButton();i.addClass("jqtree-closed"),i.html("");var r=i.get(0);if(r){var o=this.treeWidget.renderer.closedIconElement.cloneNode(!0);r.appendChild(o)}var s=function(){e.getLi().addClass("jqtree-closed"),e.getSpan().attr("aria-expanded","false"),e.treeWidget._triggerEvent("tree.close",{node:e.node})};t?this.getUl().slideUp(n,s):(this.getUl().hide(),s())}}},{key:"mustShowBorderDropHint",value:function(e){return!this.node.is_open&&e===S.Inside}},{key:"getButton",value:function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")}}]),n}(q),Q=function(){function e(t,n){r(this,e),a(this,"$hint",void 0);var i=t.children(".jqtree-element"),o=t.width()||0,s=Math.max(o+n-4,0),l=i.outerHeight()||0,d=Math.max(l-4,0);this.$hint=jQuery(''),i.append(this.$hint),this.$hint.css({width:s,height:d})}return s(e,[{key:"remove",value:function(){this.$hint.remove()}}]),e}(),U=function(){function e(t,n,i){r(this,e),a(this,"$element",void 0),a(this,"node",void 0),a(this,"$ghost",void 0),this.$element=n,this.node=t,this.$ghost=jQuery('
  • \n
  • '),i===S.After?this.moveAfter():i===S.Before?this.moveBefore():i===S.Inside&&(t.isFolder()&&t.is_open?this.moveInsideOpenFolder():this.moveInside())}return s(e,[{key:"remove",value:function(){this.$ghost.remove()}},{key:"moveAfter",value:function(){this.$element.after(this.$ghost)}},{key:"moveBefore",value:function(){this.$element.before(this.$ghost)}},{key:"moveInsideOpenFolder",value:function(){var e=this.node.children[0].element;e&&jQuery(e).before(this.$ghost)}},{key:"moveInside",value:function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")}}]),e}(),R="Node parameter is empty",X="Parameter is empty: ",Y=function(e){l(o,e);var t=v(o);function o(){var e;r(this,o);for(var n=arguments.length,i=new Array(n),s=0;s1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw Error(R);var n=null!=t?t:this.options.slide;return e.is_open?this.closeNode(e,n):this.openNode(e,n),this.element}},{key:"getTree",value:function(){return this.tree}},{key:"selectNode",value:function(e,t){return this.doSelectNode(e,t),this.element}},{key:"getSelectedNode",value:function(){return this.selectNodeHandler.getSelectedNode()}},{key:"toJson",value:function(){return JSON.stringify(this.tree.getData())}},{key:"loadData",value:function(e,t){return this.doLoadData(e,t),this.element}},{key:"loadDataFromUrl",value:function(e,t,n){return"string"==typeof e?this.doLoadDataFromUrl(e,t,null!=n?n:null):this.doLoadDataFromUrl(null,e,t),this.element}},{key:"reload",value:function(e){return this.doLoadDataFromUrl(null,null,e),this.element}},{key:"refresh",value:function(){return this._refreshElements(null),this.element}},{key:"getNodeById",value:function(e){return this.tree.getNodeById(e)}},{key:"getNodeByName",value:function(e){return this.tree.getNodeByName(e)}},{key:"getNodeByNameMustExist",value:function(e){return this.tree.getNodeByNameMustExist(e)}},{key:"getNodesByProperty",value:function(e,t){return this.tree.getNodesByProperty(e,t)}},{key:"getNodeByHtmlElement",value:function(e){return this.getNode(jQuery(e))}},{key:"getNodeByCallback",value:function(e){return this.tree.getNodeByCallback(e)}},{key:"openNode",value:function(e,t,n){var i=this;if(!e)throw Error(R);var r=function(){var e,r,o;("function"==typeof t?(e=t,r=null):(r=t,e=n),null==r)&&(r=null!==(o=i.options.slide)&&void 0!==o&&o);return[r,e]}(),o=g(r,2),s=o[0],a=o[1];return this._openNode(e,s,a),this.element}},{key:"closeNode",value:function(e,t){if(!e)throw Error(R);var n=null!=t?t:this.options.slide;return(e.isFolder()||e.isEmptyFolder)&&(new B(e,this).close(n,this.options.animationSpeed),this.saveState()),this.element}},{key:"isDragging",value:function(){return this.dndHandler.isDragging}},{key:"refreshHitAreas",value:function(){return this.dndHandler.refresh(),this.element}},{key:"addNodeAfter",value:function(e,t){var n=t.addAfter(e);return n&&this._refreshElements(t.parent),n}},{key:"addNodeBefore",value:function(e,t){if(!t)throw Error(X+"existingNode");var n=t.addBefore(e);return n&&this._refreshElements(t.parent),n}},{key:"addParentNode",value:function(e,t){if(!t)throw Error(X+"existingNode");var n=t.addParent(e);return n&&this._refreshElements(n.parent),n}},{key:"removeNode",value:function(e){if(!e)throw Error(R);if(!e.parent)throw Error("Node has no parent");this.selectNodeHandler.removeFromSelection(e,!0);var t=e.parent;return e.remove(),this._refreshElements(t),this.element}},{key:"appendNode",value:function(e,t){var n=t||this.tree,i=n.append(e);return this._refreshElements(n),i}},{key:"prependNode",value:function(e,t){var n=null!=t?t:this.tree,i=n.prepend(e);return this._refreshElements(n),i}},{key:"updateNode",value:function(e,t){if(!e)throw Error(R);var n="object"===i(t)&&t.id&&t.id!==e.id;return n&&this.tree.removeNodeFromIndex(e),e.setData(t),n&&this.tree.addNodeToIndex(e),"object"===i(t)&&t.children&&t.children instanceof Array&&(e.removeChildren(),t.children.length&&e.loadFromData(t.children)),this._refreshElements(e),this.element}},{key:"isSelectedNodeInSubtree",value:function(e){var t=this.getSelectedNode();return!!t&&(e===t||e.isParentOf(t))}},{key:"moveNode",value:function(e,t,n){if(!e)throw Error(R);if(!t)throw Error(X+"targetNode");var i=b[n];return void 0!==i&&(this.tree.moveNode(e,t,i),this._refreshElements(null)),this.element}},{key:"getStateFromStorage",value:function(){return this.saveStateHandler.getStateFromStorage()}},{key:"addToSelection",value:function(e,t){if(!e)throw Error(R);return this.selectNodeHandler.addToSelection(e),this._getNodeElementForNode(e).select(void 0===t||t),this.saveState(),this.element}},{key:"getSelectedNodes",value:function(){return this.selectNodeHandler.getSelectedNodes()}},{key:"isNodeSelected",value:function(e){if(!e)throw Error(R);return this.selectNodeHandler.isNodeSelected(e)}},{key:"removeFromSelection",value:function(e){if(!e)throw Error(R);return this.selectNodeHandler.removeFromSelection(e),this._getNodeElementForNode(e).deselect(),this.saveState(),this.element}},{key:"scrollToNode",value:function(e){if(!e)throw Error(R);var t=jQuery(e.element).offset(),n=t?t.top:0,i=this.$el.offset(),r=n-(i?i.top:0);return this.scrollHandler.scrollToY(r),this.element}},{key:"getState",value:function(){return this.saveStateHandler.getState()}},{key:"setState",value:function(e){return this.saveStateHandler.setInitialState(e),this._refreshElements(null),this.element}},{key:"setOption",value:function(e,t){return this.options[e]=t,this.element}},{key:"moveDown",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveDown(e),this.element}},{key:"moveUp",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveUp(e),this.element}},{key:"getVersion",value:function(){return"1.7.0"}},{key:"_triggerEvent",value:function(e,t){var n=jQuery.Event(e,t);return this.element.trigger(n),n}},{key:"_openNode",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,r=function(e,n,i){new B(e,t).open(i,n,t.options.animationSpeed)};if(e.isFolder()||e.isEmptyFolder)if(e.load_on_demand)this.loadFolderOnDemand(e,n,i);else{for(var o=e.parent;o;)o.parent&&r(o,!1,null),o=o.parent;r(e,n,i),this.saveState()}}},{key:"_refreshElements",value:function(e){var t=this.selectNodeHandler.isFocusOnTree(),n=!!e&&this.isSelectedNodeInSubtree(e);this.renderer.render(e),n&&this.selectCurrentNode(t),this._triggerEvent("tree.refresh")}},{key:"_getNodeElementForNode",value:function(e){return e.isFolder()?new B(e,this):new q(e,this)}},{key:"_getNodeElement",value:function(e){var t=this.getNode(e);return t?this._getNodeElementForNode(t):null}},{key:"_containsElement",value:function(e){var t=this.getNode(jQuery(e));return null!=t&&t.tree===this.tree}},{key:"_getScrollLeft",value:function(){return this.scrollHandler.getScrollLeft()}},{key:"init",value:function(){p(d(o.prototype),"init",this).call(this),this.element=this.$el,this.isInitialized=!1,this.options.rtl=this.getRtlOption(),null==this.options.closedIcon&&(this.options.closedIcon=this.getDefaultClosedIcon()),this.renderer=new F(this),this.dataLoader=new W(this),this.saveStateHandler=new M(this),this.selectNodeHandler=new $(this),this.dndHandler=new j(this),this.scrollHandler=new x(this),this.keyHandler=new T(this),this.initData(),this.element.on("click",this.handleClick),this.element.on("dblclick",this.handleDblclick),this.options.useContextMenu&&this.element.on("contextmenu",this.handleContextmenu)}},{key:"deinit",value:function(){this.element.empty(),this.element.off(),this.keyHandler.deinit(),this.tree=new I({},!0),p(d(o.prototype),"deinit",this).call(this)}},{key:"mouseCapture",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseCapture(e)}},{key:"mouseStart",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStart(e)}},{key:"mouseDrag",value:function(e){if(this.options.dragAndDrop){var t=this.dndHandler.mouseDrag(e);return this.scrollHandler.checkScrolling(),t}return!1}},{key:"mouseStop",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStop(e)}},{key:"getMouseDelay",value:function(){var e;return null!==(e=this.options.startDndDelay)&&void 0!==e?e:0}},{key:"initData",value:function(){this.options.data?this.doLoadData(this.options.data,null):this.getDataUrlInfo(null)?this.doLoadDataFromUrl(null,null,null):this.doLoadData([],null)}},{key:"getDataUrlInfo",value:function(e){var t,n=this,r=this.options.dataUrl||this.element.data("url"),o=function(t){if(null!=e&&e.id){var i={node:e.id};t.data=i}else{var r=n.getNodeIdToBeSelected();if(r){var o={selected_node:r};t.data=o}}};return"function"==typeof r?r(e):"string"==typeof r?(o(t={url:r}),t):r&&"object"===i(r)?(o(r),r):null}},{key:"getNodeIdToBeSelected",value:function(){return this.options.saveState?this.saveStateHandler.getNodeIdToBeSelected():null}},{key:"initTree",value:function(e){var t=this,n=function(){t.isInitialized||(t.isInitialized=!0,t._triggerEvent("tree.init"))};if(this.options.nodeClass){this.tree=new this.options.nodeClass(null,!0,this.options.nodeClass),this.selectNodeHandler.clear(),this.tree.loadFromData(e);var i=this.setInitialState();this._refreshElements(null),i?this.setInitialStateOnDemand(n):n()}}},{key:"setInitialState",value:function(){var e=this,t=g(function(){if(e.options.saveState){var t=e.saveStateHandler.getStateFromStorage();return t?[!0,e.saveStateHandler.setInitialState(t)]:[!1,!1]}return[!1,!1]}(),2),n=t[0],i=t[1];return n||(i=function(){if(!1===e.options.autoOpen)return!1;var t=e.getAutoOpenMaxLevel(),n=!1;return e.tree.iterate((function(e,i){return e.load_on_demand?(n=!0,!1):!!e.hasChildren()&&(e.is_open=!0,i!==t)})),n}()),i}},{key:"setInitialStateOnDemand",value:function(e){var t,n,i,r,o=this;(function(){if(o.options.saveState){var t=o.saveStateHandler.getStateFromStorage();return!!t&&(o.saveStateHandler.setInitialStateOnDemand(t,e),!0)}return!1})()||(t=o.getAutoOpenMaxLevel(),n=0,i=function(e){n+=1,o._openNode(e,!1,(function(){n-=1,r()}))},(r=function(){o.tree.iterate((function(e,n){return e.load_on_demand?(e.is_loading||i(e),!1):(o._openNode(e,!1,null),n!==t)})),0===n&&e()})())}},{key:"getAutoOpenMaxLevel",value:function(){return!0===this.options.autoOpen?-1:"number"==typeof this.options.autoOpen?this.options.autoOpen:"string"==typeof this.options.autoOpen?parseInt(this.options.autoOpen,10):0}},{key:"getClickTarget",value:function(e){var t=jQuery(e),n=t.closest(".jqtree-toggler");if(n.length){var i=this.getNode(n);if(i)return{type:"button",node:i}}else{var r=t.closest(".jqtree-element");if(r.length){var o=this.getNode(r);if(o)return{type:"label",node:o}}}return null}},{key:"getNode",value:function(e){var t=e.closest("li.jqtree_common");return 0===t.length?null:t.data("node")}},{key:"saveState",value:function(){this.options.saveState&&this.saveStateHandler.saveState()}},{key:"selectCurrentNode",value:function(e){var t=this.getSelectedNode();if(t){var n=this._getNodeElementForNode(t);n&&n.select(e)}}},{key:"deselectCurrentNode",value:function(){var e=this.getSelectedNode();e&&this.removeFromSelection(e)}},{key:"getDefaultClosedIcon",value:function(){return this.options.rtl?"◀":"►"}},{key:"getRtlOption",value:function(){if(null!=this.options.rtl)return this.options.rtl;var e=this.element.data("rtl");return null!==e&&!1!==e&&void 0!==e}},{key:"doSelectNode",value:function(e,t){var i=this,r=function(){i.options.saveState&&i.saveStateHandler.saveState()};if(!e)return this.deselectCurrentNode(),void r();var o=n(n({},{mustSetFocus:!0,mustToggle:!0}),t||{});if(i.options.onCanSelectNode?!0===i.options.selectable&&i.options.onCanSelectNode(e):!0===i.options.selectable){if(this.selectNodeHandler.isNodeSelected(e))o.mustToggle&&(this.deselectCurrentNode(),this._triggerEvent("tree.select",{node:null,previous_node:e}));else{var s=this.getSelectedNode()||null;this.deselectCurrentNode(),this.addToSelection(e,o.mustSetFocus),this._triggerEvent("tree.select",{node:e,deselected_node:s}),(a=e.parent)&&a.parent&&!a.is_open&&i.openNode(a,!1)}var a;r()}}},{key:"doLoadData",value:function(e,t){e&&(t?(this.deselectNodes(t),this.loadSubtree(e,t)):this.initTree(e),this.isDragging()&&this.dndHandler.refresh()),this._triggerEvent("tree.load_data",{tree_data:e,parent_node:t})}},{key:"deselectNodes",value:function(e){var t,n=k(this.selectNodeHandler.getSelectedNodesUnder(e));try{for(n.s();!(t=n.n()).done;){var i=t.value;this.selectNodeHandler.removeFromSelection(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"loadSubtree",value:function(e,t){t.loadFromData(e),t.load_on_demand=!1,t.is_loading=!1,this._refreshElements(t)}},{key:"doLoadDataFromUrl",value:function(e,t,n){var i=e||this.getDataUrlInfo(t);this.dataLoader.loadFromUrl(i,t,n)}},{key:"loadFolderOnDemand",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0;e.is_loading=!0,this.doLoadDataFromUrl(null,e,(function(){t._openNode(e,n,i)}))}}]),o}(H);return a(Y,"defaults",{animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,closedIcon:void 0,data:void 0,dataFilter:void 0,dataUrl:void 0,dragAndDrop:!1,keyboardSupport:!0,nodeClass:I,onCanMove:void 0,onCanMoveTo:void 0,onCanSelectNode:void 0,onCreateLi:void 0,onDragMove:void 0,onDragStop:void 0,onGetStateFromStorage:void 0,onIsMoveHandle:void 0,onLoadFailed:void 0,onLoading:void 0,onSetStateFromStorage:void 0,openedIcon:"▼",openFolderDelay:500,rtl:void 0,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0}),L.register(Y,"tree"),e.JqTreeWidget=Y,e}({}); +var jqtree=function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function n(e){for(var n=1;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function y(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var k;!function(e){e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None"}(k||(k={}));var N={before:k.Before,after:k.After,inside:k.Inside,none:k.None},S=function(e){for(var t in N)if(Object.prototype.hasOwnProperty.call(N,t)&&N[t]===e)return t;return""},b=function(e){return"object"===i(e)&&"children"in e&&e.children instanceof Array},_=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;r(this,e),a(this,"id",void 0),a(this,"name",void 0),a(this,"children",void 0),a(this,"parent",void 0),a(this,"idMapping",void 0),a(this,"tree",void 0),a(this,"nodeClass",void 0),a(this,"load_on_demand",void 0),a(this,"is_open",void 0),a(this,"element",void 0),a(this,"is_loading",void 0),a(this,"isEmptyFolder",void 0),this.name="",this.isEmptyFolder=!1,this.load_on_demand=!1,this.setData(t),this.children=[],this.parent=null,n&&(this.idMapping=new Map,this.tree=this,this.nodeClass=i)}return s(e,[{key:"setData",value:function(e){if(e)if("string"==typeof e)this.name=e;else if("object"===i(e))for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"label"===t||"name"===t?"string"==typeof n&&(this.name=n):"children"!==t&&"parent"!==t&&(this[t]=n)}}},{key:"loadFromData",value:function(e){this.removeChildren();var t,n=m(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this.createNode(i);this.addChild(r),b(i)&&(0===i.children.length?r.isEmptyFolder=!0:r.loadFromData(i.children))}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"addChild",value:function(e){this.children.push(e),e.setParent(this)}},{key:"addChildAtPosition",value:function(e,t){this.children.splice(t,0,e),e.setParent(this)}},{key:"removeChild",value:function(e){e.removeChildren(),this.doRemoveChild(e)}},{key:"getChildIndex",value:function(e){return this.children.indexOf(e)}},{key:"hasChildren",value:function(){return 0!==this.children.length}},{key:"isFolder",value:function(){return this.hasChildren()||this.load_on_demand}},{key:"iterate",value:function(e){!function t(n,i){if(n.children){var r,o=m(n.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;e(s,i)&&s.hasChildren()&&t(s,i+1)}}catch(e){o.e(e)}finally{o.f()}}}(this,0)}},{key:"moveNode",value:function(e,t,n){if(!e.parent||e.isParentOf(t))return!1;switch(e.parent.doRemoveChild(e),n){case k.After:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)+1),!0);case k.Before:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)),!0);case k.Inside:return t.addChildAtPosition(e,0),!0;default:return!1}}},{key:"getData",value:function(){var e=function e(t){return t.map((function(t){var n={};for(var i in t)if(-1===["parent","children","element","idMapping","load_on_demand","nodeClass","tree","isEmptyFolder"].indexOf(i)&&Object.prototype.hasOwnProperty.call(t,i)){var r=t[i];n[i]=r}return t.hasChildren()&&(n.children=e(t.children)),n}))};return e(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?[this]:this.children)}},{key:"getNodeByName",value:function(e){return this.getNodeByCallback((function(t){return t.name===e}))}},{key:"getNodeByNameMustExist",value:function(e){var t=this.getNodeByCallback((function(t){return t.name===e}));if(!t)throw"Node with name ".concat(e," not found");return t}},{key:"getNodeByCallback",value:function(e){var t=null;return this.iterate((function(n){return!t&&(!e(n)||(t=n,!1))})),t}},{key:"addAfter",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n+1),b(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addBefore",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n),b(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addParent",value:function(e){if(this.parent){var t=this.createNode(e);this.tree&&t.setParent(this.tree);var n,i=this.parent,r=m(i.children);try{for(r.s();!(n=r.n()).done;){var o=n.value;t.addChild(o)}}catch(e){r.e(e)}finally{r.f()}return i.children=[],i.addChild(t),t}return null}},{key:"remove",value:function(){this.parent&&(this.parent.removeChild(this),this.parent=null)}},{key:"append",value:function(e){var t=this.createNode(e);return this.addChild(t),b(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"prepend",value:function(e){var t=this.createNode(e);return this.addChildAtPosition(t,0),b(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"isParentOf",value:function(e){for(var t=e.parent;t;){if(t===this)return!0;t=t.parent}return!1}},{key:"getLevel",value:function(){for(var e=0,t=this;t.parent;)e+=1,t=t.parent;return e}},{key:"getNodeById",value:function(e){return this.idMapping.get(e)||null}},{key:"addNodeToIndex",value:function(e){null!=e.id&&this.idMapping.set(e.id,e)}},{key:"removeNodeFromIndex",value:function(e){null!=e.id&&this.idMapping.delete(e.id)}},{key:"removeChildren",value:function(){var e=this;this.iterate((function(t){var n;return null===(n=e.tree)||void 0===n||n.removeNodeFromIndex(t),!0})),this.children=[]}},{key:"getPreviousSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)-1;return e>=0?this.parent.children[e]:null}return null}},{key:"getNextSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e0&&void 0!==arguments[0])||arguments[0])&&this.hasChildren())return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getNextVisibleNode",value:function(){if(this.hasChildren()&&this.is_open)return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getPreviousNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()?e.getLastChild():e:this.getParent()}return null}},{key:"getPreviousVisibleNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()&&e.is_open?e.getLastChild():e:this.getParent()}return null}},{key:"getParent",value:function(){return this.parent&&this.parent.parent?this.parent:null}},{key:"getLastChild",value:function(){if(this.hasChildren()){var e=this.children[this.children.length-1];return e.hasChildren()&&e.is_open?e.getLastChild():e}return null}},{key:"initFromData",value:function(e){var t,n=this,i=function(e){var t,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.createNode();o.initFromData(r),n.addChild(o)}}catch(e){i.e(e)}finally{i.f()}};t=e,n.setData(t),b(t)&&t.children.length&&i(t.children)}},{key:"setParent",value:function(e){var t;this.parent=e,this.tree=e.tree,null===(t=this.tree)||void 0===t||t.addNodeToIndex(this)}},{key:"doRemoveChild",value:function(e){var t;this.children.splice(this.getChildIndex(e),1),null===(t=this.tree)||void 0===t||t.removeNodeFromIndex(e)}},{key:"getNodeClass",value:function(){var t;return this.nodeClass||(null==this||null===(t=this.tree)||void 0===t?void 0:t.nodeClass)||e}},{key:"createNode",value:function(e){return new(this.getNodeClass())(e)}}]),e}(),D=function(){function e(t){r(this,e),a(this,"hitAreas",void 0),a(this,"isDragging",void 0),a(this,"currentItem",void 0),a(this,"hoveredArea",void 0),a(this,"positionInfo",void 0),a(this,"treeWidget",void 0),a(this,"dragElement",void 0),a(this,"previousGhost",void 0),a(this,"openFolderTimer",void 0),this.treeWidget=t,this.hoveredArea=null,this.hitAreas=[],this.isDragging=!1,this.currentItem=null,this.positionInfo=null}return s(e,[{key:"mouseCapture",value:function(e){var t=jQuery(e.target);if(!this.mustCaptureElement(t))return null;if(this.treeWidget.options.onIsMoveHandle&&!this.treeWidget.options.onIsMoveHandle(t))return null;var n=this.treeWidget._getNodeElement(t);return n&&this.treeWidget.options.onCanMove&&(this.treeWidget.options.onCanMove(n.node)||(n=null)),this.currentItem=n,null!=this.currentItem}},{key:"mouseStart",value:function(e){var t;if(!this.currentItem||void 0===e.pageX||void 0===e.pageY)return!1;this.refresh();var n=jQuery(e.target).offset(),i=n?n.left:0,r=n?n.top:0,o=this.currentItem.node;return this.dragElement=new j(o.name,e.pageX-i,e.pageY-r,this.treeWidget.element,null===(t=this.treeWidget.options.autoEscape)||void 0===t||t),this.isDragging=!0,this.positionInfo=e,this.currentItem.$element.addClass("jqtree-moving"),!0}},{key:"mouseDrag",value:function(e){if(!this.currentItem||!this.dragElement||void 0===e.pageX||void 0===e.pageY)return!1;this.dragElement.move(e.pageX,e.pageY),this.positionInfo=e;var t=this.findHoveredArea(e.pageX,e.pageY);return t&&this.canMoveToArea(t)?(t.node.isFolder()||this.stopOpenFolderTimer(),this.hoveredArea!==t&&(this.hoveredArea=t,this.mustOpenFolderTimer(t)?this.startOpenFolderTimer(t.node):this.stopOpenFolderTimer(),this.updateDropHint())):(this.removeDropHint(),this.stopOpenFolderTimer(),this.hoveredArea=t),t||this.treeWidget.options.onDragMove&&this.treeWidget.options.onDragMove(this.currentItem.node,e.originalEvent),!0}},{key:"mouseStop",value:function(e){this.moveItem(e),this.clear(),this.removeHover(),this.removeDropHint(),this.removeHitAreas();var t=this.currentItem;return this.currentItem&&(this.currentItem.$element.removeClass("jqtree-moving"),this.currentItem=null),this.isDragging=!1,this.positionInfo=null,!this.hoveredArea&&t&&this.treeWidget.options.onDragStop&&this.treeWidget.options.onDragStop(t.node,e.originalEvent),!1}},{key:"refresh",value:function(){this.removeHitAreas(),this.currentItem&&(this.generateHitAreas(),this.currentItem=this.treeWidget._getNodeElementForNode(this.currentItem.node),this.isDragging&&this.currentItem.$element.addClass("jqtree-moving"))}},{key:"generateHitAreas",value:function(){if(this.currentItem){var e=new I(this.treeWidget.tree,this.currentItem.node,this.getTreeDimensions().bottom);this.hitAreas=e.generate()}else this.hitAreas=[]}},{key:"mustCaptureElement",value:function(e){return!e.is("input,select,textarea")}},{key:"canMoveToArea",value:function(e){if(!this.treeWidget.options.onCanMoveTo)return!0;if(!this.currentItem)return!1;var t=S(e.position);return this.treeWidget.options.onCanMoveTo(this.currentItem.node,e.node,t)}},{key:"removeHitAreas",value:function(){this.hitAreas=[]}},{key:"clear",value:function(){this.dragElement&&(this.dragElement.remove(),this.dragElement=null)}},{key:"removeDropHint",value:function(){this.previousGhost&&this.previousGhost.remove()}},{key:"removeHover",value:function(){this.hoveredArea=null}},{key:"findHoveredArea",value:function(e,t){var n=this.getTreeDimensions();if(en.right||t>n.bottom)return null;for(var i=0,r=this.hitAreas.length;i>1,s=this.hitAreas[o];if(ts.bottom))return s;i=o+1}}return null}},{key:"mustOpenFolderTimer",value:function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===k.Inside}},{key:"updateDropHint",value:function(){if(this.hoveredArea){this.removeDropHint();var e=this.treeWidget._getNodeElementForNode(this.hoveredArea.node);this.previousGhost=e.addDropHint(this.hoveredArea.position)}}},{key:"startOpenFolderTimer",value:function(e){var t=this;this.stopOpenFolderTimer();var n=this.treeWidget.options.openFolderDelay;!1!==n&&(this.openFolderTimer=window.setTimeout((function(){t.treeWidget._openNode(e,t.treeWidget.options.slide,(function(){t.refresh(),t.updateDropHint()}))}),n))}},{key:"stopOpenFolderTimer",value:function(){this.openFolderTimer&&(clearTimeout(this.openFolderTimer),this.openFolderTimer=null)}},{key:"moveItem",value:function(e){var t=this;if(this.currentItem&&this.hoveredArea&&this.hoveredArea.position!==k.None&&this.canMoveToArea(this.hoveredArea)){var n=this.currentItem.node,i=this.hoveredArea.node,r=this.hoveredArea.position,o=n.parent;r===k.Inside&&(this.hoveredArea.node.is_open=!0);var s=function(){t.treeWidget.tree.moveNode(n,i,r),t.treeWidget.element.empty(),t.treeWidget._refreshElements(null)};this.treeWidget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:S(r),previous_parent:o,do_move:s,original_event:e.originalEvent}}).isDefaultPrevented()||s()}}},{key:"getTreeDimensions",value:function(){var e=this.treeWidget.element.offset();if(e){var t=this.treeWidget.element,n=t.width()||0,i=t.height()||0,r=e.left+this.treeWidget._getScrollLeft();return{left:r,top:e.top,right:r+n,bottom:e.top+i+16}}return{left:0,top:0,right:0,bottom:0}}}]),e}(),I=function(e){l(n,e);var t=c(n);function n(e,i,o){var s;return r(this,n),a(h(s=t.call(this,e)),"currentNode",void 0),a(h(s),"treeBottom",void 0),a(h(s),"positions",void 0),a(h(s),"lastTop",void 0),s.currentNode=i,s.treeBottom=o,s}return s(n,[{key:"generate",value:function(){return this.positions=[],this.lastTop=0,this.iterate(),this.generateHitAreas(this.positions)}},{key:"generateHitAreas",value:function(e){var t,n=-1,i=[],r=[],o=m(e);try{for(o.s();!(t=o.n()).done;){var s=t.value;s.top!==n&&i.length&&(i.length&&this.generateHitAreasForGroup(r,i,n,s.top),n=s.top,i=[]),i.push(s)}}catch(e){o.e(e)}finally{o.f()}return this.generateHitAreasForGroup(r,i,n,this.treeBottom),r}},{key:"handleOpenFolder",value:function(e,t){return e!==this.currentNode&&(e.children[0]!==this.currentNode&&this.addPosition(e,k.Inside,this.getTop(t)),!0)}},{key:"handleClosedFolder",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,k.None,i):(this.addPosition(e,k.Inside,i),t!==this.currentNode&&this.addPosition(e,k.After,i))}},{key:"handleFirstNode",value:function(e){e!==this.currentNode&&this.addPosition(e,k.Before,this.getTop(jQuery(e.element)))}},{key:"handleAfterOpenFolder",value:function(e,t){e===this.currentNode||t===this.currentNode?this.addPosition(e,k.None,this.lastTop):this.addPosition(e,k.After,this.lastTop)}},{key:"handleNode",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,k.None,i):this.addPosition(e,k.Inside,i),t===this.currentNode||e===this.currentNode?this.addPosition(e,k.None,i):this.addPosition(e,k.After,i)}},{key:"getTop",value:function(e){var t=e.offset();return t?t.top:0}},{key:"addPosition",value:function(e,t,n){var i={top:n,bottom:0,node:e,position:t};this.positions.push(i),this.lastTop=n}},{key:"generateHitAreasForGroup",value:function(e,t,n,i){for(var r=Math.min(t.length,4),o=Math.round((i-n)/r),s=n,a=0;a").addClass("jqtree-title jqtree-dragging"),s?this.$element.text(t):this.$element.html(t),this.$element.css("position","absolute"),o.append(this.$element)}return s(e,[{key:"move",value:function(e,t){this.$element.offset({left:e-this.offsetX,top:t-this.offsetY})}},{key:"remove",value:function(){this.$element.remove()}}]),e}(),E=function(e){return e?"true":"false"},C=function(){function e(t){r(this,e),a(this,"openedIconElement",void 0),a(this,"closedIconElement",void 0),a(this,"treeWidget",void 0),this.treeWidget=t,this.openedIconElement=this.createButtonElement(t.options.openedIcon||"+"),this.closedIconElement=this.createButtonElement(t.options.closedIcon||"-")}return s(e,[{key:"render",value:function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()}},{key:"renderFromRoot",value:function(){var e=this.treeWidget.element;e.empty(),this.createDomElements(e[0],this.treeWidget.tree.children,!0,1)}},{key:"renderFromNode",value:function(e){var t=jQuery(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)}},{key:"createDomElements",value:function(e,t,n,i){var r=this.createUl(n);e.appendChild(r);var o,s=m(t);try{for(s.s();!(o=s.n()).done;){var a=o.value,l=this.createLi(a,i);r.appendChild(l),this.attachNodeData(a,l),a.hasChildren()&&this.createDomElements(l,a.children,!1,i+1)}}catch(e){s.e(e)}finally{s.f()}}},{key:"attachNodeData",value:function(e,t){e.element=t,jQuery(t).data("node",e)}},{key:"createUl",value:function(e){var t,n;e?(t="jqtree-tree",n="tree",this.treeWidget.options.rtl&&(t+=" jqtree-rtl")):(t="",n="group"),this.treeWidget.options.dragAndDrop&&(t+=" jqtree-dnd");var i=document.createElement("ul");return i.className="jqtree_common ".concat(t),i.setAttribute("role",n),i}},{key:"createLi",value:function(e,t){var n=Boolean(this.treeWidget.selectNodeHandler.isNodeSelected(e)),i=e.isFolder()||e.isEmptyFolder&&this.treeWidget.options.showEmptyFolder?this.createFolderLi(e,t,n):this.createNodeLi(e,t,n);return this.treeWidget.options.onCreateLi&&this.treeWidget.options.onCreateLi(e,jQuery(i),n),i}},{key:"createFolderLi",value:function(e,t,n){var i=this.getButtonClasses(e),r=this.getFolderClasses(e,n),o=e.is_open?this.openedIconElement:this.closedIconElement,s=document.createElement("li");s.className="jqtree_common ".concat(r),s.setAttribute("role","presentation");var a=document.createElement("div");a.className="jqtree-element jqtree_common",a.setAttribute("role","presentation"),s.appendChild(a);var l=document.createElement("a");return l.className=i,l.appendChild(o.cloneNode(!0)),l.setAttribute("role","presentation"),l.setAttribute("aria-hidden","true"),this.treeWidget.options.buttonLeft&&a.appendChild(l),a.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!0)),this.treeWidget.options.buttonLeft||a.appendChild(l),s}},{key:"createNodeLi",value:function(e,t,n){var i=["jqtree_common"];n&&i.push("jqtree-selected");var r=i.join(" "),o=document.createElement("li");o.className=r,o.setAttribute("role","presentation");var s=document.createElement("div");return s.className="jqtree-element jqtree_common",s.setAttribute("role","presentation"),o.appendChild(s),s.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!1)),o}},{key:"createTitleSpan",value:function(e,t,n,i,r){var o=document.createElement("span"),s="jqtree-title jqtree_common";if(r&&(s+=" jqtree-title-folder"),s+=" jqtree-title-button-".concat(this.treeWidget.options.buttonLeft?"left":"right"),o.className=s,o.setAttribute("role","treeitem"),o.setAttribute("aria-level","".concat(t)),o.setAttribute("aria-selected",E(n)),o.setAttribute("aria-expanded",E(i)),n){var a=this.treeWidget.options.tabIndex;void 0!==a&&o.setAttribute("tabindex","".concat(a))}return this.treeWidget.options.autoEscape?o.textContent=e:o.innerHTML=e,o}},{key:"getButtonClasses",value:function(e){var t=["jqtree-toggler","jqtree_common"];return e.is_open||t.push("jqtree-closed"),this.treeWidget.options.buttonLeft?t.push("jqtree-toggler-left"):t.push("jqtree-toggler-right"),t.join(" ")}},{key:"getFolderClasses",value:function(e,t){var n=["jqtree-folder"];return e.is_open||n.push("jqtree-closed"),t&&n.push("jqtree-selected"),e.is_loading&&n.push("jqtree-loading"),n.join(" ")}},{key:"createButtonElement",value:function(e){if("string"==typeof e){var t=document.createElement("div");return t.innerHTML=e,document.createTextNode(t.innerHTML)}return jQuery(e)[0]}}]),e}(),w=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),this.treeWidget=t}return s(e,[{key:"loadFromUrl",value:function(e,t,n){var i=this;if(e){var r=this.getDomElement(t);this.addLoadingClass(r),this.notifyLoading(!0,t,r);var o=function(){i.removeLoadingClass(r),i.notifyLoading(!1,t,r)};this.submitRequest(e,(function(e){o(),i.treeWidget.loadData(i.parseData(e),t),n&&"function"==typeof n&&n()}),(function(e){o(),i.treeWidget.options.onLoadFailed&&i.treeWidget.options.onLoadFailed(e)}))}}},{key:"addLoadingClass",value:function(e){e&&e.addClass("jqtree-loading")}},{key:"removeLoadingClass",value:function(e){e&&e.removeClass("jqtree-loading")}},{key:"getDomElement",value:function(e){return e?jQuery(e.element):this.treeWidget.element}},{key:"notifyLoading",value:function(e,t,n){this.treeWidget.options.onLoading&&this.treeWidget.options.onLoading(e,t,n),this.treeWidget._triggerEvent("tree.loading_data",{isLoading:e,node:t,$el:n})}},{key:"submitRequest",value:function(e,t,i){var r,o=n({method:"GET",cache:!1,dataType:"json",success:t,error:i},"string"==typeof e?{url:e}:e);o.method=(null===(r=o.method)||void 0===r?void 0:r.toUpperCase())||"GET",jQuery.ajax(o)}},{key:"parseData",value:function(e){var t=this.treeWidget.options.dataFilter,n="string"==typeof e?JSON.parse(e):e;return t?t(n):n}}]),e}(),F=function(){function e(t){var n=this;r(this,e),a(this,"treeWidget",void 0),a(this,"handleKeyDown",(function(t){if(!n.canHandleKeyboard())return!0;var i=n.treeWidget.getSelectedNode();if(!i)return!0;switch(t.which){case e.DOWN:return n.moveDown(i);case e.UP:return n.moveUp(i);case e.RIGHT:return n.moveRight(i);case e.LEFT:return n.moveLeft(i);default:return!0}})),this.treeWidget=t,t.options.keyboardSupport&&jQuery(document).on("keydown.jqtree",this.handleKeyDown)}return s(e,[{key:"deinit",value:function(){jQuery(document).off("keydown.jqtree")}},{key:"moveDown",value:function(e){return this.selectNode(e.getNextVisibleNode())}},{key:"moveUp",value:function(e){return this.selectNode(e.getPreviousVisibleNode())}},{key:"moveRight",value:function(e){return!e.isFolder()||(e.is_open?this.selectNode(e.getNextVisibleNode()):(this.treeWidget.openNode(e),!1))}},{key:"moveLeft",value:function(e){return e.isFolder()&&e.is_open?(this.treeWidget.closeNode(e),!1):this.selectNode(e.getParent())}},{key:"selectNode",value:function(e){return!e||(this.treeWidget.selectNode(e),this.treeWidget.scrollHandler.isScrolledIntoView(jQuery(e.element).find(".jqtree-element"))||this.treeWidget.scrollToNode(e),!1)}},{key:"canHandleKeyboard",value:function(){return!!this.treeWidget.options.keyboardSupport&&this.treeWidget.selectNodeHandler.isFocusOnTree()}}]),e}();a(F,"LEFT",37),a(F,"UP",38),a(F,"RIGHT",39),a(F,"DOWN",40);var W=function(e,t){var n=function(){return"simple_widget_".concat(t)},r=function(e,t){var n=jQuery.data(e,t);return n&&n instanceof T?n:null},o=function(t,i){var o,s=n(),a=m(t.get());try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!r(l,s)){var d=new e(l,i);jQuery.data(l,s)||jQuery.data(l,s,d),d.init()}}}catch(e){a.e(e)}finally{a.f()}return t},s=function(e){var t,i=n(),o=m(e.get());try{for(o.s();!(t=o.n()).done;){var s=t.value,a=r(s,i);a&&a.destroy(),jQuery.removeData(s,i)}}catch(e){o.e(e)}finally{o.f()}},a=function(e,t,i){var r,o=null,s=m(e.get());try{for(s.s();!(r=s.n()).done;){var a=r.value,l=jQuery.data(a,n());if(l&&l instanceof T){var d=l[t];d&&"function"==typeof d&&(o=d.apply(l,i))}}}catch(e){s.e(e)}finally{s.f()}return o};jQuery.fn[t]=function(t){if(!t)return o(this,null);if("object"===i(t))return o(this,t);if("string"==typeof t&&"_"!==t[0]){var n=t;if("destroy"===n)return s(this);if("get_widget_class"===n)return e;for(var r=arguments.length,l=new Array(r>1?r-1:0),d=1;d1)){var n=t.changedTouches[0];e.handleMouseDown(L(n,t))}})),a(h(e),"touchMove",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseMove(t,L(n,t))}})),a(h(e),"touchEnd",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseUp(L(n,t))}})),e}return s(n,[{key:"init",value:function(){var e=this.$el.get(0);e&&(e.addEventListener("mousedown",this.mouseDown,{passive:!1}),e.addEventListener("touchstart",this.touchStart,{passive:!1})),this.isMouseStarted=!1,this.mouseDelayTimer=null,this.isMouseDelayMet=!1,this.mouseDownInfo=null}},{key:"deinit",value:function(){var e=this.$el.get(0);e&&(e.removeEventListener("mousedown",this.mouseDown,{passive:!1}),e.removeEventListener("touchstart",this.touchStart,{passive:!1})),this.removeMouseMoveEventListeners()}},{key:"handleMouseDown",value:function(e){return this.isMouseStarted&&this.handleMouseUp(e),this.mouseDownInfo=e,!!this.mouseCapture(e)&&(this.handleStartMouse(),!0)}},{key:"handleStartMouse",value:function(){document.addEventListener("mousemove",this.mouseMove,{passive:!1}),document.addEventListener("touchmove",this.touchMove,{passive:!1}),document.addEventListener("mouseup",this.mouseUp,{passive:!1}),document.addEventListener("touchend",this.touchEnd,{passive:!1});var e=this.getMouseDelay();e?this.startMouseDelayTimer(e):this.isMouseDelayMet=!0}},{key:"startMouseDelayTimer",value:function(e){var t=this;this.mouseDelayTimer&&clearTimeout(this.mouseDelayTimer),this.mouseDelayTimer=window.setTimeout((function(){t.mouseDownInfo&&(t.isMouseDelayMet=!0)}),e),this.isMouseDelayMet=!1}},{key:"handleMouseMove",value:function(e,t){if(this.isMouseStarted)return this.mouseDrag(t),void(e.cancelable&&e.preventDefault());this.isMouseDelayMet&&(this.mouseDownInfo&&(this.isMouseStarted=!1!==this.mouseStart(this.mouseDownInfo)),this.isMouseStarted?(this.mouseDrag(t),e.cancelable&&e.preventDefault()):this.handleMouseUp(t))}},{key:"handleMouseUp",value:function(e){this.removeMouseMoveEventListeners(),this.isMouseDelayMet=!1,this.mouseDownInfo=null,this.isMouseStarted&&(this.isMouseStarted=!1,this.mouseStop(e))}},{key:"removeMouseMoveEventListeners",value:function(){document.removeEventListener("mousemove",this.mouseMove,{passive:!1}),document.removeEventListener("touchmove",this.touchMove,{passive:!1}),document.removeEventListener("mouseup",this.mouseUp,{passive:!1}),document.removeEventListener("touchend",this.touchEnd,{passive:!1})}}]),n}(T),A=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"_supportsLocalStorage",void 0),this.treeWidget=t}return s(e,[{key:"saveState",value:function(){var e=JSON.stringify(this.getState());this.treeWidget.options.onSetStateFromStorage?this.treeWidget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)}},{key:"getStateFromStorage",value:function(){var e=this.loadFromStorage();return e?this.parseState(e):null}},{key:"getState",value:function(){var e,t,n=this;return{open_nodes:(t=[],n.treeWidget.tree.iterate((function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0})),t),selected_node:(e=[],n.treeWidget.getSelectedNodes().forEach((function(t){null!=t.id&&e.push(t.id)})),e)}}},{key:"setInitialState",value:function(e){if(e){var t=!1;return e.open_nodes&&(t=this.openInitialNodes(e.open_nodes)),e.selected_node&&(this.resetSelection(),this.selectInitialNodes(e.selected_node)),t}return!1}},{key:"setInitialStateOnDemand",value:function(e,t){e?this.doSetInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()}},{key:"getNodeIdToBeSelected",value:function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null}},{key:"parseState",value:function(e){var t,n=JSON.parse(e);return n&&n.selected_node&&("number"==typeof(t=n.selected_node)&&t%1==0)&&(n.selected_node=[n.selected_node]),n}},{key:"loadFromStorage",value:function(){return this.treeWidget.options.onGetStateFromStorage?this.treeWidget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):null}},{key:"openInitialNodes",value:function(e){var t,n=!1,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(o.load_on_demand?n=!0:o.is_open=!0)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"selectInitialNodes",value:function(e){var t,n=0,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(n+=1,this.treeWidget.selectNodeHandler.addToSelection(o))}}catch(e){i.e(e)}finally{i.f()}return 0!==n}},{key:"resetSelection",value:function(){var e=this.treeWidget.selectNodeHandler;e.getSelectedNodes().forEach((function(t){e.removeFromSelection(t)}))}},{key:"doSetInitialStateOnDemand",value:function(e,t,n){var i=this,r=0,o=e,s=function(){var e,s=[],l=m(o);try{for(l.s();!(e=l.n()).done;){var d=e.value,u=i.treeWidget.getNodeById(d);u?u.is_loading||(u.load_on_demand?a(u):i.treeWidget._openNode(u,!1,null)):s.push(d)}}catch(e){l.e(e)}finally{l.f()}o=s,i.selectInitialNodes(t)&&i.treeWidget._refreshElements(null),0===r&&n()},a=function(e){r+=1,i.treeWidget._openNode(e,!1,(function(){r-=1,s()}))};s()}},{key:"getKeyName",value:function(){return"string"==typeof this.treeWidget.options.saveState?this.treeWidget.options.saveState:"tree"}},{key:"supportsLocalStorage",value:function(){return null==this._supportsLocalStorage&&(this._supportsLocalStorage=function(){if(null==localStorage)return!1;try{var e="_storage_test";sessionStorage.setItem(e,"value"),sessionStorage.removeItem(e)}catch(e){return!1}return!0}()),this._supportsLocalStorage}}]),e}(),H=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"previousTop",void 0),a(this,"isInitialized",void 0),a(this,"$scrollParent",void 0),a(this,"scrollParentTop",void 0),this.treeWidget=t,this.previousTop=-1,this.isInitialized=!1}return s(e,[{key:"checkScrolling",value:function(){this.ensureInit(),this.checkVerticalScrolling(),this.checkHorizontalScrolling()}},{key:"scrollToY",value:function(e){if(this.ensureInit(),this.$scrollParent)this.$scrollParent[0].scrollTop=e;else{var t=this.treeWidget.$el.offset(),n=t?t.top:0;jQuery(document).scrollTop(e+n)}}},{key:"isScrolledIntoView",value:function(e){var t,n,i,r;this.ensureInit();var o=e.height()||0;if(this.$scrollParent){r=0,n=this.$scrollParent.height()||0;var s=e.offset();t=(i=(s?s.top:0)-this.scrollParentTop)+o}else{n=(r=jQuery(window).scrollTop()||0)+(jQuery(window).height()||0);var a=e.offset();t=(i=a?a.top:0)+o}return t<=n&&i>=r}},{key:"getScrollLeft",value:function(){return this.$scrollParent&&this.$scrollParent.scrollLeft()||0}},{key:"initScrollParent",value:function(){var e=this,t=function(){e.scrollParentTop=0,e.$scrollParent=null};"fixed"===this.treeWidget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;n0,s=n.left+i.clientWidth,a=n.left,l=e.pageX>s-20,d=e.pageX0,o=e.pageX>i-20,s=e.pageX-n<20;o?t.scrollLeft(n+20):s&&r&&t.scrollLeft(Math.max(n-20,0))}}}]),e}(),M=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"selectedNodes",void 0),a(this,"selectedSingleNode",void 0),this.treeWidget=t,this.selectedNodes=new Set,this.clear()}return s(e,[{key:"getSelectedNode",value:function(){var e=this.getSelectedNodes();return!!e.length&&e[0]}},{key:"getSelectedNodes",value:function(){var e=this;if(this.selectedSingleNode)return[this.selectedSingleNode];var t=[];return this.selectedNodes.forEach((function(n){var i=e.treeWidget.getNodeById(n);i&&t.push(i)})),t}},{key:"getSelectedNodesUnder",value:function(e){if(this.selectedSingleNode)return e.isParentOf(this.selectedSingleNode)?[this.selectedSingleNode]:[];var t=[];for(var n in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,n)){var i=this.treeWidget.getNodeById(n);i&&e.isParentOf(i)&&t.push(i)}return t}},{key:"isNodeSelected",value:function(e){return null!=e.id?this.selectedNodes.has(e.id):!!this.selectedSingleNode&&this.selectedSingleNode.element===e.element}},{key:"clear",value:function(){this.selectedNodes.clear(),this.selectedSingleNode=null}},{key:"removeFromSelection",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];null==e.id?this.selectedSingleNode&&e.element===this.selectedSingleNode.element&&(this.selectedSingleNode=null):(this.selectedNodes.delete(e.id),n&&e.iterate((function(){return null!=e.id&&t.selectedNodes.delete(e.id),!0})))}},{key:"addToSelection",value:function(e){null!=e.id?this.selectedNodes.add(e.id):this.selectedSingleNode=e}},{key:"isFocusOnTree",value:function(){var e=document.activeElement;return Boolean(e&&"SPAN"===e.tagName&&this.treeWidget._containsElement(e))}}]),e}(),x=function(){function e(t,n){r(this,e),a(this,"node",void 0),a(this,"$element",void 0),a(this,"treeWidget",void 0),this.init(t,n)}return s(e,[{key:"init",value:function(e,t){if(this.node=e,this.treeWidget=t,!e.element){var n=this.treeWidget.element.get(0);n&&(e.element=n)}e.element&&(this.$element=jQuery(e.element))}},{key:"addDropHint",value:function(e){return this.mustShowBorderDropHint(e)?new q(this.$element,this.treeWidget._getScrollLeft()):new B(this.node,this.$element,e)}},{key:"select",value:function(e){var t,n=this.getLi();n.addClass("jqtree-selected"),n.attr("aria-selected","true");var i=this.getSpan();i.attr("tabindex",null!==(t=this.treeWidget.options.tabIndex)&&void 0!==t?t:null),e&&i.trigger("focus")}},{key:"deselect",value:function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.removeAttr("tabindex"),t.blur()}},{key:"getUl",value:function(){return this.$element.children("ul:first")}},{key:"getSpan",value:function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")}},{key:"getLi",value:function(){return this.$element}},{key:"mustShowBorderDropHint",value:function(e){return e===k.Inside}}]),e}(),$=function(e){l(n,e);var t=c(n);function n(){return r(this,n),t.apply(this,arguments)}return s(n,[{key:"open",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"fast";if(!this.node.is_open){this.node.is_open=!0;var r=this.getButton();r.removeClass("jqtree-closed"),r.html("");var o=r.get(0);if(o){var s=this.treeWidget.renderer.openedIconElement.cloneNode(!0);o.appendChild(s)}var a=function(){t.getLi().removeClass("jqtree-closed"),t.getSpan().attr("aria-expanded","true"),e&&e(t.node),t.treeWidget._triggerEvent("tree.open",{node:t.node})};n?this.getUl().slideDown(i,a):(this.getUl().show(),a())}}},{key:"close",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"fast";if(this.node.is_open){this.node.is_open=!1;var i=this.getButton();i.addClass("jqtree-closed"),i.html("");var r=i.get(0);if(r){var o=this.treeWidget.renderer.closedIconElement.cloneNode(!0);r.appendChild(o)}var s=function(){e.getLi().addClass("jqtree-closed"),e.getSpan().attr("aria-expanded","false"),e.treeWidget._triggerEvent("tree.close",{node:e.node})};t?this.getUl().slideUp(n,s):(this.getUl().hide(),s())}}},{key:"mustShowBorderDropHint",value:function(e){return!this.node.is_open&&e===k.Inside}},{key:"getButton",value:function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")}}]),n}(x),q=function(){function e(t,n){r(this,e),a(this,"$hint",void 0);var i=t.children(".jqtree-element"),o=t.width()||0,s=Math.max(o+n-4,0),l=i.outerHeight()||0,d=Math.max(l-4,0);this.$hint=jQuery(''),i.append(this.$hint),this.$hint.css({width:s,height:d})}return s(e,[{key:"remove",value:function(){this.$hint.remove()}}]),e}(),B=function(){function e(t,n,i){r(this,e),a(this,"$element",void 0),a(this,"node",void 0),a(this,"$ghost",void 0),this.$element=n,this.node=t,this.$ghost=jQuery('
  • \n
  • '),i===k.After?this.moveAfter():i===k.Before?this.moveBefore():i===k.Inside&&(t.isFolder()&&t.is_open?this.moveInsideOpenFolder():this.moveInside())}return s(e,[{key:"remove",value:function(){this.$ghost.remove()}},{key:"moveAfter",value:function(){this.$element.after(this.$ghost)}},{key:"moveBefore",value:function(){this.$element.before(this.$ghost)}},{key:"moveInsideOpenFolder",value:function(){var e=this.node.children[0].element;e&&jQuery(e).before(this.$ghost)}},{key:"moveInside",value:function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")}}]),e}(),Q="Node parameter is empty",U="Parameter is empty: ",R=function(e){l(o,e);var t=c(o);function o(){var e;r(this,o);for(var n=arguments.length,i=new Array(n),s=0;s1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw Error(Q);var n=null!=t?t:this.options.slide;return e.is_open?this.closeNode(e,n):this.openNode(e,n),this.element}},{key:"getTree",value:function(){return this.tree}},{key:"selectNode",value:function(e,t){return this.doSelectNode(e,t),this.element}},{key:"getSelectedNode",value:function(){return this.selectNodeHandler.getSelectedNode()}},{key:"toJson",value:function(){return JSON.stringify(this.tree.getData())}},{key:"loadData",value:function(e,t){return this.doLoadData(e,t),this.element}},{key:"loadDataFromUrl",value:function(e,t,n){return"string"==typeof e?this.doLoadDataFromUrl(e,t,null!=n?n:null):this.doLoadDataFromUrl(null,e,t),this.element}},{key:"reload",value:function(e){return this.doLoadDataFromUrl(null,null,e),this.element}},{key:"refresh",value:function(){return this._refreshElements(null),this.element}},{key:"getNodeById",value:function(e){return this.tree.getNodeById(e)}},{key:"getNodeByName",value:function(e){return this.tree.getNodeByName(e)}},{key:"getNodeByNameMustExist",value:function(e){return this.tree.getNodeByNameMustExist(e)}},{key:"getNodesByProperty",value:function(e,t){return this.tree.getNodesByProperty(e,t)}},{key:"getNodeByHtmlElement",value:function(e){return this.getNode(jQuery(e))}},{key:"getNodeByCallback",value:function(e){return this.tree.getNodeByCallback(e)}},{key:"openNode",value:function(e,t,n){var i=this;if(!e)throw Error(Q);var r=function(){var e,r,o;("function"==typeof t?(e=t,r=null):(r=t,e=n),null==r)&&(r=null!==(o=i.options.slide)&&void 0!==o&&o);return[r,e]}(),o=f(r,2),s=o[0],a=o[1];return this._openNode(e,s,a),this.element}},{key:"closeNode",value:function(e,t){if(!e)throw Error(Q);var n=null!=t?t:this.options.slide;return(e.isFolder()||e.isEmptyFolder)&&(new $(e,this).close(n,this.options.animationSpeed),this.saveState()),this.element}},{key:"isDragging",value:function(){return this.dndHandler.isDragging}},{key:"refreshHitAreas",value:function(){return this.dndHandler.refresh(),this.element}},{key:"addNodeAfter",value:function(e,t){var n=t.addAfter(e);return n&&this._refreshElements(t.parent),n}},{key:"addNodeBefore",value:function(e,t){if(!t)throw Error(U+"existingNode");var n=t.addBefore(e);return n&&this._refreshElements(t.parent),n}},{key:"addParentNode",value:function(e,t){if(!t)throw Error(U+"existingNode");var n=t.addParent(e);return n&&this._refreshElements(n.parent),n}},{key:"removeNode",value:function(e){if(!e)throw Error(Q);if(!e.parent)throw Error("Node has no parent");this.selectNodeHandler.removeFromSelection(e,!0);var t=e.parent;return e.remove(),this._refreshElements(t),this.element}},{key:"appendNode",value:function(e,t){var n=t||this.tree,i=n.append(e);return this._refreshElements(n),i}},{key:"prependNode",value:function(e,t){var n=null!=t?t:this.tree,i=n.prepend(e);return this._refreshElements(n),i}},{key:"updateNode",value:function(e,t){if(!e)throw Error(Q);var n="object"===i(t)&&t.id&&t.id!==e.id;return n&&this.tree.removeNodeFromIndex(e),e.setData(t),n&&this.tree.addNodeToIndex(e),"object"===i(t)&&t.children&&t.children instanceof Array&&(e.removeChildren(),t.children.length&&e.loadFromData(t.children)),this._refreshElements(e),this.element}},{key:"isSelectedNodeInSubtree",value:function(e){var t=this.getSelectedNode();return!!t&&(e===t||e.isParentOf(t))}},{key:"moveNode",value:function(e,t,n){if(!e)throw Error(Q);if(!t)throw Error(U+"targetNode");var i=N[n];return void 0!==i&&(this.tree.moveNode(e,t,i),this._refreshElements(null)),this.element}},{key:"getStateFromStorage",value:function(){return this.saveStateHandler.getStateFromStorage()}},{key:"addToSelection",value:function(e,t){if(!e)throw Error(Q);return this.selectNodeHandler.addToSelection(e),this._getNodeElementForNode(e).select(void 0===t||t),this.saveState(),this.element}},{key:"getSelectedNodes",value:function(){return this.selectNodeHandler.getSelectedNodes()}},{key:"isNodeSelected",value:function(e){if(!e)throw Error(Q);return this.selectNodeHandler.isNodeSelected(e)}},{key:"removeFromSelection",value:function(e){if(!e)throw Error(Q);return this.selectNodeHandler.removeFromSelection(e),this._getNodeElementForNode(e).deselect(),this.saveState(),this.element}},{key:"scrollToNode",value:function(e){if(!e)throw Error(Q);var t=jQuery(e.element).offset(),n=t?t.top:0,i=this.$el.offset(),r=n-(i?i.top:0);return this.scrollHandler.scrollToY(r),this.element}},{key:"getState",value:function(){return this.saveStateHandler.getState()}},{key:"setState",value:function(e){return this.saveStateHandler.setInitialState(e),this._refreshElements(null),this.element}},{key:"setOption",value:function(e,t){return this.options[e]=t,this.element}},{key:"moveDown",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveDown(e),this.element}},{key:"moveUp",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveUp(e),this.element}},{key:"getVersion",value:function(){return"1.7.0"}},{key:"_triggerEvent",value:function(e,t){var n=jQuery.Event(e,t);return this.element.trigger(n),n}},{key:"_openNode",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,r=function(e,n,i){new $(e,t).open(i,n,t.options.animationSpeed)};if(e.isFolder()||e.isEmptyFolder)if(e.load_on_demand)this.loadFolderOnDemand(e,n,i);else{for(var o=e.parent;o;)o.parent&&r(o,!1,null),o=o.parent;r(e,n,i),this.saveState()}}},{key:"_refreshElements",value:function(e){var t=this.selectNodeHandler.isFocusOnTree(),n=!!e&&this.isSelectedNodeInSubtree(e);this.renderer.render(e),n&&this.selectCurrentNode(t),this._triggerEvent("tree.refresh")}},{key:"_getNodeElementForNode",value:function(e){return e.isFolder()?new $(e,this):new x(e,this)}},{key:"_getNodeElement",value:function(e){var t=this.getNode(e);return t?this._getNodeElementForNode(t):null}},{key:"_containsElement",value:function(e){var t=this.getNode(jQuery(e));return null!=t&&t.tree===this.tree}},{key:"_getScrollLeft",value:function(){return this.scrollHandler.getScrollLeft()}},{key:"init",value:function(){v(d(o.prototype),"init",this).call(this),this.element=this.$el,this.isInitialized=!1,this.options.rtl=this.getRtlOption(),null==this.options.closedIcon&&(this.options.closedIcon=this.getDefaultClosedIcon()),this.renderer=new C(this),this.dataLoader=new w(this),this.saveStateHandler=new A(this),this.selectNodeHandler=new M(this),this.dndHandler=new D(this),this.scrollHandler=new H(this),this.keyHandler=new F(this),this.initData(),this.element.on("click",this.handleClick),this.element.on("dblclick",this.handleDblclick),this.options.useContextMenu&&this.element.on("contextmenu",this.handleContextmenu)}},{key:"deinit",value:function(){this.element.empty(),this.element.off(),this.keyHandler.deinit(),this.tree=new _({},!0),v(d(o.prototype),"deinit",this).call(this)}},{key:"mouseCapture",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseCapture(e)}},{key:"mouseStart",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStart(e)}},{key:"mouseDrag",value:function(e){if(this.options.dragAndDrop){var t=this.dndHandler.mouseDrag(e);return this.scrollHandler.checkScrolling(),t}return!1}},{key:"mouseStop",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStop(e)}},{key:"getMouseDelay",value:function(){var e;return null!==(e=this.options.startDndDelay)&&void 0!==e?e:0}},{key:"initData",value:function(){this.options.data?this.doLoadData(this.options.data,null):this.getDataUrlInfo(null)?this.doLoadDataFromUrl(null,null,null):this.doLoadData([],null)}},{key:"getDataUrlInfo",value:function(e){var t,n=this,r=this.options.dataUrl||this.element.data("url"),o=function(t){if(null!=e&&e.id){var i={node:e.id};t.data=i}else{var r=n.getNodeIdToBeSelected();if(r){var o={selected_node:r};t.data=o}}};return"function"==typeof r?r(e):"string"==typeof r?(o(t={url:r}),t):r&&"object"===i(r)?(o(r),r):null}},{key:"getNodeIdToBeSelected",value:function(){return this.options.saveState?this.saveStateHandler.getNodeIdToBeSelected():null}},{key:"initTree",value:function(e){var t=this,n=function(){t.isInitialized||(t.isInitialized=!0,t._triggerEvent("tree.init"))};if(this.options.nodeClass){this.tree=new this.options.nodeClass(null,!0,this.options.nodeClass),this.selectNodeHandler.clear(),this.tree.loadFromData(e);var i=this.setInitialState();this._refreshElements(null),i?this.setInitialStateOnDemand(n):n()}}},{key:"setInitialState",value:function(){var e=this,t=f(function(){if(e.options.saveState){var t=e.saveStateHandler.getStateFromStorage();return t?[!0,e.saveStateHandler.setInitialState(t)]:[!1,!1]}return[!1,!1]}(),2),n=t[0],i=t[1];return n||(i=function(){if(!1===e.options.autoOpen)return!1;var t=e.getAutoOpenMaxLevel(),n=!1;return e.tree.iterate((function(e,i){return e.load_on_demand?(n=!0,!1):!!e.hasChildren()&&(e.is_open=!0,i!==t)})),n}()),i}},{key:"setInitialStateOnDemand",value:function(e){var t,n,i,r,o=this;(function(){if(o.options.saveState){var t=o.saveStateHandler.getStateFromStorage();return!!t&&(o.saveStateHandler.setInitialStateOnDemand(t,e),!0)}return!1})()||(t=o.getAutoOpenMaxLevel(),n=0,i=function(e){n+=1,o._openNode(e,!1,(function(){n-=1,r()}))},(r=function(){o.tree.iterate((function(e,n){return e.load_on_demand?(e.is_loading||i(e),!1):(o._openNode(e,!1,null),n!==t)})),0===n&&e()})())}},{key:"getAutoOpenMaxLevel",value:function(){return!0===this.options.autoOpen?-1:"number"==typeof this.options.autoOpen?this.options.autoOpen:"string"==typeof this.options.autoOpen?parseInt(this.options.autoOpen,10):0}},{key:"getClickTarget",value:function(e){var t=jQuery(e),n=t.closest(".jqtree-toggler");if(n.length){var i=this.getNode(n);if(i)return{type:"button",node:i}}else{var r=t.closest(".jqtree-element");if(r.length){var o=this.getNode(r);if(o)return{type:"label",node:o}}}return null}},{key:"getNode",value:function(e){var t=e.closest("li.jqtree_common");return 0===t.length?null:t.data("node")}},{key:"saveState",value:function(){this.options.saveState&&this.saveStateHandler.saveState()}},{key:"selectCurrentNode",value:function(e){var t=this.getSelectedNode();if(t){var n=this._getNodeElementForNode(t);n&&n.select(e)}}},{key:"deselectCurrentNode",value:function(){var e=this.getSelectedNode();e&&this.removeFromSelection(e)}},{key:"getDefaultClosedIcon",value:function(){return this.options.rtl?"◀":"►"}},{key:"getRtlOption",value:function(){if(null!=this.options.rtl)return this.options.rtl;var e=this.element.data("rtl");return null!==e&&!1!==e&&void 0!==e}},{key:"doSelectNode",value:function(e,t){var i=this,r=function(){i.options.saveState&&i.saveStateHandler.saveState()};if(!e)return this.deselectCurrentNode(),void r();var o=n(n({},{mustSetFocus:!0,mustToggle:!0}),t||{});if(i.options.onCanSelectNode?!0===i.options.selectable&&i.options.onCanSelectNode(e):!0===i.options.selectable){if(this.selectNodeHandler.isNodeSelected(e))o.mustToggle&&(this.deselectCurrentNode(),this._triggerEvent("tree.select",{node:null,previous_node:e}));else{var s=this.getSelectedNode()||null;this.deselectCurrentNode(),this.addToSelection(e,o.mustSetFocus),this._triggerEvent("tree.select",{node:e,deselected_node:s}),(a=e.parent)&&a.parent&&!a.is_open&&i.openNode(a,!1)}var a;r()}}},{key:"doLoadData",value:function(e,t){e&&(t?(this.deselectNodes(t),this.loadSubtree(e,t)):this.initTree(e),this.isDragging()&&this.dndHandler.refresh()),this._triggerEvent("tree.load_data",{tree_data:e,parent_node:t})}},{key:"deselectNodes",value:function(e){var t,n=m(this.selectNodeHandler.getSelectedNodesUnder(e));try{for(n.s();!(t=n.n()).done;){var i=t.value;this.selectNodeHandler.removeFromSelection(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"loadSubtree",value:function(e,t){t.loadFromData(e),t.load_on_demand=!1,t.is_loading=!1,this._refreshElements(t)}},{key:"doLoadDataFromUrl",value:function(e,t,n){var i=e||this.getDataUrlInfo(t);this.dataLoader.loadFromUrl(i,t,n)}},{key:"loadFolderOnDemand",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0;e.is_loading=!0,this.doLoadDataFromUrl(null,e,(function(){t._openNode(e,n,i)}))}}]),o}(O);return a(R,"defaults",{animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,closedIcon:void 0,data:void 0,dataFilter:void 0,dataUrl:void 0,dragAndDrop:!1,keyboardSupport:!0,nodeClass:_,onCanMove:void 0,onCanMoveTo:void 0,onCanSelectNode:void 0,onCreateLi:void 0,onDragMove:void 0,onDragStop:void 0,onGetStateFromStorage:void 0,onIsMoveHandle:void 0,onLoadFailed:void 0,onLoading:void 0,onSetStateFromStorage:void 0,openedIcon:"▼",openFolderDelay:500,rtl:void 0,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0}),T.register(R,"tree"),e.JqTreeWidget=R,e}({}); //# sourceMappingURL=tree.jquery.js.map diff --git a/lib/mouse.widget.js b/lib/mouse.widget.js index 76111a14..88838de9 100644 --- a/lib/mouse.widget.js +++ b/lib/mouse.widget.js @@ -19,7 +19,9 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* + This widget does the same a the mouse widget in jqueryui. + */ var getPositionInfoFromMouseEvent = function getPositionInfoFromMouseEvent(e) { return { pageX: e.pageX, diff --git a/lib/node.js b/lib/node.js index 203c7084..908b3f0c 100644 --- a/lib/node.js +++ b/lib/node.js @@ -14,14 +14,14 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -var Position; -exports.Position = Position; -(function (Position) { +var Position = /*#__PURE__*/function (Position) { Position[Position["Before"] = 1] = "Before"; Position[Position["After"] = 2] = "After"; Position[Position["Inside"] = 3] = "Inside"; Position[Position["None"] = 4] = "None"; -})(Position || (exports.Position = Position = {})); + return Position; +}({}); +exports.Position = Position; var positionNames = { before: Position.Before, after: Position.After, diff --git a/lib/test/jqTree/events.test.js b/lib/test/jqTree/events.test.js index f591f7e8..63cb2fe2 100644 --- a/lib/test/jqTree/events.test.js +++ b/lib/test/jqTree/events.test.js @@ -1,12 +1,17 @@ "use strict"; +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var _givens = _interopRequireDefault(require("givens")); var _msw = require("msw"); var _node = require("msw/node"); +var _dom = require("@testing-library/dom"); require("../../tree.jquery"); var _exampleData = _interopRequireDefault(require("../support/exampleData")); var _testUtil = require("../support/testUtil"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var context = describe; var server = (0, _node.setupServer)(); beforeAll(function () { @@ -41,14 +46,12 @@ describe("tree.click", function () { }); }); it("fires tree.click", function () { - return new Promise(function (done) { - given.$tree.on("tree.click", function (e) { - var treeClickEvent = e; - expect(treeClickEvent.node).toBe(given.node1); - done(); - }); - given.titleSpan.trigger("click"); - }); + var onClick = jest.fn(); + given.$tree.on("tree.click", onClick); + given.titleSpan.trigger("click"); + expect(onClick).toHaveBeenCalledWith(expect.objectContaining({ + node: given.node1 + })); }); }); describe("tree.contextmenu", function () { @@ -68,14 +71,12 @@ describe("tree.contextmenu", function () { }); }); it("fires tree.contextmenu", function () { - return new Promise(function (done) { - given.$tree.on("tree.contextmenu", function (e) { - var treeClickEvent = e; - expect(treeClickEvent.node).toBe(given.node1); - done(); - }); - given.titleSpan.contextmenu(); - }); + var onContextMenu = jest.fn(); + given.$tree.on("tree.contextmenu", onContextMenu); + given.titleSpan.trigger("contextmenu"); + expect(onContextMenu).toHaveBeenCalledWith(expect.objectContaining({ + node: given.node1 + })); }); }); describe("tree.dblclick", function () { @@ -95,14 +96,12 @@ describe("tree.dblclick", function () { }); }); it("fires tree.dblclick", function () { - return new Promise(function (done) { - given.$tree.on("tree.dblclick", function (e) { - var treeClickEvent = e; - expect(treeClickEvent.node).toBe(given.node1); - done(); - }); - given.titleSpan.trigger("dblclick"); - }); + var onDoubleClick = jest.fn(); + given.$tree.on("tree.dblclick", onDoubleClick); + given.titleSpan.trigger("dblclick"); + expect(onDoubleClick).toHaveBeenCalledWith(expect.objectContaining({ + node: given.node1 + })); }); }); describe("tree.init", function () { @@ -112,18 +111,14 @@ describe("tree.init", function () { }); context("with json data", function () { it("is called", function () { - return new Promise(function (done) { - given.$tree.on("tree.init", function () { - expect(given.$tree.tree("getNodeByName", "node2")).toMatchObject({ - id: 124, - name: "node2" - }); - done(); - }); - given.$tree.tree({ - data: _exampleData["default"] - }); + var onInit = jest.fn(); + given.$tree.on("tree.init", onInit); + given.$tree.tree({ + data: _exampleData["default"] }); + + // eslint-disable-next-line jest/prefer-called-with + expect(onInit).toHaveBeenCalled(); }); }); context("with data loaded from an url", function () { @@ -132,20 +127,27 @@ describe("tree.init", function () { return response(ctx.status(200), ctx.json(_exampleData["default"])); })); }); - it("is called", function () { - return new Promise(function (done) { - given.$tree.on("tree.init", function () { - expect(given.$tree.tree("getNodeByName", "node2")).toMatchObject({ - id: 124, - name: "node2" - }); - done(); - }); - given.$tree.tree({ - dataUrl: "/tree/" - }); - }); - }); + it("is called", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var onInit; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + onInit = jest.fn(); + given.$tree.on("tree.init", onInit); + given.$tree.tree({ + dataUrl: "/tree/" + }); + _context.next = 5; + return (0, _dom.waitFor)(function () { + // eslint-disable-next-line jest/prefer-called-with + expect(onInit).toHaveBeenCalled(); + }); + case 5: + case "end": + return _context.stop(); + } + }, _callee); + }))); }); }); describe("tree.load_data", function () { @@ -155,16 +157,14 @@ describe("tree.load_data", function () { }); context("when the tree is initialized with data", function () { it("fires tree.load_data", function () { - return new Promise(function (resolve) { - given.$tree.on("tree.load_data", function (e) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - expect(e.tree_data).toEqual(_exampleData["default"]); - resolve(); - }); - given.$tree.tree({ - data: _exampleData["default"] - }); + var onLoadData = jest.fn(); + given.$tree.on("tree.load_data", onLoadData); + given.$tree.tree({ + data: _exampleData["default"] }); + expect(onLoadData).toHaveBeenCalledWith(expect.objectContaining({ + tree_data: _exampleData["default"] + })); }); }); }); @@ -184,31 +184,27 @@ describe("tree.select", function () { data: _exampleData["default"] }); }); - it("fires tree.click", function () { - return new Promise(function (done) { - given.$tree.on("tree.select", function (e) { - var treeClickEvent = e; - expect(treeClickEvent.node).toBe(given.node1); - expect(treeClickEvent.deselected_node).toBeNull(); - done(); - }); - given.titleSpan.trigger("click"); - }); + it("fires tree.select", function () { + var onSelect = jest.fn(); + given.$tree.on("tree.select", onSelect); + given.titleSpan.trigger("click"); + expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({ + node: given.node1, + deselected_node: null + })); }); context("when the node was selected", function () { beforeEach(function () { given.$tree.tree("selectNode", given.node1); }); it("fires tree.select with node is null", function () { - return new Promise(function (done) { - given.$tree.on("tree.select", function (e) { - var treeClickEvent = e; - expect(treeClickEvent.node).toBeNull(); - expect(treeClickEvent.previous_node).toBe(given.node1); - done(); - }); - given.titleSpan.trigger("click"); - }); + var onSelect = jest.fn(); + given.$tree.on("tree.select", onSelect); + given.titleSpan.trigger("click"); + expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({ + node: null, + previous_node: given.node1 + })); }); }); }); \ No newline at end of file diff --git a/package.json b/package.json index 6b62a427..60385d99 100644 --- a/package.json +++ b/package.json @@ -28,50 +28,50 @@ "test": "pnpm jest && pnpm playwright" }, "dependencies": { - "jquery": "^3.6.3" + "jquery": "^3.6.4" }, "devDependencies": { - "@babel/cli": "^7.20.7", - "@babel/core": "^7.20.7", - "@babel/preset-env": "^7.20.2", - "@babel/preset-typescript": "^7.18.6", - "@playwright/test": "^1.29.1", + "@babel/cli": "^7.21.0", + "@babel/core": "^7.21.4", + "@babel/preset-env": "^7.21.4", + "@babel/preset-typescript": "^7.21.4", + "@playwright/test": "^1.32.3", "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-terser": "^0.1.0", - "@testing-library/dom": "^8.19.0", + "@rollup/plugin-node-resolve": "^15.0.2", + "@rollup/plugin-terser": "^0.4.1", + "@testing-library/dom": "^9.2.0", "@types/debug": "^4.1.7", - "@types/jest": "^29.2.4", - "@types/jquery": "^3.5.14", - "@types/node": "^18.11.17", - "@typescript-eslint/eslint-plugin": "^5.47.0", - "@typescript-eslint/parser": "^5.47.0", - "autoprefixer": "^10.4.13", - "babel-jest": "^29.3.1", + "@types/jest": "^29.5.0", + "@types/jquery": "^3.5.16", + "@types/node": "^18.15.11", + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "autoprefixer": "^10.4.14", + "babel-jest": "^29.5.0", "babel-plugin-istanbul": "^6.1.1", - "eslint": "^8.30.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.7", - "eslint-plugin-playwright": "^0.11.2", - "eslint-plugin-testing-library": "^5.9.1", + "eslint": "^8.38.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jest": "^27.2.1", + "eslint-plugin-playwright": "^0.12.0", + "eslint-plugin-testing-library": "^5.10.3", "givens": "^1.3.9", "graphql": "^16.6.0", - "jest": "^29.3.1", - "jest-environment-jsdom": "^29.3.1", - "jest-extended": "^3.2.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "jest-extended": "^3.2.4", "jsonfile": "^6.1.0", "lodash.template": "^4.5.0", - "msw": "^0.49.2", - "playwright": "^1.29.1", - "postcss": "^8.4.20", + "msw": "^1.2.1", + "playwright": "^1.32.3", + "postcss": "^8.4.21", "postcss-cli": "^10.1.0", "postcss-import": "^15.1.0", "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.0", - "prettier": "^2.8.1", - "rollup": "^3.8.1", + "postcss-nested": "^6.0.1", + "prettier": "^2.8.7", + "rollup": "^3.20.2", "rollup-plugin-serve": "^2.0.2", - "tslib": "^2.4.1", - "typescript": "~4.9.4" + "tslib": "^2.5.0", + "typescript": "~5.0.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4da79b3c..b29d5dc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,116 +1,157 @@ -lockfileVersion: 5.4 - -specifiers: - '@babel/cli': ^7.20.7 - '@babel/core': ^7.20.7 - '@babel/preset-env': ^7.20.2 - '@babel/preset-typescript': ^7.18.6 - '@playwright/test': ^1.29.1 - '@rollup/plugin-babel': ^6.0.3 - '@rollup/plugin-node-resolve': ^15.0.1 - '@rollup/plugin-terser': ^0.1.0 - '@testing-library/dom': ^8.19.0 - '@types/debug': ^4.1.7 - '@types/jest': ^29.2.4 - '@types/jquery': ^3.5.14 - '@types/node': ^18.11.17 - '@typescript-eslint/eslint-plugin': ^5.47.0 - '@typescript-eslint/parser': ^5.47.0 - autoprefixer: ^10.4.13 - babel-jest: ^29.3.1 - babel-plugin-istanbul: ^6.1.1 - eslint: ^8.30.0 - eslint-plugin-import: ^2.26.0 - eslint-plugin-jest: ^27.1.7 - eslint-plugin-playwright: ^0.11.2 - eslint-plugin-testing-library: ^5.9.1 - givens: ^1.3.9 - graphql: ^16.6.0 - jest: ^29.3.1 - jest-environment-jsdom: ^29.3.1 - jest-extended: ^3.2.0 - jquery: ^3.6.3 - jsonfile: ^6.1.0 - lodash.template: ^4.5.0 - msw: ^0.49.2 - playwright: ^1.29.1 - postcss: ^8.4.20 - postcss-cli: ^10.1.0 - postcss-import: ^15.1.0 - postcss-load-config: ^4.0.1 - postcss-nested: ^6.0.0 - prettier: ^2.8.1 - rollup: ^3.8.1 - rollup-plugin-serve: ^2.0.2 - tslib: ^2.4.1 - typescript: ~4.9.4 +lockfileVersion: '6.0' dependencies: - jquery: 3.6.3 + jquery: + specifier: ^3.6.4 + version: 3.6.4 devDependencies: - '@babel/cli': 7.20.7_@babel+core@7.20.7 - '@babel/core': 7.20.7 - '@babel/preset-env': 7.20.2_@babel+core@7.20.7 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.7 - '@playwright/test': 1.29.1 - '@rollup/plugin-babel': 6.0.3_dfwdex4qe3e2dx2m4b7f5c5gee - '@rollup/plugin-node-resolve': 15.0.1_rollup@3.8.1 - '@rollup/plugin-terser': 0.1.0_rollup@3.8.1 - '@testing-library/dom': 8.19.0 - '@types/debug': 4.1.7 - '@types/jest': 29.2.4 - '@types/jquery': 3.5.14 - '@types/node': 18.11.17 - '@typescript-eslint/eslint-plugin': 5.47.0_ncmi6noazr3nzas7jxykisekym - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa - autoprefixer: 10.4.13_postcss@8.4.20 - babel-jest: 29.3.1_@babel+core@7.20.7 - babel-plugin-istanbul: 6.1.1 - eslint: 8.30.0 - eslint-plugin-import: 2.26.0_tqyj5ytb5g6r5ett7xxedhk6eq - eslint-plugin-jest: 27.1.7_ynswt5pvagzyqki5w7w75b3qvm - eslint-plugin-playwright: 0.11.2_ttbndbdkvr6mhvx6ps5rimaowi - eslint-plugin-testing-library: 5.9.1_lzzuuodtsqwxnvqeq4g4likcqa - givens: 1.3.9 - graphql: 16.6.0 - jest: 29.3.1_@types+node@18.11.17 - jest-environment-jsdom: 29.3.1 - jest-extended: 3.2.0_jest@29.3.1 - jsonfile: 6.1.0 - lodash.template: 4.5.0 - msw: 0.49.2_typescript@4.9.4 - playwright: 1.29.1 - postcss: 8.4.20 - postcss-cli: 10.1.0_postcss@8.4.20 - postcss-import: 15.1.0_postcss@8.4.20 - postcss-load-config: 4.0.1_postcss@8.4.20 - postcss-nested: 6.0.0_postcss@8.4.20 - prettier: 2.8.1 - rollup: 3.8.1 - rollup-plugin-serve: 2.0.2 - tslib: 2.4.1 - typescript: 4.9.4 + '@babel/cli': + specifier: ^7.21.0 + version: 7.21.0(@babel/core@7.21.4) + '@babel/core': + specifier: ^7.21.4 + version: 7.21.4 + '@babel/preset-env': + specifier: ^7.21.4 + version: 7.21.4(@babel/core@7.21.4) + '@babel/preset-typescript': + specifier: ^7.21.4 + version: 7.21.4(@babel/core@7.21.4) + '@playwright/test': + specifier: ^1.32.3 + version: 1.32.3 + '@rollup/plugin-babel': + specifier: ^6.0.3 + version: 6.0.3(@babel/core@7.21.4)(rollup@3.20.2) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@3.20.2) + '@rollup/plugin-terser': + specifier: ^0.4.1 + version: 0.4.1(rollup@3.20.2) + '@testing-library/dom': + specifier: ^9.2.0 + version: 9.2.0 + '@types/debug': + specifier: ^4.1.7 + version: 4.1.7 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/jquery': + specifier: ^3.5.16 + version: 3.5.16 + '@types/node': + specifier: ^18.15.11 + version: 18.15.11 + '@typescript-eslint/eslint-plugin': + specifier: ^5.58.0 + version: 5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.58.0 + version: 5.58.0(eslint@8.38.0)(typescript@5.0.4) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.21) + babel-jest: + specifier: ^29.5.0 + version: 29.5.0(@babel/core@7.21.4) + babel-plugin-istanbul: + specifier: ^6.1.1 + version: 6.1.1 + eslint: + specifier: ^8.38.0 + version: 8.38.0 + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint@8.38.0) + eslint-plugin-jest: + specifier: ^27.2.1 + version: 27.2.1(@typescript-eslint/eslint-plugin@5.58.0)(eslint@8.38.0)(jest@29.5.0)(typescript@5.0.4) + eslint-plugin-playwright: + specifier: ^0.12.0 + version: 0.12.0(eslint-plugin-jest@27.2.1)(eslint@8.38.0) + eslint-plugin-testing-library: + specifier: ^5.10.3 + version: 5.10.3(eslint@8.38.0)(typescript@5.0.4) + givens: + specifier: ^1.3.9 + version: 1.3.9 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.11) + jest-environment-jsdom: + specifier: ^29.5.0 + version: 29.5.0 + jest-extended: + specifier: ^3.2.4 + version: 3.2.4(jest@29.5.0) + jsonfile: + specifier: ^6.1.0 + version: 6.1.0 + lodash.template: + specifier: ^4.5.0 + version: 4.5.0 + msw: + specifier: ^1.2.1 + version: 1.2.1(typescript@5.0.4) + playwright: + specifier: ^1.32.3 + version: 1.32.3 + postcss: + specifier: ^8.4.21 + version: 8.4.21 + postcss-cli: + specifier: ^10.1.0 + version: 10.1.0(postcss@8.4.21) + postcss-import: + specifier: ^15.1.0 + version: 15.1.0(postcss@8.4.21) + postcss-load-config: + specifier: ^4.0.1 + version: 4.0.1(postcss@8.4.21) + postcss-nested: + specifier: ^6.0.1 + version: 6.0.1(postcss@8.4.21) + prettier: + specifier: ^2.8.7 + version: 2.8.7 + rollup: + specifier: ^3.20.2 + version: 3.20.2 + rollup-plugin-serve: + specifier: ^2.0.2 + version: 2.0.2 + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ~5.0.4 + version: 5.0.4 packages: - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/cli/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==} + /@babel/cli@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@jridgewell/trace-mapping': 0.3.17 + '@babel/core': 7.21.4 + '@jridgewell/trace-mapping': 0.3.18 commander: 4.1.1 convert-source-map: 1.9.0 fs-readdir-recursive: 1.1.0 @@ -122,282 +163,284 @@ packages: chokidar: 3.5.3 dev: true - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data/7.20.5: - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + /@babel/compat-data@7.21.4: + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.7: - resolution: {integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==} + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 - '@babel/helper-module-transforms': 7.20.7 - '@babel/helpers': 7.20.7 - '@babel/parser': 7.20.7 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.4 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.2 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.20.7: - resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 - '@jridgewell/gen-mapping': 0.3.2 + '@babel/types': 7.21.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 dev: true - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.7 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==} + /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.7: - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} + /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.2 + regexpu-core: 5.3.2 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.7: + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.4): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-explode-assignable-expression/7.18.6: + /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-member-expression-to-functions/7.20.7: - resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} + /@babel/helper-member-expression-to-functions@7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-module-transforms/7.20.7: - resolution: {integrity: sha512-FNdu7r67fqMUSVuQpFQGE6BPdhJIhitoxhGzDbAXNcA07uoVG37fOiMk3OSV8rEICuyG6t8LGkd9EE64qIEoIA==} + /@babel/helper-module-transforms@7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-plugin-utils/7.20.2: + /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.7: + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers/7.20.7: + /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-simple-access/7.20.2: + /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function/7.20.5: + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers/7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} + /@babel/helpers@7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -406,452 +449,452 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.20.7: - resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.7: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.7: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.7: + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.7: + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.7: + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.7: + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.7: - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.7: + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.7: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.7: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.7: + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.4): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.7: + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.4): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.7: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.7: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.7: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.7: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.7: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.7: + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.4): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.7: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.7: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.7: + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.7: + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-module-imports': 7.18.6 + '@babel/core': 7.21.4 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.7 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.9_@babel+core@7.20.7: - resolution: {integrity: sha512-hwZN0kr16UkIF/kR9F9x8gd1kTkQl1vyAF2lkUmlTuCtTKOGLE5blQctuxEeKXwz0dkArQ9RYL8+HLb/75KGMA==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 @@ -861,466 +904,473 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.7: + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.4): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.7: + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.7: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.7: + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 - '@babel/helper-function-name': 7.19.0 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.7: + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-+1IVLD+dHOzRZWNFFSoyPZz4ffsVmOP+OhhjeahLKpU97v/52LcCb9RabRl5eHM1/HAuH5Dl0q9Pyzrq1v2otQ==} + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.4): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-module-transforms': 7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-76jqqFiFdCD+RJwEdtBHUG2/rEKQAmpejPbAKyQECEE3/y4U5CMPc9IXvipS990vgQhzq+ZRw6WJ+q4xJ/P24w==} + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-module-transforms': 7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.7: - resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.4): + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.7 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-module-transforms': 7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.7: + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.4): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.4): + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.7: + /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.4): resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.7: + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.4): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.7: + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.7: + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.4): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.7: - resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} + /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.4): + resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-class-features-plugin': 7.20.7_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.7 + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.7: + /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.4): resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.7: + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.20.7: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + /@babel/preset-env@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.7 + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.7 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.7 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.7 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.7 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.7 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-block-scoping': 7.20.9_@babel+core@7.20.7 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.7 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-modules-amd': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-modules-commonjs': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.20.7 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.7 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.7 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.7 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.7 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.7 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.7 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.7 - '@babel/types': 7.20.7 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.7 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.7 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.7 - core-js-compat: 3.26.1 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.4) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.4) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.4) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.4) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.4) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.4) + '@babel/types': 7.21.4 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + core-js-compat: 3.30.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.7: + /@babel/preset-modules@0.1.5(@babel/core@7.21.4): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.7 - '@babel/types': 7.20.7 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) + '@babel/types': 7.21.4 esutils: 2.0.3 dev: true - /@babel/preset-typescript/7.18.6_@babel+core@7.20.7: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + /@babel/preset-typescript@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.7 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) + '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /@babel/runtime/7.20.7: - resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.20.7: + /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 dev: true - /@babel/traverse/7.20.8: - resolution: {integrity: sha512-/RNkaYDeCy4MjyV70+QkSHhxbvj2JO/5Ft2Pa880qJOG8tWrqcT/wXUuCCv43yogfqPzHL77Xu101KQPf4clnQ==} + /@babel/traverse@7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -1328,18 +1378,33 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@eslint/eslintrc/1.4.0: - resolution: {integrity: sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==} + /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.38.0 + eslint-visitor-keys: 3.4.0 + dev: true + + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 - globals: 13.19.0 + espree: 9.5.1 + globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1349,7 +1414,12 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.11.8: + /@eslint/js@8.38.0: + resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: @@ -1360,16 +1430,16 @@ packages: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -1380,25 +1450,25 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.3.1: - resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 chalk: 4.1.2 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 dev: true - /@jest/core/29.3.1: - resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1406,32 +1476,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.3.1 - '@jest/reporters': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.8.0 exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 29.2.0 - jest-config: 29.3.1_@types+node@18.11.17 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-resolve-dependencies: 29.3.1 - jest-runner: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - jest-watcher: 29.3.1 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@18.15.11) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -1439,59 +1509,59 @@ packages: - ts-node dev: true - /@jest/environment/29.3.1: - resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 - jest-mock: 29.3.1 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.3.1: - resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 dev: true - /@jest/expect/29.3.1: - resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.3.1 - jest-snapshot: 29.3.1 + expect: 29.5.0 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.3.1: - resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.11.17 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.15.11 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /@jest/globals/29.3.1: - resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/types': 29.3.1 - jest-mock: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.3.1: - resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1500,84 +1570,84 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.11.17 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 18.15.11 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.3.1 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color dev: true - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.51 + '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 callsites: 3.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true - /@jest/test-result/29.3.1: - resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.3.1: - resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 slash: 3.0.0 dev: true - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.7 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.17 + '@babel/core': 7.21.4 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -1586,94 +1656,90 @@ packages: - supports-color dev: true - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.17 - '@types/yargs': 17.0.17 + '@types/node': 18.15.11 + '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - dev: true - - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + /@jridgewell/source-map@0.3.3: + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@mswjs/cookies/0.2.2: + /@mswjs/cookies@0.2.2: resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} engines: {node: '>=14'} dependencies: '@types/set-cookie-parser': 2.4.2 - set-cookie-parser: 2.5.1 + set-cookie-parser: 2.6.0 dev: true - /@mswjs/interceptors/0.17.6: - resolution: {integrity: sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==} + /@mswjs/interceptors@0.17.9: + resolution: {integrity: sha512-4LVGt03RobMH/7ZrbHqRxQrS9cc2uh+iNKSj8UWr8M26A2i793ju+csaB5zaqYltqJmA2jUq4VeYfKmVqvsXQg==} engines: {node: '>=14'} dependencies: '@open-draft/until': 1.0.3 '@types/debug': 4.1.7 - '@xmldom/xmldom': 0.8.6 + '@xmldom/xmldom': 0.8.7 debug: 4.3.4 headers-polyfill: 3.1.2 - outvariant: 1.3.0 + outvariant: 1.4.0 strict-event-emitter: 0.2.8 web-encoding: 1.1.5 transitivePeerDependencies: - supports-color dev: true - /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: + /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} requiresBuild: true dev: true optional: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -1681,33 +1747,35 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.14.0 + fastq: 1.15.0 dev: true - /@open-draft/until/1.0.3: + /@open-draft/until@1.0.3: resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} dev: true - /@playwright/test/1.29.1: - resolution: {integrity: sha512-iQxk2DX5U9wOGV3+/Jh9OHPsw5H3mleUL2S4BgQuwtlAfK3PnKvn38m4Rg9zIViGHVW24opSm99HQm/UFLEy6w==} + /@playwright/test@1.32.3: + resolution: {integrity: sha512-BvWNvK0RfBriindxhLVabi8BRe3X0J9EVjKlcmhxjg4giWBD/xleLcg2dz7Tx0agu28rczjNIPQWznwzDwVsZQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 18.11.17 - playwright-core: 1.29.1 + '@types/node': 18.15.11 + playwright-core: 1.32.3 + optionalDependencies: + fsevents: 2.3.2 dev: true - /@rollup/plugin-babel/6.0.3_dfwdex4qe3e2dx2m4b7f5c5gee: + /@rollup/plugin-babel@6.0.3(@babel/core@7.21.4)(rollup@3.20.2): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1720,14 +1788,14 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.20.7 - '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 5.0.2_rollup@3.8.1 - rollup: 3.8.1 + '@babel/core': 7.21.4 + '@babel/helper-module-imports': 7.21.4 + '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + rollup: 3.20.2 dev: true - /@rollup/plugin-node-resolve/15.0.1_rollup@3.8.1: - resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} + /@rollup/plugin-node-resolve@15.0.2(rollup@3.20.2): + resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -1735,17 +1803,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.8.1 + '@rollup/pluginutils': 5.0.2(rollup@3.20.2) '@types/resolve': 1.20.2 - deepmerge: 4.2.2 - is-builtin-module: 3.2.0 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.1 - rollup: 3.8.1 + resolve: 1.22.2 + rollup: 3.20.2 dev: true - /@rollup/plugin-terser/0.1.0_rollup@3.8.1: - resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==} + /@rollup/plugin-terser@0.4.1(rollup@3.20.2): + resolution: {integrity: sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.x || ^3.x @@ -1753,11 +1821,13 @@ packages: rollup: optional: true dependencies: - rollup: 3.8.1 - terser: 5.16.1 + rollup: 3.20.2 + serialize-javascript: 6.0.1 + smob: 0.0.6 + terser: 5.16.9 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.8.1: + /@rollup/pluginutils@5.0.2(rollup@3.20.2): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1769,196 +1839,196 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.8.1 + rollup: 3.20.2 dev: true - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons/1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers@10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: - '@sinonjs/commons': 1.8.6 + '@sinonjs/commons': 2.0.0 dev: true - /@testing-library/dom/8.19.0: - resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} - engines: {node: '>=12'} + /@testing-library/dom@9.2.0: + resolution: {integrity: sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==} + engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.7 - '@types/aria-query': 4.2.2 + '@babel/code-frame': 7.21.4 + '@babel/runtime': 7.21.0 + '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 - dom-accessibility-api: 0.5.14 - lz-string: 1.4.4 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 pretty-format: 27.5.1 dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@types/aria-query/4.2.2: - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + /@types/aria-query@5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + /@types/babel__core@7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 dev: true - /@types/babel__traverse/7.18.3: + /@types/babel__traverse@7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.4 dev: true - /@types/cookie/0.4.1: + /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.11.17 + '@types/node': 18.15.11 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.2.4: - resolution: {integrity: sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==} + /@types/jest@29.5.0: + resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: - expect: 29.3.1 - pretty-format: 29.3.1 + expect: 29.5.0 + pretty-format: 29.5.0 dev: true - /@types/jquery/3.5.14: - resolution: {integrity: sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==} + /@types/jquery@3.5.16: + resolution: {integrity: sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==} dependencies: '@types/sizzle': 2.3.3 dev: true - /@types/js-levenshtein/1.1.1: + /@types/js-levenshtein@1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/jsdom/20.0.1: + /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.11.17 + '@types/node': 18.15.11 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node/18.11.17: - resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==} + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} dev: true - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/resolve/1.20.2: + /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver/7.3.13: + /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/set-cookie-parser/2.4.2: + /@types/set-cookie-parser@2.4.2: resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} dependencies: - '@types/node': 18.11.17 + '@types/node': 18.15.11 dev: true - /@types/sizzle/2.3.3: + /@types/sizzle@2.3.3: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.17: - resolution: {integrity: sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==} + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.47.0_ncmi6noazr3nzas7jxykisekym: - resolution: {integrity: sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==} + /@typescript-eslint/eslint-plugin@5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1968,24 +2038,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa - '@typescript-eslint/scope-manager': 5.47.0 - '@typescript-eslint/type-utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.58.0 + '@typescript-eslint/type-utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.30.0 + eslint: 8.38.0 + grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + semver: 7.4.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: - resolution: {integrity: sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==} + /@typescript-eslint/parser@5.58.0(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1994,26 +2065,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.47.0 - '@typescript-eslint/types': 5.47.0 - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.58.0 + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) debug: 4.3.4 - eslint: 8.30.0 - typescript: 4.9.4 + eslint: 8.38.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.47.0: - resolution: {integrity: sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==} + /@typescript-eslint/scope-manager@5.58.0: + resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.47.0 - '@typescript-eslint/visitor-keys': 5.47.0 + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/visitor-keys': 5.58.0 dev: true - /@typescript-eslint/type-utils/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: - resolution: {integrity: sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==} + /@typescript-eslint/type-utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2022,23 +2093,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa + '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) + '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.30.0 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + eslint: 8.38.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.47.0: - resolution: {integrity: sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==} + /@typescript-eslint/types@5.58.0: + resolution: {integrity: sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.47.0_typescript@4.9.4: - resolution: {integrity: sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==} + /@typescript-eslint/typescript-estree@5.58.0(typescript@5.0.4): + resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2046,88 +2117,88 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.47.0 - '@typescript-eslint/visitor-keys': 5.47.0 + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/visitor-keys': 5.58.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + semver: 7.4.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: - resolution: {integrity: sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==} + /@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.47.0 - '@typescript-eslint/types': 5.47.0 - '@typescript-eslint/typescript-estree': 5.47.0_typescript@4.9.4 - eslint: 8.30.0 + '@typescript-eslint/scope-manager': 5.58.0 + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) + eslint: 8.38.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.30.0 - semver: 7.3.8 + semver: 7.4.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.47.0: - resolution: {integrity: sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==} + /@typescript-eslint/visitor-keys@5.58.0: + resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.47.0 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 5.58.0 + eslint-visitor-keys: 3.4.0 dev: true - /@xmldom/xmldom/0.8.6: - resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} + /@xmldom/xmldom@0.8.7: + resolution: {integrity: sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==} engines: {node: '>=10.0.0'} dev: true - /@zxing/text-encoding/0.9.0: + /@zxing/text-encoding@0.9.0: resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} requiresBuild: true dev: true optional: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.8.2 dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -2136,7 +2207,7 @@ packages: - supports-color dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -2145,38 +2216,38 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /anymatch/3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: @@ -2184,92 +2255,109 @@ packages: picomatch: 2.3.1 dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: - deep-equal: 2.1.0 + deep-equal: 2.2.0 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 dev: true - /array-includes/3.1.6: + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 is-string: 1.0.7 dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 dev: true - /asynckit/0.4.0: + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: true + + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /autoprefixer/10.4.13_postcss@8.4.20: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer@10.4.14(postcss@8.4.21): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001441 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001477 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.20 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /babel-jest/29.3.1_@babel+core@7.20.7: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /babel-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.7 - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.20 + '@babel/core': 7.21.4 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.7 + babel-preset-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -2282,178 +2370,178 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 - '@types/babel__core': 7.1.20 + '@babel/types': 7.21.4 + '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 dev: true - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.7: + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.7 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.7: + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.4): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 - core-js-compat: 3.26.1 + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + core-js-compat: 3.30.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.7: + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.4): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.7 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) transitivePeerDependencies: - supports-color dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.7: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.7 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.7 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.7 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.7 - dev: true - - /babel-preset-jest/29.2.0_@babel+core@7.20.7: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + '@babel/core': 7.21.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.7 - babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 + '@babel/core': 7.21.4 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bl/4.1.0: + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001441 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + caniuse-lite: 1.0.30001477 + electron-to-chromium: 1.4.357 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10(browserslist@4.21.5) dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001441: - resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==} + /caniuse-lite@1.0.30001477: + resolution: {integrity: sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ==} dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -2462,7 +2550,7 @@ packages: supports-color: 5.5.0 dev: true - /chalk/4.1.1: + /chalk@4.1.1: resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} engines: {node: '>=10'} dependencies: @@ -2470,7 +2558,7 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -2478,16 +2566,16 @@ packages: supports-color: 7.2.0 dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -2502,33 +2590,33 @@ packages: fsevents: 2.3.2 dev: true - /ci-info/3.7.0: - resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-spinners/2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + /cli-spinners@2.8.0: + resolution: {integrity: sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==} engines: {node: '>=6'} dev: true - /cli-width/3.0.0: + /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -2537,81 +2625,81 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander/4.1.1: + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /cookie/0.4.2: + /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} dev: true - /core-js-compat/3.26.1: - resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} + /core-js-compat@3.30.0: + resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -2620,28 +2708,28 @@ packages: which: 2.0.2 dev: true - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: true - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -2650,18 +2738,7 @@ packages: whatwg-url: 11.0.0 dev: true - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -2672,7 +2749,7 @@ packages: ms: 2.1.3 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -2684,23 +2761,25 @@ packages: ms: 2.1.2 dev: true - /decimal.js/10.4.3: + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal/2.1.0: - resolution: {integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==} + /deep-equal@2.2.0: + resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: call-bind: 1.0.2 - es-get-iterator: 1.1.2 - get-intrinsic: 1.1.3 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.0 is-arguments: 1.1.1 + is-array-buffer: 3.0.2 is-date-object: 1.0.5 is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 isarray: 2.0.5 object-is: 1.1.5 object-keys: 1.1.1 @@ -2712,156 +2791,175 @@ packages: which-typed-array: 1.1.9 dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /dependency-graph/0.11.0: + /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-accessibility-api/0.5.14: - resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium@1.4.357: + resolution: {integrity: sha512-UTkCbNTAcGXABmEnQrGcW4m3cG6fcyBfD4KDF0iyEAlbrGZiY9dmslyDAGOD1Kr5biN2F743Y30aRCOtau35Vw==} dev: true - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 get-symbol-description: 1.0.0 + globalthis: 1.0.3 gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 + is-typed-array: 1.1.10 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 dev: true - /es-get-iterator/1.1.2: - resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 is-set: 2.0.2 is-string: 1.0.7 isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 dev: true - /es-shim-unscopables/1.0.0: + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2870,27 +2968,27 @@ packages: is-symbol: 1.0.4 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -2903,16 +3001,17 @@ packages: source-map: 0.6.1 dev: true - /eslint-import-resolver-node/0.3.6: - resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - resolve: 1.22.1 + is-core-module: 2.12.0 + resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils/2.7.4_5vuadmvmkyhbtm34phil3e6noa: + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -2933,16 +3032,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.30.0 - eslint-import-resolver-node: 0.3.6 + eslint: 8.38.0 + eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import/2.26.0_tqyj5ytb5g6r5ett7xxedhk6eq: - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint@8.38.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2951,29 +3050,31 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 - debug: 2.6.9 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.30.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4_5vuadmvmkyhbtm34phil3e6noa + eslint: 8.38.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0) has: 1.0.3 - is-core-module: 2.11.0 + is-core-module: 2.12.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 + resolve: 1.22.2 + semver: 6.3.0 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-jest/27.1.7_ynswt5pvagzyqki5w7w75b3qvm: - resolution: {integrity: sha512-0QVzf+og4YI1Qr3UoprkqqhezAZjFffdi62b0IurkCXMqPtRW84/UT4CKsYT80h/D82LA9avjO/80Ou1LdgbaQ==} + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.58.0)(eslint@8.38.0)(jest@29.5.0)(typescript@5.0.4): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.0.0 @@ -2985,17 +3086,17 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.47.0_ncmi6noazr3nzas7jxykisekym - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa - eslint: 8.30.0 - jest: 29.3.1_@types+node@18.11.17 + '@typescript-eslint/eslint-plugin': 5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 + jest: 29.5.0(@types/node@18.15.11) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-playwright/0.11.2_ttbndbdkvr6mhvx6ps5rimaowi: - resolution: {integrity: sha512-uRLRLk7uTzc8NE6t4wBU8dijQwHvC66R/h7xwdM779jsJjMUtSmeaB8ayRkkpfwi+UU5BEfwvDANwmE+ccMVDw==} + /eslint-plugin-playwright@0.12.0(eslint-plugin-jest@27.2.1)(eslint@8.38.0): + resolution: {integrity: sha512-KXuzQjVzca5irMT/7rvzJKsVDGbQr43oQPc8i+SLEBqmfrTxlwMwRqfv9vtZqh4hpU0jmrnA/EOfwtls+5QC1w==} peerDependencies: eslint: '>=7' eslint-plugin-jest: '>=24' @@ -3003,24 +3104,24 @@ packages: eslint-plugin-jest: optional: true dependencies: - eslint: 8.30.0 - eslint-plugin-jest: 27.1.7_ynswt5pvagzyqki5w7w75b3qvm + eslint: 8.38.0 + eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.58.0)(eslint@8.38.0)(jest@29.5.0)(typescript@5.0.4) dev: true - /eslint-plugin-testing-library/5.9.1_lzzuuodtsqwxnvqeq4g4likcqa: - resolution: {integrity: sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==} + /eslint-plugin-testing-library@5.10.3(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.47.0_lzzuuodtsqwxnvqeq4g4likcqa - eslint: 8.30.0 + '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -3028,7 +3129,7 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.1.1: + /eslint-scope@7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3036,32 +3137,20 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.30.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.30.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.30.0: - resolution: {integrity: sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==} + /eslint@8.38.0: + resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.38.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3072,23 +3161,22 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.30.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.20.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.2.0 + js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -3096,7 +3184,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -3104,60 +3191,60 @@ packages: - supports-color dev: true - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 - eslint-visitor-keys: 3.3.0 + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -3172,23 +3259,23 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.3.1: - resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.3.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -3197,11 +3284,11 @@ packages: tmp: 0.0.33 dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -3212,48 +3299,48 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq/1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /figures/3.2.0: + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -3261,7 +3348,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -3269,7 +3356,7 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -3277,17 +3364,17 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -3296,28 +3383,28 @@ packages: mime-types: 2.1.35 dev: true - /fraction.js/4.2.0: + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs-extra/11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true - /fs-readdir-recursive/1.1.0: + /fs-readdir-recursive@1.1.0: resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -3325,84 +3412,84 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.21.2 functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stdin/9.0.0: + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true - /givens/1.3.9: + /givens@1.3.9: resolution: {integrity: sha512-4hYlStsEIaYeYvZTZwgD5yOS2WVP0dcDsOBqeImdEM8eLuclvv0IEMlQQ1kuA5DN4he7wVH1jsYtNe9uininxg==} dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -3413,19 +3500,26 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globby/11.1.0: + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: true + + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -3437,7 +3531,7 @@ packages: slash: 3.0.0 dev: true - /globby/13.1.3: + /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3448,80 +3542,85 @@ packages: slash: 4.0.0 dev: true - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphql/16.6.0: + /graphql@16.6.0: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /headers-polyfill/3.1.2: + /headers-polyfill@3.1.2: resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} dev: true - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -3532,7 +3631,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -3542,35 +3641,35 @@ packages: - supports-color dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -3578,7 +3677,7 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -3587,23 +3686,23 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /inquirer/8.2.5: + /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: @@ -3624,16 +3723,16 @@ packages: wrap-ansi: 7.0.0 dev: true - /internal-slot/1.0.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has: 1.0.3 side-channel: 1.0.4 dev: true - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -3641,24 +3740,32 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-arrayish/0.2.1: + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: true + + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -3666,104 +3773,104 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-builtin-module/3.2.0: - resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 dev: true - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-generator-function/1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-interactive/1.0.0: + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} dev: true - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-module/1.0.0: + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-node-process/1.0.1: - resolution: {integrity: sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==} + /is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -3771,36 +3878,36 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -3811,47 +3918,47 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.7 - '@babel/parser': 7.20.7 + '@babel/core': 7.21.4 + '@babel/parser': 7.21.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -3859,7 +3966,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -3868,7 +3975,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -3879,7 +3986,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -3887,43 +3994,44 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.2.0: - resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.3.1: - resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 p-limit: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 + pure-rand: 6.0.1 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.3.1_@types+node@18.11.17: - resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + /jest-cli@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -3932,26 +4040,26 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.3.1_@types+node@18.11.17 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-config: 29.5.0(@types/node@18.15.11) + jest-util: 29.5.0 + jest-validate: 29.5.0 prompts: 2.4.2 - yargs: 17.6.2 + yargs: 17.7.1 transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jest-config/29.3.1_@types+node@18.11.17: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -3962,63 +4070,63 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.7 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 - babel-jest: 29.3.1_@babel+core@7.20.7 + '@babel/core': 7.21.4 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + babel-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 - ci-info: 3.7.0 - deepmerge: 4.2.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.3.1: - resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.3.1 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 dev: true - /jest-environment-jsdom/29.3.1: - resolution: {integrity: sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==} + /jest-environment-jsdom@29.5.0: + resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -4026,13 +4134,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 '@types/jsdom': 20.0.1 - '@types/node': 18.11.17 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@types/node': 18.15.11 + jest-mock: 29.5.0 + jest-util: 29.5.0 jsdom: 20.0.3 transitivePeerDependencies: - bufferutil @@ -4040,20 +4148,20 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.3.1: - resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /jest-extended/3.2.0_jest@29.3.1: - resolution: {integrity: sha512-jy+1nwlPLPPR6O8O9Mn+BWCBq/jL/9OgdKEG8ekOSQoLyVvAO5nND8ll3UxoajzBu4kYyn7zUKYWRdnTfQPcVw==} + /jest-extended@3.2.4(jest@29.5.0): + resolution: {integrity: sha512-lSEYhSmvXZG/7YXI7KO3LpiUiQ90gi5giwCJNDMMsX5a+/NZhdbQF2G4ALOBN+KcXVT3H6FPVPohAuMXooaLTQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: jest: '>=27.2.5' @@ -4061,78 +4169,78 @@ packages: jest: optional: true dependencies: - jest: 29.3.1_@types+node@18.11.17 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 + jest: 29.5.0(@types/node@18.15.11) + jest-diff: 29.5.0 + jest-get-type: 29.4.3 dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.3.1: - resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.17 + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.15.11 anymatch: 3.1.3 fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - jest-worker: 29.3.1 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.3.1: - resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.3.1: - resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-message-util/29.3.1: - resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.3.1 + '@babel/code-frame': 7.21.4 + '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock/29.3.1: - resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.17 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.3_jest-resolve@29.3.1: + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -4141,180 +4249,179 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.3.1 + jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.3.1: - resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.3.1 + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.3.1: - resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-pnp-resolver: 1.2.3_jest-resolve@29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - resolve: 1.22.1 - resolve.exports: 1.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner/29.3.1: - resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/environment': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 chalk: 4.1.2 emittery: 0.13.1 - graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.3.1 - jest-haste-map: 29.3.1 - jest-leak-detector: 29.3.1 - jest-message-util: 29.3.1 - jest-resolve: 29.3.1 - jest-runtime: 29.3.1 - jest-util: 29.3.1 - jest-watcher: 29.3.1 - jest-worker: 29.3.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.3.1: - resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/globals': 29.3.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/29.3.1: - resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.7 - '@babel/generator': 7.20.7 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.7 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.7 - '@babel/traverse': 7.20.8 - '@babel/types': 7.20.7 - '@jest/expect-utils': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) chalk: 4.1.2 - expect: 29.3.1 - graceful-fs: 4.2.10 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.3.1 - semver: 7.3.8 + pretty-format: 29.5.0 + semver: 7.4.0 transitivePeerDependencies: - supports-color dev: true - /jest-util/29.3.1: - resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 chalk: 4.1.2 - ci-info: 3.7.0 - graceful-fs: 4.2.10 + ci-info: 3.8.0 + graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate/29.3.1: - resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 dev: true - /jest-watcher/29.3.1: - resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.17 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.3.1 + jest-util: 29.5.0 string-length: 4.0.2 dev: true - /jest-worker/29.3.1: - resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.17 - jest-util: 29.3.1 + '@types/node': 18.15.11 + jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.3.1_@types+node@18.11.17: - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + /jest@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -4323,34 +4430,34 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.3.1_@types+node@18.11.17 + jest-cli: 29.5.0(@types/node@18.15.11) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jquery/3.6.3: - resolution: {integrity: sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==} + /jquery@3.6.4: + resolution: {integrity: sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==} dev: false - /js-levenshtein/1.1.6: + /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} dev: true - /js-sdsl/4.2.0: - resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -4358,14 +4465,14 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsdom/20.0.3: + /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: @@ -4375,7 +4482,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.8.2 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -4388,7 +4495,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.2 + nwsapi: 2.2.3 parse5: 7.1.2 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -4398,7 +4505,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.11.0 + ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -4406,61 +4513,61 @@ packages: - utf-8-validate dev: true - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true - /json5/2.2.2: - resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -4468,7 +4575,7 @@ packages: type-check: 0.3.2 dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -4476,59 +4583,59 @@ packages: type-check: 0.4.0 dev: true - /lilconfig/2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash._reinterpolate/3.0.0: + /lodash._reinterpolate@3.0.0: resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} dev: true - /lodash.debounce/4.0.8: + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.template/4.5.0: + /lodash.template@4.5.0: resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} dependencies: lodash._reinterpolate: 3.0.0 lodash.templatesettings: 4.2.0 dev: true - /lodash.templatesettings/4.2.0: + /lodash.templatesettings@4.2.0: resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} dependencies: lodash._reinterpolate: 3.0.0 dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -4536,25 +4643,25 @@ packages: is-unicode-supported: 0.1.0 dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lz-string/1.4.4: - resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true - /make-dir/2.1.0: + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} dependencies: @@ -4562,29 +4669,29 @@ packages: semver: 5.7.1 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -4592,64 +4699,60 @@ packages: picomatch: 2.3.1 dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mime/3.0.0: + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true - - /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw/0.49.2_typescript@4.9.4: - resolution: {integrity: sha512-70/E10f+POE2UmMw16v8PnKatpZplpkUwVRLBqiIdimpgaC3le7y2yOq9JmOrL15jpwWM5wAcPTOj0f550LI3g==} + /msw@1.2.1(typescript@5.0.4): + resolution: {integrity: sha512-bF7qWJQSmKn6bwGYVPXOxhexTCGD5oJSZg8yt8IBClxvo3Dx/1W0zqE1nX9BSWmzRsCKWfeGWcB/vpqV6aclpw==} engines: {node: '>=14'} hasBin: true requiresBuild: true peerDependencies: - typescript: '>= 4.4.x <= 4.9.x' + typescript: '>= 4.4.x <= 5.0.x' peerDependenciesMeta: typescript: optional: true dependencies: '@mswjs/cookies': 0.2.2 - '@mswjs/interceptors': 0.17.6 + '@mswjs/interceptors': 0.17.9 '@open-draft/until': 1.0.3 '@types/cookie': 0.4.1 '@types/js-levenshtein': 1.1.1 @@ -4659,40 +4762,40 @@ packages: graphql: 16.6.0 headers-polyfill: 3.1.2 inquirer: 8.2.5 - is-node-process: 1.0.1 + is-node-process: 1.2.0 js-levenshtein: 1.1.6 - node-fetch: 2.6.7 - outvariant: 1.3.0 + node-fetch: 2.6.9 + outvariant: 1.4.0 path-to-regexp: 6.2.1 - strict-event-emitter: 0.2.8 + strict-event-emitter: 0.4.6 type-fest: 2.19.0 - typescript: 4.9.4 - yargs: 17.6.2 + typescript: 5.0.4 + yargs: 17.7.1 transitivePeerDependencies: - encoding - supports-color dev: true - /mute-stream/0.0.8: + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -4703,90 +4806,90 @@ packages: whatwg-url: 5.0.0 dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize-range/0.1.2: + /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /nwsapi/2.2.2: - resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} + /nwsapi@2.2.3: + resolution: {integrity: sha512-jscxIO4/VKScHlbmFBdV1Z6LXnLO+ZR4VMtypudUdfwtKxUN3TQcNFIHLwKtrUbDyHN4/GycY9+oRGZ2XMXYPw==} dev: true - /object-inspect/1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /opener/1.5.2: + /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -4798,7 +4901,7 @@ packages: word-wrap: 1.2.3 dev: true - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -4810,14 +4913,14 @@ packages: word-wrap: 1.2.3 dev: true - /ora/5.4.1: + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.1 cli-cursor: 3.1.0 - cli-spinners: 2.7.0 + cli-spinners: 2.8.0 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -4825,146 +4928,146 @@ packages: wcwidth: 1.0.1 dev: true - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outvariant/1.3.0: - resolution: {integrity: sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==} + /outvariant@1.4.0: + resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true - /parse5/7.1.2: + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-to-regexp/6.2.1: + /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /playwright-core/1.29.1: - resolution: {integrity: sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==} + /playwright-core@1.32.3: + resolution: {integrity: sha512-SB+cdrnu74ZIn5Ogh/8278ngEh9NEEV0vR4sJFmK04h2iZpybfbqBY0bX6+BLYWVdV12JLLI+JEFtSnYgR+mWg==} engines: {node: '>=14'} hasBin: true dev: true - /playwright/1.29.1: - resolution: {integrity: sha512-lasC+pMqsQ2uWhNurt3YK3xo0gWlMjslYUylKbHcqF/NTjwp9KStRGO7S6wwz2f52GcSnop8XUK/GymJjdzrxw==} + /playwright@1.32.3: + resolution: {integrity: sha512-h/ylpgoj6l/EjkfUDyx8cdOlfzC96itPpPe8BXacFkqpw/YsuxkpPyVbzEq4jw+bAJh5FLgh31Ljg2cR6HV3uw==} engines: {node: '>=14'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.29.1 + playwright-core: 1.32.3 dev: true - /postcss-cli/10.1.0_postcss@8.4.20: + /postcss-cli@10.1.0(postcss@8.4.21): resolution: {integrity: sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==} engines: {node: '>=14'} hasBin: true @@ -4973,34 +5076,34 @@ packages: dependencies: chokidar: 3.5.3 dependency-graph: 0.11.0 - fs-extra: 11.1.0 + fs-extra: 11.1.1 get-stdin: 9.0.0 globby: 13.1.3 picocolors: 1.0.0 - postcss: 8.4.20 - postcss-load-config: 4.0.1_postcss@8.4.20 - postcss-reporter: 7.0.5_postcss@8.4.20 + postcss: 8.4.21 + postcss-load-config: 4.0.1(postcss@8.4.21) + postcss-reporter: 7.0.5(postcss@8.4.21) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.0.0 - yargs: 17.6.2 + yargs: 17.7.1 transitivePeerDependencies: - ts-node dev: true - /postcss-import/15.1.0_postcss@8.4.20: + /postcss-import@15.1.0(postcss@8.4.21): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.20 + postcss: 8.4.21 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: true - /postcss-load-config/4.0.1_postcss@8.4.20: + /postcss-load-config@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -5012,33 +5115,33 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 - postcss: 8.4.20 - yaml: 2.2.0 + lilconfig: 2.1.0 + postcss: 8.4.21 + yaml: 2.2.1 dev: true - /postcss-nested/6.0.0_postcss@8.4.20: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + /postcss-nested@6.0.1(postcss@8.4.21): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.20 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true - /postcss-reporter/7.0.5_postcss@8.4.20: + /postcss-reporter@7.0.5(postcss@8.4.21): resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==} engines: {node: '>=10'} peerDependencies: postcss: ^8.1.0 dependencies: picocolors: 1.0.0 - postcss: 8.4.20 + postcss: 8.4.21 thenby: 1.3.4 dev: true - /postcss-selector-parser/6.0.11: + /postcss-selector-parser@6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: @@ -5046,36 +5149,36 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.20: - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} + /postcss@8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier/2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + /prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -5084,21 +5187,21 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.3.1: - resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true - /pretty-hrtime/1.0.3: + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} dev: true - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -5106,39 +5209,49 @@ packages: sisteransi: 1.0.5 dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true - /querystringify/2.2.0: + /pure-rand@6.0.1: + resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} + dev: true + + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /react-is/17.0.2: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /read-cache/1.0.0: + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: true - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 @@ -5146,112 +5259,103 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /regenerate-unicode-properties/10.1.0: + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: true - /regenerate/1.4.2: + /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regenerator-transform/0.15.1: + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 dev: true - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: true - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /regexpu-core/5.2.2: - resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} dependencies: + '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 regenerate-unicode-properties: 10.1.0 - regjsgen: 0.7.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 dev: true - /regjsgen/0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - dev: true - - /regjsparser/0.9.1: + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -5259,185 +5363,206 @@ packages: signal-exit: 3.0.7 dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rollup-plugin-serve/2.0.2: + /rollup-plugin-serve@2.0.2: resolution: {integrity: sha512-ALqyTbPhlf7FZ5RzlbDvMYvbKuCHWginJkTo6dMsbgji/a78IbsXox+pC83HENdkTRz8OXrTj+aShp3+3ratpg==} dependencies: mime: 3.0.0 opener: 1.5.2 dev: true - /rollup/3.8.1: - resolution: {integrity: sha512-4yh9eMW7byOroYcN8DlF9P/2jCpu6txVIHjEqquQVSx7DI0RgyCCN3tjrcy4ra6yVtV336aLBB3v2AarYAxePQ==} + /rollup@3.20.2: + resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /run-async/2.4.1: + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 is-regex: 1.1.4 dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.4.0: + resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /set-cookie-parser/2.5.1: - resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/2.0.0: + /slash@2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /slash/5.0.0: + /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} dev: true - /source-map-js/1.0.2: + /smob@0.0.6: + resolution: {integrity: sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==} + dev: true + + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /strict-event-emitter/0.2.8: + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: true + + /strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} dependencies: events: 3.3.0 dev: true - /string-length/4.0.2: + /strict-event-emitter@0.4.6: + resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} + dev: true + + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -5445,7 +5570,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -5454,97 +5579,106 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.trimend/1.0.6: + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: true + + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /terser/5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + /terser@5.16.9: + resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + '@jridgewell/source-map': 0.3.3 + acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -5553,130 +5687,138 @@ packages: minimatch: 3.1.2 dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thenby/1.3.4: + /thenby@1.3.4: resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} dev: true - /through/2.3.8: + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.1.1 + punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true - /tsconfig-paths/3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 - json5: 1.0.1 - minimist: 1.2.7 + json5: 1.0.2 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /tsutils/3.21.0_typescript@4.9.4: + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.4 + typescript: 5.0.4 dev: true - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: true - /typescript/4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} hasBin: true dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -5685,12 +5827,12 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unicode-canonical-property-names-ecmascript/2.0.0: + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: true - /unicode-match-property-ecmascript/2.0.0: + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: @@ -5698,55 +5840,55 @@ packages: unicode-property-aliases-ecmascript: 2.1.0 dev: true - /unicode-match-property-value-ecmascript/2.1.0: + /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} dev: true - /unicode-property-aliases-ecmascript/2.1.0: + /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.5): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util/0.12.5: + /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 @@ -5756,35 +5898,35 @@ packages: which-typed-array: 1.1.9 dev: true - /v8-to-istanbul/9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + /v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 dev: true - /w3c-xmlserializer/4.0.0: + /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-encoding/1.1.5: + /web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} dependencies: util: 0.12.5 @@ -5792,28 +5934,28 @@ packages: '@zxing/text-encoding': 0.9.0 dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -5821,14 +5963,14 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -5838,7 +5980,7 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -5847,7 +5989,7 @@ packages: is-weakset: 2.0.2 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -5859,7 +6001,7 @@ packages: is-typed-array: 1.1.10 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -5867,12 +6009,12 @@ packages: isexe: 2.0.0 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -5881,11 +6023,11 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -5893,12 +6035,12 @@ packages: signal-exit: 3.0.7 dev: true - /ws/8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -5906,40 +6048,40 @@ packages: optional: true dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/2.2.0: - resolution: {integrity: sha512-auf7Gi6QwO7HW//GA9seGvTXVGWl1CM/ADWh1+RxtXr6XOxnT65ovDl9fTi4e0monEyJxCHqDpF6QnFDXmJE4g==} + /yaml@2.2.1: + resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 @@ -5951,7 +6093,7 @@ packages: yargs-parser: 21.1.1 dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true diff --git a/src/dragAndDropHandler.ts b/src/dragAndDropHandler.ts index 4a0afb54..a491c196 100644 --- a/src/dragAndDropHandler.ts +++ b/src/dragAndDropHandler.ts @@ -261,6 +261,10 @@ export class DragAndDropHandler { const mid = (low + high) >> 1; const area = this.hitAreas[mid]; + if (!area) { + return null; + } + if (y < area.top) { high = mid; } else if (y > area.bottom) { @@ -433,10 +437,18 @@ abstract class VisibleNodeIterator { if (mustIterateInside) { const childrenLength = node.children.length; node.children.forEach((_, i) => { - if (i === childrenLength - 1) { - _iterateNode(node.children[i], null); - } else { - _iterateNode(node.children[i], node.children[i + 1]); + const child = node.children[i]; + + if (child) { + if (i === childrenLength - 1) { + _iterateNode(child, null); + } else { + const nextChild = node.children[i + 1]; + + if (nextChild) { + _iterateNode(child, nextChild); + } + } } }); @@ -639,12 +651,14 @@ export class HitAreasGenerator extends VisibleNodeIterator { while (i < positionCount) { const position = positionsInGroup[i]; - hitAreas.push({ - top: areaTop, - bottom: areaTop + areaHeight, - node: position.node, - position: position.position, - }); + if (position) { + hitAreas.push({ + top: areaTop, + bottom: areaTop + areaHeight, + node: position.node, + position: position.position, + }); + } areaTop += areaHeight; i += 1; diff --git a/src/elementsRenderer.ts b/src/elementsRenderer.ts index b3fc036c..98a7bee5 100644 --- a/src/elementsRenderer.ts +++ b/src/elementsRenderer.ts @@ -5,8 +5,8 @@ import { JqTreeWidget } from "./tree.jquery"; type IconElement = Text | Element; export default class ElementsRenderer { - public openedIconElement: IconElement; - public closedIconElement: IconElement; + public openedIconElement?: IconElement; + public closedIconElement?: IconElement; private treeWidget: JqTreeWidget; constructor(treeWidget: JqTreeWidget) { @@ -32,12 +32,14 @@ export default class ElementsRenderer { const $element = this.treeWidget.element; $element.empty(); - this.createDomElements( - $element[0], - this.treeWidget.tree.children, - true, - 1 - ); + if ($element[0]) { + this.createDomElements( + $element[0], + this.treeWidget.tree.children, + true, + 1 + ); + } } public renderFromNode(node: Node): void { @@ -167,7 +169,9 @@ export default class ElementsRenderer { const buttonLink = document.createElement("a"); buttonLink.className = buttonClasses; - buttonLink.appendChild(iconElement.cloneNode(true)); + if (iconElement) { + buttonLink.appendChild(iconElement.cloneNode(true)); + } buttonLink.setAttribute("role", "presentation"); buttonLink.setAttribute("aria-hidden", "true"); @@ -311,7 +315,9 @@ export default class ElementsRenderer { return classes.join(" "); } - private createButtonElement(value: string | Element): IconElement { + private createButtonElement( + value: string | Element + ): IconElement | undefined { if (typeof value === "string") { // convert value to html const div = document.createElement("div"); diff --git a/src/mouse.widget.ts b/src/mouse.widget.ts index 51d552da..505e0a9e 100644 --- a/src/mouse.widget.ts +++ b/src/mouse.widget.ts @@ -219,6 +219,10 @@ abstract class MouseWidget extends SimpleWidget { const touch = e.changedTouches[0]; + if (!touch) { + return; + } + this.handleMouseDown(getPositionInfoFromTouch(touch, e)); }; @@ -233,6 +237,10 @@ abstract class MouseWidget extends SimpleWidget { const touch = e.changedTouches[0]; + if (!touch) { + return; + } + this.handleMouseMove(e, getPositionInfoFromTouch(touch, e)); }; @@ -247,6 +255,10 @@ abstract class MouseWidget extends SimpleWidget { const touch = e.changedTouches[0]; + if (!touch) { + return; + } + this.handleMouseUp(getPositionInfoFromTouch(touch, e)); }; } diff --git a/src/node.ts b/src/node.ts index 90d2859a..97e4312b 100644 --- a/src/node.ts +++ b/src/node.ts @@ -518,7 +518,7 @@ export class Node implements INode { } else { const previousIndex = this.parent.getChildIndex(this) - 1; if (previousIndex >= 0) { - return this.parent.children[previousIndex]; + return this.parent.children[previousIndex] || null; } else { return null; } @@ -531,7 +531,7 @@ export class Node implements INode { } else { const nextIndex = this.parent.getChildIndex(this) + 1; if (nextIndex < this.parent.children.length) { - return this.parent.children[nextIndex]; + return this.parent.children[nextIndex] || null; } else { return null; } @@ -558,7 +558,7 @@ export class Node implements INode { public getNextNode(includeChildren = true): Node | null { if (includeChildren && this.hasChildren()) { - return this.children[0]; + return this.children[0] || null; } else if (!this.parent) { return null; } else { @@ -575,7 +575,7 @@ export class Node implements INode { public getNextVisibleNode(): Node | null { if (this.hasChildren() && this.is_open) { // First child - return this.children[0]; + return this.children[0] || null; } else { if (!this.parent) { return null; @@ -646,10 +646,15 @@ export class Node implements INode { return null; } else { const lastChild = this.children[this.children.length - 1]; + + if (!lastChild) { + return null; + } + if (!(lastChild.hasChildren() && lastChild.is_open)) { return lastChild; } else { - return lastChild.getLastChild(); + return lastChild?.getLastChild(); } } } diff --git a/src/nodeElement.ts b/src/nodeElement.ts index c7b698c6..472ef6d8 100644 --- a/src/nodeElement.ts +++ b/src/nodeElement.ts @@ -105,10 +105,13 @@ export class FolderElement extends NodeElement { const buttonEl = $button.get(0); if (buttonEl) { - const icon = - this.treeWidget.renderer.openedIconElement.cloneNode(true); + const openedIconElement = + this.treeWidget.renderer.openedIconElement; - buttonEl.appendChild(icon); + if (openedIconElement) { + const icon = openedIconElement.cloneNode(true); + buttonEl.appendChild(icon); + } } const doOpen = (): void => { @@ -152,10 +155,13 @@ export class FolderElement extends NodeElement { const buttonEl = $button.get(0); if (buttonEl) { - const icon = - this.treeWidget.renderer.closedIconElement.cloneNode(true); + const closedIconElement = + this.treeWidget.renderer.closedIconElement; - buttonEl.appendChild(icon); + if (closedIconElement) { + const icon = closedIconElement.cloneNode(true); + buttonEl.appendChild(icon); + } } const doClose = (): void => { @@ -252,7 +258,7 @@ class GhostDropHint implements DropHint { } public moveInsideOpenFolder(): void { - const childElement = this.node.children[0].element; + const childElement = this.node.children[0]?.element; if (childElement) { jQuery(childElement).before(this.$ghost); diff --git a/src/saveStateHandler.ts b/src/saveStateHandler.ts index 0c920a73..71ba733a 100644 --- a/src/saveStateHandler.ts +++ b/src/saveStateHandler.ts @@ -111,7 +111,7 @@ export default class SaveStateHandler { const state = this.getStateFromStorage(); if (state && state.selected_node) { - return state.selected_node[0]; + return state.selected_node[0] || null; } else { return null; } diff --git a/src/scrollHandler.ts b/src/scrollHandler.ts index 24d21d77..e2aa7701 100644 --- a/src/scrollHandler.ts +++ b/src/scrollHandler.ts @@ -23,7 +23,7 @@ export default class ScrollHandler { public scrollToY(top: number): void { this.ensureInit(); - if (this.$scrollParent) { + if (this.$scrollParent && this.$scrollParent[0]) { this.$scrollParent[0].scrollTop = top; } else { const offset = this.treeWidget.$el.offset(); @@ -121,7 +121,7 @@ export default class ScrollHandler { if ( $scrollParent && $scrollParent.length && - $scrollParent[0].tagName !== "HTML" + $scrollParent[0]?.tagName !== "HTML" ) { this.$scrollParent = $scrollParent; @@ -223,6 +223,10 @@ export default class ScrollHandler { const scrollParent = $scrollParent[0]; + if (!scrollParent) { + return; + } + const canScrollRight = scrollParent.scrollLeft + scrollParent.clientWidth < scrollParent.scrollWidth; diff --git a/src/selectNodeHandler.ts b/src/selectNodeHandler.ts index 0ba9405c..08072715 100644 --- a/src/selectNodeHandler.ts +++ b/src/selectNodeHandler.ts @@ -16,7 +16,7 @@ export default class SelectNodeHandler { const selectedNodes = this.getSelectedNodes(); if (selectedNodes.length) { - return selectedNodes[0]; + return selectedNodes[0] || false; } else { return false; } diff --git a/src/test/jqTree/methods.test.ts b/src/test/jqTree/methods.test.ts index 2bcdb49e..f2decca9 100644 --- a/src/test/jqTree/methods.test.ts +++ b/src/test/jqTree/methods.test.ts @@ -984,7 +984,7 @@ describe("refresh", () => { it("rerenders the tree", () => { const tree = given.$tree.tree("getTree"); - tree.children[0].name = "node1a"; + (tree.children[0] as INode).name = "node1a"; expect(given.$tree).toHaveTreeStructure([ expect.objectContaining({ name: "node1" }), diff --git a/src/test/node.test.ts b/src/test/node.test.ts index 2e00ed02..e60db9f4 100644 --- a/src/test/node.test.ts +++ b/src/test/node.test.ts @@ -164,7 +164,7 @@ describe("addChild", () => { }); it("sets the parent of the child", () => { - expect(given.node.children[0].parent).toEqual(given.node); + expect(given.node.children[0]?.parent).toEqual(given.node); }); }); @@ -538,14 +538,16 @@ describe("getLastChild", () => { context("when its last child is open and has children", () => { beforeEach(() => { const child2 = given.node.children[1]; - child2.append("child2a"); - child2.append("child2b"); + child2?.append("child2a"); + child2?.append("child2b"); }); context("and the last child is open", () => { beforeEach(() => { const child2 = given.node.children[1]; - child2.is_open = true; + if (child2) { + child2.is_open = true; + } }); it("returns the last child of that child", () => { diff --git a/src/test/nodeUtil.test.ts b/src/test/nodeUtil.test.ts index 7c708fa1..6291c565 100644 --- a/src/test/nodeUtil.test.ts +++ b/src/test/nodeUtil.test.ts @@ -24,7 +24,7 @@ describe("getPositionName", () => { context("with an unknown position", () => { it("returns an empty string", () => { - expect(getPositionName(10)).toBe(""); + expect(getPositionName(10 as Position)).toBe(""); }); }); }); diff --git a/src/tree.jquery.ts b/src/tree.jquery.ts index 54f3bb53..add1762a 100644 --- a/src/tree.jquery.ts +++ b/src/tree.jquery.ts @@ -777,7 +777,7 @@ export class JqTreeWidget extends MouseWidget { // Set initial state, either by restoring the state or auto-opening nodes // result: must load nodes on demand? private setInitialState(): boolean { - const restoreState = (): boolean[] => { + const restoreState = (): [boolean, boolean] => { // result: is state restored, must load on demand? if (!this.options.saveState) { return [false, false]; diff --git a/tree.jquery.debug.js b/tree.jquery.debug.js index 0c1e0ab6..d008475a 100644 --- a/tree.jquery.debug.js +++ b/tree.jquery.debug.js @@ -1,7 +1,7 @@ /* JqTree 1.7.0 -Copyright 2022 Marco Braak +Copyright 2023 Marco Braak Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -294,13 +294,13 @@ var jqtree = (function (exports) { var version = "1.7.0"; - var Position; - (function (Position) { + var Position = /*#__PURE__*/function (Position) { Position[Position["Before"] = 1] = "Before"; Position[Position["After"] = 2] = "After"; Position[Position["Inside"] = 3] = "Inside"; Position[Position["None"] = 4] = "None"; - })(Position || (Position = {})); + return Position; + }({}); var positionNames = { before: Position.Before, after: Position.After, diff --git a/tree.jquery.debug.js.map b/tree.jquery.debug.js.map index 6ec1e3a5..c2705f1b 100644 --- a/tree.jquery.debug.js.map +++ b/tree.jquery.debug.js.map @@ -1 +1 @@ -{"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.0\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record[] => {\n return nodes.map((node) => {\n const tmpNode: Record = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0];\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback,\n handleError: JQuery.Ajax.ErrorCallback\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget extends SimpleWidget {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery;\n\n constructor($element: JQuery, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `
  • \n
  • `\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - â–º BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - â–¼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","Array","Node","o","isRoot","nodeClass","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","key","value","removeChildren","node","createNode","addChild","length","loadFromData","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","child","result","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","n","iterate","nodeInfo","childIndex","newParent","originalParent","removeChild","nodeId","get","id","set","removeNodeFromIndex","previousIndex","nextIndex","filter","f","includeChildren","nextSibling","getNextSibling","getNextNode","is_open","previousSibling","getPreviousSibling","getParent","getLastChild","lastChild","addNode","nodeData","addChildren","childrenData","initFromData","addNodeToIndex","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","pageX","undefined","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","handleAfterOpenFolder","currentNode","treeBottom","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","append","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","e","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getNextVisibleNode","getPreviousVisibleNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","saveState","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","scrollLeft","getParentWithOverflow","cssAttributes","hasOverFlow","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","initScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","distanceTop","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","parseParams","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","doInit","setInitialStateOnDemand","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","isRestored","parseInt","$target","dataRtl","deselectCurrentNode","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","initTree","tree_data","parent_node","selectedNodesUnderParent","getSelectedNodesUnder","urlInfoParam","loadFromUrl"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.0\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record[] => {\n return nodes.map((node) => {\n const tmpNode: Record = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0];\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback,\n handleError: JQuery.Ajax.ErrorCallback\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget extends SimpleWidget {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery;\n\n constructor($element: JQuery, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `
  • \n
  • `\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - â–º BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - â–¼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","_typeof","Array","Node","o","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","loadFromData","removeChildren","_iterator","_createForOfIteratorHelper","_step","s","n","done","node","createNode","addChild","err","e","f","push","setParent","addChildAtPosition","index","splice","removeChild","doRemoveChild","getChildIndex","indexOf","hasChildren","isFolder","iterate","callback","_iterate","level","_iterator2","_step2","child","result","moveNode","movedNode","targetNode","isParentOf","getData","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByName","getNodeByCallback","getNodeByNameMustExist","concat","addAfter","nodeInfo","childIndex","addBefore","addParent","newParent","originalParent","_iterator3","_step3","remove","append","prepend","getLevel","getNodeById","nodeId","get","addNodeToIndex","id","set","removeNodeFromIndex","_this","_this$tree","getPreviousSibling","previousIndex","getNextSibling","nextIndex","getNodesByProperty","filter","getNextNode","includeChildren","nextSibling","getNextVisibleNode","is_open","getPreviousNode","previousSibling","getParent","getLastChild","getPreviousVisibleNode","lastChild","initFromData","_this2","addNode","nodeData","addChildren","childrenData","_iterator4","_step4","_this$tree2","_this$tree3","getNodeClass","_this$tree4","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","mouseCapture","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","mouseStart","_this$treeWidget$opti","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","mouseDrag","move","area","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","mouseStop","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","handleAfterOpenFolder","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","render","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","loadFromUrl","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","_ajaxSettings$method","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","deinit","off","selectNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","_len","_key","defaults","constructor","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","SaveStateHandler","saveState","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","getStateFromStorage","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","setInitialState","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","setInitialStateOnDemand","cbFinished","doSetInitialStateOnDemand","getNodeIdToBeSelected","onGetStateFromStorage","getItem","nodeIds","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","checkScrolling","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","scrollToY","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","getScrollLeft","scrollLeft","initScrollParent","getParentWithOverflow","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","handleVerticalScrollingWithScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","handleVerticalScrollingWithDocument","distanceTop","dndHandler","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","select","mustSetFocus","$li","getLi","$span","getSpan","trigger","deselect","removeAttr","blur","getUl","FolderElement","_NodeElement","open","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","slideDown","show","close","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","getTree","optionsParam","toJson","doLoadData","loadDataFromUrl","param1","param2","param3","doLoadDataFromUrl","reload","getNodeByHtmlElement","parseParams","_this2$options$slide","_parseParams","_parseParams2","_slicedToArray","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","nodeOffset","nodeTop","treeOffset","setState","setOption","option","keyHandler","getVersion","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","selectCurrentNode","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","_this$options$startDn","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","initTree","_this5","doInit","_this6","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","_restoreState","_restoreState2","isRestored","_this7","parseInt","$target","deselectCurrentNode","dataRtl","_this8","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","tree_data","parent_node","selectedNodesUnderParent","urlInfoParam","_this9"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,IAAMA,OAAO,GAAG,OAAO;;ECIXC,IAAAA,QAAQ,0BAARA,QAAQ,EAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;EAAA,EAAA,OAARA,QAAQ,CAAA;EAAA,CAAA,CAAA,EAAA,CAAA,CAAA;EAOpB,IAAMC,aAAuC,GAAG;IAC5CC,MAAM,EAAEF,QAAQ,CAACG,MAAM;IACvBC,KAAK,EAAEJ,QAAQ,CAACK,KAAK;IACrBC,MAAM,EAAEN,QAAQ,CAACO,MAAM;IACvBC,IAAI,EAAER,QAAQ,CAACS,IAAAA;EACnB,CAAC,CAAA;EAIM,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,QAAkB,EAAa;EAC3D,EAAA,KAAK,IAAMC,IAAI,IAAIX,aAAa,EAAE;EAC9B,IAAA,IAAIY,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACf,aAAa,EAAEW,IAAI,CAAC,EAAE;EAC3D,MAAA,IAAIX,aAAa,CAACW,IAAI,CAAC,KAAKD,QAAQ,EAAE;EAClC,QAAA,OAAOC,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EACJ,GAAA;EAEA,EAAA,OAAO,EAAE,CAAA;EACb,CAAC,CAAA;EAEM,IAAMK,WAAW,GAAG,SAAdA,WAAWA,CAAIL,IAAY,EAAA;IAAA,OACpCX,aAAa,CAACW,IAAI,CAAC,CAAA;EAAA,CAAA,CAAA;EAEvB,IAAMM,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC1BC,IAAc,EAAA;EAAA,EAAA,OAEdC,OAAA,CAAOD,IAAI,CAAA,KAAK,QAAQ,IACxB,UAAU,IAAIA,IAAI,IAClBA,IAAI,CAAC,UAAU,CAAC,YAAYE,KAAK,CAAA;EAAA,CAAA,CAAA;EAErC,IAAaC,IAAI,gBAAA,YAAA;EAgBb,EAAA,SAAAA,OAAyE;EAAA,IAAA,IAA7DC,CAAkB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;EAAA,IAAA,IAAEG,MAAM,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;EAAA,IAAA,IAAEI,SAAS,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGF,IAAI,CAAA;EAAAO,IAAAA,eAAA,OAAAP,IAAA,CAAA,CAAA;MAAAQ,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACnE,IAAI,CAAClB,IAAI,GAAG,EAAE,CAAA;MACd,IAAI,CAACmB,aAAa,GAAG,KAAK,CAAA;MAC1B,IAAI,CAACC,cAAc,GAAG,KAAK,CAAA;EAE3B,IAAA,IAAI,CAACC,OAAO,CAACV,CAAC,CAAC,CAAA;MAEf,IAAI,CAACW,QAAQ,GAAG,EAAE,CAAA;MAClB,IAAI,CAACC,MAAM,GAAG,IAAI,CAAA;EAElB,IAAA,IAAIR,MAAM,EAAE;EACR,MAAA,IAAI,CAACS,SAAS,GAAG,IAAIC,GAAG,EAAgB,CAAA;QACxC,IAAI,CAACC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAACV,SAAS,GAAGA,SAAS,CAAA;EAC9B,KAAA;EACJ,GAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAVIW,EAAAA,YAAA,CAAAjB,IAAA,EAAA,CAAA;MAAAkB,GAAA,EAAA,SAAA;EAAAC,IAAAA,KAAA,EAgBA,SAAAR,OAAeV,CAAAA,CAAkB,EAAQ;QACrC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAC,MAAM,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;UAC9B,IAAI,CAACX,IAAI,GAAGW,CAAC,CAAA;EACjB,OAAC,MAAM,IAAIH,OAAA,CAAOG,CAAC,CAAA,KAAK,QAAQ,EAAE;EAC9B,QAAA,KAAK,IAAMiB,IAAG,IAAIjB,CAAC,EAAE;EACjB,UAAA,IAAIV,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACO,CAAC,EAAEiB,IAAG,CAAC,EAAE;EAC9C,YAAA,IAAMC,KAAK,GAAGlB,CAAC,CAACiB,IAAG,CAAC,CAAA;EAEpB,YAAA,IAAIA,IAAG,KAAK,OAAO,IAAIA,IAAG,KAAK,MAAM,EAAE;EACnC;EACA,cAAA,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;kBAC3B,IAAI,CAAC7B,IAAI,GAAG6B,KAAK,CAAA;EACrB,eAAA;eACH,MAAM,IAAID,IAAG,KAAK,UAAU,IAAIA,IAAG,KAAK,QAAQ,EAAE;EAC/C;EACA,cAAA,IAAI,CAACA,IAAG,CAAC,GAAGC,KAAK,CAAA;EACrB,aAAA;EACJ,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAfI,GAAA,EAAA;MAAAD,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAiBA,SAAAC,YAAoBvB,CAAAA,IAAgB,EAAQ;QACxC,IAAI,CAACwB,cAAc,EAAE,CAAA;EAAC,MAAA,IAAAC,SAAA,GAAAC,0BAAA,CAEN1B,IAAI,CAAA;UAAA2B,KAAA,CAAA;EAAA,MAAA,IAAA;UAApB,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAAsB;EAAA,UAAA,IAAX1B,CAAC,GAAAuB,KAAA,CAAAL,KAAA,CAAA;EACR,UAAA,IAAMS,KAAI,GAAG,IAAI,CAACC,UAAU,CAAC5B,CAAC,CAAC,CAAA;EAC/B,UAAA,IAAI,CAAC6B,QAAQ,CAACF,KAAI,CAAC,CAAA;EAEnB,UAAA,IAAIhC,wBAAwB,CAACK,CAAC,CAAC,EAAE;EAC7B,YAAA,IAAIA,CAAC,CAACW,QAAQ,CAACT,MAAM,KAAK,CAAC,EAAE;gBACzByB,KAAI,CAACnB,aAAa,GAAG,IAAI,CAAA;EAC7B,aAAC,MAAM;EACHmB,cAAAA,KAAI,CAACR,YAAY,CAACnB,CAAC,CAACW,QAAQ,CAAC,CAAA;EACjC,aAAA;EACJ,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAAmB,GAAA,EAAA;UAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAT,QAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;MAAAf,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAOA,SAAAW,QAAgBF,CAAAA,IAAU,EAAQ;EAC9B,MAAA,IAAI,CAAChB,QAAQ,CAACsB,IAAI,CAACN,IAAI,CAAC,CAAA;EACxBA,MAAAA,IAAI,CAACO,SAAS,CAAC,IAAI,CAAC,CAAA;EACxB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EANI,GAAA,EAAA;MAAAjB,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAQA,SAAAiB,kBAAAA,CAA0BR,IAAU,EAAES,KAAa,EAAQ;QACvD,IAAI,CAACzB,QAAQ,CAAC0B,MAAM,CAACD,KAAK,EAAE,CAAC,EAAET,IAAI,CAAC,CAAA;EACpCA,MAAAA,IAAI,CAACO,SAAS,CAAC,IAAI,CAAC,CAAA;EACxB,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;MAAAjB,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAKA,SAAAoB,WAAmBX,CAAAA,IAAU,EAAQ;EACjC;QACAA,IAAI,CAACP,cAAc,EAAE,CAAA;EAErB,MAAA,IAAI,CAACmB,aAAa,CAACZ,IAAI,CAAC,CAAA;EAC5B,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;MAAAV,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAKA,SAAAsB,aAAqBb,CAAAA,IAAU,EAAU;EACrC,MAAA,OAAO,IAAI,CAAChB,QAAQ,CAAC8B,OAAO,CAACd,IAAI,CAAC,CAAA;EACtC,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;MAAAV,GAAA,EAAA,aAAA;MAAAC,KAAA,EAOA,SAAAwB,WAAAA,GAA8B;EAC1B,MAAA,OAAO,IAAI,CAAC/B,QAAQ,CAACT,MAAM,KAAK,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;MAAAe,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAyB,QAAAA,GAA2B;EACvB,MAAA,OAAO,IAAI,CAACD,WAAW,EAAE,IAAI,IAAI,CAACjC,cAAc,CAAA;EACpD,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAXI,GAAA,EAAA;MAAAQ,GAAA,EAAA,SAAA;EAAAC,IAAAA,KAAA,EAiBA,SAAA0B,OAAeC,CAAAA,QAAyB,EAAQ;QAC5C,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAInB,IAAU,EAAEoB,KAAa,EAAW;UAClD,IAAIpB,IAAI,CAAChB,QAAQ,EAAE;EAAA,UAAA,IAAAqC,UAAA,GAAA1B,0BAAA,CACKK,IAAI,CAAChB,QAAQ,CAAA;cAAAsC,MAAA,CAAA;EAAA,UAAA,IAAA;cAAjC,KAAAD,UAAA,CAAAxB,CAAA,EAAAyB,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAvB,CAAA,EAAAC,EAAAA,IAAA,GAAmC;EAAA,cAAA,IAAxBwB,KAAK,GAAAD,MAAA,CAAA/B,KAAA,CAAA;EACZ,cAAA,IAAMiC,MAAM,GAAGN,QAAQ,CAACK,KAAK,EAAEH,KAAK,CAAC,CAAA;EAErC,cAAA,IAAII,MAAM,IAAID,KAAK,CAACR,WAAW,EAAE,EAAE;EAC/BI,gBAAAA,QAAQ,CAACI,KAAK,EAAEH,KAAK,GAAG,CAAC,CAAC,CAAA;EAC9B,eAAA;EACJ,aAAA;EAAC,WAAA,CAAA,OAAAjB,GAAA,EAAA;cAAAkB,UAAA,CAAAjB,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,WAAA,SAAA;EAAAkB,YAAAA,UAAA,CAAAhB,CAAA,EAAA,CAAA;EAAA,WAAA;EACL,SAAA;SACH,CAAA;EAEDc,MAAAA,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;EACrB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;MAAA7B,GAAA,EAAA,UAAA;MAAAC,KAAA,EAQA,SAAAkC,QACIC,CAAAA,SAAe,EACfC,UAAgB,EAChBlE,QAAkB,EACX;QACP,IAAI,CAACiE,SAAS,CAACzC,MAAM,IAAIyC,SAAS,CAACE,UAAU,CAACD,UAAU,CAAC,EAAE;EACvD;EACA;EACA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;EACHD,QAAAA,SAAS,CAACzC,MAAM,CAAC2B,aAAa,CAACc,SAAS,CAAC,CAAA;EAEzC,QAAA,QAAQjE,QAAQ;YACZ,KAAKX,QAAQ,CAACK,KAAK;EAAE,YAAA;gBACjB,IAAIwE,UAAU,CAAC1C,MAAM,EAAE;EACnB0C,gBAAAA,UAAU,CAAC1C,MAAM,CAACuB,kBAAkB,CAChCkB,SAAS,EACTC,UAAU,CAAC1C,MAAM,CAAC4B,aAAa,CAACc,UAAU,CAAC,GAAG,CAAC,CAClD,CAAA;EACD,gBAAA,OAAO,IAAI,CAAA;EACf,eAAA;EACA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAA;YAEA,KAAK7E,QAAQ,CAACG,MAAM;EAAE,YAAA;gBAClB,IAAI0E,UAAU,CAAC1C,MAAM,EAAE;EACnB0C,gBAAAA,UAAU,CAAC1C,MAAM,CAACuB,kBAAkB,CAChCkB,SAAS,EACTC,UAAU,CAAC1C,MAAM,CAAC4B,aAAa,CAACc,UAAU,CAAC,CAC9C,CAAA;EACD,gBAAA,OAAO,IAAI,CAAA;EACf,eAAA;EACA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAA;YAEA,KAAK7E,QAAQ,CAACO,MAAM;EAAE,YAAA;EAClB;EACAsE,cAAAA,UAAU,CAACnB,kBAAkB,CAACkB,SAAS,EAAE,CAAC,CAAC,CAAA;EAC3C,cAAA,OAAO,IAAI,CAAA;EACf,aAAA;EAEA,UAAA;EACI,YAAA,OAAO,KAAK,CAAA;EAAC,SAAA;EAEzB,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EAFI,GAAA,EAAA;MAAApC,GAAA,EAAA,SAAA;MAAAC,KAAA,EAGA,SAAAsC,OAAAA,GAAoD;EAAA,MAAA,IAArCC,aAAa,GAAAxD,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;EAChC,MAAA,IAAMyD,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAAa,EAAgC;EACnE,QAAA,OAAOA,KAAK,CAACC,GAAG,CAAC,UAACjC,IAAI,EAAK;YACvB,IAAMkC,OAAgC,GAAG,EAAE,CAAA;EAE3C,UAAA,KAAK,IAAMC,CAAC,IAAInC,IAAI,EAAE;EAClB,YAAA,IACI,CACI,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,eAAe,CAClB,CAACc,OAAO,CAACqB,CAAC,CAAC,KAAK,CAAC,CAAC,IACnBxE,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACkC,IAAI,EAAEmC,CAAC,CAAC,EAC/C;EACE,cAAA,IAAMC,CAAC,GAAGpC,IAAI,CAACmC,CAAC,CAAC,CAAA;EACjBD,cAAAA,OAAO,CAACC,CAAC,CAAC,GAAGC,CAAC,CAAA;EAClB,aAAA;EACJ,WAAA;EAEA,UAAA,IAAIpC,IAAI,CAACe,WAAW,EAAE,EAAE;cACpBmB,OAAO,CAAC,UAAU,CAAC,GAAGH,gBAAgB,CAAC/B,IAAI,CAAChB,QAAQ,CAAC,CAAA;EACzD,WAAA;EAEA,UAAA,OAAOkD,OAAO,CAAA;EAClB,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAIJ,aAAa,EAAE;EACf,QAAA,OAAOC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;EACnC,OAAC,MAAM;EACH,QAAA,OAAOA,gBAAgB,CAAC,IAAI,CAAC/C,QAAQ,CAAC,CAAA;EAC1C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAM,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8C,aAAqB3E,CAAAA,IAAY,EAAe;EAC5C,MAAA,OAAO,IAAI,CAAC4E,iBAAiB,CAAC,UAACtC,IAAU,EAAA;EAAA,QAAA,OAAKA,IAAI,CAACtC,IAAI,KAAKA,IAAI,CAAA;SAAC,CAAA,CAAA;EACrE,KAAA;EAAC,GAAA,EAAA;MAAA4B,GAAA,EAAA,wBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgD,sBAA8B7E,CAAAA,IAAY,EAAQ;EAC9C,MAAA,IAAMsC,IAAI,GAAG,IAAI,CAACsC,iBAAiB,CAAC,UAACxC,CAAO,EAAA;EAAA,QAAA,OAAKA,CAAC,CAACpC,IAAI,KAAKA,IAAI,CAAA;SAAC,CAAA,CAAA;QAEjE,IAAI,CAACsC,IAAI,EAAE;UACP,MAAAwC,iBAAAA,CAAAA,MAAA,CAAwB9E,IAAI,EAAA,YAAA,CAAA,CAAA;EAChC,OAAA;EAEA,MAAA,OAAOsC,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,mBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+C,iBAAyBpB,CAAAA,QAAiC,EAAe;QACrE,IAAIM,MAAmB,GAAG,IAAI,CAAA;EAE9B,MAAA,IAAI,CAACP,OAAO,CAAC,UAACjB,IAAU,EAAK;EACzB,QAAA,IAAIwB,MAAM,EAAE;EACR,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM,IAAIN,QAAQ,CAAClB,IAAI,CAAC,EAAE;EACvBwB,UAAAA,MAAM,GAAGxB,IAAI,CAAA;EACb,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAC,CAAC,CAAA;EAEF,MAAA,OAAOwB,MAAM,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;MAAAlC,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAkD,QAAgBC,CAAAA,QAAkB,EAAe;EAC7C,MAAA,IAAI,CAAC,IAAI,CAACzD,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMe,MAAI,GAAG,IAAI,CAACC,UAAU,CAACyC,QAAQ,CAAC,CAAA;UAEtC,IAAMC,UAAU,GAAG,IAAI,CAAC1D,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,CAAA;UAClD,IAAI,CAAC5B,MAAM,CAACuB,kBAAkB,CAACR,MAAI,EAAE2C,UAAU,GAAG,CAAC,CAAC,CAAA;UAEpD,IACI3E,wBAAwB,CAAC0E,QAAQ,CAAC,IAClCA,QAAQ,CAAC1D,QAAQ,CAACT,MAAM,EAC1B;EACEyB,UAAAA,MAAI,CAACR,YAAY,CAACkD,QAAQ,CAAC1D,QAAQ,CAAC,CAAA;EACxC,SAAA;EAEA,QAAA,OAAOgB,MAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqD,SAAiBF,CAAAA,QAAkB,EAAe;EAC9C,MAAA,IAAI,CAAC,IAAI,CAACzD,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMe,MAAI,GAAG,IAAI,CAACC,UAAU,CAACyC,QAAQ,CAAC,CAAA;UAEtC,IAAMC,UAAU,GAAG,IAAI,CAAC1D,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,CAAA;UAClD,IAAI,CAAC5B,MAAM,CAACuB,kBAAkB,CAACR,MAAI,EAAE2C,UAAU,CAAC,CAAA;UAEhD,IACI3E,wBAAwB,CAAC0E,QAAQ,CAAC,IAClCA,QAAQ,CAAC1D,QAAQ,CAACT,MAAM,EAC1B;EACEyB,UAAAA,MAAI,CAACR,YAAY,CAACkD,QAAQ,CAAC1D,QAAQ,CAAC,CAAA;EACxC,SAAA;EAEA,QAAA,OAAOgB,MAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsD,SAAiBH,CAAAA,QAAkB,EAAe;EAC9C,MAAA,IAAI,CAAC,IAAI,CAACzD,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM6D,SAAS,GAAG,IAAI,CAAC7C,UAAU,CAACyC,QAAQ,CAAC,CAAA;UAE3C,IAAI,IAAI,CAACtD,IAAI,EAAE;EACX0D,UAAAA,SAAS,CAACvC,SAAS,CAAC,IAAI,CAACnB,IAAI,CAAC,CAAA;EAClC,SAAA;EACA,QAAA,IAAM2D,cAAc,GAAG,IAAI,CAAC9D,MAAM,CAAA;EAAC,QAAA,IAAA+D,UAAA,GAAArD,0BAAA,CAEfoD,cAAc,CAAC/D,QAAQ,CAAA;YAAAiE,MAAA,CAAA;EAAA,QAAA,IAAA;YAA3C,KAAAD,UAAA,CAAAnD,CAAA,EAAAoD,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAlD,CAAA,EAAAC,EAAAA,IAAA,GAA6C;EAAA,YAAA,IAAlCwB,KAAK,GAAA0B,MAAA,CAAA1D,KAAA,CAAA;EACZuD,YAAAA,SAAS,CAAC5C,QAAQ,CAACqB,KAAK,CAAC,CAAA;EAC7B,WAAA;EAAC,SAAA,CAAA,OAAApB,GAAA,EAAA;YAAA6C,UAAA,CAAA5C,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA6C,UAAAA,UAAA,CAAA3C,CAAA,EAAA,CAAA;EAAA,SAAA;UAED0C,cAAc,CAAC/D,QAAQ,GAAG,EAAE,CAAA;EAC5B+D,QAAAA,cAAc,CAAC7C,QAAQ,CAAC4C,SAAS,CAAC,CAAA;EAClC,QAAA,OAAOA,SAAS,CAAA;EACpB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxD,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA2D,MAAAA,GAAsB;QAClB,IAAI,IAAI,CAACjE,MAAM,EAAE;EACb,QAAA,IAAI,CAACA,MAAM,CAAC0B,WAAW,CAAC,IAAI,CAAC,CAAA;UAC7B,IAAI,CAAC1B,MAAM,GAAG,IAAI,CAAA;EACtB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAK,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4D,MAAcT,CAAAA,QAAkB,EAAQ;EACpC,MAAA,IAAM1C,IAAI,GAAG,IAAI,CAACC,UAAU,CAACyC,QAAQ,CAAC,CAAA;EACtC,MAAA,IAAI,CAACxC,QAAQ,CAACF,IAAI,CAAC,CAAA;QAEnB,IAAIhC,wBAAwB,CAAC0E,QAAQ,CAAC,IAAIA,QAAQ,CAAC1D,QAAQ,CAACT,MAAM,EAAE;EAChEyB,QAAAA,IAAI,CAACR,YAAY,CAACkD,QAAQ,CAAC1D,QAAQ,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOgB,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,SAAA;EAAAC,IAAAA,KAAA,EAED,SAAA6D,OAAeV,CAAAA,QAAkB,EAAQ;EACrC,MAAA,IAAM1C,IAAI,GAAG,IAAI,CAACC,UAAU,CAACyC,QAAQ,CAAC,CAAA;EACtC,MAAA,IAAI,CAAClC,kBAAkB,CAACR,IAAI,EAAE,CAAC,CAAC,CAAA;QAEhC,IAAIhC,wBAAwB,CAAC0E,QAAQ,CAAC,IAAIA,QAAQ,CAAC1D,QAAQ,CAACT,MAAM,EAAE;EAChEyB,QAAAA,IAAI,CAACR,YAAY,CAACkD,QAAQ,CAAC1D,QAAQ,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOgB,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqC,UAAkB5B,CAAAA,IAAU,EAAW;EACnC,MAAA,IAAIf,MAAM,GAAGe,IAAI,CAACf,MAAM,CAAA;EAExB,MAAA,OAAOA,MAAM,EAAE;UACX,IAAIA,MAAM,KAAK,IAAI,EAAE;EACjB,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;UAEAA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAAA;EAC1B,OAAA;EAEA,MAAA,OAAO,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAAK,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAA8D,QAAAA,GAA0B;QACtB,IAAIjC,KAAK,GAAG,CAAC,CAAA;EACb,MAAA,IAAIpB,IAAU,GAAG,IAAI,CAAC;;QAEtB,OAAOA,IAAI,CAACf,MAAM,EAAE;EAChBmC,QAAAA,KAAK,IAAI,CAAC,CAAA;UACVpB,IAAI,GAAGA,IAAI,CAACf,MAAM,CAAA;EACtB,OAAA;EAEA,MAAA,OAAOmC,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAA9B,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+D,WAAmBC,CAAAA,MAAc,EAAe;QAC5C,OAAO,IAAI,CAACrE,SAAS,CAACsE,GAAG,CAACD,MAAM,CAAC,IAAI,IAAI,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;MAAAjE,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAkE,cAAsBzD,CAAAA,IAAU,EAAQ;EACpC,MAAA,IAAIA,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;UACjB,IAAI,CAACxE,SAAS,CAACyE,GAAG,CAAC3D,IAAI,CAAC0D,EAAE,EAAE1D,IAAI,CAAC,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,qBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqE,mBAA2B5D,CAAAA,IAAU,EAAQ;EACzC,MAAA,IAAIA,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;EACjB,QAAA,IAAI,CAACxE,SAAS,CAAA,QAAA,CAAO,CAACc,IAAI,CAAC0D,EAAE,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAApE,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAAE,cAAAA,GAA8B;EAAA,MAAA,IAAAoE,KAAA,GAAA,IAAA,CAAA;EAC1B,MAAA,IAAI,CAAC5C,OAAO,CAAC,UAACM,KAAW,EAAK;EAAA,QAAA,IAAAuC,UAAA,CAAA;EAC1B,QAAA,CAAAA,UAAA,GAAAD,KAAI,CAACzE,IAAI,MAAA,IAAA,IAAA0E,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAATA,UAAA,CAAWF,mBAAmB,CAACrC,KAAK,CAAC,CAAA;EACrC,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,CAAC,CAAA;QAEF,IAAI,CAACvC,QAAQ,GAAG,EAAE,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;MAAAM,GAAA,EAAA,oBAAA;MAAAC,KAAA,EAED,SAAAwE,kBAAAA,GAAyC;EACrC,MAAA,IAAI,CAAC,IAAI,CAAC9E,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,IAAM+E,aAAa,GAAG,IAAI,CAAC/E,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;UACzD,IAAImD,aAAa,IAAI,CAAC,EAAE;EACpB,UAAA,OAAO,IAAI,CAAC/E,MAAM,CAACD,QAAQ,CAACgF,aAAa,CAAC,CAAA;EAC9C,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA1E,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAA0E,cAAAA,GAAqC;EACjC,MAAA,IAAI,CAAC,IAAI,CAAChF,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,IAAMiF,SAAS,GAAG,IAAI,CAACjF,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;UACrD,IAAIqD,SAAS,GAAG,IAAI,CAACjF,MAAM,CAACD,QAAQ,CAACT,MAAM,EAAE;EACzC,UAAA,OAAO,IAAI,CAACU,MAAM,CAACD,QAAQ,CAACkF,SAAS,CAAC,CAAA;EAC1C,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5E,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4E,kBAAAA,CAA0B7E,GAAW,EAAEC,KAAc,EAAU;EAC3D,MAAA,OAAO,IAAI,CAAC6E,MAAM,CAAC,UAACpE,IAAU,EAAA;EAAA,QAAA,OAAKA,IAAI,CAACV,GAAG,CAAC,KAAKC,KAAK,CAAA;SAAC,CAAA,CAAA;EAC3D,KAAA;EAAC,GAAA,EAAA;MAAAD,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAA6E,MAAc/D,CAAAA,CAA0B,EAAU;QAC9C,IAAMmB,MAAc,GAAG,EAAE,CAAA;EAEzB,MAAA,IAAI,CAACP,OAAO,CAAC,UAACjB,IAAU,EAAK;EACzB,QAAA,IAAIK,CAAC,CAACL,IAAI,CAAC,EAAE;EACTwB,UAAAA,MAAM,CAAClB,IAAI,CAACN,IAAI,CAAC,CAAA;EACrB,SAAA;EAEA,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,CAAC,CAAA;EAEF,MAAA,OAAOwB,MAAM,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;MAAAlC,GAAA,EAAA,aAAA;MAAAC,KAAA,EAED,SAAA8E,WAAAA,GAAwD;EAAA,MAAA,IAArCC,eAAe,GAAAhG,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;EACrC,MAAA,IAAIgG,eAAe,IAAI,IAAI,CAACvD,WAAW,EAAE,EAAE;EACvC,QAAA,OAAO,IAAI,CAAC/B,QAAQ,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;EACrB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMsF,WAAW,GAAG,IAAI,CAACN,cAAc,EAAE,CAAA;EAEzC,QAAA,IAAIM,WAAW,EAAE;EACb,UAAA,OAAOA,WAAW,CAAA;EACtB,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAACtF,MAAM,CAACoF,WAAW,CAAC,KAAK,CAAC,CAAA;EACzC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/E,GAAA,EAAA,oBAAA;MAAAC,KAAA,EAED,SAAAiF,kBAAAA,GAAyC;QACrC,IAAI,IAAI,CAACzD,WAAW,EAAE,IAAI,IAAI,CAAC0D,OAAO,EAAE;EACpC;EACA,QAAA,OAAO,IAAI,CAACzF,QAAQ,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM;EACH,QAAA,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;EACd,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,MAAM;EACH,UAAA,IAAMsF,WAAW,GAAG,IAAI,CAACN,cAAc,EAAE,CAAA;EACzC,UAAA,IAAIM,WAAW,EAAE;EACb;EACA,YAAA,OAAOA,WAAW,CAAA;EACtB,WAAC,MAAM;EACH;EACA,YAAA,OAAO,IAAI,CAACtF,MAAM,CAACoF,WAAW,CAAC,KAAK,CAAC,CAAA;EACzC,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/E,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAED,SAAAmF,eAAAA,GAAsC;EAClC,MAAA,IAAI,CAAC,IAAI,CAACzF,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM0F,eAAe,GAAG,IAAI,CAACZ,kBAAkB,EAAE,CAAA;UAEjD,IAAI,CAACY,eAAe,EAAE;YAClB,OAAO,IAAI,CAACC,SAAS,EAAE,CAAA;EAC3B,SAAC,MAAM,IAAID,eAAe,CAAC5D,WAAW,EAAE,EAAE;YACtC,OAAO4D,eAAe,CAACE,YAAY,EAAE,CAAA;EACzC,SAAC,MAAM;EACH,UAAA,OAAOF,eAAe,CAAA;EAC1B,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAArF,GAAA,EAAA,wBAAA;MAAAC,KAAA,EAED,SAAAuF,sBAAAA,GAA6C;EACzC,MAAA,IAAI,CAAC,IAAI,CAAC7F,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM0F,eAAe,GAAG,IAAI,CAACZ,kBAAkB,EAAE,CAAA;UAEjD,IAAI,CAACY,eAAe,EAAE;YAClB,OAAO,IAAI,CAACC,SAAS,EAAE,CAAA;EAC3B,SAAC,MAAM,IACH,CAACD,eAAe,CAAC5D,WAAW,EAAE,IAC9B,CAAC4D,eAAe,CAACF,OAAO,EAC1B;EACE;EACA,UAAA,OAAOE,eAAe,CAAA;EAC1B,SAAC,MAAM;EACH;YACA,OAAOA,eAAe,CAACE,YAAY,EAAE,CAAA;EACzC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAvF,GAAA,EAAA,WAAA;MAAAC,KAAA,EAED,SAAAqF,SAAAA,GAAgC;EAC5B;EACA,MAAA,IAAI,CAAC,IAAI,CAAC3F,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;SACd,MAAM,IAAI,CAAC,IAAI,CAACA,MAAM,CAACA,MAAM,EAAE;EAC5B;EACA,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,OAAO,IAAI,CAACA,MAAM,CAAA;EACtB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAK,GAAA,EAAA,cAAA;MAAAC,KAAA,EAED,SAAAsF,YAAAA,GAAmC;EAC/B,MAAA,IAAI,CAAC,IAAI,CAAC9D,WAAW,EAAE,EAAE;EACrB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMgE,SAAS,GAAG,IAAI,CAAC/F,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAACT,MAAM,GAAG,CAAC,CAAC,CAAA;UACzD,IAAI,EAAEwG,SAAS,CAAChE,WAAW,EAAE,IAAIgE,SAAS,CAACN,OAAO,CAAC,EAAE;EACjD,UAAA,OAAOM,SAAS,CAAA;EACpB,SAAC,MAAM;YACH,OAAOA,SAAS,CAACF,YAAY,EAAE,CAAA;EACnC,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EAAA,GAAA,EAAA;MAAAvF,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EACA,SAAAyF,YAAoB/G,CAAAA,IAAc,EAAQ;EAAA,MAAA,IAAAgH,MAAA,GAAA,IAAA,CAAA;EACtC,MAAA,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAIC,QAAkB,EAAW;EAC1CF,QAAAA,MAAI,CAAClG,OAAO,CAACoG,QAAQ,CAAC,CAAA;UAEtB,IACInH,wBAAwB,CAACmH,QAAQ,CAAC,IAClCA,QAAQ,CAACnG,QAAQ,CAACT,MAAM,EAC1B;EACE6G,UAAAA,WAAW,CAACD,QAAQ,CAACnG,QAAQ,CAAC,CAAA;EAClC,SAAA;SACH,CAAA;EAED,MAAA,IAAMoG,WAAW,GAAG,SAAdA,WAAWA,CAAIC,YAAwB,EAAW;EAAA,QAAA,IAAAC,UAAA,GAAA3F,0BAAA,CAChC0F,YAAY,CAAA;YAAAE,MAAA,CAAA;EAAA,QAAA,IAAA;YAAhC,KAAAD,UAAA,CAAAzF,CAAA,EAAA0F,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAxF,CAAA,EAAAC,EAAAA,IAAA,GAAkC;EAAA,YAAA,IAAvBwB,KAAK,GAAAgE,MAAA,CAAAhG,KAAA,CAAA;EACZ,YAAA,IAAMS,MAAI,GAAGiF,MAAI,CAAChF,UAAU,EAAE,CAAA;EAC9BD,YAAAA,MAAI,CAACgF,YAAY,CAACzD,KAAK,CAAC,CAAA;EACxB0D,YAAAA,MAAI,CAAC/E,QAAQ,CAACF,MAAI,CAAC,CAAA;EACvB,WAAA;EAAC,SAAA,CAAA,OAAAG,GAAA,EAAA;YAAAmF,UAAA,CAAAlF,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAAmF,UAAAA,UAAA,CAAAjF,CAAA,EAAA,CAAA;EAAA,SAAA;SACJ,CAAA;QAED6E,OAAO,CAACjH,IAAI,CAAC,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;MAAAqB,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgB,SAAkBtB,CAAAA,MAAY,EAAQ;EAAA,MAAA,IAAAuG,WAAA,CAAA;QAClC,IAAI,CAACvG,MAAM,GAAGA,MAAM,CAAA;EACpB,MAAA,IAAI,CAACG,IAAI,GAAGH,MAAM,CAACG,IAAI,CAAA;EACvB,MAAA,CAAAoG,WAAA,GAAA,IAAI,CAACpG,IAAI,MAAAoG,IAAAA,IAAAA,WAAA,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAW/B,cAAc,CAAC,IAAI,CAAC,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;MAAAnE,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqB,aAAsBZ,CAAAA,IAAU,EAAQ;EAAA,MAAA,IAAAyF,WAAA,CAAA;EACpC,MAAA,IAAI,CAACzG,QAAQ,CAAC0B,MAAM,CAAC,IAAI,CAACG,aAAa,CAACb,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;EACjD,MAAA,CAAAyF,WAAA,GAAA,IAAI,CAACrG,IAAI,MAAAqG,IAAAA,IAAAA,WAAA,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAW7B,mBAAmB,CAAC5D,IAAI,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,cAAA;MAAAC,KAAA,EAED,SAAAmG,YAAAA,GAAoC;EAAA,MAAA,IAAAC,WAAA,CAAA;QAChC,OAAO,IAAI,CAACjH,SAAS,KAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,wBAAAiH,WAAA,GAAJ,IAAI,CAAEvG,IAAI,cAAAuG,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAVA,WAAA,CAAYjH,SAAS,KAAIN,IAAI,CAAA;EAC1D,KAAA;EAAC,GAAA,EAAA;MAAAkB,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAU,UAAmBkF,CAAAA,QAAmB,EAAQ;EAC1C,MAAA,IAAMzG,SAAS,GAAG,IAAI,CAACgH,YAAY,EAAE,CAAA;EACrC,MAAA,OAAO,IAAIhH,SAAS,CAACyG,QAAQ,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA/G,IAAA,CAAA;EAAA,CAAA,EAAA;;EC9qBL,IAAawH,kBAAkB,gBAAA,YAAA;IAY3B,SAAAA,kBAAAA,CAAYC,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAAiH,kBAAA,CAAA,CAAA;MAAAhH,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;MAE5B,IAAI,CAACC,WAAW,GAAG,IAAI,CAAA;MACvB,IAAI,CAACC,QAAQ,GAAG,EAAE,CAAA;MAClB,IAAI,CAACC,UAAU,GAAG,KAAK,CAAA;MACvB,IAAI,CAACC,WAAW,GAAG,IAAI,CAAA;MACvB,IAAI,CAACC,YAAY,GAAG,IAAI,CAAA;EAC5B,GAAA;EAAC7G,EAAAA,YAAA,CAAAuG,kBAAA,EAAA,CAAA;MAAAtG,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4G,YAAoBD,CAAAA,YAA0B,EAAkB;EAC5D,MAAA,IAAME,QAAQ,GAAGC,MAAM,CAACH,YAAY,CAACI,MAAM,CAAC,CAAA;EAE5C,MAAA,IAAI,CAAC,IAAI,CAACC,kBAAkB,CAACH,QAAQ,CAAC,EAAE;EACpC,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IACI,IAAI,CAACP,UAAU,CAACW,OAAO,CAACC,cAAc,IACtC,CAAC,IAAI,CAACZ,UAAU,CAACW,OAAO,CAACC,cAAc,CAACL,QAAQ,CAAC,EACnD;EACE,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;QAEA,IAAIM,WAAW,GAAG,IAAI,CAACb,UAAU,CAACc,eAAe,CAACP,QAAQ,CAAC,CAAA;QAE3D,IAAIM,WAAW,IAAI,IAAI,CAACb,UAAU,CAACW,OAAO,CAACI,SAAS,EAAE;EAClD,QAAA,IAAI,CAAC,IAAI,CAACf,UAAU,CAACW,OAAO,CAACI,SAAS,CAACF,WAAW,CAAC1G,IAAI,CAAC,EAAE;EACtD0G,UAAAA,WAAW,GAAG,IAAI,CAAA;EACtB,SAAA;EACJ,OAAA;QAEA,IAAI,CAACT,WAAW,GAAGS,WAAW,CAAA;EAC9B,MAAA,OAAO,IAAI,CAACT,WAAW,IAAI,IAAI,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;MAAA3G,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsH,UAAkBX,CAAAA,YAA0B,EAAW;EAAA,MAAA,IAAAY,qBAAA,CAAA;EACnD,MAAA,IACI,CAAC,IAAI,CAACb,WAAW,IACjBC,YAAY,CAACa,KAAK,KAAKvI,SAAS,IAChC0H,YAAY,CAACc,KAAK,KAAKxI,SAAS,EAClC;EACE,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;QAEA,IAAI,CAACyI,OAAO,EAAE,CAAA;QAEd,IAAMC,MAAM,GAAGb,MAAM,CAACH,YAAY,CAACI,MAAM,CAAC,CAACY,MAAM,EAAE,CAAA;QACnD,IAAMC,IAAI,GAAGD,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACrC,IAAMC,GAAG,GAAGF,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAEnC,MAAA,IAAMpH,IAAI,GAAG,IAAI,CAACiG,WAAW,CAACjG,IAAI,CAAA;EAElC,MAAA,IAAI,CAACqH,WAAW,GAAG,IAAIC,WAAW,CAC9BtH,IAAI,CAACtC,IAAI,EACTwI,YAAY,CAACa,KAAK,GAAGI,IAAI,EACzBjB,YAAY,CAACc,KAAK,GAAGI,GAAG,EACxB,IAAI,CAACvB,UAAU,CAAC0B,OAAO,GAAAT,qBAAA,GACvB,IAAI,CAACjB,UAAU,CAACW,OAAO,CAACgB,UAAU,MAAAV,IAAAA,IAAAA,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAC7C,CAAA;QAED,IAAI,CAACd,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAACE,YAAY,GAAGA,YAAY,CAAA;QAChC,IAAI,CAACD,WAAW,CAACG,QAAQ,CAACqB,QAAQ,CAAC,eAAe,CAAC,CAAA;EACnD,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAnI,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAmI,SAAiBxB,CAAAA,YAA0B,EAAW;QAClD,IACI,CAAC,IAAI,CAACD,WAAW,IACjB,CAAC,IAAI,CAACoB,WAAW,IACjBnB,YAAY,CAACa,KAAK,KAAKvI,SAAS,IAChC0H,YAAY,CAACc,KAAK,KAAKxI,SAAS,EAClC;EACE,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EAEA,MAAA,IAAI,CAAC6I,WAAW,CAACM,IAAI,CAACzB,YAAY,CAACa,KAAK,EAAEb,YAAY,CAACc,KAAK,CAAC,CAAA;QAC7D,IAAI,CAACd,YAAY,GAAGA,YAAY,CAAA;EAEhC,MAAA,IAAM0B,IAAI,GAAG,IAAI,CAACC,eAAe,CAC7B3B,YAAY,CAACa,KAAK,EAClBb,YAAY,CAACc,KAAK,CACrB,CAAA;QAED,IAAIY,IAAI,IAAI,IAAI,CAACE,aAAa,CAACF,IAAI,CAAC,EAAE;EAClC,QAAA,IAAI,CAACA,IAAI,CAAC5H,IAAI,CAACgB,QAAQ,EAAE,EAAE;YACvB,IAAI,CAAC+G,mBAAmB,EAAE,CAAA;EAC9B,SAAA;EAEA,QAAA,IAAI,IAAI,CAACjC,WAAW,KAAK8B,IAAI,EAAE;YAC3B,IAAI,CAAC9B,WAAW,GAAG8B,IAAI,CAAA;;EAEvB;EACA,UAAA,IAAI,IAAI,CAACI,mBAAmB,CAACJ,IAAI,CAAC,EAAE;EAChC,YAAA,IAAI,CAACK,oBAAoB,CAACL,IAAI,CAAC5H,IAAI,CAAC,CAAA;EACxC,WAAC,MAAM;cACH,IAAI,CAAC+H,mBAAmB,EAAE,CAAA;EAC9B,WAAA;YAEA,IAAI,CAACG,cAAc,EAAE,CAAA;EACzB,SAAA;EACJ,OAAC,MAAM;UACH,IAAI,CAACC,cAAc,EAAE,CAAA;UACrB,IAAI,CAACJ,mBAAmB,EAAE,CAAA;UAC1B,IAAI,CAACjC,WAAW,GAAG8B,IAAI,CAAA;EAC3B,OAAA;QAEA,IAAI,CAACA,IAAI,EAAE;EACP,QAAA,IAAI,IAAI,CAAC/B,UAAU,CAACW,OAAO,CAAC4B,UAAU,EAAE;EACpC,UAAA,IAAI,CAACvC,UAAU,CAACW,OAAO,CAAC4B,UAAU,CAC9B,IAAI,CAACnC,WAAW,CAACjG,IAAI,EACrBkG,YAAY,CAACmC,aAAa,CAC7B,CAAA;EACL,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAA/I,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+I,SAAiBpC,CAAAA,YAA0B,EAAW;EAClD,MAAA,IAAI,CAACqC,QAAQ,CAACrC,YAAY,CAAC,CAAA;QAC3B,IAAI,CAACsC,KAAK,EAAE,CAAA;QACZ,IAAI,CAACC,WAAW,EAAE,CAAA;QAClB,IAAI,CAACN,cAAc,EAAE,CAAA;QACrB,IAAI,CAACO,cAAc,EAAE,CAAA;EAErB,MAAA,IAAMzC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;QAEpC,IAAI,IAAI,CAACA,WAAW,EAAE;UAClB,IAAI,CAACA,WAAW,CAACG,QAAQ,CAACuC,WAAW,CAAC,eAAe,CAAC,CAAA;UACtD,IAAI,CAAC1C,WAAW,GAAG,IAAI,CAAA;EAC3B,OAAA;QAEA,IAAI,CAACD,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAACE,YAAY,GAAG,IAAI,CAAA;EAExB,MAAA,IAAI,CAAC,IAAI,CAACJ,WAAW,IAAIG,WAAW,EAAE;EAClC,QAAA,IAAI,IAAI,CAACJ,UAAU,CAACW,OAAO,CAACoC,UAAU,EAAE;EACpC,UAAA,IAAI,CAAC/C,UAAU,CAACW,OAAO,CAACoC,UAAU,CAC9B3C,WAAW,CAACjG,IAAI,EAChBkG,YAAY,CAACmC,aAAa,CAC7B,CAAA;EACL,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAA/I,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAA0H,OAAAA,GAAuB;QACnB,IAAI,CAACyB,cAAc,EAAE,CAAA;QAErB,IAAI,IAAI,CAACzC,WAAW,EAAE;UAClB,IAAI,CAAC4C,gBAAgB,EAAE,CAAA;EAEvB,QAAA,IAAI,CAAC5C,WAAW,GAAG,IAAI,CAACJ,UAAU,CAACiD,sBAAsB,CACrD,IAAI,CAAC7C,WAAW,CAACjG,IAAI,CACxB,CAAA;UAED,IAAI,IAAI,CAACgG,UAAU,EAAE;YACjB,IAAI,CAACC,WAAW,CAACG,QAAQ,CAACqB,QAAQ,CAAC,eAAe,CAAC,CAAA;EACvD,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAnI,GAAA,EAAA,kBAAA;MAAAC,KAAA,EAED,SAAAsJ,gBAAAA,GAAiC;EAC7B,MAAA,IAAI,CAAC,IAAI,CAAC5C,WAAW,EAAE;UACnB,IAAI,CAACF,QAAQ,GAAG,EAAE,CAAA;EACtB,OAAC,MAAM;UACH,IAAMgD,iBAAiB,GAAG,IAAIC,iBAAiB,CAC3C,IAAI,CAACnD,UAAU,CAACzG,IAAI,EACpB,IAAI,CAAC6G,WAAW,CAACjG,IAAI,EACrB,IAAI,CAACiJ,iBAAiB,EAAE,CAACC,MAAM,CAClC,CAAA;EACD,QAAA,IAAI,CAACnD,QAAQ,GAAGgD,iBAAiB,CAACI,QAAQ,EAAE,CAAA;EAChD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA7J,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgH,kBAA2BH,CAAAA,QAA6B,EAAW;EAC/D,MAAA,OAAO,CAACA,QAAQ,CAACgD,EAAE,CAAC,uBAAuB,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;MAAA9J,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuI,aAAsBF,CAAAA,IAAa,EAAW;QAC1C,IAAI,CAAC,IAAI,CAAC/B,UAAU,CAACW,OAAO,CAAC6C,WAAW,EAAE;EACtC,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAI,CAAC,IAAI,CAACpD,WAAW,EAAE;EACnB,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EAEA,MAAA,IAAMqD,YAAY,GAAG9L,eAAe,CAACoK,IAAI,CAACnK,QAAQ,CAAC,CAAA;EAEnD,MAAA,OAAO,IAAI,CAACoI,UAAU,CAACW,OAAO,CAAC6C,WAAW,CACtC,IAAI,CAACpD,WAAW,CAACjG,IAAI,EACrB4H,IAAI,CAAC5H,IAAI,EACTsJ,YAAY,CACf,CAAA;EACL,KAAA;EAAC,GAAA,EAAA;MAAAhK,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAAmJ,cAAAA,GAA+B;QAC3B,IAAI,CAAC3C,QAAQ,GAAG,EAAE,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;MAAAzG,GAAA,EAAA,OAAA;MAAAC,KAAA,EAED,SAAAiJ,KAAAA,GAAsB;QAClB,IAAI,IAAI,CAACnB,WAAW,EAAE;EAClB,QAAA,IAAI,CAACA,WAAW,CAACnE,MAAM,EAAE,CAAA;UACzB,IAAI,CAACmE,WAAW,GAAG,IAAI,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/H,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAA4I,cAAAA,GAA+B;QAC3B,IAAI,IAAI,CAACoB,aAAa,EAAE;EACpB,QAAA,IAAI,CAACA,aAAa,CAACrG,MAAM,EAAE,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5D,GAAA,EAAA,aAAA;MAAAC,KAAA,EAED,SAAAkJ,WAAAA,GAA4B;QACxB,IAAI,CAAC3C,WAAW,GAAG,IAAI,CAAA;EAC3B,KAAA;EAAC,GAAA,EAAA;MAAAxG,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsI,eAAAA,CAAwB2B,CAAS,EAAEC,CAAS,EAAkB;EAC1D,MAAA,IAAMC,UAAU,GAAG,IAAI,CAACT,iBAAiB,EAAE,CAAA;QAE3C,IACIO,CAAC,GAAGE,UAAU,CAACvC,IAAI,IACnBsC,CAAC,GAAGC,UAAU,CAACtC,GAAG,IAClBoC,CAAC,GAAGE,UAAU,CAACC,KAAK,IACpBF,CAAC,GAAGC,UAAU,CAACR,MAAM,EACvB;EACE,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;QAEA,IAAIU,GAAG,GAAG,CAAC,CAAA;EACX,MAAA,IAAIC,IAAI,GAAG,IAAI,CAAC9D,QAAQ,CAACxH,MAAM,CAAA;QAC/B,OAAOqL,GAAG,GAAGC,IAAI,EAAE;EACf,QAAA,IAAMC,GAAG,GAAIF,GAAG,GAAGC,IAAI,IAAK,CAAC,CAAA;EAC7B,QAAA,IAAMjC,IAAI,GAAG,IAAI,CAAC7B,QAAQ,CAAC+D,GAAG,CAAC,CAAA;EAE/B,QAAA,IAAIL,CAAC,GAAG7B,IAAI,CAACR,GAAG,EAAE;EACdyC,UAAAA,IAAI,GAAGC,GAAG,CAAA;EACd,SAAC,MAAM,IAAIL,CAAC,GAAG7B,IAAI,CAACsB,MAAM,EAAE;YACxBU,GAAG,GAAGE,GAAG,GAAG,CAAC,CAAA;EACjB,SAAC,MAAM;EACH,UAAA,OAAOlC,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAtI,GAAA,EAAA,qBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAyI,mBAA4BJ,CAAAA,IAAa,EAAW;EAChD,MAAA,IAAM5H,IAAI,GAAG4H,IAAI,CAAC5H,IAAI,CAAA;EAEtB,MAAA,OACIA,IAAI,CAACgB,QAAQ,EAAE,IACf,CAAChB,IAAI,CAACyE,OAAO,IACbmD,IAAI,CAACnK,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EAEzC,KAAA;EAAC,GAAA,EAAA;MAAAiC,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAA2I,cAAAA,GAA+B;EAC3B,MAAA,IAAI,CAAC,IAAI,CAACpC,WAAW,EAAE;EACnB,QAAA,OAAA;EACJ,OAAA;;EAEA;QACA,IAAI,CAACqC,cAAc,EAAE,CAAA;;EAErB;EACA,MAAA,IAAMzB,WAAW,GAAG,IAAI,CAACb,UAAU,CAACiD,sBAAsB,CACtD,IAAI,CAAChD,WAAW,CAAC9F,IAAI,CACxB,CAAA;EACD,MAAA,IAAI,CAACuJ,aAAa,GAAG7C,WAAW,CAACqD,WAAW,CAAC,IAAI,CAACjE,WAAW,CAACrI,QAAQ,CAAC,CAAA;EAC3E,KAAA;EAAC,GAAA,EAAA;MAAA6B,GAAA,EAAA,sBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA0I,oBAA6B+B,CAAAA,MAAY,EAAQ;EAAA,MAAA,IAAAnG,KAAA,GAAA,IAAA,CAAA;EAC7C,MAAA,IAAMoG,UAAU,GAAG,SAAbA,UAAUA,GAAe;EAC3BpG,QAAAA,KAAI,CAACgC,UAAU,CAACqE,SAAS,CACrBF,MAAM,EACNnG,KAAI,CAACgC,UAAU,CAACW,OAAO,CAAC2D,KAAK,EAC7B,YAAM;YACFtG,KAAI,CAACoD,OAAO,EAAE,CAAA;YACdpD,KAAI,CAACqE,cAAc,EAAE,CAAA;EACzB,SAAC,CACJ,CAAA;SACJ,CAAA;QAED,IAAI,CAACH,mBAAmB,EAAE,CAAA;QAE1B,IAAMqC,eAAe,GAAG,IAAI,CAACvE,UAAU,CAACW,OAAO,CAAC4D,eAAe,CAAA;QAE/D,IAAIA,eAAe,KAAK,KAAK,EAAE;UAC3B,IAAI,CAACC,eAAe,GAAGC,MAAM,CAACC,UAAU,CACpCN,UAAU,EACVG,eAAe,CAClB,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA9K,GAAA,EAAA,qBAAA;MAAAC,KAAA,EAED,SAAAwI,mBAAAA,GAAoC;QAChC,IAAI,IAAI,CAACsC,eAAe,EAAE;EACtBG,QAAAA,YAAY,CAAC,IAAI,CAACH,eAAe,CAAC,CAAA;UAClC,IAAI,CAACA,eAAe,GAAG,IAAI,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/K,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgJ,QAAiBrC,CAAAA,YAA0B,EAAQ;EAAA,MAAA,IAAAjB,MAAA,GAAA,IAAA,CAAA;QAC/C,IACI,IAAI,CAACgB,WAAW,IAChB,IAAI,CAACH,WAAW,IAChB,IAAI,CAACA,WAAW,CAACrI,QAAQ,KAAKX,QAAQ,CAACS,IAAI,IAC3C,IAAI,CAACuK,aAAa,CAAC,IAAI,CAAChC,WAAW,CAAC,EACtC;EACE,QAAA,IAAMpE,SAAS,GAAG,IAAI,CAACuE,WAAW,CAACjG,IAAI,CAAA;EACvC,QAAA,IAAM2B,UAAU,GAAG,IAAI,CAACmE,WAAW,CAAC9F,IAAI,CAAA;EACxC,QAAA,IAAMvC,QAAQ,GAAG,IAAI,CAACqI,WAAW,CAACrI,QAAQ,CAAA;EAC1C,QAAA,IAAMgN,cAAc,GAAG/I,SAAS,CAACzC,MAAM,CAAA;EAEvC,QAAA,IAAIxB,QAAQ,KAAKX,QAAQ,CAACO,MAAM,EAAE;EAC9B,UAAA,IAAI,CAACyI,WAAW,CAAC9F,IAAI,CAACyE,OAAO,GAAG,IAAI,CAAA;EACxC,SAAA;EAEA,QAAA,IAAMiG,MAAM,GAAG,SAATA,MAAMA,GAAe;EACvBzF,UAAAA,MAAI,CAACY,UAAU,CAACzG,IAAI,CAACqC,QAAQ,CAACC,SAAS,EAAEC,UAAU,EAAElE,QAAQ,CAAC,CAAA;EAC9DwH,UAAAA,MAAI,CAACY,UAAU,CAAC0B,OAAO,CAACoD,KAAK,EAAE,CAAA;EAC/B1F,UAAAA,MAAI,CAACY,UAAU,CAAC+E,gBAAgB,CAAC,IAAI,CAAC,CAAA;WACzC,CAAA;UAED,IAAMC,KAAK,GAAG,IAAI,CAAChF,UAAU,CAACiF,aAAa,CAAC,WAAW,EAAE;EACrDC,UAAAA,SAAS,EAAE;EACPC,YAAAA,UAAU,EAAEtJ,SAAS;EACrBuJ,YAAAA,WAAW,EAAEtJ,UAAU;EACvBlE,YAAAA,QAAQ,EAAED,eAAe,CAACC,QAAQ,CAAC;EACnCyN,YAAAA,eAAe,EAAET,cAAc;EAC/BU,YAAAA,OAAO,EAAET,MAAM;cACfU,cAAc,EAAElF,YAAY,CAACmC,aAAAA;EACjC,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,IAAI,CAACwC,KAAK,CAACQ,kBAAkB,EAAE,EAAE;EAC7BX,UAAAA,MAAM,EAAE,CAAA;EACZ,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAApL,GAAA,EAAA,mBAAA;MAAAC,KAAA,EAED,SAAA0J,iBAAAA,GAAwC;EACpC;EACA;QACA,IAAM/B,MAAM,GAAG,IAAI,CAACrB,UAAU,CAAC0B,OAAO,CAACL,MAAM,EAAE,CAAA;QAE/C,IAAI,CAACA,MAAM,EAAE;UACT,OAAO;EAAEC,UAAAA,IAAI,EAAE,CAAC;EAAEC,UAAAA,GAAG,EAAE,CAAC;EAAEuC,UAAAA,KAAK,EAAE,CAAC;EAAET,UAAAA,MAAM,EAAE,CAAA;WAAG,CAAA;EACnD,OAAC,MAAM;EACH,QAAA,IAAMoC,EAAE,GAAG,IAAI,CAACzF,UAAU,CAAC0B,OAAO,CAAA;EAClC,QAAA,IAAMgE,KAAK,GAAGD,EAAE,CAACC,KAAK,EAAE,IAAI,CAAC,CAAA;EAC7B,QAAA,IAAMC,MAAM,GAAGF,EAAE,CAACE,MAAM,EAAE,IAAI,CAAC,CAAA;UAC/B,IAAMrE,IAAI,GAAGD,MAAM,CAACC,IAAI,GAAG,IAAI,CAACtB,UAAU,CAAC4F,cAAc,EAAE,CAAA;UAE3D,OAAO;EACHtE,UAAAA,IAAI,EAAJA,IAAI;YACJC,GAAG,EAAEF,MAAM,CAACE,GAAG;YACfuC,KAAK,EAAExC,IAAI,GAAGoE,KAAK;EACnBrC,UAAAA,MAAM,EAAEhC,MAAM,CAACE,GAAG,GAAGoE,MAAM,GAAG,EAAA;WACjC,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA5F,kBAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EACJ,IAEc8F,mBAAmB,gBAAA,YAAA;IAG9B,SAAAA,mBAAAA,CAAYtM,IAAU,EAAE;EAAAT,IAAAA,eAAA,OAAA+M,mBAAA,CAAA,CAAA;MAAA9M,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACpB,IAAI,CAACQ,IAAI,GAAGA,IAAI,CAAA;EACpB,GAAA;EAACC,EAAAA,YAAA,CAAAqM,mBAAA,EAAA,CAAA;MAAApM,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAA0B,OAAAA,GAA0B;EAAA,MAAA,IAAA0K,MAAA,GAAA,IAAA,CAAA;QACtB,IAAIC,WAAW,GAAG,IAAI,CAAA;QAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAI7L,IAAU,EAAE8L,QAAqB,EAAW;EAC9D,QAAA,IAAIC,iBAAiB,GACjB,CAAC/L,IAAI,CAACyE,OAAO,IAAI,CAACzE,IAAI,CAACuH,OAAO,KAAKvH,IAAI,CAACe,WAAW,EAAE,CAAA;UAEzD,IAAIqF,QAAoC,GAAG,IAAI,CAAA;UAE/C,IAAIpG,IAAI,CAACuH,OAAO,EAAE;EACdnB,UAAAA,QAAQ,GAAGC,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAAA;EAE/B,UAAA,IAAI,CAACnB,QAAQ,CAACgD,EAAE,CAAC,UAAU,CAAC,EAAE;EAC1B,YAAA,OAAA;EACJ,WAAA;EAEA,UAAA,IAAIwC,WAAW,EAAE;EACbD,YAAAA,MAAI,CAACK,eAAe,CAAChM,IAAI,CAAC,CAAA;EAC1B4L,YAAAA,WAAW,GAAG,KAAK,CAAA;EACvB,WAAA;EAEA,UAAA,IAAI,CAAC5L,IAAI,CAACe,WAAW,EAAE,EAAE;cACrB4K,MAAI,CAACM,UAAU,CAACjM,IAAI,EAAE8L,QAAQ,EAAE1F,QAAQ,CAAC,CAAA;EAC7C,WAAC,MAAM,IAAIpG,IAAI,CAACyE,OAAO,EAAE;cACrB,IAAI,CAACkH,MAAI,CAACO,gBAAgB,CAAClM,IAAI,EAAEoG,QAAQ,CAAC,EAAE;EACxC2F,cAAAA,iBAAiB,GAAG,KAAK,CAAA;EAC7B,aAAA;EACJ,WAAC,MAAM;cACHJ,MAAI,CAACQ,kBAAkB,CAACnM,IAAI,EAAE8L,QAAQ,EAAE1F,QAAQ,CAAC,CAAA;EACrD,WAAA;EACJ,SAAA;EAEA,QAAA,IAAI2F,iBAAiB,EAAE;EACnB,UAAA,IAAMK,cAAc,GAAGpM,IAAI,CAAChB,QAAQ,CAACT,MAAM,CAAA;YAC3CyB,IAAI,CAAChB,QAAQ,CAACqN,OAAO,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAK;EAC5B,YAAA,IAAIA,CAAC,KAAKH,cAAc,GAAG,CAAC,EAAE;gBAC1BP,YAAY,CAAC7L,IAAI,CAAChB,QAAQ,CAACuN,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;EACxC,aAAC,MAAM;EACHV,cAAAA,YAAY,CAAC7L,IAAI,CAAChB,QAAQ,CAACuN,CAAC,CAAC,EAAEvM,IAAI,CAAChB,QAAQ,CAACuN,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;EACxD,aAAA;EACJ,WAAC,CAAC,CAAA;EAEF,UAAA,IAAIvM,IAAI,CAACyE,OAAO,IAAI2B,QAAQ,EAAE;EAC1BuF,YAAAA,MAAI,CAACa,qBAAqB,CAACxM,IAAI,EAAE8L,QAAQ,CAAC,CAAA;EAC9C,WAAA;EACJ,SAAA;SACH,CAAA;EAEDD,MAAAA,YAAY,CAAC,IAAI,CAACzM,IAAI,EAAE,IAAI,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAsM,mBAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EA8BQ1C,IAAAA,iBAAiB,0BAAAyD,oBAAA,EAAA;IAAAC,SAAA,CAAA1D,iBAAA,EAAAyD,oBAAA,CAAA,CAAA;EAAA,EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAA5D,iBAAA,CAAA,CAAA;EAM1B,EAAA,SAAAA,kBAAY5J,IAAU,EAAEyN,WAAiB,EAAEC,UAAkB,EAAE;EAAA,IAAA,IAAAC,MAAA,CAAA;EAAApO,IAAAA,eAAA,OAAAqK,iBAAA,CAAA,CAAA;EAC3D+D,IAAAA,MAAA,GAAAJ,MAAA,CAAA7O,IAAA,OAAMsB,IAAI,CAAA,CAAA;MAAER,eAAA,CAAAoO,sBAAA,CAAAD,MAAA,CAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAnO,eAAA,CAAAoO,sBAAA,CAAAD,MAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAnO,eAAA,CAAAoO,sBAAA,CAAAD,MAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAnO,eAAA,CAAAoO,sBAAA,CAAAD,MAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAEZA,MAAA,CAAKF,WAAW,GAAGA,WAAW,CAAA;MAC9BE,MAAA,CAAKD,UAAU,GAAGA,UAAU,CAAA;EAAC,IAAA,OAAAC,MAAA,CAAA;EACjC,GAAA;EAAC1N,EAAAA,YAAA,CAAA2J,iBAAA,EAAA,CAAA;MAAA1J,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAA4J,QAAAA,GAA6B;QACzB,IAAI,CAAC8D,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAA;QAEhB,IAAI,CAACjM,OAAO,EAAE,CAAA;EAEd,MAAA,OAAO,IAAI,CAAC4H,gBAAgB,CAAC,IAAI,CAACoE,SAAS,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;MAAA3N,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsJ,gBAA2BoE,CAAAA,SAAoB,EAAa;QACxD,IAAIE,WAAW,GAAG,CAAC,CAAC,CAAA;QACpB,IAAIC,KAAK,GAAG,EAAE,CAAA;QACd,IAAMrH,QAAmB,GAAG,EAAE,CAAA;EAAC,MAAA,IAAArG,SAAA,GAAAC,0BAAA,CAERsN,SAAS,CAAA;UAAArN,KAAA,CAAA;EAAA,MAAA,IAAA;UAAhC,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAAkC;EAAA,UAAA,IAAvBtC,QAAQ,GAAAmC,KAAA,CAAAL,KAAA,CAAA;YACf,IAAI9B,QAAQ,CAAC2J,GAAG,KAAK+F,WAAW,IAAIC,KAAK,CAAC7O,MAAM,EAAE;cAC9C,IAAI6O,KAAK,CAAC7O,MAAM,EAAE;EACd,cAAA,IAAI,CAAC8O,wBAAwB,CACzBtH,QAAQ,EACRqH,KAAK,EACLD,WAAW,EACX1P,QAAQ,CAAC2J,GAAG,CACf,CAAA;EACL,aAAA;cAEA+F,WAAW,GAAG1P,QAAQ,CAAC2J,GAAG,CAAA;EAC1BgG,YAAAA,KAAK,GAAG,EAAE,CAAA;EACd,WAAA;EAEAA,UAAAA,KAAK,CAAC9M,IAAI,CAAC7C,QAAQ,CAAC,CAAA;EACxB,SAAA;EAAC,OAAA,CAAA,OAAA0C,GAAA,EAAA;UAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAT,QAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,IAAI,CAACgN,wBAAwB,CACzBtH,QAAQ,EACRqH,KAAK,EACLD,WAAW,EACX,IAAI,CAACL,UAAU,CAClB,CAAA;EAED,MAAA,OAAO/G,QAAQ,CAAA;EACnB,KAAA;EAAC,GAAA,EAAA;MAAAzG,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA2M,gBAAAA,CAA2BlM,IAAU,EAAEoG,QAAgB,EAAW;EAC9D,MAAA,IAAIpG,IAAI,KAAK,IAAI,CAAC6M,WAAW,EAAE;EAC3B;EACA;EACA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;;EAEA;QACA,IAAI7M,IAAI,CAAChB,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC6N,WAAW,EAAE;EACvC,QAAA,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACO,MAAM,EAAE,IAAI,CAACkQ,MAAM,CAACnH,QAAQ,CAAC,CAAC,CAAA;EAClE,OAAA;;EAEA;EACA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAA9G,GAAA,EAAA,oBAAA;MAAAC,KAAA,EAED,SAAA4M,kBACInM,CAAAA,IAAU,EACV8L,QAAc,EACd1F,QAAgB,EACZ;EACJ,MAAA,IAAMgB,GAAG,GAAG,IAAI,CAACmG,MAAM,CAACnH,QAAQ,CAAC,CAAA;EAEjC,MAAA,IAAIpG,IAAI,KAAK,IAAI,CAAC6M,WAAW,EAAE;EAC3B;UACA,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACS,IAAI,EAAE6J,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAACkG,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACO,MAAM,EAAE+J,GAAG,CAAC,CAAA;;EAE5C;EACA,QAAA,IAAI0E,QAAQ,KAAK,IAAI,CAACe,WAAW,EAAE;YAC/B,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACK,KAAK,EAAEiK,GAAG,CAAC,CAAA;EAC/C,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA9H,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAyM,eAA0BhM,CAAAA,IAAU,EAAQ;EACxC,MAAA,IAAIA,IAAI,KAAK,IAAI,CAAC6M,WAAW,EAAE;UAC3B,IAAI,CAACS,WAAW,CACZtN,IAAI,EACJlD,QAAQ,CAACG,MAAM,EACf,IAAI,CAACsQ,MAAM,CAAClH,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAAC,CACpC,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,uBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAiN,qBAAAA,CAAgCxM,IAAU,EAAE8L,QAAc,EAAQ;QAC9D,IAAI9L,IAAI,KAAK,IAAI,CAAC6M,WAAW,IAAIf,QAAQ,KAAK,IAAI,CAACe,WAAW,EAAE;EAC5D;EACA,QAAA,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACS,IAAI,EAAE,IAAI,CAAC2P,OAAO,CAAC,CAAA;EACvD,OAAC,MAAM;EACH,QAAA,IAAI,CAACI,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACK,KAAK,EAAE,IAAI,CAAC+P,OAAO,CAAC,CAAA;EACxD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5N,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAA0M,UAAqBjM,CAAAA,IAAU,EAAE8L,QAAc,EAAE1F,QAAgB,EAAQ;EACrE,MAAA,IAAMgB,GAAG,GAAG,IAAI,CAACmG,MAAM,CAACnH,QAAQ,CAAC,CAAA;EAEjC,MAAA,IAAIpG,IAAI,KAAK,IAAI,CAAC6M,WAAW,EAAE;EAC3B;UACA,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACS,IAAI,EAAE6J,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAACkG,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACO,MAAM,EAAE+J,GAAG,CAAC,CAAA;EAChD,OAAA;QAEA,IAAI0E,QAAQ,KAAK,IAAI,CAACe,WAAW,IAAI7M,IAAI,KAAK,IAAI,CAAC6M,WAAW,EAAE;EAC5D;UACA,IAAI,CAACS,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACS,IAAI,EAAE6J,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAACkG,WAAW,CAACtN,IAAI,EAAElD,QAAQ,CAACK,KAAK,EAAEiK,GAAG,CAAC,CAAA;EAC/C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA9H,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgO,MAAenH,CAAAA,QAA6B,EAAU;EAClD,MAAA,IAAMc,MAAM,GAAGd,QAAQ,CAACc,MAAM,EAAE,CAAA;EAEhC,MAAA,OAAOA,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;MAAA9H,GAAA,EAAA,aAAA;MAAAC,KAAA,EAED,SAAA+N,WAAoBtN,CAAAA,IAAU,EAAEvC,QAAgB,EAAE2J,GAAW,EAAQ;EACjE,MAAA,IAAMQ,IAAI,GAAG;EACTR,QAAAA,GAAG,EAAHA,GAAG;EACH8B,QAAAA,MAAM,EAAE,CAAC;EACTlJ,QAAAA,IAAI,EAAJA,IAAI;EACJvC,QAAAA,QAAQ,EAARA,QAAAA;SACH,CAAA;EAED,MAAA,IAAI,CAACwP,SAAS,CAAC3M,IAAI,CAACsH,IAAI,CAAC,CAAA;QACzB,IAAI,CAACsF,OAAO,GAAG9F,GAAG,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;MAAA9H,GAAA,EAAA,0BAAA;MAAAC,KAAA,EAED,SAAA8N,wBAAAA,CACItH,QAAmB,EACnByH,gBAA2B,EAC3BpG,GAAW,EACX8B,MAAc,EACV;EACJ;QACA,IAAMuE,aAAa,GAAGC,IAAI,CAACC,GAAG,CAACH,gBAAgB,CAACjP,MAAM,EAAE,CAAC,CAAC,CAAA;EAE1D,MAAA,IAAMqP,UAAU,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC3E,MAAM,GAAG9B,GAAG,IAAIqG,aAAa,CAAC,CAAA;QAC7D,IAAIK,OAAO,GAAG1G,GAAG,CAAA;QAEjB,IAAImF,CAAC,GAAG,CAAC,CAAA;QACT,OAAOA,CAAC,GAAGkB,aAAa,EAAE;EACtB,QAAA,IAAMhQ,QAAQ,GAAG+P,gBAAgB,CAACjB,CAAC,CAAC,CAAA;UAEpCxG,QAAQ,CAACzF,IAAI,CAAC;EACV8G,UAAAA,GAAG,EAAE0G,OAAO;YACZ5E,MAAM,EAAE4E,OAAO,GAAGF,UAAU;YAC5B5N,IAAI,EAAEvC,QAAQ,CAACuC,IAAI;YACnBvC,QAAQ,EAAEA,QAAQ,CAACA,QAAAA;EACvB,SAAC,CAAC,CAAA;EAEFqQ,QAAAA,OAAO,IAAIF,UAAU,CAAA;EACrBrB,QAAAA,CAAC,IAAI,CAAC,CAAA;EACV,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAvD,iBAAA,CAAA;EAAA,CAAA,CA5KkC0C,mBAAmB,CAAA,CAAA;EA6KzD,IAEKpE,WAAW,gBAAA,YAAA;IAKb,SAAAA,WAAAA,CACIyG,QAAgB,EAChBC,OAAe,EACfC,OAAe,EACfC,KAAa,EACb1G,UAAmB,EACrB;EAAA7I,IAAAA,eAAA,OAAA2I,WAAA,CAAA,CAAA;MAAA1I,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACE,IAAI,CAACoP,OAAO,GAAGA,OAAO,CAAA;MACtB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;MAEtB,IAAI,CAAC7H,QAAQ,GAAGC,MAAM,CAAC,QAAQ,CAAC,CAACoB,QAAQ,CACrC,8BAA8B,CACjC,CAAA;EAED,IAAA,IAAID,UAAU,EAAE;EACZ,MAAA,IAAI,CAACpB,QAAQ,CAAC+H,IAAI,CAACJ,QAAQ,CAAC,CAAA;EAChC,KAAC,MAAM;EACH,MAAA,IAAI,CAAC3H,QAAQ,CAACgI,IAAI,CAACL,QAAQ,CAAC,CAAA;EAChC,KAAA;MAEA,IAAI,CAAC3H,QAAQ,CAACiI,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;EACzCH,IAAAA,KAAK,CAAC/K,MAAM,CAAC,IAAI,CAACiD,QAAQ,CAAC,CAAA;EAC/B,GAAA;EAAC/G,EAAAA,YAAA,CAAAiI,WAAA,EAAA,CAAA;MAAAhI,GAAA,EAAA,MAAA;EAAAC,IAAAA,KAAA,EAED,SAAAoI,IAAAA,CAAYZ,KAAa,EAAEC,KAAa,EAAQ;EAC5C,MAAA,IAAI,CAACZ,QAAQ,CAACc,MAAM,CAAC;EACjBC,QAAAA,IAAI,EAAEJ,KAAK,GAAG,IAAI,CAACiH,OAAO;EAC1B5G,QAAAA,GAAG,EAAEJ,KAAK,GAAG,IAAI,CAACiH,OAAAA;EACtB,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;MAAA3O,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA2D,MAAAA,GAAsB;EAClB,MAAA,IAAI,CAACkD,QAAQ,CAAClD,MAAM,EAAE,CAAA;EAC1B,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAoE,WAAA,CAAA;EAAA,CAAA,EAAA;;ECprBE,IAAMgH,KAAK,GAAG,SAARA,KAAKA,CAAIxO,CAAU,EAAA;IAAA,OAC5B,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;EAAA,CAAA,CAAA;EAEjC,IAAMyO,UAAU,GAAG,SAAbA,UAAUA,CAAInM,CAAU,EAAA;IAAA,OAAc,OAAOA,CAAC,KAAK,UAAU,CAAA;EAAA,CAAA,CAAA;EAEnE,IAAMoM,aAAa,GAAG,SAAhBA,aAAaA,CAAIjP,KAAc,EAAA;EAAA,EAAA,OACxCA,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;EAAA,CAAA;;ECNW,IAMlBkP,gBAAgB,gBAAA,YAAA;IAKjC,SAAAA,gBAAAA,CAAY5I,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAA8P,gBAAA,CAAA,CAAA;MAAA7P,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;EAE5B,IAAA,IAAI,CAAC6I,iBAAiB,GAAG,IAAI,CAACC,mBAAmB,CAC7C9I,UAAU,CAACW,OAAO,CAACoI,UAAU,IAAI,GAAG,CACvC,CAAA;EACD,IAAA,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACF,mBAAmB,CAC7C9I,UAAU,CAACW,OAAO,CAACsI,UAAU,IAAI,GAAG,CACvC,CAAA;EACL,GAAA;EAACzP,EAAAA,YAAA,CAAAoP,gBAAA,EAAA,CAAA;MAAAnP,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwP,MAAcC,CAAAA,QAAqB,EAAQ;EACvC,MAAA,IAAIA,QAAQ,IAAIA,QAAQ,CAAC/P,MAAM,EAAE;EAC7B,QAAA,IAAI,CAACgQ,cAAc,CAACD,QAAQ,CAAC,CAAA;EACjC,OAAC,MAAM;UACH,IAAI,CAACE,cAAc,EAAE,CAAA;EACzB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5P,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAA2P,cAAAA,GAA8B;EAC1B,MAAA,IAAM9I,QAAQ,GAAG,IAAI,CAACP,UAAU,CAAC0B,OAAO,CAAA;QACxCnB,QAAQ,CAACuE,KAAK,EAAE,CAAA;EAEhB,MAAA,IAAI,CAACwE,iBAAiB,CAClB/I,QAAQ,CAAC,CAAC,CAAC,EACX,IAAI,CAACP,UAAU,CAACzG,IAAI,CAACJ,QAAQ,EAC7B,IAAI,EACJ,CAAC,CACJ,CAAA;EACL,KAAA;EAAC,GAAA,EAAA;MAAAM,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA0P,cAAsBjP,CAAAA,IAAU,EAAQ;EACpC;EACA,MAAA,IAAMoP,WAAW,GAAG/I,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAAA;;EAExC;EACA,MAAA,IAAM8H,EAAE,GAAG,IAAI,CAACC,QAAQ,CAACtP,IAAI,EAAEA,IAAI,CAACqD,QAAQ,EAAE,CAAC,CAAA;EAC/C,MAAA,IAAI,CAACkM,cAAc,CAACvP,IAAI,EAAEqP,EAAE,CAAC,CAAA;;EAE7B;EACAD,MAAAA,WAAW,CAAClS,KAAK,CAACmS,EAAE,CAAC,CAAA;;EAErB;QACAD,WAAW,CAAClM,MAAM,EAAE,CAAA;;EAEpB;QACA,IAAIlD,IAAI,CAAChB,QAAQ,EAAE;EACf,QAAA,IAAI,CAACmQ,iBAAiB,CAClBE,EAAE,EACFrP,IAAI,CAAChB,QAAQ,EACb,KAAK,EACLgB,IAAI,CAACqD,QAAQ,EAAE,GAAG,CAAC,CACtB,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/D,GAAA,EAAA,mBAAA;MAAAC,KAAA,EAED,SAAA4P,iBAAAA,CACI5H,OAAgB,EAChBvI,QAAgB,EAChBwQ,UAAmB,EACnBpO,KAAa,EACT;EACJ,MAAA,IAAMqO,EAAE,GAAG,IAAI,CAACC,QAAQ,CAACF,UAAU,CAAC,CAAA;EACpCjI,MAAAA,OAAO,CAACoI,WAAW,CAACF,EAAE,CAAC,CAAA;EAAC,MAAA,IAAA/P,SAAA,GAAAC,0BAAA,CAEJX,QAAQ,CAAA;UAAAY,KAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA8B;EAAA,UAAA,IAAnBwB,KAAK,GAAA3B,KAAA,CAAAL,KAAA,CAAA;YACZ,IAAM8P,EAAE,GAAG,IAAI,CAACC,QAAQ,CAAC/N,KAAK,EAAEH,KAAK,CAAC,CAAA;EACtCqO,UAAAA,EAAE,CAACE,WAAW,CAACN,EAAE,CAAC,CAAA;EAElB,UAAA,IAAI,CAACE,cAAc,CAAChO,KAAK,EAAE8N,EAAE,CAAC,CAAA;EAE9B,UAAA,IAAI9N,KAAK,CAACR,WAAW,EAAE,EAAE;EACrB,YAAA,IAAI,CAACoO,iBAAiB,CAACE,EAAE,EAAE9N,KAAK,CAACvC,QAAQ,EAAE,KAAK,EAAEoC,KAAK,GAAG,CAAC,CAAC,CAAA;EAChE,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAAjB,GAAA,EAAA;UAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAT,QAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,OAAA;EACL,KAAA;EAAC,GAAA,EAAA;MAAAf,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgQ,cAAAA,CAAuBvP,IAAU,EAAEqP,EAAe,EAAQ;QACtDrP,IAAI,CAACuH,OAAO,GAAG8H,EAAE,CAAA;QACjBhJ,MAAM,CAACgJ,EAAE,CAAC,CAACpR,IAAI,CAAC,MAAM,EAAE+B,IAAI,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAmQ,QAAiBF,CAAAA,UAAmB,EAAoB;EACpD,MAAA,IAAII,WAAW,CAAA;EACf,MAAA,IAAIC,IAAI,CAAA;QAER,IAAI,CAACL,UAAU,EAAE;EACbI,QAAAA,WAAW,GAAG,EAAE,CAAA;EAChBC,QAAAA,IAAI,GAAG,OAAO,CAAA;EAClB,OAAC,MAAM;EACHD,QAAAA,WAAW,GAAG,aAAa,CAAA;EAC3BC,QAAAA,IAAI,GAAG,MAAM,CAAA;EAEb,QAAA,IAAI,IAAI,CAAChK,UAAU,CAACW,OAAO,CAACsJ,GAAG,EAAE;EAC7BF,UAAAA,WAAW,IAAI,aAAa,CAAA;EAChC,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,IAAI,CAAC/J,UAAU,CAACW,OAAO,CAACuJ,WAAW,EAAE;EACrCH,QAAAA,WAAW,IAAI,aAAa,CAAA;EAChC,OAAA;EAEA,MAAA,IAAMH,EAAE,GAAGO,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;EACvCR,MAAAA,EAAE,CAACS,SAAS,GAAA,gBAAA,CAAA1N,MAAA,CAAoBoN,WAAW,CAAE,CAAA;EAE7CH,MAAAA,EAAE,CAACU,YAAY,CAAC,MAAM,EAAEN,IAAI,CAAC,CAAA;EAE7B,MAAA,OAAOJ,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAAnQ,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+P,QAAAA,CAAiBtP,IAAU,EAAEoB,KAAa,EAAiB;EACvD,MAAA,IAAMgP,UAAU,GAAGC,OAAO,CACtB,IAAI,CAACxK,UAAU,CAACyK,iBAAiB,CAACC,cAAc,CAACvQ,IAAI,CAAC,CACzD,CAAA;EAED,MAAA,IAAMwQ,cAAc,GAChBxQ,IAAI,CAACgB,QAAQ,EAAE,IACdhB,IAAI,CAACnB,aAAa,IAAI,IAAI,CAACgH,UAAU,CAACW,OAAO,CAACiK,eAAgB,CAAA;QAEnE,IAAMpB,EAAE,GAAGmB,cAAc,GACnB,IAAI,CAACE,cAAc,CAAC1Q,IAAI,EAAEoB,KAAK,EAAEgP,UAAU,CAAC,GAC5C,IAAI,CAACO,YAAY,CAAC3Q,IAAI,EAAEoB,KAAK,EAAEgP,UAAU,CAAC,CAAA;EAEhD,MAAA,IAAI,IAAI,CAACvK,UAAU,CAACW,OAAO,CAACoK,UAAU,EAAE;EACpC,QAAA,IAAI,CAAC/K,UAAU,CAACW,OAAO,CAACoK,UAAU,CAAC5Q,IAAI,EAAEqG,MAAM,CAACgJ,EAAE,CAAC,EAAEe,UAAU,CAAC,CAAA;EACpE,OAAA;EAEA,MAAA,OAAOf,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAA/P,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAAmR,cACI1Q,CAAAA,IAAU,EACVoB,KAAa,EACbgP,UAAmB,EACN;EACb,MAAA,IAAMS,aAAa,GAAG,IAAI,CAACC,gBAAgB,CAAC9Q,IAAI,CAAC,CAAA;QACjD,IAAM+Q,aAAa,GAAG,IAAI,CAACC,gBAAgB,CAAChR,IAAI,EAAEoQ,UAAU,CAAC,CAAA;EAE7D,MAAA,IAAMa,WAAW,GAAGjR,IAAI,CAACyE,OAAO,GAC1B,IAAI,CAACiK,iBAAiB,GACtB,IAAI,CAACG,iBAAiB,CAAA;;EAE5B;EACA,MAAA,IAAMQ,EAAE,GAAGW,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;EACvCZ,MAAAA,EAAE,CAACa,SAAS,GAAA,gBAAA,CAAA1N,MAAA,CAAoBuO,aAAa,CAAE,CAAA;EAC/C1B,MAAAA,EAAE,CAACc,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzCiB,GAAG,CAAChB,SAAS,GAAG,8BAA8B,CAAA;EAC9CgB,MAAAA,GAAG,CAACf,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAExCd,MAAAA,EAAE,CAACM,WAAW,CAACuB,GAAG,CAAC,CAAA;;EAEnB;EACA,MAAA,IAAMC,UAAU,GAAGnB,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9CkB,UAAU,CAACjB,SAAS,GAAGW,aAAa,CAAA;QAEpCM,UAAU,CAACxB,WAAW,CAACsB,WAAW,CAACG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;EAEnDD,MAAAA,UAAU,CAAChB,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAC/CgB,MAAAA,UAAU,CAAChB,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;EAE9C,MAAA,IAAI,IAAI,CAACtK,UAAU,CAACW,OAAO,CAAC6K,UAAU,EAAE;EACpCH,QAAAA,GAAG,CAACvB,WAAW,CAACwB,UAAU,CAAC,CAAA;EAC/B,OAAA;;EAEA;QACAD,GAAG,CAACvB,WAAW,CACX,IAAI,CAAC2B,eAAe,CAChBtR,IAAI,CAACtC,IAAI,EACT0D,KAAK,EACLgP,UAAU,EACVpQ,IAAI,CAACyE,OAAO,EACZ,IAAI,CACP,CACJ,CAAA;QAED,IAAI,CAAC,IAAI,CAACoB,UAAU,CAACW,OAAO,CAAC6K,UAAU,EAAE;EACrCH,QAAAA,GAAG,CAACvB,WAAW,CAACwB,UAAU,CAAC,CAAA;EAC/B,OAAA;EAEA,MAAA,OAAO9B,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAA/P,GAAA,EAAA,cAAA;MAAAC,KAAA,EAED,SAAAoR,YACI3Q,CAAAA,IAAU,EACVoB,KAAa,EACbgP,UAAmB,EACN;EACb,MAAA,IAAMmB,SAAS,GAAG,CAAC,eAAe,CAAC,CAAA;EAEnC,MAAA,IAAInB,UAAU,EAAE;EACZmB,QAAAA,SAAS,CAACjR,IAAI,CAAC,iBAAiB,CAAC,CAAA;EACrC,OAAA;EAEA,MAAA,IAAMsP,WAAW,GAAG2B,SAAS,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMnC,EAAE,GAAGW,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;QACvCZ,EAAE,CAACa,SAAS,GAAGN,WAAW,CAAA;EAC1BP,MAAAA,EAAE,CAACc,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzCiB,GAAG,CAAChB,SAAS,GAAG,8BAA8B,CAAA;EAC9CgB,MAAAA,GAAG,CAACf,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAExCd,MAAAA,EAAE,CAACM,WAAW,CAACuB,GAAG,CAAC,CAAA;;EAEnB;QACAA,GAAG,CAACvB,WAAW,CACX,IAAI,CAAC2B,eAAe,CAChBtR,IAAI,CAACtC,IAAI,EACT0D,KAAK,EACLgP,UAAU,EACVpQ,IAAI,CAACyE,OAAO,EACZ,KAAK,CACR,CACJ,CAAA;EAED,MAAA,OAAO4K,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAA/P,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+R,eACIvD,CAAAA,QAAgB,EAChB3M,KAAa,EACbgP,UAAmB,EACnBqB,MAAe,EACfzQ,QAAiB,EACF;EACf,MAAA,IAAM0Q,SAAS,GAAG1B,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC,CAAA;QAEhD,IAAI0B,OAAO,GAAG,4BAA4B,CAAA;EAE1C,MAAA,IAAI3Q,QAAQ,EAAE;EACV2Q,QAAAA,OAAO,IAAI,sBAAsB,CAAA;EACrC,OAAA;EAEAA,MAAAA,OAAO,IAAAnP,uBAAAA,CAAAA,MAAA,CACH,IAAI,CAACqD,UAAU,CAACW,OAAO,CAAC6K,UAAU,GAAG,MAAM,GAAG,OAAO,CACvD,CAAA;QAEFK,SAAS,CAACxB,SAAS,GAAGyB,OAAO,CAAA;EAE7BD,MAAAA,SAAS,CAACvB,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC1CuB,SAAS,CAACvB,YAAY,CAAC,YAAY,KAAA3N,MAAA,CAAKpB,KAAK,CAAG,CAAA,CAAA;QAEhDsQ,SAAS,CAACvB,YAAY,CAAC,eAAe,EAAE3B,aAAa,CAAC4B,UAAU,CAAC,CAAC,CAAA;QAClEsB,SAAS,CAACvB,YAAY,CAAC,eAAe,EAAE3B,aAAa,CAACiD,MAAM,CAAC,CAAC,CAAA;EAE9D,MAAA,IAAIrB,UAAU,EAAE;UACZ,IAAMwB,QAAQ,GAAG,IAAI,CAAC/L,UAAU,CAACW,OAAO,CAACoL,QAAQ,CAAA;UAEjD,IAAIA,QAAQ,KAAKpT,SAAS,EAAE;YACxBkT,SAAS,CAACvB,YAAY,CAAC,UAAU,KAAA3N,MAAA,CAAKoP,QAAQ,CAAG,CAAA,CAAA;EACrD,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,IAAI,CAAC/L,UAAU,CAACW,OAAO,CAACgB,UAAU,EAAE;UACpCkK,SAAS,CAACG,WAAW,GAAG9D,QAAQ,CAAA;EACpC,OAAC,MAAM;UACH2D,SAAS,CAACI,SAAS,GAAG/D,QAAQ,CAAA;EAClC,OAAA;EAEA,MAAA,OAAO2D,SAAS,CAAA;EACpB,KAAA;EAAC,GAAA,EAAA;MAAApS,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuR,gBAAyB9Q,CAAAA,IAAU,EAAU;EACzC,MAAA,IAAM2R,OAAO,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;EAEnD,MAAA,IAAI,CAAC3R,IAAI,CAACyE,OAAO,EAAE;EACfkN,QAAAA,OAAO,CAACrR,IAAI,CAAC,eAAe,CAAC,CAAA;EACjC,OAAA;EAEA,MAAA,IAAI,IAAI,CAACuF,UAAU,CAACW,OAAO,CAAC6K,UAAU,EAAE;EACpCM,QAAAA,OAAO,CAACrR,IAAI,CAAC,qBAAqB,CAAC,CAAA;EACvC,OAAC,MAAM;EACHqR,QAAAA,OAAO,CAACrR,IAAI,CAAC,sBAAsB,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOqR,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;MAAAlS,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAyR,gBAAAA,CAAyBhR,IAAU,EAAEoQ,UAAmB,EAAU;EAC9D,MAAA,IAAMuB,OAAO,GAAG,CAAC,eAAe,CAAC,CAAA;EAEjC,MAAA,IAAI,CAAC3R,IAAI,CAACyE,OAAO,EAAE;EACfkN,QAAAA,OAAO,CAACrR,IAAI,CAAC,eAAe,CAAC,CAAA;EACjC,OAAA;EAEA,MAAA,IAAI8P,UAAU,EAAE;EACZuB,QAAAA,OAAO,CAACrR,IAAI,CAAC,iBAAiB,CAAC,CAAA;EACnC,OAAA;QAEA,IAAIN,IAAI,CAAC+R,UAAU,EAAE;EACjBJ,QAAAA,OAAO,CAACrR,IAAI,CAAC,gBAAgB,CAAC,CAAA;EAClC,OAAA;EAEA,MAAA,OAAOqR,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;MAAAlS,GAAA,EAAA,qBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAoP,mBAA4BpP,CAAAA,KAAuB,EAAe;EAC9D,MAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;EAC3B;EACA,QAAA,IAAM2R,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;UACzCiB,GAAG,CAACY,SAAS,GAAGvS,KAAK,CAAA;EAErB,QAAA,OAAOyQ,QAAQ,CAACgC,cAAc,CAACd,GAAG,CAACY,SAAS,CAAC,CAAA;EACjD,OAAC,MAAM;EACH,QAAA,OAAOzL,MAAM,CAAC9G,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAkP,gBAAA,CAAA;EAAA,CAAA,EAAA;;MC9TgBwD,UAAU,gBAAA,YAAA;IAG3B,SAAAA,UAAAA,CAAYpM,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAAsT,UAAA,CAAA,CAAA;MAAArT,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;EAChC,GAAA;EAACxG,EAAAA,YAAA,CAAA4S,UAAA,EAAA,CAAA;MAAA3S,GAAA,EAAA,aAAA;MAAAC,KAAA,EAED,SAAA2S,WACIC,CAAAA,OAA4C,EAC5CC,UAAuB,EACvBC,UAAwC,EACpC;EAAA,MAAA,IAAAxO,KAAA,GAAA,IAAA,CAAA;QACJ,IAAI,CAACsO,OAAO,EAAE;EACV,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMG,GAAG,GAAG,IAAI,CAACC,aAAa,CAACH,UAAU,CAAC,CAAA;EAC1C,MAAA,IAAI,CAACI,eAAe,CAACF,GAAG,CAAC,CAAA;QACzB,IAAI,CAACG,aAAa,CAAC,IAAI,EAAEL,UAAU,EAAEE,GAAG,CAAC,CAAA;EAEzC,MAAA,IAAMI,WAAW,GAAG,SAAdA,WAAWA,GAAe;EAC5B7O,QAAAA,KAAI,CAAC8O,kBAAkB,CAACL,GAAG,CAAC,CAAA;UAC5BzO,KAAI,CAAC4O,aAAa,CAAC,KAAK,EAAEL,UAAU,EAAEE,GAAG,CAAC,CAAA;SAC7C,CAAA;EAED,MAAA,IAAMM,aAAa,GAAG,SAAhBA,aAAaA,CAAI3U,IAAyB,EAAW;EACvDyU,QAAAA,WAAW,EAAE,CAAA;EACb7O,QAAAA,KAAI,CAACgC,UAAU,CAACgN,QAAQ,CAAChP,KAAI,CAACiP,SAAS,CAAC7U,IAAI,CAAC,EAAEmU,UAAU,CAAC,CAAA;EAE1D,QAAA,IAAIC,UAAU,IAAI,OAAOA,UAAU,KAAK,UAAU,EAAE;EAChDA,UAAAA,UAAU,EAAE,CAAA;EAChB,SAAA;SACH,CAAA;EAED,MAAA,IAAMU,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAmB,EAAW;EAC/CN,QAAAA,WAAW,EAAE,CAAA;EAEb,QAAA,IAAI7O,KAAI,CAACgC,UAAU,CAACW,OAAO,CAACyM,YAAY,EAAE;YACtCpP,KAAI,CAACgC,UAAU,CAACW,OAAO,CAACyM,YAAY,CAACD,KAAK,CAAC,CAAA;EAC/C,SAAA;SACH,CAAA;QAED,IAAI,CAACE,aAAa,CAACf,OAAO,EAAES,aAAa,EAAEG,WAAW,CAAC,CAAA;EAC3D,KAAA;EAAC,GAAA,EAAA;MAAAzT,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAiT,eAAwBF,CAAAA,GAAwB,EAAQ;EACpD,MAAA,IAAIA,GAAG,EAAE;EACLA,QAAAA,GAAG,CAAC7K,QAAQ,CAAC,gBAAgB,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAnI,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAoT,kBAA2BL,CAAAA,GAAwB,EAAQ;EACvD,MAAA,IAAIA,GAAG,EAAE;EACLA,QAAAA,GAAG,CAAC3J,WAAW,CAAC,gBAAgB,CAAC,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAArJ,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgT,aAAsBH,CAAAA,UAAuB,EAAuB;EAChE,MAAA,IAAIA,UAAU,EAAE;EACZ,QAAA,OAAO/L,MAAM,CAAC+L,UAAU,CAAC7K,OAAO,CAAC,CAAA;EACrC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAC1B,UAAU,CAAC0B,OAAO,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,eAAA;MAAAC,KAAA,EAED,SAAAkT,aACIU,CAAAA,SAAkB,EAClBnT,IAAiB,EACjBsS,GAAW,EACP;EACJ,MAAA,IAAI,IAAI,CAACzM,UAAU,CAACW,OAAO,CAAC4M,SAAS,EAAE;EACnC,QAAA,IAAI,CAACvN,UAAU,CAACW,OAAO,CAAC4M,SAAS,CAACD,SAAS,EAAEnT,IAAI,EAAEsS,GAAG,CAAC,CAAA;EAC3D,OAAA;EAEA,MAAA,IAAI,CAACzM,UAAU,CAACiF,aAAa,CAAC,mBAAmB,EAAE;EAC/CqI,QAAAA,SAAS,EAATA,SAAS;EACTnT,QAAAA,IAAI,EAAJA,IAAI;EACJsS,QAAAA,GAAG,EAAHA,GAAAA;EACJ,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;MAAAhT,GAAA,EAAA,eAAA;MAAAC,KAAA,EAED,SAAA2T,aACIG,CAAAA,YAA0C,EAC1CT,aAA+C,EAC/CG,WAA2C,EACvC;EAAA,MAAA,IAAAO,oBAAA,CAAA;EACJ,MAAA,IAAMnB,OAAO,GACT,OAAOkB,YAAY,KAAK,QAAQ,GAC1B;EAAEE,QAAAA,GAAG,EAAEF,YAAAA;EAAa,OAAC,GACrBA,YAAY,CAAA;QAEtB,IAAMG,YAAiC,GAAAC,cAAA,CAAA;EACnCC,QAAAA,MAAM,EAAE,KAAK;EACbC,QAAAA,KAAK,EAAE,KAAK;EACZC,QAAAA,QAAQ,EAAE,MAAM;EAChBC,QAAAA,OAAO,EAAEjB,aAAa;EACtBkB,QAAAA,KAAK,EAAEf,WAAAA;EAAW,OAAA,EACfZ,OAAO,CACb,CAAA;EAEDqB,MAAAA,YAAY,CAACE,MAAM,GAAG,CAAAJ,CAAAA,oBAAA,GAAAE,YAAY,CAACE,MAAM,MAAA,IAAA,IAAAJ,oBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBS,WAAW,EAAE,KAAI,KAAK,CAAA;EAEjE,MAAA,KAAK1N,MAAM,CAAC2N,IAAI,CAACR,YAAY,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;MAAAlU,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuT,SAAkB7U,CAAAA,IAAyB,EAAc;QACrD,IAAQgW,UAAU,GAAK,IAAI,CAACpO,UAAU,CAACW,OAAO,CAAtCyN,UAAU,CAAA;EAElB,MAAA,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,GAAS;EACxB,QAAA,IAAI,OAAOjW,IAAI,KAAK,QAAQ,EAAE;EAC1B,UAAA,OAAOkW,IAAI,CAACC,KAAK,CAACnW,IAAI,CAAC,CAAA;EAC3B,SAAC,MAAM;EACH,UAAA,OAAOA,IAAI,CAAA;EACf,SAAA;SACH,CAAA;QAED,IAAMoW,UAAU,GAAGH,aAAa,EAAE,CAAA;EAElC,MAAA,IAAID,UAAU,EAAE;UACZ,OAAOA,UAAU,CAACI,UAAU,CAAC,CAAA;EACjC,OAAC,MAAM;EACH,QAAA,OAAOA,UAAU,CAAA;EACrB,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAApC,UAAA,CAAA;EAAA,CAAA,EAAA;;MC7HgBqC,UAAU,gBAAA,YAAA;IAQ3B,SAAAA,UAAAA,CAAYzO,UAAwB,EAAE;EAAA,IAAA,IAAAhC,KAAA,GAAA,IAAA,CAAA;EAAAlF,IAAAA,eAAA,OAAA2V,UAAA,CAAA,CAAA;MAAA1V,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAiEd,UAACwB,CAAe,EAAc;EAClD,MAAA,IAAI,CAACyD,KAAI,CAAC0Q,iBAAiB,EAAE,EAAE;EAC3B,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAMC,YAAY,GAAG3Q,KAAI,CAACgC,UAAU,CAAC4O,eAAe,EAAE,CAAA;QACtD,IAAI,CAACD,YAAY,EAAE;EACf,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAMlV,GAAG,GAAGc,CAAC,CAACsU,KAAK,CAAA;EAEnB,MAAA,QAAQpV,GAAG;UACP,KAAKgV,UAAU,CAACK,IAAI;EAChB,UAAA,OAAO9Q,KAAI,CAAC+Q,QAAQ,CAACJ,YAAY,CAAC,CAAA;UAEtC,KAAKF,UAAU,CAACO,EAAE;EACd,UAAA,OAAOhR,KAAI,CAACiR,MAAM,CAACN,YAAY,CAAC,CAAA;UAEpC,KAAKF,UAAU,CAACS,KAAK;EACjB,UAAA,OAAOlR,KAAI,CAACmR,SAAS,CAACR,YAAY,CAAC,CAAA;UAEvC,KAAKF,UAAU,CAACW,IAAI;EAChB,UAAA,OAAOpR,KAAI,CAACqR,QAAQ,CAACV,YAAY,CAAC,CAAA;EAEtC,QAAA;EACI,UAAA,OAAO,IAAI,CAAA;EAAC,OAAA;OAEvB,CAAA,CAAA;MA5FG,IAAI,CAAC3O,UAAU,GAAGA,UAAU,CAAA;EAE5B,IAAA,IAAIA,UAAU,CAACW,OAAO,CAAC2O,eAAe,EAAE;QACpC9O,MAAM,CAAC2J,QAAQ,CAAC,CAACoF,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAACC,aAAa,CAAC,CAAA;EAC7D,KAAA;EACJ,GAAA;EAAChW,EAAAA,YAAA,CAAAiV,UAAA,EAAA,CAAA;MAAAhV,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA+V,MAAAA,GAAsB;EAClBjP,MAAAA,MAAM,CAAC2J,QAAQ,CAAC,CAACuF,GAAG,CAAC,gBAAgB,CAAC,CAAA;EAC1C,KAAA;EAAC,GAAA,EAAA;MAAAjW,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqV,QAAgBJ,CAAAA,YAAkB,EAAW;QACzC,OAAO,IAAI,CAACgB,UAAU,CAAChB,YAAY,CAAChQ,kBAAkB,EAAE,CAAC,CAAA;EAC7D,KAAA;EAAC,GAAA,EAAA;MAAAlF,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuV,MAAcN,CAAAA,YAAkB,EAAW;QACvC,OAAO,IAAI,CAACgB,UAAU,CAAChB,YAAY,CAAC1P,sBAAsB,EAAE,CAAC,CAAA;EACjE,KAAA;EAAC,GAAA,EAAA;MAAAxF,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAyV,SAAiBR,CAAAA,YAAkB,EAAW;EAC1C,MAAA,IAAI,CAACA,YAAY,CAACxT,QAAQ,EAAE,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH;UACA,IAAIwT,YAAY,CAAC/P,OAAO,EAAE;EACtB;YACA,OAAO,IAAI,CAAC+Q,UAAU,CAAChB,YAAY,CAAChQ,kBAAkB,EAAE,CAAC,CAAA;EAC7D,SAAC,MAAM;EACH;EACA,UAAA,IAAI,CAACqB,UAAU,CAAC4P,QAAQ,CAACjB,YAAY,CAAC,CAAA;EACtC,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAlV,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAA2V,QAAgBV,CAAAA,YAAkB,EAAW;QACzC,IAAIA,YAAY,CAACxT,QAAQ,EAAE,IAAIwT,YAAY,CAAC/P,OAAO,EAAE;EACjD;EACA,QAAA,IAAI,CAACoB,UAAU,CAAC6P,SAAS,CAAClB,YAAY,CAAC,CAAA;EACvC,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;EACH;UACA,OAAO,IAAI,CAACgB,UAAU,CAAChB,YAAY,CAAC5P,SAAS,EAAE,CAAC,CAAA;EACpD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAtF,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAiW,UAAkBxV,CAAAA,IAAiB,EAAW;QAC1C,IAAI,CAACA,IAAI,EAAE;EACP,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAI,CAAC6F,UAAU,CAAC2P,UAAU,CAACxV,IAAI,CAAC,CAAA;UAEhC,IACI,CAAC,IAAI,CAAC6F,UAAU,CAAC8P,aAAa,CAACC,kBAAkB,CAC7CvP,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAACsO,IAAI,CAAC,iBAAiB,CAAC,CAC/C,EACH;EACE,UAAA,IAAI,CAAChQ,UAAU,CAACiQ,YAAY,CAAC9V,IAAI,CAAC,CAAA;EACtC,SAAA;EAEA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,mBAAA;MAAAC,KAAA,EAgCD,SAAAgV,iBAAAA,GAAqC;EACjC,MAAA,OACI,CAAC,IAAI,CAAC1O,UAAU,CAACW,OAAO,CAAC2O,eAAe,IAAI,KAAK,KACjD,IAAI,CAACtP,UAAU,CAACyK,iBAAiB,CAACyF,aAAa,EAAE,CAAA;EAEzD,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAzB,UAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAAA1V,eAAA,CA5GgB0V,UAAU,EAAA,MAAA,EACL,EAAE,CAAA,CAAA;EAAA1V,eAAA,CADP0V,UAAU,EAAA,IAAA,EAEP,EAAE,CAAA,CAAA;EAAA1V,eAAA,CAFL0V,UAAU,EAAA,OAAA,EAGJ,EAAE,CAAA,CAAA;EAAA1V,eAAA,CAHR0V,UAAU,EAAA,MAAA,EAIL,EAAE,CAAA;;ECP5B,IAAM0B,SAAQ,GAAG,SAAXA,QAAQA,CAAIC,WAAoB,EAAEC,UAAkB,EAAW;EACjE,EAAA,IAAMC,UAAU,GAAG,SAAbA,UAAUA,GAAA;MAAA,OAAA3T,gBAAAA,CAAAA,MAAA,CAAkC0T,UAAU,CAAA,CAAA;KAAE,CAAA;IAE9D,IAAME,aAAa,GAAG,SAAhBA,aAAaA,CACf9K,EAAe,EACf+K,OAAe,EACgB;MAC/B,IAAMC,MAAM,GAAGjQ,MAAM,CAACpI,IAAI,CAACqN,EAAE,EAAE+K,OAAO,CAAY,CAAA;EAElD,IAAA,IAAIC,MAAM,IAAIA,MAAM,YAAYC,YAAY,EAAE;EAC1C,MAAA,OAAOD,MAAM,CAAA;EACjB,KAAC,MAAM;EACH,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;KACH,CAAA;IAED,IAAME,YAAY,GAAG,SAAfA,YAAYA,CAAIlE,GAAW,EAAE9L,OAAgB,EAAa;MAC5D,IAAM6P,OAAO,GAAGF,UAAU,EAAE,CAAA;EAAC,IAAA,IAAAzW,SAAA,GAAAC,0BAAA,CAEZ2S,GAAG,CAAC9O,GAAG,EAAE,CAAA;QAAA5D,KAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA4B;EAAA,QAAA,IAAjBuL,EAAE,GAAA1L,KAAA,CAAAL,KAAA,CAAA;EACT,QAAA,IAAMkX,cAAc,GAAGL,aAAa,CAAC9K,EAAE,EAAE+K,OAAO,CAAC,CAAA;UAEjD,IAAI,CAACI,cAAc,EAAE;YACjB,IAAMC,iBAAiB,GAAGT,WAAkC,CAAA;YAC5D,IAAMK,MAAM,GAAG,IAAII,iBAAiB,CAACpL,EAAE,EAAE9E,OAAO,CAAC,CAAA;YAEjD,IAAI,CAACH,MAAM,CAACpI,IAAI,CAACqN,EAAE,EAAE+K,OAAO,CAAC,EAAE;cAC3BhQ,MAAM,CAACpI,IAAI,CAACqN,EAAE,EAAE+K,OAAO,EAAEC,MAAM,CAAC,CAAA;EACpC,WAAA;;EAEA;YACAA,MAAM,CAACK,IAAI,EAAE,CAAA;EACjB,SAAA;EACJ,OAAA;EAAC,KAAA,CAAA,OAAAxW,GAAA,EAAA;QAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAAT,MAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,KAAA;EAED,IAAA,OAAOiS,GAAG,CAAA;KACb,CAAA;EAED,EAAA,IAAMsE,aAAa,GAAG,SAAhBA,aAAaA,CAAItE,GAAW,EAAW;MACzC,IAAM+D,OAAO,GAAGF,UAAU,EAAE,CAAA;EAAC,IAAA,IAAA9U,UAAA,GAAA1B,0BAAA,CAEZ2S,GAAG,CAAC9O,GAAG,EAAE,CAAA;QAAAlC,MAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAAAD,UAAA,CAAAxB,CAAA,EAAAyB,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAvB,CAAA,EAAAC,EAAAA,IAAA,GAA4B;EAAA,QAAA,IAAjBuL,EAAE,GAAAhK,MAAA,CAAA/B,KAAA,CAAA;EACT,QAAA,IAAM+W,MAAM,GAAGF,aAAa,CAAC9K,EAAE,EAAE+K,OAAO,CAAC,CAAA;EAEzC,QAAA,IAAIC,MAAM,EAAE;YACRA,MAAM,CAACO,OAAO,EAAE,CAAA;EACpB,SAAA;EAEAxQ,QAAAA,MAAM,CAACyQ,UAAU,CAACxL,EAAE,EAAE+K,OAAO,CAAC,CAAA;EAClC,OAAA;EAAC,KAAA,CAAA,OAAAlW,GAAA,EAAA;QAAAkB,UAAA,CAAAjB,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAAkB,MAAAA,UAAA,CAAAhB,CAAA,EAAA,CAAA;EAAA,KAAA;KACJ,CAAA;IAED,IAAM0W,YAAY,GAAG,SAAfA,YAAYA,CACdzE,GAAW,EACX0E,YAAoB,EACpBC,IAAe,EACL;MACV,IAAIzV,MAAM,GAAG,IAAI,CAAA;EAAC,IAAA,IAAAwB,UAAA,GAAArD,0BAAA,CAED2S,GAAG,CAAC9O,GAAG,EAAE,CAAA;QAAAP,MAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAAAD,UAAA,CAAAnD,CAAA,EAAAoD,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAlD,CAAA,EAAAC,EAAAA,IAAA,GAA4B;EAAA,QAAA,IAAjBuL,EAAE,GAAArI,MAAA,CAAA1D,KAAA,CAAA;UACT,IAAM+W,MAAM,GAAGjQ,MAAM,CAACpI,IAAI,CAACqN,EAAE,EAAE6K,UAAU,EAAE,CAAY,CAAA;EAEvD,QAAA,IAAIG,MAAM,IAAIA,MAAM,YAAYC,YAAY,EAAE;YAC1C,IAAMW,YAAY,GAAGZ,MAA+B,CAAA;EACpD,UAAA,IAAMa,cAAc,GAAGD,YAAY,CAACF,YAAY,CAAC,CAAA;EAEjD,UAAA,IAAIG,cAAc,IAAI,OAAOA,cAAc,KAAK,UAAU,EAAE;cACxD3V,MAAM,GAAG2V,cAAc,CAACC,KAAK,CAACd,MAAM,EAAEW,IAAI,CAAY,CAAA;EAC1D,WAAA;EACJ,SAAA;EACJ,OAAA;EAAC,KAAA,CAAA,OAAA9W,GAAA,EAAA;QAAA6C,UAAA,CAAA5C,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA6C,MAAAA,UAAA,CAAA3C,CAAA,EAAA,CAAA;EAAA,KAAA;EAED,IAAA,OAAOmB,MAAM,CAAA;KAChB,CAAA;;EAED;IACC6E,MAAM,CAACgR,EAAE,CAASnB,UAAU,CAAC,GAAG,UAE7BoB,SAAkB,EAEpB;MACE,IAAI,CAACA,SAAS,EAAE;EACZ,MAAA,OAAOd,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;EACnC,KAAC,MAAM,IAAItY,OAAA,CAAOoZ,SAAS,CAAA,KAAK,QAAQ,EAAE;QACtC,IAAM9Q,OAAO,GAAG8Q,SAAoB,CAAA;EACpC,MAAA,OAAOd,YAAY,CAAC,IAAI,EAAEhQ,OAAO,CAAC,CAAA;EACtC,KAAC,MAAM,IAAI,OAAO8Q,SAAS,KAAK,QAAQ,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC9D,IAAMN,YAAY,GAAGM,SAAS,CAAA;QAE9B,IAAIN,YAAY,KAAK,SAAS,EAAE;UAC5B,OAAOJ,aAAa,CAAC,IAAI,CAAC,CAAA;EAC9B,OAAC,MAAM,IAAII,YAAY,KAAK,kBAAkB,EAAE;EAC5C,QAAA,OAAOf,WAAW,CAAA;EACtB,OAAC,MAAM;UAAA,KAAAsB,IAAAA,IAAA,GAAAjZ,SAAA,CAAAC,MAAA,EAdR0Y,IAAI,OAAA9Y,KAAA,CAAAoZ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAC,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA,EAAA,EAAA;EAAJP,UAAAA,IAAI,CAAAO,IAAA,GAAAlZ,CAAAA,CAAAA,GAAAA,SAAA,CAAAkZ,IAAA,CAAA,CAAA;EAAA,SAAA;EAeC,QAAA,OAAOT,YAAY,CAAC,IAAI,EAAEC,YAAY,EAAEC,IAAI,CAAC,CAAA;EACjD,OAAA;EACJ,KAAA;KACH,CAAA;EACL,CAAC,CAAA;EAAC,IAEmBV,YAAY,gBAAA,YAAA;EAa7B,EAAA,SAAAA,YAAYjL,CAAAA,EAAe,EAAE9E,OAAsB,EAAE;EAAA7H,IAAAA,eAAA,OAAA4X,YAAA,CAAA,CAAA;MAAA3X,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EACjD,IAAA,IAAI,CAAC0T,GAAG,GAAGjM,MAAM,CAACiF,EAAE,CAAC,CAAA;;EAErB;EACA,IAAA,IAAMmM,QAAQ,GAAI,IAAI,CAACC,WAAW,CAAS,UAAU,CAAkB,CAAA;MACvE,IAAI,CAAClR,OAAO,GAAAiN,cAAA,CAAAA,cAAA,CAAQgE,EAAAA,EAAAA,QAAQ,CAAKjR,EAAAA,OAAO,CAAE,CAAA;EAC9C,GAAA;EAACnH,EAAAA,YAAA,CAAAkX,YAAA,EAAA,CAAA;MAAAjX,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAAsX,OAAAA,GAAuB;QACnB,IAAI,CAACvB,MAAM,EAAE,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;MAAAhW,GAAA,EAAA,MAAA;MAAAC,KAAA,EAED,SAAAoX,IAAAA,GAAoB;EAChB;EAAA,KAAA;EACH,GAAA,EAAA;MAAArX,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA+V,MAAAA,GAAsB;EAClB;EAAA,KAAA;EACH,GAAA,CAAA,EAAA,CAAA;MAAAhW,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EA9BD,SAAAyW,QAAAA,CAAuBC,WAAoB,EAAEC,UAAkB,EAAQ;EACnEF,MAAAA,SAAQ,CAACC,WAAW,EAAEC,UAAU,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAK,YAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAAA3X,eAAA,CAHgB2X,YAAY,EAOQ,UAAA,EAAA,EAAE,CAAA;;ECrG3C,IAAMoB,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIvX,CAAa,EAAA;IAAA,OAAoB;MACpE2G,KAAK,EAAE3G,CAAC,CAAC2G,KAAK;MACdC,KAAK,EAAE5G,CAAC,CAAC4G,KAAK;MACdV,MAAM,EAAElG,CAAC,CAACkG,MAAqB;EAC/B+B,IAAAA,aAAa,EAAEjI,CAAAA;KAClB,CAAA;EAAA,CAAC,CAAA;EAEF,IAAMwX,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC1BC,KAAY,EACZzX,CAAa,EAAA;IAAA,OACG;MAChB2G,KAAK,EAAE8Q,KAAK,CAAC9Q,KAAK;MAClBC,KAAK,EAAE6Q,KAAK,CAAC7Q,KAAK;MAClBV,MAAM,EAAEuR,KAAK,CAACvR,MAAqB;EACnC+B,IAAAA,aAAa,EAAEjI,CAAAA;KAClB,CAAA;EAAA,CAAC,CAAA;EAAC,IAEY0X,WAAW,0BAAAC,aAAA,EAAA;IAAArL,SAAA,CAAAoL,WAAA,EAAAC,aAAA,CAAA,CAAA;EAAA,EAAA,IAAApL,MAAA,GAAAC,YAAA,CAAAkL,WAAA,CAAA,CAAA;EAAA,EAAA,SAAAA,WAAA,GAAA;EAAA,IAAA,IAAAjU,KAAA,CAAA;EAAAlF,IAAAA,eAAA,OAAAmZ,WAAA,CAAA,CAAA;EAAA,IAAA,KAAA,IAAAP,IAAA,GAAAjZ,SAAA,CAAAC,MAAA,EAAA0Y,IAAA,GAAA9Y,IAAAA,KAAA,CAAAoZ,IAAA,GAAAC,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA,EAAA,EAAA;EAAAP,MAAAA,IAAA,CAAAO,IAAA,CAAAlZ,GAAAA,SAAA,CAAAkZ,IAAA,CAAA,CAAA;EAAA,KAAA;MAAA3T,KAAA,GAAA8I,MAAA,CAAA7O,IAAA,CAAAsZ,KAAA,CAAAzK,MAAA,EAAA,CAAA,IAAA,CAAA,CAAAnK,MAAA,CAAAyU,IAAA,CAAA,CAAA,CAAA;MAAArY,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAAjF,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAoDF,EAAA,WAAA,EAAA,UAACzD,CAAa,EAAW;EACzC;EACA,MAAA,IAAIA,CAAC,CAAC4X,MAAM,KAAK,CAAC,EAAE;EAChB,QAAA,OAAA;EACJ,OAAA;QAEA,IAAMxW,MAAM,GAAGqC,KAAA,CAAKoU,eAAe,CAACN,6BAA6B,CAACvX,CAAC,CAAC,CAAC,CAAA;EAErE,MAAA,IAAIoB,MAAM,IAAIpB,CAAC,CAAC8X,UAAU,EAAE;UACxB9X,CAAC,CAAC+X,cAAc,EAAE,CAAA;EACtB,OAAA;OACH,CAAA,CAAA;EAAAvZ,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAsDmB,EAAA,WAAA,EAAA,UAACzD,CAAa,EAAW;QACzCyD,KAAA,CAAKuU,eAAe,CAAChY,CAAC,EAAEuX,6BAA6B,CAACvX,CAAC,CAAC,CAAC,CAAA;OAC5D,CAAA,CAAA;EAAAxB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAkCiB,EAAA,SAAA,EAAA,UAACzD,CAAa,EAAW;EACvCyD,MAAAA,KAAA,CAAKwU,aAAa,CAACV,6BAA6B,CAACvX,CAAC,CAAC,CAAC,CAAA;OACvD,CAAA,CAAA;EAAAxB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAgCoB,EAAA,YAAA,EAAA,UAACzD,CAAa,EAAW;QAC1C,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAACkY,OAAO,CAAC/Z,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMsZ,KAAK,GAAGzX,CAAC,CAACmY,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC1U,KAAA,CAAKoU,eAAe,CAACL,wBAAwB,CAACC,KAAK,EAAEzX,CAAC,CAAC,CAAC,CAAA;OAC3D,CAAA,CAAA;EAAAxB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAEmB,EAAA,WAAA,EAAA,UAACzD,CAAa,EAAW;QACzC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAACkY,OAAO,CAAC/Z,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMsZ,KAAK,GAAGzX,CAAC,CAACmY,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC1U,KAAA,CAAKuU,eAAe,CAAChY,CAAC,EAAEwX,wBAAwB,CAACC,KAAK,EAAEzX,CAAC,CAAC,CAAC,CAAA;OAC9D,CAAA,CAAA;EAAAxB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAEkB,EAAA,UAAA,EAAA,UAACzD,CAAa,EAAW;QACxC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAACkY,OAAO,CAAC/Z,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMsZ,KAAK,GAAGzX,CAAC,CAACmY,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC1U,KAAA,CAAKwU,aAAa,CAACT,wBAAwB,CAACC,KAAK,EAAEzX,CAAC,CAAC,CAAC,CAAA;OACzD,CAAA,CAAA;EAAA,IAAA,OAAAyD,KAAA,CAAA;EAAA,GAAA;EAAAxE,EAAAA,YAAA,CAAAyY,WAAA,EAAA,CAAA;MAAAxY,GAAA,EAAA,MAAA;MAAAC,KAAA,EA7ND,SAAAoX,IAAAA,GAAoB;QAChB,IAAMpP,OAAO,GAAG,IAAI,CAAC+K,GAAG,CAAC9O,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAI+D,OAAO,EAAE;UACTA,OAAO,CAACiR,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACC,SAAS,EAAE;EAClDC,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;UACFnR,OAAO,CAACiR,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACG,UAAU,EAAE;EACpDD,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;EACN,OAAA;QAEA,IAAI,CAACE,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAACC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAACC,eAAe,GAAG,KAAK,CAAA;QAC5B,IAAI,CAACC,aAAa,GAAG,IAAI,CAAA;EAC7B,KAAA;EAAC,GAAA,EAAA;MAAAzZ,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA+V,MAAAA,GAAsB;QAClB,IAAMhK,EAAE,GAAG,IAAI,CAACgH,GAAG,CAAC9O,GAAG,CAAC,CAAC,CAAC,CAAA;EAE1B,MAAA,IAAI8H,EAAE,EAAE;EACJ;UACCA,EAAE,CAAS0N,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACP,SAAS,EAAE;EACzDC,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;;EAEF;UACCpN,EAAE,CAAS0N,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACL,UAAU,EAAE;EAC3DD,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;EACN,OAAA;QAEA,IAAI,CAACO,6BAA6B,EAAE,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;MAAA3Z,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAyBD,SAAA0Y,eAAwB/R,CAAAA,YAA0B,EAAW;EACzD;QACA,IAAI,IAAI,CAAC0S,cAAc,EAAE;EACrB,QAAA,IAAI,CAACP,aAAa,CAACnS,YAAY,CAAC,CAAA;EACpC,OAAA;QAEA,IAAI,CAAC6S,aAAa,GAAG7S,YAAY,CAAA;EAEjC,MAAA,IAAI,CAAC,IAAI,CAACC,YAAY,CAACD,YAAY,CAAC,EAAE;EAClC,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;QAEA,IAAI,CAACgT,gBAAgB,EAAE,CAAA;EAEvB,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAA5Z,GAAA,EAAA,kBAAA;MAAAC,KAAA,EAED,SAAA2Z,gBAAAA,GAAiC;QAC7BlJ,QAAQ,CAACwI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACW,SAAS,EAAE;EACnDT,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;QACF1I,QAAQ,CAACwI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACY,SAAS,EAAE;EACnDV,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;QACF1I,QAAQ,CAACwI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACa,OAAO,EAAE;EAAEX,QAAAA,OAAO,EAAE,KAAA;EAAM,OAAC,CAAC,CAAA;QACtE1I,QAAQ,CAACwI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACc,QAAQ,EAAE;EACjDZ,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EAEF,MAAA,IAAMa,UAAU,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;EAEvC,MAAA,IAAID,UAAU,EAAE;EACZ,QAAA,IAAI,CAACE,oBAAoB,CAACF,UAAU,CAAC,CAAA;EACzC,OAAC,MAAM;UACH,IAAI,CAACT,eAAe,GAAG,IAAI,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxZ,GAAA,EAAA,sBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAka,oBAA6BF,CAAAA,UAAkB,EAAQ;EAAA,MAAA,IAAAtU,MAAA,GAAA,IAAA,CAAA;QACnD,IAAI,IAAI,CAAC4T,eAAe,EAAE;EACtBrO,QAAAA,YAAY,CAAC,IAAI,CAACqO,eAAe,CAAC,CAAA;EACtC,OAAA;EAEA,MAAA,IAAI,CAACA,eAAe,GAAGvO,MAAM,CAACC,UAAU,CAAC,YAAM;UAC3C,IAAItF,MAAI,CAAC8T,aAAa,EAAE;YACpB9T,MAAI,CAAC6T,eAAe,GAAG,IAAI,CAAA;EAC/B,SAAA;SACH,EAAES,UAAU,CAAC,CAAA;QAEd,IAAI,CAACT,eAAe,GAAG,KAAK,CAAA;EAChC,KAAA;EAAC,GAAA,EAAA;MAAAxZ,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAMD,SAAA6Y,eAAAA,CACIhY,CAA0B,EAC1B8F,YAA0B,EACtB;QACJ,IAAI,IAAI,CAAC0S,cAAc,EAAE;EACrB,QAAA,IAAI,CAAClR,SAAS,CAACxB,YAAY,CAAC,CAAA;UAE5B,IAAI9F,CAAC,CAAC8X,UAAU,EAAE;YACd9X,CAAC,CAAC+X,cAAc,EAAE,CAAA;EACtB,SAAA;EACA,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAC,IAAI,CAACW,eAAe,EAAE;EACvB,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAACC,aAAa,EAAE;EACpB,QAAA,IAAI,CAACH,cAAc,GAAG,IAAI,CAAC/R,UAAU,CAAC,IAAI,CAACkS,aAAa,CAAC,KAAK,KAAK,CAAA;EACvE,OAAA;QAEA,IAAI,IAAI,CAACH,cAAc,EAAE;EACrB,QAAA,IAAI,CAAClR,SAAS,CAACxB,YAAY,CAAC,CAAA;UAE5B,IAAI9F,CAAC,CAAC8X,UAAU,EAAE;YACd9X,CAAC,CAAC+X,cAAc,EAAE,CAAA;EACtB,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAI,CAACE,aAAa,CAACnS,YAAY,CAAC,CAAA;EACpC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAMD,SAAA8Y,aAAsBnS,CAAAA,YAA0B,EAAQ;QACpD,IAAI,CAAC+S,6BAA6B,EAAE,CAAA;QACpC,IAAI,CAACH,eAAe,GAAG,KAAK,CAAA;QAC5B,IAAI,CAACC,aAAa,GAAG,IAAI,CAAA;QAEzB,IAAI,IAAI,CAACH,cAAc,EAAE;UACrB,IAAI,CAACA,cAAc,GAAG,KAAK,CAAA;EAC3B,QAAA,IAAI,CAACtQ,SAAS,CAACpC,YAAY,CAAC,CAAA;EAChC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,+BAAA;MAAAC,KAAA,EAED,SAAA0Z,6BAAAA,GAAwC;EACpC;QACCjJ,QAAQ,CAASgJ,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACG,SAAS,EAAE;EAC/DT,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACC1I,QAAQ,CAASgJ,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACI,SAAS,EAAE;EAC/DV,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACC1I,QAAQ,CAASgJ,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACK,OAAO,EAAE;EAC3DX,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACC1I,QAAQ,CAASgJ,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACM,QAAQ,EAAE;EAC7DZ,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAZ,WAAA,CAAA;EAAA,CAAA,CAzL6CvB,YAAY,CAAA;;ECvB/B,IASVmD,gBAAgB,gBAAA,YAAA;IAIjC,SAAAA,gBAAAA,CAAY7T,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAA+a,gBAAA,CAAA,CAAA;MAAA9a,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,uBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;EAChC,GAAA;EAACxG,EAAAA,YAAA,CAAAqa,gBAAA,EAAA,CAAA;MAAApa,GAAA,EAAA,WAAA;MAAAC,KAAA,EAED,SAAAoa,SAAAA,GAAyB;QACrB,IAAMC,KAAK,GAAGzF,IAAI,CAAC0F,SAAS,CAAC,IAAI,CAACC,QAAQ,EAAE,CAAC,CAAA;EAE7C,MAAA,IAAI,IAAI,CAACjU,UAAU,CAACW,OAAO,CAACuT,qBAAqB,EAAE;UAC/C,IAAI,CAAClU,UAAU,CAACW,OAAO,CAACuT,qBAAqB,CAACH,KAAK,CAAC,CAAA;EACxD,OAAC,MAAM,IAAI,IAAI,CAACI,oBAAoB,EAAE,EAAE;UACpCC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACC,UAAU,EAAE,EAAEP,KAAK,CAAC,CAAA;EAClD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAta,GAAA,EAAA,qBAAA;MAAAC,KAAA,EAED,SAAA6a,mBAAAA,GAAgD;EAC5C,MAAA,IAAMC,QAAQ,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAEvC,MAAA,IAAID,QAAQ,EAAE;EACV,QAAA,OAAO,IAAI,CAACE,UAAU,CAACF,QAAQ,CAAC,CAAA;EACpC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/a,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAua,QAAAA,GAA8B;EAAA,MAAA,IAAAjW,KAAA,GAAA,IAAA,CAAA;EAC1B,MAAA,IAAM2W,cAAc,GAAG,SAAjBA,cAAcA,GAAmB;UACnC,IAAMC,SAAmB,GAAG,EAAE,CAAA;UAE9B5W,KAAI,CAACgC,UAAU,CAACzG,IAAI,CAAC6B,OAAO,CAAC,UAACjB,IAAU,EAAK;EACzC,UAAA,IAAIA,IAAI,CAACyE,OAAO,IAAIzE,IAAI,CAAC0D,EAAE,IAAI1D,IAAI,CAACe,WAAW,EAAE,EAAE;EAC/C0Z,YAAAA,SAAS,CAACna,IAAI,CAACN,IAAI,CAAC0D,EAAE,CAAC,CAAA;EAC3B,WAAA;EACA,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,CAAC,CAAA;EAEF,QAAA,OAAO+W,SAAS,CAAA;SACnB,CAAA;EAED,MAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,GAAmB;UACvC,IAAMC,eAAyB,GAAG,EAAE,CAAA;UAEpC9W,KAAI,CAACgC,UAAU,CAAC+U,gBAAgB,EAAE,CAACvO,OAAO,CAAC,UAACrM,IAAI,EAAK;EACjD,UAAA,IAAIA,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;EACjBiX,YAAAA,eAAe,CAACra,IAAI,CAACN,IAAI,CAAC0D,EAAE,CAAC,CAAA;EACjC,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOiX,eAAe,CAAA;SACzB,CAAA;QAED,OAAO;UACHE,UAAU,EAAEL,cAAc,EAAE;EAC5BM,QAAAA,aAAa,EAAEJ,kBAAkB,EAAA;SACpC,CAAA;EACL,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EAJI,GAAA,EAAA;MAAApb,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAMA,SAAAwb,eAAuBnB,CAAAA,KAAiB,EAAW;QAC/C,IAAI,CAACA,KAAK,EAAE;EACR,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;UACH,IAAIoB,gBAAgB,GAAG,KAAK,CAAA;UAE5B,IAAIpB,KAAK,CAACiB,UAAU,EAAE;YAClBG,gBAAgB,GAAG,IAAI,CAACC,gBAAgB,CAACrB,KAAK,CAACiB,UAAU,CAAC,CAAA;EAC9D,SAAA;UAEA,IAAIjB,KAAK,CAACkB,aAAa,EAAE;YACrB,IAAI,CAACI,cAAc,EAAE,CAAA;EACrB,UAAA,IAAI,CAACC,kBAAkB,CAACvB,KAAK,CAACkB,aAAa,CAAC,CAAA;EAChD,SAAA;EAEA,QAAA,OAAOE,gBAAgB,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA1b,GAAA,EAAA,yBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA6b,uBAAAA,CACIxB,KAAiB,EACjByB,UAAsB,EAClB;EACJ,MAAA,IAAIzB,KAAK,EAAE;EACP,QAAA,IAAI,CAAC0B,yBAAyB,CAC1B1B,KAAK,CAACiB,UAAU,EAChBjB,KAAK,CAACkB,aAAa,EACnBO,UAAU,CACb,CAAA;EACL,OAAC,MAAM;EACHA,QAAAA,UAAU,EAAE,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA/b,GAAA,EAAA,uBAAA;MAAAC,KAAA,EAED,SAAAgc,qBAAAA,GAA8C;EAC1C,MAAA,IAAM3B,KAAK,GAAG,IAAI,CAACQ,mBAAmB,EAAE,CAAA;EAExC,MAAA,IAAIR,KAAK,IAAIA,KAAK,CAACkB,aAAa,EAAE;EAC9B,QAAA,OAAOlB,KAAK,CAACkB,aAAa,CAAC,CAAC,CAAC,CAAA;EACjC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxb,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgb,UAAmBF,CAAAA,QAAgB,EAAc;EAC7C,MAAA,IAAMT,KAAK,GAAGzF,IAAI,CAACC,KAAK,CAACiG,QAAQ,CAA4B,CAAA;;EAE7D;EACA,MAAA,IAAIT,KAAK,IAAIA,KAAK,CAACkB,aAAa,IAAIxM,KAAK,CAACsL,KAAK,CAACkB,aAAa,CAAC,EAAE;EAC5D;EACAlB,QAAAA,KAAK,CAACkB,aAAa,GAAG,CAAClB,KAAK,CAACkB,aAAa,CAAC,CAAA;EAC/C,OAAA;EAEA,MAAA,OAAOlB,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAAta,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAED,SAAA+a,eAAAA,GAAyC;EACrC,MAAA,IAAI,IAAI,CAACzU,UAAU,CAACW,OAAO,CAACgV,qBAAqB,EAAE;EAC/C,QAAA,OAAO,IAAI,CAAC3V,UAAU,CAACW,OAAO,CAACgV,qBAAqB,EAAE,CAAA;EAC1D,OAAC,MAAM,IAAI,IAAI,CAACxB,oBAAoB,EAAE,EAAE;UACpC,OAAOC,YAAY,CAACwB,OAAO,CAAC,IAAI,CAACtB,UAAU,EAAE,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA7a,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA0b,gBAAyBS,CAAAA,OAAiB,EAAW;QACjD,IAAIV,gBAAgB,GAAG,KAAK,CAAA;EAAC,MAAA,IAAAtb,SAAA,GAAAC,0BAAA,CAER+b,OAAO,CAAA;UAAA9b,KAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA8B;EAAA,UAAA,IAAnBwD,MAAM,GAAA3D,KAAA,CAAAL,KAAA,CAAA;YACb,IAAMS,IAAI,GAAG,IAAI,CAAC6F,UAAU,CAACvC,WAAW,CAACC,MAAM,CAAC,CAAA;EAEhD,UAAA,IAAIvD,IAAI,EAAE;EACN,YAAA,IAAI,CAACA,IAAI,CAAClB,cAAc,EAAE;gBACtBkB,IAAI,CAACyE,OAAO,GAAG,IAAI,CAAA;EACvB,aAAC,MAAM;EACHuW,cAAAA,gBAAgB,GAAG,IAAI,CAAA;EAC3B,aAAA;EACJ,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAA7a,GAAA,EAAA;UAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAT,QAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,OAAO2a,gBAAgB,CAAA;EAC3B,KAAA;EAAC,GAAA,EAAA;MAAA1b,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4b,kBAA2BO,CAAAA,OAAiB,EAAW;QACnD,IAAIC,WAAW,GAAG,CAAC,CAAA;EAAC,MAAA,IAAAta,UAAA,GAAA1B,0BAAA,CAEC+b,OAAO,CAAA;UAAApa,MAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAAAD,UAAA,CAAAxB,CAAA,EAAAyB,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAvB,CAAA,EAAAC,EAAAA,IAAA,GAA8B;EAAA,UAAA,IAAnBwD,MAAM,GAAAjC,MAAA,CAAA/B,KAAA,CAAA;YACb,IAAMS,IAAI,GAAG,IAAI,CAAC6F,UAAU,CAACvC,WAAW,CAACC,MAAM,CAAC,CAAA;EAEhD,UAAA,IAAIvD,IAAI,EAAE;EACN2b,YAAAA,WAAW,IAAI,CAAC,CAAA;cAEhB,IAAI,CAAC9V,UAAU,CAACyK,iBAAiB,CAACsL,cAAc,CAAC5b,IAAI,CAAC,CAAA;EAC1D,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAAG,GAAA,EAAA;UAAAkB,UAAA,CAAAjB,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAkB,QAAAA,UAAA,CAAAhB,CAAA,EAAA,CAAA;EAAA,OAAA;QAED,OAAOsb,WAAW,KAAK,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;MAAArc,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAA2b,cAAAA,GAA+B;EAC3B,MAAA,IAAM5K,iBAAiB,GAAG,IAAI,CAACzK,UAAU,CAACyK,iBAAiB,CAAA;EAE3D,MAAA,IAAMuL,aAAa,GAAGvL,iBAAiB,CAACsK,gBAAgB,EAAE,CAAA;EAE1DiB,MAAAA,aAAa,CAACxP,OAAO,CAAC,UAACrM,IAAI,EAAK;EAC5BsQ,QAAAA,iBAAiB,CAACwL,mBAAmB,CAAC9b,IAAI,CAAC,CAAA;EAC/C,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,2BAAA;MAAAC,KAAA,EAED,SAAA+b,yBACIS,CAAAA,YAAsB,EACtBF,aAAuB,EACvBR,UAAsB,EAClB;EAAA,MAAA,IAAApW,MAAA,GAAA,IAAA,CAAA;QACJ,IAAI+W,YAAY,GAAG,CAAC,CAAA;QACpB,IAAIN,OAAO,GAAGK,YAAY,CAAA;EAE1B,MAAA,IAAMtB,SAAS,GAAG,SAAZA,SAASA,GAAe;UAC1B,IAAMwB,WAAW,GAAG,EAAE,CAAA;EAAC,QAAA,IAAAjZ,UAAA,GAAArD,0BAAA,CAEF+b,OAAO,CAAA;YAAAzY,MAAA,CAAA;EAAA,QAAA,IAAA;YAA5B,KAAAD,UAAA,CAAAnD,CAAA,EAAAoD,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAlD,CAAA,EAAAC,EAAAA,IAAA,GAA8B;EAAA,YAAA,IAAnBwD,MAAM,GAAAN,MAAA,CAAA1D,KAAA,CAAA;cACb,IAAMS,IAAI,GAAGiF,MAAI,CAACY,UAAU,CAACvC,WAAW,CAACC,MAAM,CAAC,CAAA;cAEhD,IAAI,CAACvD,IAAI,EAAE;EACPic,cAAAA,WAAW,CAAC3b,IAAI,CAACiD,MAAM,CAAC,CAAA;EAC5B,aAAC,MAAM;EACH,cAAA,IAAI,CAACvD,IAAI,CAAC+R,UAAU,EAAE;kBAClB,IAAI/R,IAAI,CAAClB,cAAc,EAAE;oBACrBod,eAAe,CAAClc,IAAI,CAAC,CAAA;EACzB,iBAAC,MAAM;oBACHiF,MAAI,CAACY,UAAU,CAACqE,SAAS,CAAClK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;EAChD,iBAAA;EACJ,eAAA;EACJ,aAAA;EACJ,WAAA;EAAC,SAAA,CAAA,OAAAG,GAAA,EAAA;YAAA6C,UAAA,CAAA5C,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA6C,UAAAA,UAAA,CAAA3C,CAAA,EAAA,CAAA;EAAA,SAAA;EAEDqb,QAAAA,OAAO,GAAGO,WAAW,CAAA;EAErB,QAAA,IAAIhX,MAAI,CAACkW,kBAAkB,CAACU,aAAa,CAAC,EAAE;EACxC5W,UAAAA,MAAI,CAACY,UAAU,CAAC+E,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC1C,SAAA;UAEA,IAAIoR,YAAY,KAAK,CAAC,EAAE;EACpBX,UAAAA,UAAU,EAAE,CAAA;EAChB,SAAA;SACH,CAAA;EAED,MAAA,IAAMa,eAAe,GAAG,SAAlBA,eAAeA,CAAIlc,IAAU,EAAW;EAC1Cgc,QAAAA,YAAY,IAAI,CAAC,CAAA;UACjB/W,MAAI,CAACY,UAAU,CAACqE,SAAS,CAAClK,IAAI,EAAE,KAAK,EAAE,YAAM;EACzCgc,UAAAA,YAAY,IAAI,CAAC,CAAA;EACjBvB,UAAAA,SAAS,EAAE,CAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAEDA,MAAAA,SAAS,EAAE,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAnb,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAA4a,UAAAA,GAA6B;QACzB,IAAI,OAAO,IAAI,CAACtU,UAAU,CAACW,OAAO,CAACmT,SAAS,KAAK,QAAQ,EAAE;EACvD,QAAA,OAAO,IAAI,CAAC9T,UAAU,CAACW,OAAO,CAACmT,SAAS,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,OAAO,MAAM,CAAA;EACjB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAra,GAAA,EAAA,sBAAA;MAAAC,KAAA,EAED,SAAAya,oBAAAA,GAAwC;EACpC,MAAA,IAAMmC,WAAW,GAAG,SAAdA,WAAWA,GAAkB;EAC/B;UACA,IAAIlC,YAAY,IAAI,IAAI,EAAE;EACtB,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH;YACA,IAAI;cACA,IAAM3a,GAAG,GAAG,eAAe,CAAA;EAC3B8c,YAAAA,cAAc,CAAClC,OAAO,CAAC5a,GAAG,EAAE,OAAO,CAAC,CAAA;EACpC8c,YAAAA,cAAc,CAACC,UAAU,CAAC/c,GAAG,CAAC,CAAA;aACjC,CAAC,OAAOwU,KAAK,EAAE;EACZ,YAAA,OAAO,KAAK,CAAA;EAChB,WAAA;EAEA,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;SACH,CAAA;EAED,MAAA,IAAI,IAAI,CAACwI,qBAAqB,IAAI,IAAI,EAAE;EACpC,QAAA,IAAI,CAACA,qBAAqB,GAAGH,WAAW,EAAE,CAAA;EAC9C,OAAA;QAEA,OAAO,IAAI,CAACG,qBAAqB,CAAA;EACrC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA5C,gBAAA,CAAA;EAAA,CAAA,EAAA;;MCvQgB6C,aAAa,gBAAA,YAAA;IAO9B,SAAAA,aAAAA,CAAY1W,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAA4d,aAAA,CAAA,CAAA;MAAA3d,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;EAC5B,IAAA,IAAI,CAACsH,WAAW,GAAG,CAAC,CAAC,CAAA;MACrB,IAAI,CAACqP,aAAa,GAAG,KAAK,CAAA;EAC9B,GAAA;EAACnd,EAAAA,YAAA,CAAAkd,aAAA,EAAA,CAAA;MAAAjd,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAAkd,cAAAA,GAA8B;QAC1B,IAAI,CAACC,UAAU,EAAE,CAAA;QACjB,IAAI,CAACC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAACC,wBAAwB,EAAE,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;MAAAtd,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsd,SAAiBzV,CAAAA,GAAW,EAAQ;QAChC,IAAI,CAACsV,UAAU,EAAE,CAAA;QAEjB,IAAI,IAAI,CAACI,aAAa,EAAE;UACpB,IAAI,CAACA,aAAa,CAAC,CAAC,CAAC,CAACC,SAAS,GAAG3V,GAAG,CAAA;EACzC,OAAC,MAAM;UACH,IAAMF,MAAM,GAAG,IAAI,CAACrB,UAAU,CAACyM,GAAG,CAACpL,MAAM,EAAE,CAAA;UAC3C,IAAM8V,OAAO,GAAG9V,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;UAEvCf,MAAM,CAAC2J,QAAQ,CAAC,CAAC+M,SAAS,CAAC3V,GAAG,GAAG4V,OAAO,CAAC,CAAA;EAC7C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA1d,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqW,kBAA0BxP,CAAAA,QAAgB,EAAW;QACjD,IAAI,CAACsW,UAAU,EAAE,CAAA;EAEjB,MAAA,IAAIO,aAAqB,CAAA;EACzB,MAAA,IAAIC,UAAkB,CAAA;EACtB,MAAA,IAAIC,UAAkB,CAAA;EACtB,MAAA,IAAIC,OAAe,CAAA;EAEnB,MAAA,IAAMC,QAAQ,GAAGjX,QAAQ,CAACoF,MAAM,EAAE,IAAI,CAAC,CAAA;QAEvC,IAAI,IAAI,CAACsR,aAAa,EAAE;EACpBM,QAAAA,OAAO,GAAG,CAAC,CAAA;UACXF,UAAU,GAAG,IAAI,CAACJ,aAAa,CAACtR,MAAM,EAAE,IAAI,CAAC,CAAA;EAE7C,QAAA,IAAMtE,MAAM,GAAGd,QAAQ,CAACc,MAAM,EAAE,CAAA;UAChC,IAAMoW,WAAW,GAAGpW,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAE3C+V,QAAAA,UAAU,GAAGG,WAAW,GAAG,IAAI,CAACC,eAAe,CAAA;UAC/CN,aAAa,GAAGE,UAAU,GAAGE,QAAQ,CAAA;EACzC,OAAC,MAAM;UACHD,OAAO,GAAG/W,MAAM,CAACiE,MAAM,CAAC,CAACyS,SAAS,EAAE,IAAI,CAAC,CAAA;UAEzC,IAAMS,YAAY,GAAGnX,MAAM,CAACiE,MAAM,CAAC,CAACkB,MAAM,EAAE,IAAI,CAAC,CAAA;UACjD0R,UAAU,GAAGE,OAAO,GAAGI,YAAY,CAAA;EAEnC,QAAA,IAAMtW,OAAM,GAAGd,QAAQ,CAACc,MAAM,EAAE,CAAA;EAEhCiW,QAAAA,UAAU,GAAGjW,OAAM,GAAGA,OAAM,CAACE,GAAG,GAAG,CAAC,CAAA;UACpC6V,aAAa,GAAGE,UAAU,GAAGE,QAAQ,CAAA;EACzC,OAAA;EAEA,MAAA,OAAOJ,aAAa,IAAIC,UAAU,IAAIC,UAAU,IAAIC,OAAO,CAAA;EAC/D,KAAA;EAAC,GAAA,EAAA;MAAA9d,GAAA,EAAA,eAAA;MAAAC,KAAA,EAED,SAAAke,aAAAA,GAA+B;EAC3B,MAAA,IAAI,CAAC,IAAI,CAACX,aAAa,EAAE;EACrB,QAAA,OAAO,CAAC,CAAA;EACZ,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAACA,aAAa,CAACY,UAAU,EAAE,IAAI,CAAC,CAAA;EAC/C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAApe,GAAA,EAAA,kBAAA;MAAAC,KAAA,EAED,SAAAoe,gBAAAA,GAAiC;EAAA,MAAA,IAAA9Z,KAAA,GAAA,IAAA,CAAA;EAC7B,MAAA,IAAM+Z,qBAAqB,GAAG,SAAxBA,qBAAqBA,GAAwB;EAC/C,QAAA,IAAMC,aAAa,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;EAEhD,QAAA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIxL,GAAW,EAAc;EAC1C,UAAA,KAAA,IAAAyL,EAAA,GAAA,CAAA,EAAAC,cAAA,GAAmBH,aAAa,EAAAE,EAAA,GAAAC,cAAA,CAAAzf,MAAA,EAAAwf,EAAA,EAAE,EAAA;EAA7B,YAAA,IAAME,IAAI,GAAAD,cAAA,CAAAD,EAAA,CAAA,CAAA;EACX,YAAA,IAAMG,aAAa,GAAG5L,GAAG,CAACjE,GAAG,CAAC4P,IAAI,CAAC,CAAA;EACnC,YAAA,IACIC,aAAa,KAAK,MAAM,IACxBA,aAAa,KAAK,QAAQ,EAC5B;EACE,cAAA,OAAO,IAAI,CAAA;EACf,aAAA;EACJ,WAAA;EAEA,UAAA,OAAO,KAAK,CAAA;WACf,CAAA;UAED,IAAIJ,WAAW,CAACja,KAAI,CAACgC,UAAU,CAACyM,GAAG,CAAC,EAAE;EAClC,UAAA,OAAOzO,KAAI,CAACgC,UAAU,CAACyM,GAAG,CAAA;EAC9B,SAAA;EAAC,QAAA,IAAA5S,SAAA,GAAAC,0BAAA,CAEgBkE,KAAI,CAACgC,UAAU,CAACyM,GAAG,CAAC6L,OAAO,EAAE,CAAC3a,GAAG,EAAE,CAAA;YAAA5D,KAAA,CAAA;EAAA,QAAA,IAAA;YAApD,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAAsD;EAAA,YAAA,IAA3CuL,EAAE,GAAA1L,KAAA,CAAAL,KAAA,CAAA;EACT,YAAA,IAAM+S,GAAG,GAAGjM,MAAM,CAACiF,EAAE,CAAC,CAAA;EACtB,YAAA,IAAIwS,WAAW,CAACxL,GAAG,CAAC,EAAE;EAClB,cAAA,OAAOA,GAAG,CAAA;EACd,aAAA;EACJ,WAAA;EAAC,SAAA,CAAA,OAAAnS,GAAA,EAAA;YAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAAT,UAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,SAAA;EAED,QAAA,OAAO,IAAI,CAAA;SACd,CAAA;EAED,MAAA,IAAM+d,yBAAyB,GAAG,SAA5BA,yBAAyBA,GAAe;UAC1Cva,KAAI,CAAC0Z,eAAe,GAAG,CAAC,CAAA;UACxB1Z,KAAI,CAACiZ,aAAa,GAAG,IAAI,CAAA;SAC5B,CAAA;EAED,MAAA,IAAI,IAAI,CAACjX,UAAU,CAACyM,GAAG,CAACjE,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE;EACjD+P,QAAAA,yBAAyB,EAAE,CAAA;EAC/B,OAAA;QAEA,IAAMtB,aAAa,GAAGc,qBAAqB,EAAE,CAAA;EAE7C,MAAA,IACId,aAAa,IACbA,aAAa,CAACve,MAAM,IACpBue,aAAa,CAAC,CAAC,CAAC,CAACuB,OAAO,KAAK,MAAM,EACrC;UACE,IAAI,CAACvB,aAAa,GAAGA,aAAa,CAAA;EAElC,QAAA,IAAM5V,MAAM,GAAG,IAAI,CAAC4V,aAAa,CAAC5V,MAAM,EAAE,CAAA;UAC1C,IAAI,CAACqW,eAAe,GAAGrW,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAClD,OAAC,MAAM;EACHgX,QAAAA,yBAAyB,EAAE,CAAA;EAC/B,OAAA;QAEA,IAAI,CAAC5B,aAAa,GAAG,IAAI,CAAA;EAC7B,KAAA;EAAC,GAAA,EAAA;MAAAld,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAAmd,UAAAA,GAA2B;EACvB,MAAA,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE;UACrB,IAAI,CAACmB,gBAAgB,EAAE,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAre,GAAA,EAAA,yCAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+e,uCAAgD1W,CAAAA,IAAa,EAAQ;QACjE,IAAM2W,YAAY,GAAG,IAAI,CAACzB,aAAa,IAAI,IAAI,CAACA,aAAa,CAAC,CAAC,CAAC,CAAA;QAEhE,IAAI,CAACyB,YAAY,EAAE;EACf,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMC,cAAc,GAChB,IAAI,CAACjB,eAAe,GAAGgB,YAAY,CAACE,YAAY,GAAG7W,IAAI,CAACsB,MAAM,CAAA;QAElE,IAAIsV,cAAc,GAAG,EAAE,EAAE;UACrBD,YAAY,CAACxB,SAAS,IAAI,EAAE,CAAA;EAC5B,QAAA,IAAI,CAAClX,UAAU,CAAC6Y,eAAe,EAAE,CAAA;EACjC,QAAA,IAAI,CAACvR,WAAW,GAAG,CAAC,CAAC,CAAA;SACxB,MAAM,IAAIvF,IAAI,CAACR,GAAG,GAAG,IAAI,CAACmW,eAAe,GAAG,EAAE,EAAE;UAC7CgB,YAAY,CAACxB,SAAS,IAAI,EAAE,CAAA;EAC5B,QAAA,IAAI,CAAClX,UAAU,CAAC6Y,eAAe,EAAE,CAAA;EACjC,QAAA,IAAI,CAACvR,WAAW,GAAG,CAAC,CAAC,CAAA;EACzB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA7N,GAAA,EAAA,qCAAA;EAAAC,IAAAA,KAAA,EAED,SAAAof,mCAA4C/W,CAAAA,IAAa,EAAQ;QAC7D,IAAMmV,SAAS,GAAG1W,MAAM,CAAC2J,QAAQ,CAAC,CAAC+M,SAAS,EAAE,IAAI,CAAC,CAAA;EACnD,MAAA,IAAM6B,WAAW,GAAGhX,IAAI,CAACR,GAAG,GAAG2V,SAAS,CAAA;QAExC,IAAI6B,WAAW,GAAG,EAAE,EAAE;UAClBvY,MAAM,CAAC2J,QAAQ,CAAC,CAAC+M,SAAS,CAACA,SAAS,GAAG,EAAE,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAMS,YAAY,GAAGnX,MAAM,CAACiE,MAAM,CAAC,CAACkB,MAAM,EAAE,IAAI,CAAC,CAAA;UAEjD,IAAIgS,YAAY,IAAI5V,IAAI,CAACsB,MAAM,GAAG6T,SAAS,CAAC,GAAG,EAAE,EAAE;YAC/C1W,MAAM,CAAC2J,QAAQ,CAAC,CAAC+M,SAAS,CAACA,SAAS,GAAG,EAAE,CAAC,CAAA;EAC9C,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAzd,GAAA,EAAA,wBAAA;MAAAC,KAAA,EAED,SAAAod,sBAAAA,GAAuC;QACnC,IAAM7W,WAAW,GAAG,IAAI,CAACD,UAAU,CAACgZ,UAAU,CAAC/Y,WAAW,CAAA;QAE1D,IAAIA,WAAW,IAAIA,WAAW,CAACsB,GAAG,KAAK,IAAI,CAAC+F,WAAW,EAAE;EACrD,QAAA,IAAI,CAACA,WAAW,GAAGrH,WAAW,CAACsB,GAAG,CAAA;UAElC,IAAI,IAAI,CAAC0V,aAAa,EAAE;EACpB,UAAA,IAAI,CAACwB,uCAAuC,CAACxY,WAAW,CAAC,CAAA;EAC7D,SAAC,MAAM;EACH,UAAA,IAAI,CAAC6Y,mCAAmC,CAAC7Y,WAAW,CAAC,CAAA;EACzD,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxG,GAAA,EAAA,0BAAA;MAAAC,KAAA,EAED,SAAAqd,wBAAAA,GAAyC;QACrC,IAAM1W,YAAY,GAAG,IAAI,CAACL,UAAU,CAACgZ,UAAU,CAAC3Y,YAAY,CAAA;QAE5D,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAAC4W,aAAa,EAAE;EACpB,QAAA,IAAI,CAACgC,mCAAmC,CAAC5Y,YAAY,CAAC,CAAA;EAC1D,OAAC,MAAM;EACH,QAAA,IAAI,CAAC6Y,qCAAqC,CAAC7Y,YAAY,CAAC,CAAA;EAC5D,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,qCAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuf,mCACI5Y,CAAAA,YAA0B,EACtB;QACJ,IACIA,YAAY,CAACa,KAAK,KAAKvI,SAAS,IAChC0H,YAAY,CAACc,KAAK,KAAKxI,SAAS,EAClC;EACE,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMse,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;EACxC,MAAA,IAAMkC,kBAAkB,GAAGlC,aAAa,IAAIA,aAAa,CAAC5V,MAAM,EAAE,CAAA;EAElE,MAAA,IAAI,EAAE4V,aAAa,IAAIkC,kBAAkB,CAAC,EAAE;EACxC,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMT,YAAY,GAAGzB,aAAa,CAAC,CAAC,CAAC,CAAA;EAErC,MAAA,IAAMmC,cAAc,GAChBV,YAAY,CAACb,UAAU,GAAGa,YAAY,CAACW,WAAW,GAClDX,YAAY,CAACY,WAAW,CAAA;EAC5B,MAAA,IAAMC,aAAa,GAAGb,YAAY,CAACb,UAAU,GAAG,CAAC,CAAA;QAEjD,IAAM2B,SAAS,GAAGL,kBAAkB,CAAC7X,IAAI,GAAGoX,YAAY,CAACW,WAAW,CAAA;EACpE,MAAA,IAAMI,QAAQ,GAAGN,kBAAkB,CAAC7X,IAAI,CAAA;QACxC,IAAMoY,eAAe,GAAGrZ,YAAY,CAACa,KAAK,GAAGsY,SAAS,GAAG,EAAE,CAAA;QAC3D,IAAMG,cAAc,GAAGtZ,YAAY,CAACa,KAAK,GAAGuY,QAAQ,GAAG,EAAE,CAAA;QAEzD,IAAIC,eAAe,IAAIN,cAAc,EAAE;EACnCV,QAAAA,YAAY,CAACb,UAAU,GAAGhQ,IAAI,CAACC,GAAG,CAC9B4Q,YAAY,CAACb,UAAU,GAAG,EAAE,EAC5Ba,YAAY,CAACY,WAAW,CAC3B,CAAA;EACL,OAAC,MAAM,IAAIK,cAAc,IAAIJ,aAAa,EAAE;EACxCb,QAAAA,YAAY,CAACb,UAAU,GAAGhQ,IAAI,CAAC+R,GAAG,CAAClB,YAAY,CAACb,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;EACvE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAApe,GAAA,EAAA,uCAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwf,qCACI7Y,CAAAA,YAA0B,EACtB;QACJ,IACIA,YAAY,CAACa,KAAK,KAAKvI,SAAS,IAChC0H,YAAY,CAACc,KAAK,KAAKxI,SAAS,EAClC;EACE,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMkhB,SAAS,GAAGrZ,MAAM,CAAC2J,QAAQ,CAAC,CAAA;EAElC,MAAA,IAAM0N,UAAU,GAAGgC,SAAS,CAAChC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC9C,IAAMiC,WAAW,GAAGtZ,MAAM,CAACiE,MAAM,CAAC,CAACiB,KAAK,EAAE,IAAI,CAAC,CAAA;EAE/C,MAAA,IAAM6T,aAAa,GAAG1B,UAAU,GAAG,CAAC,CAAA;QAEpC,IAAM6B,eAAe,GAAGrZ,YAAY,CAACa,KAAK,GAAG4Y,WAAW,GAAG,EAAE,CAAA;QAC7D,IAAMH,cAAc,GAAGtZ,YAAY,CAACa,KAAK,GAAG2W,UAAU,GAAG,EAAE,CAAA;EAE3D,MAAA,IAAI6B,eAAe,EAAE;EACjBG,QAAAA,SAAS,CAAChC,UAAU,CAACA,UAAU,GAAG,EAAE,CAAC,CAAA;EACzC,OAAC,MAAM,IAAI8B,cAAc,IAAIJ,aAAa,EAAE;EACxCM,QAAAA,SAAS,CAAChC,UAAU,CAAChQ,IAAI,CAAC+R,GAAG,CAAC/B,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;EACtD,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAnB,aAAA,CAAA;EAAA,CAAA,EAAA;;MC3QgBqD,iBAAiB,gBAAA,YAAA;IAKlC,SAAAA,iBAAAA,CAAY/Z,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAAihB,iBAAA,CAAA,CAAA;MAAAhhB,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACiH,UAAU,GAAGA,UAAU,CAAA;EAC5B,IAAA,IAAI,CAACgW,aAAa,GAAG,IAAIgE,GAAG,EAAU,CAAA;MACtC,IAAI,CAACrX,KAAK,EAAE,CAAA;EAChB,GAAA;EAACnJ,EAAAA,YAAA,CAAAugB,iBAAA,EAAA,CAAA;MAAAtgB,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAED,SAAAkV,eAAAA,GAAuC;EACnC,MAAA,IAAMoH,aAAa,GAAG,IAAI,CAACjB,gBAAgB,EAAE,CAAA;QAE7C,IAAIiB,aAAa,CAACtd,MAAM,EAAE;UACtB,OAAOsd,aAAa,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAvc,GAAA,EAAA,kBAAA;MAAAC,KAAA,EAED,SAAAqb,gBAAAA,GAAkC;EAAA,MAAA,IAAA/W,KAAA,GAAA,IAAA,CAAA;QAC9B,IAAI,IAAI,CAACic,kBAAkB,EAAE;EACzB,QAAA,OAAO,CAAC,IAAI,CAACA,kBAAkB,CAAC,CAAA;EACpC,OAAC,MAAM;UACH,IAAMjE,aAAqB,GAAG,EAAE,CAAA;EAEhC,QAAA,IAAI,CAACA,aAAa,CAACxP,OAAO,CAAC,UAAC3I,EAAE,EAAK;YAC/B,IAAM1D,IAAI,GAAG6D,KAAI,CAACgC,UAAU,CAACvC,WAAW,CAACI,EAAE,CAAC,CAAA;EAC5C,UAAA,IAAI1D,IAAI,EAAE;EACN6b,YAAAA,aAAa,CAACvb,IAAI,CAACN,IAAI,CAAC,CAAA;EAC5B,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAO6b,aAAa,CAAA;EACxB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAvc,GAAA,EAAA,uBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwgB,qBAA6B9gB,CAAAA,MAAY,EAAU;QAC/C,IAAI,IAAI,CAAC6gB,kBAAkB,EAAE;UACzB,IAAI7gB,MAAM,CAAC2C,UAAU,CAAC,IAAI,CAACke,kBAAkB,CAAC,EAAE;EAC5C,UAAA,OAAO,CAAC,IAAI,CAACA,kBAAkB,CAAC,CAAA;EACpC,SAAC,MAAM;EACH,UAAA,OAAO,EAAE,CAAA;EACb,SAAA;EACJ,OAAC,MAAM;UACH,IAAMjE,aAAa,GAAG,EAAE,CAAA;EAExB,QAAA,KAAK,IAAMnY,EAAE,IAAI,IAAI,CAACmY,aAAa,EAAE;EACjC,UAAA,IACIle,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC+d,aAAa,EAAEnY,EAAE,CAAC,EAC9D;cACE,IAAM1D,IAAI,GAAG,IAAI,CAAC6F,UAAU,CAACvC,WAAW,CAACI,EAAE,CAAC,CAAA;cAC5C,IAAI1D,IAAI,IAAIf,MAAM,CAAC2C,UAAU,CAAC5B,IAAI,CAAC,EAAE;EACjC6b,cAAAA,aAAa,CAACvb,IAAI,CAACN,IAAI,CAAC,CAAA;EAC5B,aAAA;EACJ,WAAA;EACJ,SAAA;EAEA,QAAA,OAAO6b,aAAa,CAAA;EACxB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAvc,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgR,cAAsBvQ,CAAAA,IAAU,EAAW;EACvC,MAAA,IAAIA,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;UACjB,OAAO,IAAI,CAACmY,aAAa,CAACmE,GAAG,CAAChgB,IAAI,CAAC0D,EAAE,CAAC,CAAA;EAC1C,OAAC,MAAM,IAAI,IAAI,CAACoc,kBAAkB,EAAE;UAChC,OAAO,IAAI,CAACA,kBAAkB,CAACvY,OAAO,KAAKvH,IAAI,CAACuH,OAAO,CAAA;EAC3D,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,OAAA;MAAAC,KAAA,EAED,SAAAiJ,KAAAA,GAAqB;EACjB,MAAA,IAAI,CAACqT,aAAa,CAACrT,KAAK,EAAE,CAAA;QAC1B,IAAI,CAACsX,kBAAkB,GAAG,IAAI,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;MAAAxgB,GAAA,EAAA,qBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuc,mBAA2B9b,CAAAA,IAAU,EAAiC;EAAA,MAAA,IAAAiF,MAAA,GAAA,IAAA,CAAA;EAAA,MAAA,IAA/BX,eAAe,GAAAhG,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;EAC1D,MAAA,IAAI0B,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;EACjB,QAAA,IACI,IAAI,CAACoc,kBAAkB,IACvB9f,IAAI,CAACuH,OAAO,KAAK,IAAI,CAACuY,kBAAkB,CAACvY,OAAO,EAClD;YACE,IAAI,CAACuY,kBAAkB,GAAG,IAAI,CAAA;EAClC,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAI,CAACjE,aAAa,CAAA,QAAA,CAAO,CAAC7b,IAAI,CAAC0D,EAAE,CAAC,CAAA;EAElC,QAAA,IAAIY,eAAe,EAAE;YACjBtE,IAAI,CAACiB,OAAO,CAAC,YAAM;EACf,YAAA,IAAIjB,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;EACjBuB,cAAAA,MAAI,CAAC4W,aAAa,CAAA,QAAA,CAAO,CAAC7b,IAAI,CAAC0D,EAAE,CAAC,CAAA;EACtC,aAAA;EACA,YAAA,OAAO,IAAI,CAAA;EACf,WAAC,CAAC,CAAA;EACN,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAApE,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqc,cAAsB5b,CAAAA,IAAU,EAAQ;EACpC,MAAA,IAAIA,IAAI,CAAC0D,EAAE,IAAI,IAAI,EAAE;UACjB,IAAI,CAACmY,aAAa,CAACoE,GAAG,CAACjgB,IAAI,CAAC0D,EAAE,CAAC,CAAA;EACnC,OAAC,MAAM;UACH,IAAI,CAACoc,kBAAkB,GAAG9f,IAAI,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,eAAA;MAAAC,KAAA,EAED,SAAAwW,aAAAA,GAAgC;EAC5B,MAAA,IAAMmK,aAAa,GAAGlQ,QAAQ,CAACkQ,aAAa,CAAA;EAE5C,MAAA,OAAO7P,OAAO,CACV6P,aAAa,IACTA,aAAa,CAAC7B,OAAO,KAAK,MAAM,IAChC,IAAI,CAACxY,UAAU,CAACsa,gBAAgB,CAACD,aAAa,CAAgB,CACrE,CAAA;EACL,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAN,iBAAA,CAAA;EAAA,CAAA,EAAA;;ECjHL,IAAaQ,WAAW,gBAAA,YAAA;EAKpB,EAAA,SAAAA,WAAYpgB,CAAAA,IAAU,EAAE6F,UAAwB,EAAE;EAAAlH,IAAAA,eAAA,OAAAyhB,WAAA,CAAA,CAAA;MAAAxhB,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAC9C,IAAA,IAAI,CAAC+X,IAAI,CAAC3W,IAAI,EAAE6F,UAAU,CAAC,CAAA;EAC/B,GAAA;EAACxG,EAAAA,YAAA,CAAA+gB,WAAA,EAAA,CAAA;MAAA9gB,GAAA,EAAA,MAAA;EAAAC,IAAAA,KAAA,EAED,SAAAoX,IAAAA,CAAY3W,IAAU,EAAE6F,UAAwB,EAAQ;QACpD,IAAI,CAAC7F,IAAI,GAAGA,IAAI,CAAA;QAChB,IAAI,CAAC6F,UAAU,GAAGA,UAAU,CAAA;EAE5B,MAAA,IAAI,CAAC7F,IAAI,CAACuH,OAAO,EAAE;UACf,IAAMA,OAAO,GAAG,IAAI,CAAC1B,UAAU,CAAC0B,OAAO,CAAC/D,GAAG,CAAC,CAAC,CAAC,CAAA;EAE9C,QAAA,IAAI+D,OAAO,EAAE;YACTvH,IAAI,CAACuH,OAAO,GAAGA,OAAO,CAAA;EAC1B,SAAA;EACJ,OAAA;QAEA,IAAIvH,IAAI,CAACuH,OAAO,EAAE;UACd,IAAI,CAACnB,QAAQ,GAAGC,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAAA;EACxC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwK,WAAmBtM,CAAAA,QAAgB,EAAY;EAC3C,MAAA,IAAI,IAAI,CAAC4iB,sBAAsB,CAAC5iB,QAAQ,CAAC,EAAE;EACvC,QAAA,OAAO,IAAI6iB,cAAc,CACrB,IAAI,CAACla,QAAQ,EACb,IAAI,CAACP,UAAU,CAAC4F,cAAc,EAAE,CACnC,CAAA;EACL,OAAC,MAAM;EACH,QAAA,OAAO,IAAI8U,aAAa,CAAC,IAAI,CAACvgB,IAAI,EAAE,IAAI,CAACoG,QAAQ,EAAE3I,QAAQ,CAAC,CAAA;EAChE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA6B,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAAihB,MAAcC,CAAAA,YAAqB,EAAQ;EAAA,MAAA,IAAA3Z,qBAAA,CAAA;EACvC,MAAA,IAAM4Z,GAAG,GAAG,IAAI,CAACC,KAAK,EAAE,CAAA;EAExBD,MAAAA,GAAG,CAACjZ,QAAQ,CAAC,iBAAiB,CAAC,CAAA;EAC/BiZ,MAAAA,GAAG,CAACzC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;EAEjC,MAAA,IAAM2C,KAAK,GAAG,IAAI,CAACC,OAAO,EAAE,CAAA;QAC5BD,KAAK,CAAC3C,IAAI,CAAC,UAAU,GAAAnX,qBAAA,GAAE,IAAI,CAACjB,UAAU,CAACW,OAAO,CAACoL,QAAQ,MAAA9K,IAAAA,IAAAA,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC,CAAA;EAEhE,MAAA,IAAI2Z,YAAY,EAAE;EACdG,QAAAA,KAAK,CAACE,OAAO,CAAC,OAAO,CAAC,CAAA;EAC1B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxhB,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAwhB,QAAAA,GAAwB;EACpB,MAAA,IAAML,GAAG,GAAG,IAAI,CAACC,KAAK,EAAE,CAAA;EAExBD,MAAAA,GAAG,CAAC/X,WAAW,CAAC,iBAAiB,CAAC,CAAA;EAClC+X,MAAAA,GAAG,CAACzC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;EAElC,MAAA,IAAM2C,KAAK,GAAG,IAAI,CAACC,OAAO,EAAE,CAAA;EAC5BD,MAAAA,KAAK,CAACI,UAAU,CAAC,UAAU,CAAC,CAAA;QAE5BJ,KAAK,CAACK,IAAI,EAAE,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAA3hB,GAAA,EAAA,OAAA;MAAAC,KAAA,EAED,SAAA2hB,KAAAA,GAAuC;EACnC,MAAA,OAAO,IAAI,CAAC9a,QAAQ,CAACpH,QAAQ,CAAC,UAAU,CAAC,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;MAAAM,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAAshB,OAAAA,GAAyC;EACrC,MAAA,OAAO,IAAI,CAACza,QAAQ,CACfpH,QAAQ,CAAC,iBAAiB,CAAC,CAC3B6W,IAAI,CAAC,mBAAmB,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;MAAAvW,GAAA,EAAA,OAAA;MAAAC,KAAA,EAED,SAAAohB,KAAAA,GAAuC;QACnC,OAAO,IAAI,CAACva,QAAQ,CAAA;EACxB,KAAA;EAAC,GAAA,EAAA;MAAA9G,GAAA,EAAA,wBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8gB,sBAAiC5iB,CAAAA,QAAgB,EAAW;EACxD,MAAA,OAAOA,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EACvC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA+iB,WAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAGQe,IAAAA,aAAa,0BAAAC,YAAA,EAAA;IAAA1U,SAAA,CAAAyU,aAAA,EAAAC,YAAA,CAAA,CAAA;EAAA,EAAA,IAAAzU,MAAA,GAAAC,YAAA,CAAAuU,aAAA,CAAA,CAAA;EAAA,EAAA,SAAAA,aAAA,GAAA;EAAAxiB,IAAAA,eAAA,OAAAwiB,aAAA,CAAA,CAAA;EAAA,IAAA,OAAAxU,MAAA,CAAAyK,KAAA,CAAA,IAAA,EAAA9Y,SAAA,CAAA,CAAA;EAAA,GAAA;EAAAe,EAAAA,YAAA,CAAA8hB,aAAA,EAAA,CAAA;MAAA7hB,GAAA,EAAA,MAAA;EAAAC,IAAAA,KAAA,EACtB,SAAA8hB,IACIhP,CAAAA,UAAmC,EAG/B;EAAA,MAAA,IAAAxO,KAAA,GAAA,IAAA,CAAA;EAAA,MAAA,IAFJsG,KAAK,GAAA7L,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;EAAA,MAAA,IACZgjB,cAAwC,GAAAhjB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,MAAM,CAAA;EAEjD,MAAA,IAAI,IAAI,CAAC0B,IAAI,CAACyE,OAAO,EAAE;EACnB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAACzE,IAAI,CAACyE,OAAO,GAAG,IAAI,CAAA;EAExB,MAAA,IAAM8c,OAAO,GAAG,IAAI,CAACC,SAAS,EAAE,CAAA;EAChCD,MAAAA,OAAO,CAAC5Y,WAAW,CAAC,eAAe,CAAC,CAAA;EACpC4Y,MAAAA,OAAO,CAACnT,IAAI,CAAC,EAAE,CAAC,CAAA;EAEhB,MAAA,IAAMqT,QAAQ,GAAGF,OAAO,CAAC/d,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAIie,QAAQ,EAAE;EACV,QAAA,IAAMC,IAAI,GACN,IAAI,CAAC7b,UAAU,CAAC8b,QAAQ,CAACjT,iBAAiB,CAAC0C,SAAS,CAAC,IAAI,CAAC,CAAA;EAE9DqQ,QAAAA,QAAQ,CAAC9R,WAAW,CAAC+R,IAAI,CAAC,CAAA;EAC9B,OAAA;EAEA,MAAA,IAAME,MAAM,GAAG,SAATA,MAAMA,GAAe;EACvB,QAAA,IAAMlB,GAAG,GAAG7c,KAAI,CAAC8c,KAAK,EAAE,CAAA;EACxBD,QAAAA,GAAG,CAAC/X,WAAW,CAAC,eAAe,CAAC,CAAA;EAEhC,QAAA,IAAMiY,KAAK,GAAG/c,KAAI,CAACgd,OAAO,EAAE,CAAA;EAC5BD,QAAAA,KAAK,CAAC3C,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;EAEnC,QAAA,IAAI5L,UAAU,EAAE;EACZA,UAAAA,UAAU,CAACxO,KAAI,CAAC7D,IAAI,CAAC,CAAA;EACzB,SAAA;EAEA6D,QAAAA,KAAI,CAACgC,UAAU,CAACiF,aAAa,CAAC,WAAW,EAAE;YACvC9K,IAAI,EAAE6D,KAAI,CAAC7D,IAAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAImK,KAAK,EAAE;UACP,IAAI,CAAC+W,KAAK,EAAE,CAACW,SAAS,CAACP,cAAc,EAAEM,MAAM,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,IAAI,CAACV,KAAK,EAAE,CAACY,IAAI,EAAE,CAAA;EACnBF,QAAAA,MAAM,EAAE,CAAA;EACZ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAtiB,GAAA,EAAA,OAAA;MAAAC,KAAA,EAED,SAAAwiB,KAAAA,GAGQ;EAAA,MAAA,IAAA9c,MAAA,GAAA,IAAA,CAAA;EAAA,MAAA,IAFJkF,KAAK,GAAA7L,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;EAAA,MAAA,IACZgjB,cAAwC,GAAAhjB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,MAAM,CAAA;EAEjD,MAAA,IAAI,CAAC,IAAI,CAAC0B,IAAI,CAACyE,OAAO,EAAE;EACpB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAACzE,IAAI,CAACyE,OAAO,GAAG,KAAK,CAAA;EAEzB,MAAA,IAAM8c,OAAO,GAAG,IAAI,CAACC,SAAS,EAAE,CAAA;EAChCD,MAAAA,OAAO,CAAC9Z,QAAQ,CAAC,eAAe,CAAC,CAAA;EACjC8Z,MAAAA,OAAO,CAACnT,IAAI,CAAC,EAAE,CAAC,CAAA;EAEhB,MAAA,IAAMqT,QAAQ,GAAGF,OAAO,CAAC/d,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAIie,QAAQ,EAAE;EACV,QAAA,IAAMC,IAAI,GACN,IAAI,CAAC7b,UAAU,CAAC8b,QAAQ,CAAC9S,iBAAiB,CAACuC,SAAS,CAAC,IAAI,CAAC,CAAA;EAE9DqQ,QAAAA,QAAQ,CAAC9R,WAAW,CAAC+R,IAAI,CAAC,CAAA;EAC9B,OAAA;EAEA,MAAA,IAAMM,OAAO,GAAG,SAAVA,OAAOA,GAAe;EACxB,QAAA,IAAMtB,GAAG,GAAGzb,MAAI,CAAC0b,KAAK,EAAE,CAAA;EACxBD,QAAAA,GAAG,CAACjZ,QAAQ,CAAC,eAAe,CAAC,CAAA;EAE7B,QAAA,IAAMmZ,KAAK,GAAG3b,MAAI,CAAC4b,OAAO,EAAE,CAAA;EAC5BD,QAAAA,KAAK,CAAC3C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;EAEpChZ,QAAAA,MAAI,CAACY,UAAU,CAACiF,aAAa,CAAC,YAAY,EAAE;YACxC9K,IAAI,EAAEiF,MAAI,CAACjF,IAAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAImK,KAAK,EAAE;UACP,IAAI,CAAC+W,KAAK,EAAE,CAACe,OAAO,CAACX,cAAc,EAAEU,OAAO,CAAC,CAAA;EACjD,OAAC,MAAM;EACH,QAAA,IAAI,CAACd,KAAK,EAAE,CAACgB,IAAI,EAAE,CAAA;EACnBF,QAAAA,OAAO,EAAE,CAAA;EACb,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA1iB,GAAA,EAAA,wBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8gB,sBAAiC5iB,CAAAA,QAAgB,EAAW;QACxD,OAAO,CAAC,IAAI,CAACuC,IAAI,CAACyE,OAAO,IAAIhH,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EAC7D,KAAA;EAAC,GAAA,EAAA;MAAAiC,GAAA,EAAA,WAAA;MAAAC,KAAA,EAED,SAAAiiB,SAAAA,GAA4B;EACxB,MAAA,OAAO,IAAI,CAACpb,QAAQ,CACfpH,QAAQ,CAAC,iBAAiB,CAAC,CAC3B6W,IAAI,CAAC,kBAAkB,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAsL,aAAA,CAAA;EAAA,CAAA,CApG8Bf,WAAW,CAAA,CAAA;EAuG9C,IAAaE,cAAc,gBAAA,YAAA;EAGvB,EAAA,SAAAA,cAAYla,CAAAA,QAAyB,EAAEsX,UAAkB,EAAE;EAAA/e,IAAAA,eAAA,OAAA2hB,cAAA,CAAA,CAAA;MAAA1hB,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EACvD,IAAA,IAAMujB,IAAI,GAAG/b,QAAQ,CAACpH,QAAQ,CAAC,iBAAiB,CAAC,CAAA;EAEjD,IAAA,IAAMojB,OAAO,GAAGhc,QAAQ,CAACmF,KAAK,EAAE,IAAI,CAAC,CAAA;EACrC,IAAA,IAAMA,KAAK,GAAGmC,IAAI,CAAC+R,GAAG,CAAC2C,OAAO,GAAG1E,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;EAEnD,IAAA,IAAML,QAAQ,GAAG8E,IAAI,CAACE,WAAW,EAAE,IAAI,CAAC,CAAA;MACxC,IAAM7W,MAAM,GAAGkC,IAAI,CAAC+R,GAAG,CAACpC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;EAExC,IAAA,IAAI,CAACiF,KAAK,GAAGjc,MAAM,CAAC,qCAAqC,CAAC,CAAA;EAC1D8b,IAAAA,IAAI,CAAChf,MAAM,CAAC,IAAI,CAACmf,KAAK,CAAC,CAAA;EAEvB,IAAA,IAAI,CAACA,KAAK,CAACjU,GAAG,CAAC;EAAE9C,MAAAA,KAAK,EAALA,KAAK;EAAEC,MAAAA,MAAM,EAANA,MAAAA;EAAO,KAAC,CAAC,CAAA;EACrC,GAAA;EAACnM,EAAAA,YAAA,CAAAihB,cAAA,EAAA,CAAA;MAAAhhB,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA2D,MAAAA,GAAsB;EAClB,MAAA,IAAI,CAACof,KAAK,CAACpf,MAAM,EAAE,CAAA;EACvB,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAAod,cAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EACJ,IAEKC,aAAa,gBAAA,YAAA;EAKf,EAAA,SAAAA,cAAYvgB,IAAU,EAAEoG,QAAyB,EAAE3I,QAAgB,EAAE;EAAAkB,IAAAA,eAAA,OAAA4hB,aAAA,CAAA,CAAA;MAAA3hB,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACjE,IAAI,CAACwH,QAAQ,GAAGA,QAAQ,CAAA;MAExB,IAAI,CAACpG,IAAI,GAAGA,IAAI,CAAA;EAChB,IAAA,IAAI,CAACuiB,MAAM,GAAGlc,MAAM,CAGnB,kKAAA,CAAA,CAAA;EAED,IAAA,IAAI5I,QAAQ,KAAKX,QAAQ,CAACK,KAAK,EAAE;QAC7B,IAAI,CAACqlB,SAAS,EAAE,CAAA;EACpB,KAAC,MAAM,IAAI/kB,QAAQ,KAAKX,QAAQ,CAACG,MAAM,EAAE;QACrC,IAAI,CAACwlB,UAAU,EAAE,CAAA;EACrB,KAAC,MAAM,IAAIhlB,QAAQ,KAAKX,QAAQ,CAACO,MAAM,EAAE;QACrC,IAAI2C,IAAI,CAACgB,QAAQ,EAAE,IAAIhB,IAAI,CAACyE,OAAO,EAAE;UACjC,IAAI,CAACie,oBAAoB,EAAE,CAAA;EAC/B,OAAC,MAAM;UACH,IAAI,CAACC,UAAU,EAAE,CAAA;EACrB,OAAA;EACJ,KAAA;EACJ,GAAA;EAACtjB,EAAAA,YAAA,CAAAkhB,aAAA,EAAA,CAAA;MAAAjhB,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA2D,MAAAA,GAAsB;EAClB,MAAA,IAAI,CAACqf,MAAM,CAACrf,MAAM,EAAE,CAAA;EACxB,KAAA;EAAC,GAAA,EAAA;MAAA5D,GAAA,EAAA,WAAA;MAAAC,KAAA,EAED,SAAAijB,SAAAA,GAAyB;QACrB,IAAI,CAACpc,QAAQ,CAAClJ,KAAK,CAAC,IAAI,CAACqlB,MAAM,CAAC,CAAA;EACpC,KAAA;EAAC,GAAA,EAAA;MAAAjjB,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAAkjB,UAAAA,GAA0B;QACtB,IAAI,CAACrc,QAAQ,CAACpJ,MAAM,CAAC,IAAI,CAACulB,MAAM,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;MAAAjjB,GAAA,EAAA,sBAAA;MAAAC,KAAA,EAED,SAAAmjB,oBAAAA,GAAoC;QAChC,IAAME,YAAY,GAAG,IAAI,CAAC5iB,IAAI,CAAChB,QAAQ,CAAC,CAAC,CAAC,CAACuI,OAAO,CAAA;EAElD,MAAA,IAAIqb,YAAY,EAAE;UACdvc,MAAM,CAACuc,YAAY,CAAC,CAAC5lB,MAAM,CAAC,IAAI,CAACulB,MAAM,CAAC,CAAA;EAC5C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjjB,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAAojB,UAAAA,GAA0B;QACtB,IAAI,CAACvc,QAAQ,CAAClJ,KAAK,CAAC,IAAI,CAACqlB,MAAM,CAAC,CAAA;EAChC,MAAA,IAAI,CAACA,MAAM,CAAC9a,QAAQ,CAAC,eAAe,CAAC,CAAA;EACzC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA8Y,aAAA,CAAA;EAAA,CAAA,EAAA;;EC9OL,IAAMsC,mBAAmB,GAAG,yBAAyB,CAAA;EACrD,IAAMC,cAAc,GAAG,sBAAsB,CAAA;AAEhCC,MAAAA,YAAY,0BAAAC,YAAA,EAAA;IAAAtW,SAAA,CAAAqW,YAAA,EAAAC,YAAA,CAAA,CAAA;EAAA,EAAA,IAAArW,MAAA,GAAAC,YAAA,CAAAmW,YAAA,CAAA,CAAA;EAAA,EAAA,SAAAA,YAAA,GAAA;EAAA,IAAA,IAAAlf,KAAA,CAAA;EAAAlF,IAAAA,eAAA,OAAAokB,YAAA,CAAA,CAAA;EAAA,IAAA,KAAA,IAAAxL,IAAA,GAAAjZ,SAAA,CAAAC,MAAA,EAAA0Y,IAAA,GAAA9Y,IAAAA,KAAA,CAAAoZ,IAAA,GAAAC,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA,EAAA,EAAA;EAAAP,MAAAA,IAAA,CAAAO,IAAA,CAAAlZ,GAAAA,SAAA,CAAAkZ,IAAA,CAAA,CAAA;EAAA,KAAA;MAAA3T,KAAA,GAAA8I,MAAA,CAAA7O,IAAA,CAAAsZ,KAAA,CAAAzK,MAAA,EAAA,CAAA,IAAA,CAAA,CAAAnK,MAAA,CAAAyU,IAAA,CAAA,CAAA,CAAA;MAAArY,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAAjF,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAAjF,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CA42BC,EAAA,aAAA,EAAA,UAClBzD,CAAgE,EACzD;QACP,IAAM6iB,WAAW,GAAGpf,KAAA,CAAKqf,cAAc,CAAC9iB,CAAC,CAACkG,MAAM,CAAC,CAAA;EAEjD,MAAA,IAAI2c,WAAW,EAAE;EACb,QAAA,IAAIA,WAAW,CAACE,IAAI,KAAK,QAAQ,EAAE;EAC/Btf,UAAAA,KAAA,CAAKuf,MAAM,CAACH,WAAW,CAACjjB,IAAI,EAAE6D,KAAA,CAAK2C,OAAO,CAAC2D,KAAK,CAAC,CAAA;YAEjD/J,CAAC,CAAC+X,cAAc,EAAE,CAAA;YAClB/X,CAAC,CAACijB,eAAe,EAAE,CAAA;EACvB,SAAC,MAAM,IAAIJ,WAAW,CAACE,IAAI,KAAK,OAAO,EAAE;EACrC,UAAA,IAAMnjB,MAAI,GAAGijB,WAAW,CAACjjB,IAAI,CAAA;EAC7B,UAAA,IAAM6K,KAAK,GAAGhH,KAAA,CAAKiH,aAAa,CAAC,YAAY,EAAE;EAC3C9K,YAAAA,IAAI,EAAJA,MAAI;EACJsjB,YAAAA,WAAW,EAAEljB,CAAAA;EACjB,WAAC,CAAC,CAAA;EAEF,UAAA,IAAI,CAACyK,KAAK,CAACQ,kBAAkB,EAAE,EAAE;EAC7BxH,YAAAA,KAAA,CAAK0f,YAAY,CAACvjB,MAAI,CAAC,CAAA;EAC3B,WAAA;EACJ,SAAA;EACJ,OAAA;OACH,CAAA,CAAA;EAAApB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAEwB,EAAA,gBAAA,EAAA,UACrBzD,CAAsE,EAC/D;QACP,IAAM6iB,WAAW,GAAGpf,KAAA,CAAKqf,cAAc,CAAC9iB,CAAC,CAACkG,MAAM,CAAC,CAAA;QAEjD,IAAI,CAAA2c,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAXA,WAAW,CAAEE,IAAI,MAAK,OAAO,EAAE;EAC/Btf,QAAAA,KAAA,CAAKiH,aAAa,CAAC,eAAe,EAAE;YAChC9K,IAAI,EAAEijB,WAAW,CAACjjB,IAAI;EACtBsjB,UAAAA,WAAW,EAAEljB,CAAAA;EACjB,SAAC,CAAC,CAAA;EACN,OAAA;OACH,CAAA,CAAA;EAAAxB,IAAAA,eAAA,CAAAoO,sBAAA,CAAAnJ,KAAA,CAyC2B,EAAA,mBAAA,EAAA,UACxBzD,CAAsE,EACrE;EACD,MAAA,IAAM+hB,IAAI,GAAG9b,MAAM,CAACjG,CAAC,CAACkG,MAAM,CAAC,CAACkd,OAAO,CAAC,gCAAgC,CAAC,CAAA;QACvE,IAAIrB,IAAI,CAAC5jB,MAAM,EAAE;EACb,QAAA,IAAMyB,MAAI,GAAG6D,KAAA,CAAK4f,OAAO,CAACtB,IAAI,CAAC,CAAA;EAC/B,QAAA,IAAIniB,MAAI,EAAE;YACNI,CAAC,CAAC+X,cAAc,EAAE,CAAA;YAClB/X,CAAC,CAACijB,eAAe,EAAE,CAAA;EAEnBxf,UAAAA,KAAA,CAAKiH,aAAa,CAAC,kBAAkB,EAAE;EACnC9K,YAAAA,IAAI,EAAJA,MAAI;EACJsjB,YAAAA,WAAW,EAAEljB,CAAAA;EACjB,WAAC,CAAC,CAAA;EACF,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;OACd,CAAA,CAAA;EAAA,IAAA,OAAAyD,KAAA,CAAA;EAAA,GAAA;EAAAxE,EAAAA,YAAA,CAAA0jB,YAAA,EAAA,CAAA;MAAAzjB,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAx5BD,SAAA6jB,MAAcpjB,CAAAA,IAAU,EAA6C;EAAA,MAAA,IAA3C0jB,UAA0B,GAAAplB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;QACvD,IAAI,CAAC0B,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM1Y,KAAK,GAAGuZ,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,KAAA,CAAA,GAAVA,UAAU,GAAI,IAAI,CAACld,OAAO,CAAC2D,KAAK,CAAA;QAE9C,IAAInK,IAAI,CAACyE,OAAO,EAAE;EACd,QAAA,IAAI,CAACiR,SAAS,CAAC1V,IAAI,EAAEmK,KAAK,CAAC,CAAA;EAC/B,OAAC,MAAM;EACH,QAAA,IAAI,CAACsL,QAAQ,CAACzV,IAAI,EAAEmK,KAAK,CAAC,CAAA;EAC9B,OAAA;QAEA,OAAO,IAAI,CAAC5C,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAAqkB,OAAAA,GAAuB;QACnB,OAAO,IAAI,CAACxkB,IAAI,CAAA;EACpB,KAAA;EAAC,GAAA,EAAA;MAAAE,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAiW,UAAAA,CACIxV,IAAiB,EACjB6jB,YAAgC,EAC1B;EACN,MAAA,IAAI,CAACN,YAAY,CAACvjB,IAAI,EAAE6jB,YAAY,CAAC,CAAA;QACrC,OAAO,IAAI,CAACtc,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAED,SAAAkV,eAAAA,GAAuC;EACnC,MAAA,OAAO,IAAI,CAACnE,iBAAiB,CAACmE,eAAe,EAAE,CAAA;EACnD,KAAA;EAAC,GAAA,EAAA;MAAAnV,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAAukB,MAAAA,GAAwB;QACpB,OAAO3P,IAAI,CAAC0F,SAAS,CAAC,IAAI,CAACza,IAAI,CAACyC,OAAO,EAAE,CAAC,CAAA;EAC9C,KAAA;EAAC,GAAA,EAAA;MAAAvC,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsT,QAAAA,CAAgB5U,IAAgB,EAAEmU,UAAuB,EAAU;EAC/D,MAAA,IAAI,CAAC2R,UAAU,CAAC9lB,IAAI,EAAEmU,UAAU,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC7K,OAAO,CAAA;EACvB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAZI,GAAA,EAAA;MAAAjI,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAcA,SAAAykB,eACIC,CAAAA,MAA4B,EAC5BC,MAA4C,EAC5CC,MAA8B,EACxB;EACN,MAAA,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE;EAC5B;EACA,QAAA,IAAI,CAACG,iBAAiB,CAClBH,MAAM,EACNC,MAAM,EACNC,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,KAAA,CAAA,GAANA,MAAM,GAAI,IAAI,CACjB,CAAA;EACL,OAAC,MAAM;EACH;UACA,IAAI,CAACC,iBAAiB,CAClB,IAAI,EACJH,MAAM,EACNC,MAAM,CACT,CAAA;EACL,OAAA;QAEA,OAAO,IAAI,CAAC3c,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,QAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8kB,MAAchS,CAAAA,UAAwC,EAAU;QAC5D,IAAI,CAAC+R,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE/R,UAAU,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAC9K,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,SAAA;MAAAC,KAAA,EAED,SAAA0H,OAAAA,GAAyB;EACrB,MAAA,IAAI,CAAC2D,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3B,OAAO,IAAI,CAACrD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+D,WAAmBC,CAAAA,MAAc,EAAe;EAC5C,MAAA,OAAO,IAAI,CAACnE,IAAI,CAACkE,WAAW,CAACC,MAAM,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;MAAAjE,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8C,aAAqB3E,CAAAA,IAAY,EAAe;EAC5C,MAAA,OAAO,IAAI,CAAC0B,IAAI,CAACiD,aAAa,CAAC3E,IAAI,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;MAAA4B,GAAA,EAAA,wBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgD,sBAA8B7E,CAAAA,IAAY,EAAQ;EAC9C,MAAA,OAAO,IAAI,CAAC0B,IAAI,CAACmD,sBAAsB,CAAC7E,IAAI,CAAC,CAAA;EACjD,KAAA;EAAC,GAAA,EAAA;MAAA4B,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4E,kBAAAA,CAA0B7E,GAAW,EAAEC,KAAc,EAAU;QAC3D,OAAO,IAAI,CAACH,IAAI,CAAC+E,kBAAkB,CAAC7E,GAAG,EAAEC,KAAK,CAAC,CAAA;EACnD,KAAA;EAAC,GAAA,EAAA;MAAAD,GAAA,EAAA,sBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+kB,oBACI/c,CAAAA,OAA0C,EAC/B;QACX,OAAO,IAAI,CAACkc,OAAO,CAACpd,MAAM,CAACkB,OAAO,CAAC,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,mBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+C,iBAAyBpB,CAAAA,QAAiC,EAAe;EACrE,MAAA,OAAO,IAAI,CAAC9B,IAAI,CAACkD,iBAAiB,CAACpB,QAAQ,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;MAAA5B,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAkW,QACIzV,CAAAA,IAAU,EACVikB,MAAmC,EACnCC,MAAyB,EACnB;EAAA,MAAA,IAAAjf,MAAA,GAAA,IAAA,CAAA;QACN,IAAI,CAACjF,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM0B,WAAW,GAAG,SAAdA,WAAWA,GAA6C;EAC1D,QAAA,IAAIlS,UAAmC,CAAA;EACvC,QAAA,IAAIlI,KAAqB,CAAA;EAEzB,QAAA,IAAIoE,UAAU,CAAC0V,MAAM,CAAC,EAAE;EACpB5R,UAAAA,UAAU,GAAG4R,MAAiC,CAAA;EAC9C9Z,UAAAA,KAAK,GAAG,IAAI,CAAA;EAChB,SAAC,MAAM;EACHA,UAAAA,KAAK,GAAG8Z,MAAiB,CAAA;EACzB5R,UAAAA,UAAU,GAAG6R,MAA0B,CAAA;EAC3C,SAAA;UAEA,IAAI/Z,KAAK,IAAI,IAAI,EAAE;EAAA,UAAA,IAAAqa,oBAAA,CAAA;EACfra,UAAAA,KAAK,GAAAqa,CAAAA,oBAAA,GAAGvf,MAAI,CAACuB,OAAO,CAAC2D,KAAK,MAAAqa,IAAAA,IAAAA,oBAAA,KAAAA,KAAAA,CAAAA,GAAAA,oBAAA,GAAI,KAAK,CAAA;EACvC,SAAA;EAEA,QAAA,OAAO,CAACra,KAAK,EAAEkI,UAAU,CAAC,CAAA;SAC7B,CAAA;QAED,IAAAoS,YAAA,GAA4BF,WAAW,EAAE;UAAAG,aAAA,GAAAC,cAAA,CAAAF,YAAA,EAAA,CAAA,CAAA;EAAlCta,QAAAA,KAAK,GAAAua,aAAA,CAAA,CAAA,CAAA;EAAErS,QAAAA,UAAU,GAAAqS,aAAA,CAAA,CAAA,CAAA,CAAA;QAExB,IAAI,CAACxa,SAAS,CAAClK,IAAI,EAAEmK,KAAK,EAAEkI,UAAU,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC9K,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAmW,SAAAA,CAAiB1V,IAAU,EAAE0jB,UAA2B,EAAU;QAC9D,IAAI,CAAC1jB,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM1Y,KAAK,GAAGuZ,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,KAAA,CAAA,GAAVA,UAAU,GAAI,IAAI,CAACld,OAAO,CAAC2D,KAAK,CAAA;QAE9C,IAAInK,IAAI,CAACgB,QAAQ,EAAE,IAAIhB,IAAI,CAACnB,aAAa,EAAE;EACvC,QAAA,IAAIsiB,aAAa,CAACnhB,IAAI,EAAE,IAAI,CAAC,CAAC+hB,KAAK,CAC/B5X,KAAK,EACL,IAAI,CAAC3D,OAAO,CAAC8a,cAAc,CAC9B,CAAA;UAED,IAAI,CAAC3H,SAAS,EAAE,CAAA;EACpB,OAAA;QAEA,OAAO,IAAI,CAACpS,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAAyG,UAAAA,GAA6B;EACzB,MAAA,OAAO,IAAI,CAAC6Y,UAAU,CAAC7Y,UAAU,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;MAAA1G,GAAA,EAAA,iBAAA;MAAAC,KAAA,EAED,SAAAmf,eAAAA,GAAiC;EAC7B,MAAA,IAAI,CAACG,UAAU,CAAC5X,OAAO,EAAE,CAAA;QACzB,OAAO,IAAI,CAACM,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqlB,YAAAA,CACIC,WAAqB,EACrBC,YAAkB,EACP;EACX,MAAA,IAAMC,OAAO,GAAGD,YAAY,CAACriB,QAAQ,CAACoiB,WAAW,CAAC,CAAA;EAElD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAACna,gBAAgB,CAACka,YAAY,CAAC7lB,MAAM,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,OAAO8lB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;MAAAzlB,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAylB,aAAAA,CACIH,WAAqB,EACrBC,YAAkB,EACP;QACX,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,MAAMnB,KAAK,CAACb,cAAc,GAAG,cAAc,CAAC,CAAA;EAChD,OAAA;EAEA,MAAA,IAAMiC,OAAO,GAAGD,YAAY,CAACliB,SAAS,CAACiiB,WAAW,CAAC,CAAA;EAEnD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAACna,gBAAgB,CAACka,YAAY,CAAC7lB,MAAM,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,OAAO8lB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;MAAAzlB,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAA0lB,aAAAA,CACIJ,WAAqB,EACrBC,YAAkB,EACP;QACX,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,MAAMnB,KAAK,CAACb,cAAc,GAAG,cAAc,CAAC,CAAA;EAChD,OAAA;EAEA,MAAA,IAAMiC,OAAO,GAAGD,YAAY,CAACjiB,SAAS,CAACgiB,WAAW,CAAC,CAAA;EAEnD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAACna,gBAAgB,CAACma,OAAO,CAAC9lB,MAAM,CAAC,CAAA;EACzC,OAAA;EAEA,MAAA,OAAO8lB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;MAAAzlB,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAA2lB,UAAkBllB,CAAAA,IAAU,EAAU;QAClC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAAC7iB,IAAI,CAACf,MAAM,EAAE;UACd,MAAM0kB,KAAK,CAAC,oBAAoB,CAAC,CAAA;EACrC,OAAA;QAEA,IAAI,CAACrT,iBAAiB,CAACwL,mBAAmB,CAAC9b,IAAI,EAAE,IAAI,CAAC,CAAC;;EAEvD,MAAA,IAAMf,MAAM,GAAGe,IAAI,CAACf,MAAM,CAAA;QAC1Be,IAAI,CAACkD,MAAM,EAAE,CAAA;EACb,MAAA,IAAI,CAAC0H,gBAAgB,CAAC3L,MAAM,CAAC,CAAA;QAE7B,OAAO,IAAI,CAACsI,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4lB,UAAAA,CAAkBN,WAAqB,EAAEO,eAAsB,EAAQ;EACnE,MAAA,IAAMhT,UAAU,GAAGgT,eAAe,IAAI,IAAI,CAAChmB,IAAI,CAAA;EAE/C,MAAA,IAAMY,IAAI,GAAGoS,UAAU,CAACjP,MAAM,CAAC0hB,WAAW,CAAC,CAAA;EAE3C,MAAA,IAAI,CAACja,gBAAgB,CAACwH,UAAU,CAAC,CAAA;EAEjC,MAAA,OAAOpS,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAED,SAAA8lB,WAAAA,CAAmBR,WAAqB,EAAEO,eAAsB,EAAQ;QACpE,IAAMhT,UAAU,GAAGgT,eAAe,KAAfA,IAAAA,IAAAA,eAAe,cAAfA,eAAe,GAAI,IAAI,CAAChmB,IAAI,CAAA;EAE/C,MAAA,IAAMY,IAAI,GAAGoS,UAAU,CAAChP,OAAO,CAACyhB,WAAW,CAAC,CAAA;EAE5C,MAAA,IAAI,CAACja,gBAAgB,CAACwH,UAAU,CAAC,CAAA;EAEjC,MAAA,OAAOpS,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+lB,UAAAA,CAAkBtlB,IAAU,EAAE/B,IAAc,EAAU;QAClD,IAAI,CAAC+B,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM0C,WAAW,GACbrnB,OAAA,CAAOD,IAAI,CAAA,KAAK,QAAQ,IAAIA,IAAI,CAACyF,EAAE,IAAIzF,IAAI,CAACyF,EAAE,KAAK1D,IAAI,CAAC0D,EAAE,CAAA;EAE9D,MAAA,IAAI6hB,WAAW,EAAE;EACb,QAAA,IAAI,CAACnmB,IAAI,CAACwE,mBAAmB,CAAC5D,IAAI,CAAC,CAAA;EACvC,OAAA;EAEAA,MAAAA,IAAI,CAACjB,OAAO,CAACd,IAAI,CAAC,CAAA;EAElB,MAAA,IAAIsnB,WAAW,EAAE;EACb,QAAA,IAAI,CAACnmB,IAAI,CAACqE,cAAc,CAACzD,IAAI,CAAC,CAAA;EAClC,OAAA;EAEA,MAAA,IACI9B,OAAA,CAAOD,IAAI,CAAK,KAAA,QAAQ,IACxBA,IAAI,CAAC,UAAU,CAAC,IAChBA,IAAI,CAAC,UAAU,CAAC,YAAYE,KAAK,EACnC;UACE6B,IAAI,CAACP,cAAc,EAAE,CAAA;EAErB,QAAA,IAAIxB,IAAI,CAACe,QAAQ,CAACT,MAAM,EAAE;EACtByB,UAAAA,IAAI,CAACR,YAAY,CAACvB,IAAI,CAACe,QAAQ,CAAW,CAAA;EAC9C,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAC4L,gBAAgB,CAAC5K,IAAI,CAAC,CAAA;QAE3B,OAAO,IAAI,CAACuH,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,yBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAimB,uBAAgCC,CAAAA,OAAa,EAAW;EACpD,MAAA,IAAMjR,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;QAE3C,IAAI,CAACD,YAAY,EAAE;EACf,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;UACH,OAAOiR,OAAO,KAAKjR,YAAY,IAAIiR,OAAO,CAAC7jB,UAAU,CAAC4S,YAAY,CAAC,CAAA;EACvE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAlV,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAkC,QAAgBzB,CAAAA,IAAU,EAAE2B,UAAgB,EAAElE,QAAgB,EAAU;QACpE,IAAI,CAACuC,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;QAEA,IAAI,CAAClhB,UAAU,EAAE;EACb,QAAA,MAAMgiB,KAAK,CAACb,cAAc,GAAG,YAAY,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,IAAM4C,aAAa,GAAG3nB,WAAW,CAACN,QAAQ,CAAC,CAAA;QAE3C,IAAIioB,aAAa,KAAKlnB,SAAS,EAAE;UAC7B,IAAI,CAACY,IAAI,CAACqC,QAAQ,CAACzB,IAAI,EAAE2B,UAAU,EAAE+jB,aAAa,CAAC,CAAA;EACnD,QAAA,IAAI,CAAC9a,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC/B,OAAA;QAEA,OAAO,IAAI,CAACrD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,qBAAA;MAAAC,KAAA,EAED,SAAA6a,mBAAAA,GAAgD;EAC5C,MAAA,OAAO,IAAI,CAACuL,gBAAgB,CAACvL,mBAAmB,EAAE,CAAA;EACtD,KAAA;EAAC,GAAA,EAAA;MAAA9a,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAqc,cAAAA,CAAsB5b,IAAU,EAAEygB,YAAsB,EAAU;QAC9D,IAAI,CAACzgB,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAACvS,iBAAiB,CAACsL,cAAc,CAAC5b,IAAI,CAAC,CAAA;EAE3C,MAAA,IAAI,CAAC8I,sBAAsB,CAAC9I,IAAI,CAAC,CAACwgB,MAAM,CACpCC,YAAY,KAAKjiB,SAAS,GAAG,IAAI,GAAGiiB,YAAY,CACnD,CAAA;QAED,IAAI,CAAC9G,SAAS,EAAE,CAAA;QAEhB,OAAO,IAAI,CAACpS,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,kBAAA;MAAAC,KAAA,EAED,SAAAqb,gBAAAA,GAAkC;EAC9B,MAAA,OAAO,IAAI,CAACtK,iBAAiB,CAACsK,gBAAgB,EAAE,CAAA;EACpD,KAAA;EAAC,GAAA,EAAA;MAAAtb,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgR,cAAsBvQ,CAAAA,IAAU,EAAW;QACvC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,OAAO,IAAI,CAACvS,iBAAiB,CAACC,cAAc,CAACvQ,IAAI,CAAC,CAAA;EACtD,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,qBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuc,mBAA2B9b,CAAAA,IAAU,EAAU;QAC3C,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAACvS,iBAAiB,CAACwL,mBAAmB,CAAC9b,IAAI,CAAC,CAAA;EAEhD,MAAA,IAAI,CAAC8I,sBAAsB,CAAC9I,IAAI,CAAC,CAAC+gB,QAAQ,EAAE,CAAA;QAC5C,IAAI,CAACpH,SAAS,EAAE,CAAA;QAEhB,OAAO,IAAI,CAACpS,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuW,YAAoB9V,CAAAA,IAAU,EAAU;QACpC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2jB,KAAK,CAACd,mBAAmB,CAAC,CAAA;EACpC,OAAA;QAEA,IAAM+C,UAAU,GAAGvf,MAAM,CAACrG,IAAI,CAACuH,OAAO,CAAC,CAACL,MAAM,EAAE,CAAA;QAChD,IAAM2e,OAAO,GAAGD,UAAU,GAAGA,UAAU,CAACxe,GAAG,GAAG,CAAC,CAAA;EAE/C,MAAA,IAAM0e,UAAU,GAAG,IAAI,CAACxT,GAAG,CAACpL,MAAM,EAAE,CAAA;QACpC,IAAM8V,OAAO,GAAG8I,UAAU,GAAGA,UAAU,CAAC1e,GAAG,GAAG,CAAC,CAAA;EAE/C,MAAA,IAAMA,GAAG,GAAGye,OAAO,GAAG7I,OAAO,CAAA;EAE7B,MAAA,IAAI,CAACrH,aAAa,CAACkH,SAAS,CAACzV,GAAG,CAAC,CAAA;QAEjC,OAAO,IAAI,CAACG,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAua,QAAAA,GAAqC;EACjC,MAAA,OAAO,IAAI,CAAC6L,gBAAgB,CAAC7L,QAAQ,EAAE,CAAA;EAC3C,KAAA;EAAC,GAAA,EAAA;MAAAxa,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwmB,QAAgBnM,CAAAA,KAAiB,EAAU;EACvC,MAAA,IAAI,CAAC+L,gBAAgB,CAAC5K,eAAe,CAACnB,KAAK,CAAC,CAAA;EAC5C,MAAA,IAAI,CAAChP,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAE3B,OAAO,IAAI,CAACrD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAymB,SAAAA,CAAiBC,MAAc,EAAE1mB,KAAc,EAAU;EACpD,MAAA,IAAI,CAACiH,OAAO,CAAwCyf,MAAM,CAAC,GAAG1mB,KAAK,CAAA;QACpE,OAAO,IAAI,CAACgI,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAAqV,QAAAA,GAA0B;EACtB,MAAA,IAAMJ,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAC3C,MAAA,IAAID,YAAY,EAAE;EACd,QAAA,IAAI,CAAC0R,UAAU,CAACtR,QAAQ,CAACJ,YAAY,CAAC,CAAA;EAC1C,OAAA;QAEA,OAAO,IAAI,CAACjN,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAAuV,MAAAA,GAAwB;EACpB,MAAA,IAAMN,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAC3C,MAAA,IAAID,YAAY,EAAE;EACd,QAAA,IAAI,CAAC0R,UAAU,CAACpR,MAAM,CAACN,YAAY,CAAC,CAAA;EACxC,OAAA;QAEA,OAAO,IAAI,CAACjN,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;MAAAjI,GAAA,EAAA,YAAA;MAAAC,KAAA,EAED,SAAA4mB,UAAAA,GAA4B;EACxB,MAAA,OAAOC,OAAW,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;MAAA9mB,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuL,aAAAA,CACIub,SAAiB,EACjBC,MAAgC,EACpB;QACZ,IAAMzb,KAAK,GAAGxE,MAAM,CAACkgB,KAAK,CAACF,SAAS,EAAEC,MAAM,CAAC,CAAA;EAC7C,MAAA,IAAI,CAAC/e,OAAO,CAACuZ,OAAO,CAACjW,KAAK,CAAC,CAAA;EAC3B,MAAA,OAAOA,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAAvL,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAA2K,SACIlK,CAAAA,IAAU,EAGN;EAAA,MAAA,IAAA2L,MAAA,GAAA,IAAA,CAAA;EAAA,MAAA,IAFJxB,KAAK,GAAA7L,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;QAAA,IACZ+T,UAAmC,GAAA/T,SAAA,CAAAC,MAAA,GAAAD,CAAAA,GAAAA,SAAA,MAAAE,SAAA,CAAA;QAEnC,IAAMgoB,UAAU,GAAG,SAAbA,UAAUA,CACZC,KAAW,EACXC,MAAe,EACfC,WAAoC,EAC7B;UACP,IAAMC,aAAa,GAAG,IAAIzF,aAAa,CAACsF,KAAK,EAAE9a,MAAI,CAAC,CAAA;EACpDib,QAAAA,aAAa,CAACvF,IAAI,CACdsF,WAAW,EACXD,MAAM,EACN/a,MAAI,CAACnF,OAAO,CAAC8a,cAAc,CAC9B,CAAA;SACJ,CAAA;QAED,IAAIthB,IAAI,CAACgB,QAAQ,EAAE,IAAIhB,IAAI,CAACnB,aAAa,EAAE;UACvC,IAAImB,IAAI,CAAClB,cAAc,EAAE;YACrB,IAAI,CAAC+nB,kBAAkB,CAAC7mB,IAAI,EAAEmK,KAAK,EAAEkI,UAAU,CAAC,CAAA;EACpD,SAAC,MAAM;EACH,UAAA,IAAIpT,MAAM,GAAGe,IAAI,CAACf,MAAM,CAAA;EAExB,UAAA,OAAOA,MAAM,EAAE;EACX;cACA,IAAIA,MAAM,CAACA,MAAM,EAAE;EACfunB,cAAAA,UAAU,CAACvnB,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;EACnC,aAAA;cACAA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAAA;EAC1B,WAAA;EAEAunB,UAAAA,UAAU,CAACxmB,IAAI,EAAEmK,KAAK,EAAEkI,UAAU,CAAC,CAAA;YACnC,IAAI,CAACsH,SAAS,EAAE,CAAA;EACpB,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;MAAAra,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAIA,SAAAqL,gBAAwBoE,CAAAA,QAAqB,EAAQ;EACjD,MAAA,IAAMyR,YAAY,GAAG,IAAI,CAACnQ,iBAAiB,CAACyF,aAAa,EAAE,CAAA;QAC3D,IAAM+Q,UAAU,GAAG9X,QAAQ,GACrB,IAAI,CAACwW,uBAAuB,CAACxW,QAAQ,CAAC,GACtC,KAAK,CAAA;EAEX,MAAA,IAAI,CAAC2S,QAAQ,CAAC5S,MAAM,CAACC,QAAQ,CAAC,CAAA;EAE9B,MAAA,IAAI8X,UAAU,EAAE;EACZ,QAAA,IAAI,CAACC,iBAAiB,CAACtG,YAAY,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,IAAI,CAAC3V,aAAa,CAAC,cAAc,CAAC,CAAA;EACtC,KAAA;EAAC,GAAA,EAAA;MAAAxL,GAAA,EAAA,wBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuJ,sBAA8B9I,CAAAA,IAAU,EAAe;EACnD,MAAA,IAAIA,IAAI,CAACgB,QAAQ,EAAE,EAAE;EACjB,QAAA,OAAO,IAAImgB,aAAa,CAACnhB,IAAI,EAAE,IAAI,CAAC,CAAA;EACxC,OAAC,MAAM;EACH,QAAA,OAAO,IAAIogB,WAAW,CAACpgB,IAAI,EAAE,IAAI,CAAC,CAAA;EACtC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,iBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAoH,eAAuBP,CAAAA,QAA6B,EAAsB;EACtE,MAAA,IAAMpG,IAAI,GAAG,IAAI,CAACyjB,OAAO,CAACrd,QAAQ,CAAC,CAAA;EACnC,MAAA,IAAIpG,IAAI,EAAE;EACN,QAAA,OAAO,IAAI,CAAC8I,sBAAsB,CAAC9I,IAAI,CAAC,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,kBAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4gB,gBAAwB5Y,CAAAA,OAAoB,EAAW;QACnD,IAAMvH,IAAI,GAAG,IAAI,CAACyjB,OAAO,CAACpd,MAAM,CAACkB,OAAO,CAAC,CAAC,CAAA;QAE1C,OAAOvH,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACZ,IAAI,KAAK,IAAI,CAACA,IAAI,CAAA;EAClD,KAAA;EAAC,GAAA,EAAA;MAAAE,GAAA,EAAA,gBAAA;MAAAC,KAAA,EAED,SAAAkM,cAAAA,GAAgC;EAC5B,MAAA,OAAO,IAAI,CAACkK,aAAa,CAAC8H,aAAa,EAAE,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;MAAAne,GAAA,EAAA,MAAA;MAAAC,KAAA,EAED,SAAAoX,IAAAA,GAAoB;EAChBqQ,MAAAA,IAAA,CAAAC,eAAA,CAAAlE,YAAA,CAAAnlB,SAAA,iBAAAE,IAAA,CAAA,IAAA,CAAA,CAAA;EAEA,MAAA,IAAI,CAACyJ,OAAO,GAAG,IAAI,CAAC+K,GAAG,CAAA;QACvB,IAAI,CAACkK,aAAa,GAAG,KAAK,CAAA;QAE1B,IAAI,CAAChW,OAAO,CAACsJ,GAAG,GAAG,IAAI,CAACoX,YAAY,EAAE,CAAA;EAEtC,MAAA,IAAI,IAAI,CAAC1gB,OAAO,CAACsI,UAAU,IAAI,IAAI,EAAE;UACjC,IAAI,CAACtI,OAAO,CAACsI,UAAU,GAAG,IAAI,CAACqY,oBAAoB,EAAE,CAAA;EACzD,OAAA;EAEA,MAAA,IAAI,CAACxF,QAAQ,GAAG,IAAIlT,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC1C,MAAA,IAAI,CAAC2Y,UAAU,GAAG,IAAInV,UAAU,CAAC,IAAI,CAAC,CAAA;EACtC,MAAA,IAAI,CAAC0T,gBAAgB,GAAG,IAAIjM,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAClD,MAAA,IAAI,CAACpJ,iBAAiB,GAAG,IAAIsP,iBAAiB,CAAC,IAAI,CAAC,CAAA;EACpD,MAAA,IAAI,CAACf,UAAU,GAAG,IAAIjZ,kBAAkB,CAAC,IAAI,CAAC,CAAA;EAC9C,MAAA,IAAI,CAAC+P,aAAa,GAAG,IAAI4G,aAAa,CAAC,IAAI,CAAC,CAAA;EAC5C,MAAA,IAAI,CAAC2J,UAAU,GAAG,IAAI5R,UAAU,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,CAAC+S,QAAQ,EAAE,CAAA;QAEf,IAAI,CAAC9f,OAAO,CAAC6N,EAAE,CAAC,OAAO,EAAE,IAAI,CAACkS,WAAW,CAAC,CAAA;QAC1C,IAAI,CAAC/f,OAAO,CAAC6N,EAAE,CAAC,UAAU,EAAE,IAAI,CAACmS,cAAc,CAAC,CAAA;EAEhD,MAAA,IAAI,IAAI,CAAC/gB,OAAO,CAACghB,cAAc,EAAE;UAC7B,IAAI,CAACjgB,OAAO,CAAC6N,EAAE,CAAC,aAAa,EAAE,IAAI,CAACqS,iBAAiB,CAAC,CAAA;EAC1D,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAnoB,GAAA,EAAA,QAAA;MAAAC,KAAA,EAED,SAAA+V,MAAAA,GAAsB;EAClB,MAAA,IAAI,CAAC/N,OAAO,CAACoD,KAAK,EAAE,CAAA;EACpB,MAAA,IAAI,CAACpD,OAAO,CAACgO,GAAG,EAAE,CAAA;EAElB,MAAA,IAAI,CAAC2Q,UAAU,CAAC5Q,MAAM,EAAE,CAAA;QAExB,IAAI,CAAClW,IAAI,GAAG,IAAIhB,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;EAE9B4oB,MAAAA,IAAA,CAAAC,eAAA,CAAAlE,YAAA,CAAAnlB,SAAA,mBAAAE,IAAA,CAAA,IAAA,CAAA,CAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAwB,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAED,SAAA4G,YAAuBD,CAAAA,YAA0B,EAAkB;EAC/D,MAAA,IAAI,IAAI,CAACM,OAAO,CAACuJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAC8O,UAAU,CAAC1Y,YAAY,CAACD,YAAY,CAAC,CAAA;EACrD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsH,UAAqBX,CAAAA,YAA0B,EAAW;EACtD,MAAA,IAAI,IAAI,CAACM,OAAO,CAACuJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAC8O,UAAU,CAAChY,UAAU,CAACX,YAAY,CAAC,CAAA;EACnD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAAmI,SAAoBxB,CAAAA,YAA0B,EAAW;EACrD,MAAA,IAAI,IAAI,CAACM,OAAO,CAACuJ,WAAW,EAAE;UAC1B,IAAMvO,MAAM,GAAG,IAAI,CAACqd,UAAU,CAACnX,SAAS,CAACxB,YAAY,CAAC,CAAA;EAEtD,QAAA,IAAI,CAACyP,aAAa,CAAC8G,cAAc,EAAE,CAAA;EACnC,QAAA,OAAOjb,MAAM,CAAA;EACjB,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAlC,GAAA,EAAA,WAAA;EAAAC,IAAAA,KAAA,EAED,SAAA+I,SAAoBpC,CAAAA,YAA0B,EAAW;EACrD,MAAA,IAAI,IAAI,CAACM,OAAO,CAACuJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAC8O,UAAU,CAACvW,SAAS,CAACpC,YAAY,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAA5G,GAAA,EAAA,eAAA;MAAAC,KAAA,EAED,SAAAia,aAAAA,GAAkC;EAAA,MAAA,IAAAkO,qBAAA,CAAA;EAC9B,MAAA,OAAA,CAAAA,qBAAA,GAAO,IAAI,CAAClhB,OAAO,CAACmhB,aAAa,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI,CAAC,CAAA;EAC1C,KAAA;EAAC,GAAA,EAAA;MAAApoB,GAAA,EAAA,UAAA;MAAAC,KAAA,EAED,SAAA8nB,QAAAA,GAAyB;EACrB,MAAA,IAAI,IAAI,CAAC7gB,OAAO,CAACvI,IAAI,EAAE;UACnB,IAAI,CAAC8lB,UAAU,CAAC,IAAI,CAACvd,OAAO,CAACvI,IAAI,EAAE,IAAI,CAAC,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,IAAM2pB,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,IAAI,CAAC,CAAA;EAEzC,QAAA,IAAID,OAAO,EAAE;YACT,IAAI,CAACxD,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;EAC5C,SAAC,MAAM;EACH,UAAA,IAAI,CAACL,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;EAC7B,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAzkB,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsoB,cAAuB7nB,CAAAA,IAAiB,EAA8B;EAAA,MAAA,IAAA+M,MAAA,GAAA,IAAA,CAAA;EAClE,MAAA,IAAM6a,OAAO,GACT,IAAI,CAACphB,OAAO,CAACohB,OAAO,IAAK,IAAI,CAACrgB,OAAO,CAACtJ,IAAI,CAAC,KAAK,CAAmB,CAAA;EAEvE,MAAA,IAAM6pB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIvU,GAAW,EAA0B;EAC3D,QAAA,IAAMpB,OAA4B,GAAG;EAAEoB,UAAAA,GAAG,EAAHA,GAAAA;WAAK,CAAA;UAE5CwU,cAAc,CAAC5V,OAAO,CAAC,CAAA;EAEvB,QAAA,OAAOA,OAAO,CAAA;SACjB,CAAA;EAED,MAAA,IAAM4V,cAAc,GAAG,SAAjBA,cAAcA,CAAI5V,OAA4B,EAAW;EAC3D,QAAA,IAAInS,IAAI,KAAJA,IAAAA,IAAAA,IAAI,eAAJA,IAAI,CAAE0D,EAAE,EAAE;EACV;EACA,UAAA,IAAMzF,IAAI,GAAG;cAAE+B,IAAI,EAAEA,IAAI,CAAC0D,EAAAA;aAAI,CAAA;EAC9ByO,UAAAA,OAAO,CAAC,MAAM,CAAC,GAAGlU,IAAI,CAAA;EAC1B,SAAC,MAAM;EACH;EACA,UAAA,IAAM+pB,cAAc,GAAGjb,MAAI,CAACwO,qBAAqB,EAAE,CAAA;EACnD,UAAA,IAAIyM,cAAc,EAAE;EAChB,YAAA,IAAM/pB,KAAI,GAAG;EAAE6c,cAAAA,aAAa,EAAEkN,cAAAA;eAAgB,CAAA;EAC9C7V,YAAAA,OAAO,CAAC,MAAM,CAAC,GAAGlU,KAAI,CAAA;EAC1B,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAI,OAAO2pB,OAAO,KAAK,UAAU,EAAE;UAC/B,OAAOA,OAAO,CAAC5nB,IAAI,CAAC,CAAA;EACxB,OAAC,MAAM,IAAI,OAAO4nB,OAAO,KAAK,QAAQ,EAAE;UACpC,OAAOE,gBAAgB,CAACF,OAAO,CAAC,CAAA;SACnC,MAAM,IAAIA,OAAO,IAAI1pB,OAAA,CAAO0pB,OAAO,CAAK,KAAA,QAAQ,EAAE;UAC/CG,cAAc,CAACH,OAAO,CAAC,CAAA;EACvB,QAAA,OAAOA,OAAO,CAAA;EAClB,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAtoB,GAAA,EAAA,uBAAA;MAAAC,KAAA,EAED,SAAAgc,qBAAAA,GAA+C;EAC3C,MAAA,IAAI,IAAI,CAAC/U,OAAO,CAACmT,SAAS,EAAE;EACxB,QAAA,OAAO,IAAI,CAACgM,gBAAgB,CAACpK,qBAAqB,EAAE,CAAA;EACxD,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjc,GAAA,EAAA,UAAA;EAAAC,IAAAA,KAAA,EAED,SAAA0oB,QAAiBhqB,CAAAA,IAAgB,EAAQ;EAAA,MAAA,IAAAiqB,MAAA,GAAA,IAAA,CAAA;EACrC,MAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,GAAe;EACvB,QAAA,IAAI,CAACD,MAAI,CAAC1L,aAAa,EAAE;YACrB0L,MAAI,CAAC1L,aAAa,GAAG,IAAI,CAAA;EACzB0L,UAAAA,MAAI,CAACpd,aAAa,CAAC,WAAW,CAAC,CAAA;EACnC,SAAA;SACH,CAAA;EAED,MAAA,IAAI,CAAC,IAAI,CAACtE,OAAO,CAAC9H,SAAS,EAAE;EACzB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAACU,IAAI,GAAG,IAAI,IAAI,CAACoH,OAAO,CAAC9H,SAAS,CAClC,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC8H,OAAO,CAAC9H,SAAS,CACzB,CAAA;EAED,MAAA,IAAI,CAAC4R,iBAAiB,CAAC9H,KAAK,EAAE,CAAA;EAE9B,MAAA,IAAI,CAACpJ,IAAI,CAACI,YAAY,CAACvB,IAAI,CAAC,CAAA;EAE5B,MAAA,IAAM+c,gBAAgB,GAAG,IAAI,CAACD,eAAe,EAAE,CAAA;EAE/C,MAAA,IAAI,CAACnQ,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAE3B,IAAI,CAACoQ,gBAAgB,EAAE;EACnBmN,QAAAA,MAAM,EAAE,CAAA;EACZ,OAAC,MAAM;EACH;EACA,QAAA,IAAI,CAAC/M,uBAAuB,CAAC+M,MAAM,CAAC,CAAA;EACxC,OAAA;EACJ,KAAA;;EAEA;EACA;EAAA,GAAA,EAAA;MAAA7oB,GAAA,EAAA,iBAAA;MAAAC,KAAA,EACA,SAAAwb,eAAAA,GAAmC;EAAA,MAAA,IAAAqN,MAAA,GAAA,IAAA,CAAA;EAC/B,MAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,GAAoB;EAClC;EACA,QAAA,IAAI,CAACD,MAAI,CAAC5hB,OAAO,CAACmT,SAAS,EAAE;EACzB,UAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;EACzB,SAAC,MAAM;EACH,UAAA,IAAMC,KAAK,GAAGwO,MAAI,CAACzC,gBAAgB,CAACvL,mBAAmB,EAAE,CAAA;YAEzD,IAAI,CAACR,KAAK,EAAE;EACR,YAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;EACzB,WAAC,MAAM;cACH,IAAMoB,iBAAgB,GAClBoN,MAAI,CAACzC,gBAAgB,CAAC5K,eAAe,CAACnB,KAAK,CAAC,CAAA;;EAEhD;EACA,YAAA,OAAO,CAAC,IAAI,EAAEoB,iBAAgB,CAAC,CAAA;EACnC,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAMsN,aAAa,GAAG,SAAhBA,aAAaA,GAAkB;EACjC;EACA,QAAA,IAAIF,MAAI,CAAC5hB,OAAO,CAAC+hB,QAAQ,KAAK,KAAK,EAAE;EACjC,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EAEA,QAAA,IAAMC,QAAQ,GAAGJ,MAAI,CAACK,mBAAmB,EAAE,CAAA;UAC3C,IAAIzN,gBAAgB,GAAG,KAAK,CAAA;UAE5BoN,MAAI,CAAChpB,IAAI,CAAC6B,OAAO,CAAC,UAACjB,IAAU,EAAEoB,KAAa,EAAK;YAC7C,IAAIpB,IAAI,CAAClB,cAAc,EAAE;EACrBkc,YAAAA,gBAAgB,GAAG,IAAI,CAAA;EACvB,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM,IAAI,CAAChb,IAAI,CAACe,WAAW,EAAE,EAAE;EAC5B,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM;cACHf,IAAI,CAACyE,OAAO,GAAG,IAAI,CAAA;cACnB,OAAOrD,KAAK,KAAKonB,QAAQ,CAAA;EAC7B,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOxN,gBAAgB,CAAA;SAC1B,CAAA;QAED,IAAA0N,aAAA,GAAqCL,YAAY,EAAE;UAAAM,cAAA,GAAAhE,cAAA,CAAA+D,aAAA,EAAA,CAAA,CAAA;EAA9CE,QAAAA,UAAU,GAAAD,cAAA,CAAA,CAAA,CAAA;UAAE3N,gBAAgB,GAAA2N,cAAA,CAAA,CAAA,CAAA,CAAmB;;QAEpD,IAAI,CAACC,UAAU,EAAE;UACb5N,gBAAgB,GAAGsN,aAAa,EAAE,CAAA;EACtC,OAAA;EAEA,MAAA,OAAOtN,gBAAgB,CAAA;EAC3B,KAAA;;EAEA;EACA;EAAA,GAAA,EAAA;MAAA1b,GAAA,EAAA,yBAAA;EAAAC,IAAAA,KAAA,EACA,SAAA6b,uBAAgCC,CAAAA,UAAsB,EAAQ;EAAA,MAAA,IAAAwN,MAAA,GAAA,IAAA,CAAA;EAC1D,MAAA,IAAMR,YAAY,GAAG,SAAfA,YAAYA,GAAkB;EAChC,QAAA,IAAI,CAACQ,MAAI,CAACriB,OAAO,CAACmT,SAAS,EAAE;EACzB,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH,UAAA,IAAMC,KAAK,GAAGiP,MAAI,CAAClD,gBAAgB,CAACvL,mBAAmB,EAAE,CAAA;YAEzD,IAAI,CAACR,KAAK,EAAE;EACR,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM;cACHiP,MAAI,CAAClD,gBAAgB,CAACvK,uBAAuB,CACzCxB,KAAK,EACLyB,UAAU,CACb,CAAA;EAED,YAAA,OAAO,IAAI,CAAA;EACf,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAMiN,aAAa,GAAG,SAAhBA,aAAaA,GAAe;EAC9B,QAAA,IAAME,QAAQ,GAAGK,MAAI,CAACJ,mBAAmB,EAAE,CAAA;UAC3C,IAAIzM,YAAY,GAAG,CAAC,CAAA;EAEpB,QAAA,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAIlc,IAAU,EAAW;EAC1Cgc,UAAAA,YAAY,IAAI,CAAC,CAAA;EACjB6M,UAAAA,MAAI,CAAC3e,SAAS,CAAClK,IAAI,EAAE,KAAK,EAAE,YAAM;EAC9Bgc,YAAAA,YAAY,IAAI,CAAC,CAAA;EACjBvB,YAAAA,SAAS,EAAE,CAAA;EACf,WAAC,CAAC,CAAA;WACL,CAAA;EAED,QAAA,IAAMA,SAAS,GAAG,SAAZA,SAASA,GAAe;YAC1BoO,MAAI,CAACzpB,IAAI,CAAC6B,OAAO,CAAC,UAACjB,IAAU,EAAEoB,KAAa,EAAK;cAC7C,IAAIpB,IAAI,CAAClB,cAAc,EAAE;EACrB,cAAA,IAAI,CAACkB,IAAI,CAAC+R,UAAU,EAAE;kBAClBmK,eAAe,CAAClc,IAAI,CAAC,CAAA;EACzB,eAAA;EAEA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAC,MAAM;gBACH6oB,MAAI,CAAC3e,SAAS,CAAClK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;gBAEjC,OAAOoB,KAAK,KAAKonB,QAAQ,CAAA;EAC7B,aAAA;EACJ,WAAC,CAAC,CAAA;YAEF,IAAIxM,YAAY,KAAK,CAAC,EAAE;EACpBX,YAAAA,UAAU,EAAE,CAAA;EAChB,WAAA;WACH,CAAA;EAEDZ,QAAAA,SAAS,EAAE,CAAA;SACd,CAAA;QAED,IAAI,CAAC4N,YAAY,EAAE,EAAE;EACjBC,QAAAA,aAAa,EAAE,CAAA;EACnB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAhpB,GAAA,EAAA,qBAAA;MAAAC,KAAA,EAED,SAAAkpB,mBAAAA,GAAsC;EAClC,MAAA,IAAI,IAAI,CAACjiB,OAAO,CAAC+hB,QAAQ,KAAK,IAAI,EAAE;EAChC,QAAA,OAAO,CAAC,CAAC,CAAA;SACZ,MAAM,IAAI,OAAO,IAAI,CAAC/hB,OAAO,CAAC+hB,QAAQ,KAAK,QAAQ,EAAE;EAClD,QAAA,OAAO,IAAI,CAAC/hB,OAAO,CAAC+hB,QAAQ,CAAA;SAC/B,MAAM,IAAI,OAAO,IAAI,CAAC/hB,OAAO,CAAC+hB,QAAQ,KAAK,QAAQ,EAAE;UAClD,OAAOO,QAAQ,CAAC,IAAI,CAACtiB,OAAO,CAAC+hB,QAAQ,EAAE,EAAE,CAAC,CAAA;EAC9C,OAAC,MAAM;EACH,QAAA,OAAO,CAAC,CAAA;EACZ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAjpB,GAAA,EAAA,gBAAA;EAAAC,IAAAA,KAAA,EAwCD,SAAA2jB,cAAuB3b,CAAAA,OAAoB,EAAsB;EAC7D,MAAA,IAAMwhB,OAAO,GAAG1iB,MAAM,CAACkB,OAAO,CAAC,CAAA;EAE/B,MAAA,IAAMga,OAAO,GAAGwH,OAAO,CAACvF,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAElD,IAAIjC,OAAO,CAAChjB,MAAM,EAAE;EAChB,QAAA,IAAMyB,MAAI,GAAG,IAAI,CAACyjB,OAAO,CAAClC,OAAO,CAAwB,CAAA;EAEzD,QAAA,IAAIvhB,MAAI,EAAE;YACN,OAAO;EACHmjB,YAAAA,IAAI,EAAE,QAAQ;EACdnjB,YAAAA,IAAI,EAAJA,MAAAA;aACH,CAAA;EACL,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAMsS,GAAG,GAAGyW,OAAO,CAACvF,OAAO,CAAC,iBAAiB,CAAC,CAAA;UAC9C,IAAIlR,GAAG,CAAC/T,MAAM,EAAE;EACZ,UAAA,IAAMyB,MAAI,GAAG,IAAI,CAACyjB,OAAO,CAACnR,GAAG,CAAwB,CAAA;EACrD,UAAA,IAAItS,MAAI,EAAE;cACN,OAAO;EACHmjB,cAAAA,IAAI,EAAE,OAAO;EACbnjB,cAAAA,IAAI,EAAJA,MAAAA;eACH,CAAA;EACL,WAAA;EACJ,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,SAAA;EAAAC,IAAAA,KAAA,EAED,SAAAkkB,OAAgBrd,CAAAA,QAA6B,EAAe;EACxD,MAAA,IAAMsa,GAAG,GAAGta,QAAQ,CAACod,OAAO,CAAC,kBAAkB,CAAC,CAAA;EAChD,MAAA,IAAI9C,GAAG,CAACniB,MAAM,KAAK,CAAC,EAAE;EAClB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,OAAOmiB,GAAG,CAACziB,IAAI,CAAC,MAAM,CAAC,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAqB,GAAA,EAAA,WAAA;MAAAC,KAAA,EAuBD,SAAAoa,SAAAA,GAA0B;EACtB,MAAA,IAAI,IAAI,CAACnT,OAAO,CAACmT,SAAS,EAAE;EACxB,QAAA,IAAI,CAACgM,gBAAgB,CAAChM,SAAS,EAAE,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAra,GAAA,EAAA,mBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwnB,iBAA0BtG,CAAAA,YAAqB,EAAQ;EACnD,MAAA,IAAMzgB,IAAI,GAAG,IAAI,CAACyU,eAAe,EAAE,CAAA;EACnC,MAAA,IAAIzU,IAAI,EAAE;EACN,QAAA,IAAM0G,WAAW,GAAG,IAAI,CAACoC,sBAAsB,CAAC9I,IAAI,CAAC,CAAA;EACrD,QAAA,IAAI0G,WAAW,EAAE;EACbA,UAAAA,WAAW,CAAC8Z,MAAM,CAACC,YAAY,CAAC,CAAA;EACpC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAnhB,GAAA,EAAA,qBAAA;MAAAC,KAAA,EAED,SAAAypB,mBAAAA,GAAoC;EAChC,MAAA,IAAMhpB,IAAI,GAAG,IAAI,CAACyU,eAAe,EAAE,CAAA;EACnC,MAAA,IAAIzU,IAAI,EAAE;EACN,QAAA,IAAI,CAAC8b,mBAAmB,CAAC9b,IAAI,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAV,GAAA,EAAA,sBAAA;MAAAC,KAAA,EAED,SAAA4nB,oBAAAA,GAAuC;EACnC,MAAA,IAAI,IAAI,CAAC3gB,OAAO,CAACsJ,GAAG,EAAE;EAClB;EACA,QAAA,OAAO,UAAU,CAAA;EACrB,OAAC,MAAM;EACH;EACA,QAAA,OAAO,UAAU,CAAA;EACrB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAxQ,GAAA,EAAA,cAAA;MAAAC,KAAA,EAED,SAAA2nB,YAAAA,GAAgC;EAC5B,MAAA,IAAI,IAAI,CAAC1gB,OAAO,CAACsJ,GAAG,IAAI,IAAI,EAAE;EAC1B,QAAA,OAAO,IAAI,CAACtJ,OAAO,CAACsJ,GAAG,CAAA;EAC3B,OAAC,MAAM;UACH,IAAMmZ,OAAO,GAAG,IAAI,CAAC1hB,OAAO,CAACtJ,IAAI,CAAC,KAAK,CAAY,CAAA;UAEnD,IACIgrB,OAAO,KAAK,IAAI,IAChBA,OAAO,KAAK,KAAK,IACjBA,OAAO,KAAKzqB,SAAS,EACvB;EACE,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,MAAM;EACH,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;MAAAc,GAAA,EAAA,cAAA;EAAAC,IAAAA,KAAA,EAED,SAAAgkB,YAAAA,CACIvjB,IAAiB,EACjB6jB,YAAgC,EAC5B;EAAA,MAAA,IAAAqF,MAAA,GAAA,IAAA,CAAA;EACJ,MAAA,IAAMvP,SAAS,GAAG,SAAZA,SAASA,GAAe;EAC1B,QAAA,IAAIuP,MAAI,CAAC1iB,OAAO,CAACmT,SAAS,EAAE;EACxBuP,UAAAA,MAAI,CAACvD,gBAAgB,CAAChM,SAAS,EAAE,CAAA;EACrC,SAAA;SACH,CAAA;QAED,IAAI,CAAC3Z,IAAI,EAAE;EACP;UACA,IAAI,CAACgpB,mBAAmB,EAAE,CAAA;EAC1BrP,QAAAA,SAAS,EAAE,CAAA;EACX,QAAA,OAAA;EACJ,OAAA;EACA,MAAA,IAAMwP,cAAc,GAAG;EAAE1I,QAAAA,YAAY,EAAE,IAAI;EAAE2I,QAAAA,UAAU,EAAE,IAAA;SAAM,CAAA;EAC/D,MAAA,IAAMC,aAAa,GAAA5V,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAQ0V,cAAc,CAAA,EAAMtF,YAAY,IAAI,EAAE,CAAG,CAAA;EAEpE,MAAA,IAAMyF,SAAS,GAAG,SAAZA,SAASA,GAAkB;EAC7B,QAAA,IAAIJ,MAAI,CAAC1iB,OAAO,CAAC+iB,eAAe,EAAE;EAC9B,UAAA,OACIL,MAAI,CAAC1iB,OAAO,CAACgjB,UAAU,KAAK,IAAI,IAChCN,MAAI,CAAC1iB,OAAO,CAAC+iB,eAAe,CAACvpB,IAAI,CAAC,CAAA;EAE1C,SAAC,MAAM;EACH,UAAA,OAAOkpB,MAAI,CAAC1iB,OAAO,CAACgjB,UAAU,KAAK,IAAI,CAAA;EAC3C,SAAA;SACH,CAAA;EAED,MAAA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,GAAe;EAC5B,QAAA,IAAMxqB,MAAM,GAAGe,IAAI,CAACf,MAAM,CAAA;UAE1B,IAAIA,MAAM,IAAIA,MAAM,CAACA,MAAM,IAAI,CAACA,MAAM,CAACwF,OAAO,EAAE;EAC5CykB,UAAAA,MAAI,CAACzT,QAAQ,CAACxW,MAAM,EAAE,KAAK,CAAC,CAAA;EAChC,SAAA;SACH,CAAA;QAED,IAAI,CAACqqB,SAAS,EAAE,EAAE;EACd,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAAChZ,iBAAiB,CAACC,cAAc,CAACvQ,IAAI,CAAC,EAAE;UAC7C,IAAIqpB,aAAa,CAACD,UAAU,EAAE;YAC1B,IAAI,CAACJ,mBAAmB,EAAE,CAAA;EAC1B,UAAA,IAAI,CAACle,aAAa,CAAC,aAAa,EAAE;EAC9B9K,YAAAA,IAAI,EAAE,IAAI;EACV0pB,YAAAA,aAAa,EAAE1pB,IAAAA;EACnB,WAAC,CAAC,CAAA;EACN,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAM2pB,cAAc,GAAG,IAAI,CAAClV,eAAe,EAAE,IAAI,IAAI,CAAA;UACrD,IAAI,CAACuU,mBAAmB,EAAE,CAAA;UAC1B,IAAI,CAACpN,cAAc,CAAC5b,IAAI,EAAEqpB,aAAa,CAAC5I,YAAY,CAAC,CAAA;EAErD,QAAA,IAAI,CAAC3V,aAAa,CAAC,aAAa,EAAE;EAC9B9K,UAAAA,IAAI,EAAJA,IAAI;EACJ4pB,UAAAA,eAAe,EAAED,cAAAA;EACrB,SAAC,CAAC,CAAA;EACFF,QAAAA,WAAW,EAAE,CAAA;EACjB,OAAA;EAEA9P,MAAAA,SAAS,EAAE,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAAra,GAAA,EAAA,YAAA;EAAAC,IAAAA,KAAA,EAED,SAAAwkB,UAAAA,CAAmB9lB,IAAuB,EAAEmU,UAAuB,EAAQ;EACvE,MAAA,IAAInU,IAAI,EAAE;EACN,QAAA,IAAImU,UAAU,EAAE;EACZ,UAAA,IAAI,CAACyX,aAAa,CAACzX,UAAU,CAAC,CAAA;EAC9B,UAAA,IAAI,CAAC0X,WAAW,CAAC7rB,IAAI,EAAEmU,UAAU,CAAC,CAAA;EACtC,SAAC,MAAM;EACH,UAAA,IAAI,CAAC6V,QAAQ,CAAChqB,IAAI,CAAC,CAAA;EACvB,SAAA;EAEA,QAAA,IAAI,IAAI,CAAC+H,UAAU,EAAE,EAAE;EACnB,UAAA,IAAI,CAAC6Y,UAAU,CAAC5X,OAAO,EAAE,CAAA;EAC7B,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAC6D,aAAa,CAAC,gBAAgB,EAAE;EACjCif,QAAAA,SAAS,EAAE9rB,IAAI;EACf+rB,QAAAA,WAAW,EAAE5X,UAAAA;EACjB,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;MAAA9S,GAAA,EAAA,eAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsqB,aAAsBzX,CAAAA,UAAgB,EAAQ;QAC1C,IAAM6X,wBAAwB,GAC1B,IAAI,CAAC3Z,iBAAiB,CAACyP,qBAAqB,CAAC3N,UAAU,CAAC,CAAA;EAAC,MAAA,IAAA1S,SAAA,GAAAC,0BAAA,CAC7CsqB,wBAAwB,CAAA;UAAArqB,KAAA,CAAA;EAAA,MAAA,IAAA;UAAxC,KAAAF,SAAA,CAAAG,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAF,SAAA,CAAAI,CAAA,EAAAC,EAAAA,IAAA,GAA0C;EAAA,UAAA,IAA/BD,CAAC,GAAAF,KAAA,CAAAL,KAAA,CAAA;EACR,UAAA,IAAI,CAAC+Q,iBAAiB,CAACwL,mBAAmB,CAAChc,CAAC,CAAC,CAAA;EACjD,SAAA;EAAC,OAAA,CAAA,OAAAK,GAAA,EAAA;UAAAT,SAAA,CAAAU,CAAA,CAAAD,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAAT,QAAAA,SAAA,CAAAW,CAAA,EAAA,CAAA;EAAA,OAAA;EACL,KAAA;EAAC,GAAA,EAAA;MAAAf,GAAA,EAAA,aAAA;EAAAC,IAAAA,KAAA,EAED,SAAAuqB,WAAAA,CAAoB7rB,IAAgB,EAAEmU,UAAgB,EAAQ;EAC1DA,MAAAA,UAAU,CAAC5S,YAAY,CAACvB,IAAI,CAAC,CAAA;QAE7BmU,UAAU,CAACtT,cAAc,GAAG,KAAK,CAAA;QACjCsT,UAAU,CAACL,UAAU,GAAG,KAAK,CAAA;EAE7B,MAAA,IAAI,CAACnH,gBAAgB,CAACwH,UAAU,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;MAAA9S,GAAA,EAAA,mBAAA;MAAAC,KAAA,EAED,SAAA6kB,iBACI8F,CAAAA,YAAiD,EACjD9X,UAAuB,EACvBC,UAAwC,EACpC;QACJ,IAAMF,OAAO,GAAG+X,YAAY,IAAI,IAAI,CAACrC,cAAc,CAACzV,UAAU,CAAC,CAAA;QAE/D,IAAI,CAACgV,UAAU,CAAClV,WAAW,CAACC,OAAO,EAAEC,UAAU,EAAEC,UAAU,CAAC,CAAA;EAChE,KAAA;EAAC,GAAA,EAAA;MAAA/S,GAAA,EAAA,oBAAA;EAAAC,IAAAA,KAAA,EAED,SAAAsnB,kBACI7mB,CAAAA,IAAU,EAGN;EAAA,MAAA,IAAAmqB,MAAA,GAAA,IAAA,CAAA;EAAA,MAAA,IAFJhgB,KAAK,GAAA7L,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;QAAA,IACZ+T,UAAmC,GAAA/T,SAAA,CAAAC,MAAA,GAAAD,CAAAA,GAAAA,SAAA,MAAAE,SAAA,CAAA;QAEnCwB,IAAI,CAAC+R,UAAU,GAAG,IAAI,CAAA;EAEtB,MAAA,IAAI,CAACqS,iBAAiB,CAAC,IAAI,EAAEpkB,IAAI,EAAE,YAAM;UACrCmqB,MAAI,CAACjgB,SAAS,CAAClK,IAAI,EAAEmK,KAAK,EAAEkI,UAAU,CAAC,CAAA;EAC3C,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA0Q,YAAA,CAAA;EAAA,CAAA,CA3nC6BjL,WAAW,EAAA;EA4nC5ClZ,eAAA,CA5nCYmkB,YAAY,EACsB,UAAA,EAAA;EACvCzB,EAAAA,cAAc,EAAE,MAAM;EACtB9Z,EAAAA,UAAU,EAAE,IAAI;EAChB+gB,EAAAA,QAAQ,EAAE,KAAK;EAAE;EACjBlX,EAAAA,UAAU,EAAE,IAAI;EAChB;EACA;EACAvC,EAAAA,UAAU,EAAEtQ,SAAS;EACrBP,EAAAA,IAAI,EAAEO,SAAS;EACfyV,EAAAA,UAAU,EAAEzV,SAAS;EACrBopB,EAAAA,OAAO,EAAEppB,SAAS;EAClBuR,EAAAA,WAAW,EAAE,KAAK;EAClBoF,EAAAA,eAAe,EAAE,IAAI;EACrBzW,EAAAA,SAAS,EAAEN,IAAI;EACfwI,EAAAA,SAAS,EAAEpI,SAAS;EAAE;EACtB6K,EAAAA,WAAW,EAAE7K,SAAS;EAAE;EACxB+qB,EAAAA,eAAe,EAAE/qB,SAAS;EAC1BoS,EAAAA,UAAU,EAAEpS,SAAS;EACrB4J,EAAAA,UAAU,EAAE5J,SAAS;EACrBoK,EAAAA,UAAU,EAAEpK,SAAS;EACrBgd,EAAAA,qBAAqB,EAAEhd,SAAS;EAChCiI,EAAAA,cAAc,EAAEjI,SAAS;EACzByU,EAAAA,YAAY,EAAEzU,SAAS;EACvB4U,EAAAA,SAAS,EAAE5U,SAAS;EACpBub,EAAAA,qBAAqB,EAAEvb,SAAS;EAChCoQ,EAAAA,UAAU,EAAE,UAAU;EACtBxE,EAAAA,eAAe,EAAE,GAAG;EAAE;EACtB;EACA;EACA0F,EAAAA,GAAG,EAAEtR,SAAS;EAAE;EAChBmb,EAAAA,SAAS,EAAE,KAAK;EAAE;EAClB6P,EAAAA,UAAU,EAAE,IAAI;EAChB/Y,EAAAA,eAAe,EAAE,KAAK;EACtBtG,EAAAA,KAAK,EAAE,IAAI;EAAE;EACbwd,EAAAA,aAAa,EAAE,GAAG;EAAE;EACpB/V,EAAAA,QAAQ,EAAE,CAAC;EACX4V,EAAAA,cAAc,EAAE,IAAA;EACpB,CAAC,CAAA,CAAA;EAwlCLjR,YAAY,CAACP,QAAQ,CAAC+M,YAAY,EAAE,MAAM,CAAC;;;;;;;;;;"} \ No newline at end of file diff --git a/tree.jquery.js b/tree.jquery.js index a01dcbec..a73344bb 100644 --- a/tree.jquery.js +++ b/tree.jquery.js @@ -1,7 +1,7 @@ /* JqTree 1.7.0 -Copyright 2022 Marco Braak +Copyright 2023 Marco Braak Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -17,5 +17,5 @@ limitations under the License. @license */ -var jqtree=function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function n(e){for(var n=1;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function N(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var S;!function(e){e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None"}(S||(S={}));var b={before:S.Before,after:S.After,inside:S.Inside,none:S.None},_=function(e){for(var t in b)if(Object.prototype.hasOwnProperty.call(b,t)&&b[t]===e)return t;return""},D=function(e){return"object"===i(e)&&"children"in e&&e.children instanceof Array},I=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;r(this,e),a(this,"id",void 0),a(this,"name",void 0),a(this,"children",void 0),a(this,"parent",void 0),a(this,"idMapping",void 0),a(this,"tree",void 0),a(this,"nodeClass",void 0),a(this,"load_on_demand",void 0),a(this,"is_open",void 0),a(this,"element",void 0),a(this,"is_loading",void 0),a(this,"isEmptyFolder",void 0),this.name="",this.isEmptyFolder=!1,this.load_on_demand=!1,this.setData(t),this.children=[],this.parent=null,n&&(this.idMapping=new Map,this.tree=this,this.nodeClass=i)}return s(e,[{key:"setData",value:function(e){if(e)if("string"==typeof e)this.name=e;else if("object"===i(e))for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"label"===t||"name"===t?"string"==typeof n&&(this.name=n):"children"!==t&&"parent"!==t&&(this[t]=n)}}},{key:"loadFromData",value:function(e){this.removeChildren();var t,n=k(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this.createNode(i);this.addChild(r),D(i)&&(0===i.children.length?r.isEmptyFolder=!0:r.loadFromData(i.children))}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"addChild",value:function(e){this.children.push(e),e.setParent(this)}},{key:"addChildAtPosition",value:function(e,t){this.children.splice(t,0,e),e.setParent(this)}},{key:"removeChild",value:function(e){e.removeChildren(),this.doRemoveChild(e)}},{key:"getChildIndex",value:function(e){return this.children.indexOf(e)}},{key:"hasChildren",value:function(){return 0!==this.children.length}},{key:"isFolder",value:function(){return this.hasChildren()||this.load_on_demand}},{key:"iterate",value:function(e){!function t(n,i){if(n.children){var r,o=k(n.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;e(s,i)&&s.hasChildren()&&t(s,i+1)}}catch(e){o.e(e)}finally{o.f()}}}(this,0)}},{key:"moveNode",value:function(e,t,n){if(!e.parent||e.isParentOf(t))return!1;switch(e.parent.doRemoveChild(e),n){case S.After:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)+1),!0);case S.Before:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)),!0);case S.Inside:return t.addChildAtPosition(e,0),!0;default:return!1}}},{key:"getData",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=function e(t){return t.map((function(t){var n={};for(var i in t)if(-1===["parent","children","element","idMapping","load_on_demand","nodeClass","tree","isEmptyFolder"].indexOf(i)&&Object.prototype.hasOwnProperty.call(t,i)){var r=t[i];n[i]=r}return t.hasChildren()&&(n.children=e(t.children)),n}))};return t(e?[this]:this.children)}},{key:"getNodeByName",value:function(e){return this.getNodeByCallback((function(t){return t.name===e}))}},{key:"getNodeByNameMustExist",value:function(e){var t=this.getNodeByCallback((function(t){return t.name===e}));if(!t)throw"Node with name ".concat(e," not found");return t}},{key:"getNodeByCallback",value:function(e){var t=null;return this.iterate((function(n){return!t&&(!e(n)||(t=n,!1))})),t}},{key:"addAfter",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n+1),D(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addBefore",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n),D(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addParent",value:function(e){if(this.parent){var t=this.createNode(e);this.tree&&t.setParent(this.tree);var n,i=this.parent,r=k(i.children);try{for(r.s();!(n=r.n()).done;){var o=n.value;t.addChild(o)}}catch(e){r.e(e)}finally{r.f()}return i.children=[],i.addChild(t),t}return null}},{key:"remove",value:function(){this.parent&&(this.parent.removeChild(this),this.parent=null)}},{key:"append",value:function(e){var t=this.createNode(e);return this.addChild(t),D(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"prepend",value:function(e){var t=this.createNode(e);return this.addChildAtPosition(t,0),D(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"isParentOf",value:function(e){for(var t=e.parent;t;){if(t===this)return!0;t=t.parent}return!1}},{key:"getLevel",value:function(){for(var e=0,t=this;t.parent;)e+=1,t=t.parent;return e}},{key:"getNodeById",value:function(e){return this.idMapping.get(e)||null}},{key:"addNodeToIndex",value:function(e){null!=e.id&&this.idMapping.set(e.id,e)}},{key:"removeNodeFromIndex",value:function(e){null!=e.id&&this.idMapping.delete(e.id)}},{key:"removeChildren",value:function(){var e=this;this.iterate((function(t){var n;return null===(n=e.tree)||void 0===n||n.removeNodeFromIndex(t),!0})),this.children=[]}},{key:"getPreviousSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)-1;return e>=0?this.parent.children[e]:null}return null}},{key:"getNextSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e0&&void 0!==arguments[0])||arguments[0];if(e&&this.hasChildren())return this.children[0];if(this.parent){var t=this.getNextSibling();return t||this.parent.getNextNode(!1)}return null}},{key:"getNextVisibleNode",value:function(){if(this.hasChildren()&&this.is_open)return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getPreviousNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()?e.getLastChild():e:this.getParent()}return null}},{key:"getPreviousVisibleNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()&&e.is_open?e.getLastChild():e:this.getParent()}return null}},{key:"getParent",value:function(){return this.parent&&this.parent.parent?this.parent:null}},{key:"getLastChild",value:function(){if(this.hasChildren()){var e=this.children[this.children.length-1];return e.hasChildren()&&e.is_open?e.getLastChild():e}return null}},{key:"initFromData",value:function(e){var t,n=this,i=function(e){var t,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.createNode();o.initFromData(r),n.addChild(o)}}catch(e){i.e(e)}finally{i.f()}};t=e,n.setData(t),D(t)&&t.children.length&&i(t.children)}},{key:"setParent",value:function(e){var t;this.parent=e,this.tree=e.tree,null===(t=this.tree)||void 0===t||t.addNodeToIndex(this)}},{key:"doRemoveChild",value:function(e){var t;this.children.splice(this.getChildIndex(e),1),null===(t=this.tree)||void 0===t||t.removeNodeFromIndex(e)}},{key:"getNodeClass",value:function(){var t;return this.nodeClass||(null==this||null===(t=this.tree)||void 0===t?void 0:t.nodeClass)||e}},{key:"createNode",value:function(e){return new(this.getNodeClass())(e)}}]),e}(),j=function(){function e(t){r(this,e),a(this,"hitAreas",void 0),a(this,"isDragging",void 0),a(this,"currentItem",void 0),a(this,"hoveredArea",void 0),a(this,"positionInfo",void 0),a(this,"treeWidget",void 0),a(this,"dragElement",void 0),a(this,"previousGhost",void 0),a(this,"openFolderTimer",void 0),this.treeWidget=t,this.hoveredArea=null,this.hitAreas=[],this.isDragging=!1,this.currentItem=null,this.positionInfo=null}return s(e,[{key:"mouseCapture",value:function(e){var t=jQuery(e.target);if(!this.mustCaptureElement(t))return null;if(this.treeWidget.options.onIsMoveHandle&&!this.treeWidget.options.onIsMoveHandle(t))return null;var n=this.treeWidget._getNodeElement(t);return n&&this.treeWidget.options.onCanMove&&(this.treeWidget.options.onCanMove(n.node)||(n=null)),this.currentItem=n,null!=this.currentItem}},{key:"mouseStart",value:function(e){var t;if(!this.currentItem||void 0===e.pageX||void 0===e.pageY)return!1;this.refresh();var n=jQuery(e.target).offset(),i=n?n.left:0,r=n?n.top:0,o=this.currentItem.node;return this.dragElement=new C(o.name,e.pageX-i,e.pageY-r,this.treeWidget.element,null===(t=this.treeWidget.options.autoEscape)||void 0===t||t),this.isDragging=!0,this.positionInfo=e,this.currentItem.$element.addClass("jqtree-moving"),!0}},{key:"mouseDrag",value:function(e){if(!this.currentItem||!this.dragElement||void 0===e.pageX||void 0===e.pageY)return!1;this.dragElement.move(e.pageX,e.pageY),this.positionInfo=e;var t=this.findHoveredArea(e.pageX,e.pageY);return t&&this.canMoveToArea(t)?(t.node.isFolder()||this.stopOpenFolderTimer(),this.hoveredArea!==t&&(this.hoveredArea=t,this.mustOpenFolderTimer(t)?this.startOpenFolderTimer(t.node):this.stopOpenFolderTimer(),this.updateDropHint())):(this.removeDropHint(),this.stopOpenFolderTimer(),this.hoveredArea=t),t||this.treeWidget.options.onDragMove&&this.treeWidget.options.onDragMove(this.currentItem.node,e.originalEvent),!0}},{key:"mouseStop",value:function(e){this.moveItem(e),this.clear(),this.removeHover(),this.removeDropHint(),this.removeHitAreas();var t=this.currentItem;return this.currentItem&&(this.currentItem.$element.removeClass("jqtree-moving"),this.currentItem=null),this.isDragging=!1,this.positionInfo=null,!this.hoveredArea&&t&&this.treeWidget.options.onDragStop&&this.treeWidget.options.onDragStop(t.node,e.originalEvent),!1}},{key:"refresh",value:function(){this.removeHitAreas(),this.currentItem&&(this.generateHitAreas(),this.currentItem=this.treeWidget._getNodeElementForNode(this.currentItem.node),this.isDragging&&this.currentItem.$element.addClass("jqtree-moving"))}},{key:"generateHitAreas",value:function(){if(this.currentItem){var e=new E(this.treeWidget.tree,this.currentItem.node,this.getTreeDimensions().bottom);this.hitAreas=e.generate()}else this.hitAreas=[]}},{key:"mustCaptureElement",value:function(e){return!e.is("input,select,textarea")}},{key:"canMoveToArea",value:function(e){if(!this.treeWidget.options.onCanMoveTo)return!0;if(!this.currentItem)return!1;var t=_(e.position);return this.treeWidget.options.onCanMoveTo(this.currentItem.node,e.node,t)}},{key:"removeHitAreas",value:function(){this.hitAreas=[]}},{key:"clear",value:function(){this.dragElement&&(this.dragElement.remove(),this.dragElement=null)}},{key:"removeDropHint",value:function(){this.previousGhost&&this.previousGhost.remove()}},{key:"removeHover",value:function(){this.hoveredArea=null}},{key:"findHoveredArea",value:function(e,t){var n=this.getTreeDimensions();if(en.right||t>n.bottom)return null;for(var i=0,r=this.hitAreas.length;i>1,s=this.hitAreas[o];if(ts.bottom))return s;i=o+1}}return null}},{key:"mustOpenFolderTimer",value:function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===S.Inside}},{key:"updateDropHint",value:function(){if(this.hoveredArea){this.removeDropHint();var e=this.treeWidget._getNodeElementForNode(this.hoveredArea.node);this.previousGhost=e.addDropHint(this.hoveredArea.position)}}},{key:"startOpenFolderTimer",value:function(e){var t=this;this.stopOpenFolderTimer();var n=this.treeWidget.options.openFolderDelay;!1!==n&&(this.openFolderTimer=window.setTimeout((function(){t.treeWidget._openNode(e,t.treeWidget.options.slide,(function(){t.refresh(),t.updateDropHint()}))}),n))}},{key:"stopOpenFolderTimer",value:function(){this.openFolderTimer&&(clearTimeout(this.openFolderTimer),this.openFolderTimer=null)}},{key:"moveItem",value:function(e){var t=this;if(this.currentItem&&this.hoveredArea&&this.hoveredArea.position!==S.None&&this.canMoveToArea(this.hoveredArea)){var n=this.currentItem.node,i=this.hoveredArea.node,r=this.hoveredArea.position,o=n.parent;r===S.Inside&&(this.hoveredArea.node.is_open=!0);var s=function(){t.treeWidget.tree.moveNode(n,i,r),t.treeWidget.element.empty(),t.treeWidget._refreshElements(null)};this.treeWidget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:_(r),previous_parent:o,do_move:s,original_event:e.originalEvent}}).isDefaultPrevented()||s()}}},{key:"getTreeDimensions",value:function(){var e=this.treeWidget.element.offset();if(e){var t=this.treeWidget.element,n=t.width()||0,i=t.height()||0,r=e.left+this.treeWidget._getScrollLeft();return{left:r,top:e.top,right:r+n,bottom:e.top+i+16}}return{left:0,top:0,right:0,bottom:0}}}]),e}(),E=function(e){l(n,e);var t=v(n);function n(e,i,o){var s;return r(this,n),a(h(s=t.call(this,e)),"currentNode",void 0),a(h(s),"treeBottom",void 0),a(h(s),"positions",void 0),a(h(s),"lastTop",void 0),s.currentNode=i,s.treeBottom=o,s}return s(n,[{key:"generate",value:function(){return this.positions=[],this.lastTop=0,this.iterate(),this.generateHitAreas(this.positions)}},{key:"generateHitAreas",value:function(e){var t,n=-1,i=[],r=[],o=k(e);try{for(o.s();!(t=o.n()).done;){var s=t.value;s.top!==n&&i.length&&(i.length&&this.generateHitAreasForGroup(r,i,n,s.top),n=s.top,i=[]),i.push(s)}}catch(e){o.e(e)}finally{o.f()}return this.generateHitAreasForGroup(r,i,n,this.treeBottom),r}},{key:"handleOpenFolder",value:function(e,t){return e!==this.currentNode&&(e.children[0]!==this.currentNode&&this.addPosition(e,S.Inside,this.getTop(t)),!0)}},{key:"handleClosedFolder",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,S.None,i):(this.addPosition(e,S.Inside,i),t!==this.currentNode&&this.addPosition(e,S.After,i))}},{key:"handleFirstNode",value:function(e){e!==this.currentNode&&this.addPosition(e,S.Before,this.getTop(jQuery(e.element)))}},{key:"handleAfterOpenFolder",value:function(e,t){e===this.currentNode||t===this.currentNode?this.addPosition(e,S.None,this.lastTop):this.addPosition(e,S.After,this.lastTop)}},{key:"handleNode",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,S.None,i):this.addPosition(e,S.Inside,i),t===this.currentNode||e===this.currentNode?this.addPosition(e,S.None,i):this.addPosition(e,S.After,i)}},{key:"getTop",value:function(e){var t=e.offset();return t?t.top:0}},{key:"addPosition",value:function(e,t,n){var i={top:n,bottom:0,node:e,position:t};this.positions.push(i),this.lastTop=n}},{key:"generateHitAreasForGroup",value:function(e,t,n,i){for(var r=Math.min(t.length,4),o=Math.round((i-n)/r),s=n,a=0;a").addClass("jqtree-title jqtree-dragging"),s?this.$element.text(t):this.$element.html(t),this.$element.css("position","absolute"),o.append(this.$element)}return s(e,[{key:"move",value:function(e,t){this.$element.offset({left:e-this.offsetX,top:t-this.offsetY})}},{key:"remove",value:function(){this.$element.remove()}}]),e}(),w=function(e){return e?"true":"false"},F=function(){function e(t){r(this,e),a(this,"openedIconElement",void 0),a(this,"closedIconElement",void 0),a(this,"treeWidget",void 0),this.treeWidget=t,this.openedIconElement=this.createButtonElement(t.options.openedIcon||"+"),this.closedIconElement=this.createButtonElement(t.options.closedIcon||"-")}return s(e,[{key:"render",value:function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()}},{key:"renderFromRoot",value:function(){var e=this.treeWidget.element;e.empty(),this.createDomElements(e[0],this.treeWidget.tree.children,!0,1)}},{key:"renderFromNode",value:function(e){var t=jQuery(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)}},{key:"createDomElements",value:function(e,t,n,i){var r=this.createUl(n);e.appendChild(r);var o,s=k(t);try{for(s.s();!(o=s.n()).done;){var a=o.value,l=this.createLi(a,i);r.appendChild(l),this.attachNodeData(a,l),a.hasChildren()&&this.createDomElements(l,a.children,!1,i+1)}}catch(e){s.e(e)}finally{s.f()}}},{key:"attachNodeData",value:function(e,t){e.element=t,jQuery(t).data("node",e)}},{key:"createUl",value:function(e){var t,n;e?(t="jqtree-tree",n="tree",this.treeWidget.options.rtl&&(t+=" jqtree-rtl")):(t="",n="group"),this.treeWidget.options.dragAndDrop&&(t+=" jqtree-dnd");var i=document.createElement("ul");return i.className="jqtree_common ".concat(t),i.setAttribute("role",n),i}},{key:"createLi",value:function(e,t){var n=Boolean(this.treeWidget.selectNodeHandler.isNodeSelected(e)),i=e.isFolder()||e.isEmptyFolder&&this.treeWidget.options.showEmptyFolder?this.createFolderLi(e,t,n):this.createNodeLi(e,t,n);return this.treeWidget.options.onCreateLi&&this.treeWidget.options.onCreateLi(e,jQuery(i),n),i}},{key:"createFolderLi",value:function(e,t,n){var i=this.getButtonClasses(e),r=this.getFolderClasses(e,n),o=e.is_open?this.openedIconElement:this.closedIconElement,s=document.createElement("li");s.className="jqtree_common ".concat(r),s.setAttribute("role","presentation");var a=document.createElement("div");a.className="jqtree-element jqtree_common",a.setAttribute("role","presentation"),s.appendChild(a);var l=document.createElement("a");return l.className=i,l.appendChild(o.cloneNode(!0)),l.setAttribute("role","presentation"),l.setAttribute("aria-hidden","true"),this.treeWidget.options.buttonLeft&&a.appendChild(l),a.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!0)),this.treeWidget.options.buttonLeft||a.appendChild(l),s}},{key:"createNodeLi",value:function(e,t,n){var i=["jqtree_common"];n&&i.push("jqtree-selected");var r=i.join(" "),o=document.createElement("li");o.className=r,o.setAttribute("role","presentation");var s=document.createElement("div");return s.className="jqtree-element jqtree_common",s.setAttribute("role","presentation"),o.appendChild(s),s.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!1)),o}},{key:"createTitleSpan",value:function(e,t,n,i,r){var o=document.createElement("span"),s="jqtree-title jqtree_common";if(r&&(s+=" jqtree-title-folder"),s+=" jqtree-title-button-".concat(this.treeWidget.options.buttonLeft?"left":"right"),o.className=s,o.setAttribute("role","treeitem"),o.setAttribute("aria-level","".concat(t)),o.setAttribute("aria-selected",w(n)),o.setAttribute("aria-expanded",w(i)),n){var a=this.treeWidget.options.tabIndex;void 0!==a&&o.setAttribute("tabindex","".concat(a))}return this.treeWidget.options.autoEscape?o.textContent=e:o.innerHTML=e,o}},{key:"getButtonClasses",value:function(e){var t=["jqtree-toggler","jqtree_common"];return e.is_open||t.push("jqtree-closed"),this.treeWidget.options.buttonLeft?t.push("jqtree-toggler-left"):t.push("jqtree-toggler-right"),t.join(" ")}},{key:"getFolderClasses",value:function(e,t){var n=["jqtree-folder"];return e.is_open||n.push("jqtree-closed"),t&&n.push("jqtree-selected"),e.is_loading&&n.push("jqtree-loading"),n.join(" ")}},{key:"createButtonElement",value:function(e){if("string"==typeof e){var t=document.createElement("div");return t.innerHTML=e,document.createTextNode(t.innerHTML)}return jQuery(e)[0]}}]),e}(),W=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),this.treeWidget=t}return s(e,[{key:"loadFromUrl",value:function(e,t,n){var i=this;if(e){var r=this.getDomElement(t);this.addLoadingClass(r),this.notifyLoading(!0,t,r);var o=function(){i.removeLoadingClass(r),i.notifyLoading(!1,t,r)};this.submitRequest(e,(function(e){o(),i.treeWidget.loadData(i.parseData(e),t),n&&"function"==typeof n&&n()}),(function(e){o(),i.treeWidget.options.onLoadFailed&&i.treeWidget.options.onLoadFailed(e)}))}}},{key:"addLoadingClass",value:function(e){e&&e.addClass("jqtree-loading")}},{key:"removeLoadingClass",value:function(e){e&&e.removeClass("jqtree-loading")}},{key:"getDomElement",value:function(e){return e?jQuery(e.element):this.treeWidget.element}},{key:"notifyLoading",value:function(e,t,n){this.treeWidget.options.onLoading&&this.treeWidget.options.onLoading(e,t,n),this.treeWidget._triggerEvent("tree.loading_data",{isLoading:e,node:t,$el:n})}},{key:"submitRequest",value:function(e,t,i){var r,o=n({method:"GET",cache:!1,dataType:"json",success:t,error:i},"string"==typeof e?{url:e}:e);o.method=(null===(r=o.method)||void 0===r?void 0:r.toUpperCase())||"GET",jQuery.ajax(o)}},{key:"parseData",value:function(e){var t=this.treeWidget.options.dataFilter,n="string"==typeof e?JSON.parse(e):e;return t?t(n):n}}]),e}(),T=function(){function e(t){var n=this;r(this,e),a(this,"treeWidget",void 0),a(this,"handleKeyDown",(function(t){if(!n.canHandleKeyboard())return!0;var i=n.treeWidget.getSelectedNode();if(!i)return!0;switch(t.which){case e.DOWN:return n.moveDown(i);case e.UP:return n.moveUp(i);case e.RIGHT:return n.moveRight(i);case e.LEFT:return n.moveLeft(i);default:return!0}})),this.treeWidget=t,t.options.keyboardSupport&&jQuery(document).on("keydown.jqtree",this.handleKeyDown)}return s(e,[{key:"deinit",value:function(){jQuery(document).off("keydown.jqtree")}},{key:"moveDown",value:function(e){return this.selectNode(e.getNextVisibleNode())}},{key:"moveUp",value:function(e){return this.selectNode(e.getPreviousVisibleNode())}},{key:"moveRight",value:function(e){return!e.isFolder()||(e.is_open?this.selectNode(e.getNextVisibleNode()):(this.treeWidget.openNode(e),!1))}},{key:"moveLeft",value:function(e){return e.isFolder()&&e.is_open?(this.treeWidget.closeNode(e),!1):this.selectNode(e.getParent())}},{key:"selectNode",value:function(e){return!e||(this.treeWidget.selectNode(e),this.treeWidget.scrollHandler.isScrolledIntoView(jQuery(e.element).find(".jqtree-element"))||this.treeWidget.scrollToNode(e),!1)}},{key:"canHandleKeyboard",value:function(){return!!this.treeWidget.options.keyboardSupport&&this.treeWidget.selectNodeHandler.isFocusOnTree()}}]),e}();a(T,"LEFT",37),a(T,"UP",38),a(T,"RIGHT",39),a(T,"DOWN",40);var P=function(e,t){var n=function(){return"simple_widget_".concat(t)},r=function(e,t){var n=jQuery.data(e,t);return n&&n instanceof L?n:null},o=function(t,i){var o,s=n(),a=k(t.get());try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!r(l,s)){var d=new e(l,i);jQuery.data(l,s)||jQuery.data(l,s,d),d.init()}}}catch(e){a.e(e)}finally{a.f()}return t},s=function(e){var t,i=n(),o=k(e.get());try{for(o.s();!(t=o.n()).done;){var s=t.value,a=r(s,i);a&&a.destroy(),jQuery.removeData(s,i)}}catch(e){o.e(e)}finally{o.f()}},a=function(e,t,i){var r,o=null,s=k(e.get());try{for(s.s();!(r=s.n()).done;){var a=r.value,l=jQuery.data(a,n());if(l&&l instanceof L){var d=l[t];d&&"function"==typeof d&&(o=d.apply(l,i))}}}catch(e){s.e(e)}finally{s.f()}return o};jQuery.fn[t]=function(t){if(!t)return o(this,null);if("object"===i(t)){var n=t;return o(this,n)}if("string"==typeof t&&"_"!==t[0]){var r=t;if("destroy"===r)return s(this);if("get_widget_class"===r)return e;for(var l=arguments.length,d=new Array(l>1?l-1:0),u=1;u1)){var n=t.changedTouches[0];e.handleMouseDown(A(n,t))}})),a(h(e),"touchMove",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseMove(t,A(n,t))}})),a(h(e),"touchEnd",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseUp(A(n,t))}})),e}return s(n,[{key:"init",value:function(){var e=this.$el.get(0);e&&(e.addEventListener("mousedown",this.mouseDown,{passive:!1}),e.addEventListener("touchstart",this.touchStart,{passive:!1})),this.isMouseStarted=!1,this.mouseDelayTimer=null,this.isMouseDelayMet=!1,this.mouseDownInfo=null}},{key:"deinit",value:function(){var e=this.$el.get(0);e&&(e.removeEventListener("mousedown",this.mouseDown,{passive:!1}),e.removeEventListener("touchstart",this.touchStart,{passive:!1})),this.removeMouseMoveEventListeners()}},{key:"handleMouseDown",value:function(e){return this.isMouseStarted&&this.handleMouseUp(e),this.mouseDownInfo=e,!!this.mouseCapture(e)&&(this.handleStartMouse(),!0)}},{key:"handleStartMouse",value:function(){document.addEventListener("mousemove",this.mouseMove,{passive:!1}),document.addEventListener("touchmove",this.touchMove,{passive:!1}),document.addEventListener("mouseup",this.mouseUp,{passive:!1}),document.addEventListener("touchend",this.touchEnd,{passive:!1});var e=this.getMouseDelay();e?this.startMouseDelayTimer(e):this.isMouseDelayMet=!0}},{key:"startMouseDelayTimer",value:function(e){var t=this;this.mouseDelayTimer&&clearTimeout(this.mouseDelayTimer),this.mouseDelayTimer=window.setTimeout((function(){t.mouseDownInfo&&(t.isMouseDelayMet=!0)}),e),this.isMouseDelayMet=!1}},{key:"handleMouseMove",value:function(e,t){if(this.isMouseStarted)return this.mouseDrag(t),void(e.cancelable&&e.preventDefault());this.isMouseDelayMet&&(this.mouseDownInfo&&(this.isMouseStarted=!1!==this.mouseStart(this.mouseDownInfo)),this.isMouseStarted?(this.mouseDrag(t),e.cancelable&&e.preventDefault()):this.handleMouseUp(t))}},{key:"handleMouseUp",value:function(e){this.removeMouseMoveEventListeners(),this.isMouseDelayMet=!1,this.mouseDownInfo=null,this.isMouseStarted&&(this.isMouseStarted=!1,this.mouseStop(e))}},{key:"removeMouseMoveEventListeners",value:function(){document.removeEventListener("mousemove",this.mouseMove,{passive:!1}),document.removeEventListener("touchmove",this.touchMove,{passive:!1}),document.removeEventListener("mouseup",this.mouseUp,{passive:!1}),document.removeEventListener("touchend",this.touchEnd,{passive:!1})}}]),n}(L),M=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"_supportsLocalStorage",void 0),this.treeWidget=t}return s(e,[{key:"saveState",value:function(){var e=JSON.stringify(this.getState());this.treeWidget.options.onSetStateFromStorage?this.treeWidget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)}},{key:"getStateFromStorage",value:function(){var e=this.loadFromStorage();return e?this.parseState(e):null}},{key:"getState",value:function(){var e,t,n=this;return{open_nodes:(t=[],n.treeWidget.tree.iterate((function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0})),t),selected_node:(e=[],n.treeWidget.getSelectedNodes().forEach((function(t){null!=t.id&&e.push(t.id)})),e)}}},{key:"setInitialState",value:function(e){if(e){var t=!1;return e.open_nodes&&(t=this.openInitialNodes(e.open_nodes)),e.selected_node&&(this.resetSelection(),this.selectInitialNodes(e.selected_node)),t}return!1}},{key:"setInitialStateOnDemand",value:function(e,t){e?this.doSetInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()}},{key:"getNodeIdToBeSelected",value:function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null}},{key:"parseState",value:function(e){var t,n=JSON.parse(e);return n&&n.selected_node&&("number"==typeof(t=n.selected_node)&&t%1==0)&&(n.selected_node=[n.selected_node]),n}},{key:"loadFromStorage",value:function(){return this.treeWidget.options.onGetStateFromStorage?this.treeWidget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):null}},{key:"openInitialNodes",value:function(e){var t,n=!1,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(o.load_on_demand?n=!0:o.is_open=!0)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"selectInitialNodes",value:function(e){var t,n=0,i=k(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(n+=1,this.treeWidget.selectNodeHandler.addToSelection(o))}}catch(e){i.e(e)}finally{i.f()}return 0!==n}},{key:"resetSelection",value:function(){var e=this.treeWidget.selectNodeHandler;e.getSelectedNodes().forEach((function(t){e.removeFromSelection(t)}))}},{key:"doSetInitialStateOnDemand",value:function(e,t,n){var i=this,r=0,o=e,s=function(){var e,s=[],l=k(o);try{for(l.s();!(e=l.n()).done;){var d=e.value,u=i.treeWidget.getNodeById(d);u?u.is_loading||(u.load_on_demand?a(u):i.treeWidget._openNode(u,!1,null)):s.push(d)}}catch(e){l.e(e)}finally{l.f()}o=s,i.selectInitialNodes(t)&&i.treeWidget._refreshElements(null),0===r&&n()},a=function(e){r+=1,i.treeWidget._openNode(e,!1,(function(){r-=1,s()}))};s()}},{key:"getKeyName",value:function(){return"string"==typeof this.treeWidget.options.saveState?this.treeWidget.options.saveState:"tree"}},{key:"supportsLocalStorage",value:function(){return null==this._supportsLocalStorage&&(this._supportsLocalStorage=function(){if(null==localStorage)return!1;try{var e="_storage_test";sessionStorage.setItem(e,"value"),sessionStorage.removeItem(e)}catch(e){return!1}return!0}()),this._supportsLocalStorage}}]),e}(),x=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"previousTop",void 0),a(this,"isInitialized",void 0),a(this,"$scrollParent",void 0),a(this,"scrollParentTop",void 0),this.treeWidget=t,this.previousTop=-1,this.isInitialized=!1}return s(e,[{key:"checkScrolling",value:function(){this.ensureInit(),this.checkVerticalScrolling(),this.checkHorizontalScrolling()}},{key:"scrollToY",value:function(e){if(this.ensureInit(),this.$scrollParent)this.$scrollParent[0].scrollTop=e;else{var t=this.treeWidget.$el.offset(),n=t?t.top:0;jQuery(document).scrollTop(e+n)}}},{key:"isScrolledIntoView",value:function(e){var t,n,i,r;this.ensureInit();var o=e.height()||0;if(this.$scrollParent){r=0,n=this.$scrollParent.height()||0;var s=e.offset();t=(i=(s?s.top:0)-this.scrollParentTop)+o}else{n=(r=jQuery(window).scrollTop()||0)+(jQuery(window).height()||0);var a=e.offset();t=(i=a?a.top:0)+o}return t<=n&&i>=r}},{key:"getScrollLeft",value:function(){return this.$scrollParent&&this.$scrollParent.scrollLeft()||0}},{key:"initScrollParent",value:function(){var e=this,t=function(){e.scrollParentTop=0,e.$scrollParent=null};"fixed"===this.treeWidget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;n0,s=n.left+i.clientWidth,a=n.left,l=e.pageX>s-20,d=e.pageX0,o=e.pageX>i-20,s=e.pageX-n<20;o?t.scrollLeft(n+20):s&&r&&t.scrollLeft(Math.max(n-20,0))}}}]),e}(),$=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"selectedNodes",void 0),a(this,"selectedSingleNode",void 0),this.treeWidget=t,this.selectedNodes=new Set,this.clear()}return s(e,[{key:"getSelectedNode",value:function(){var e=this.getSelectedNodes();return!!e.length&&e[0]}},{key:"getSelectedNodes",value:function(){var e=this;if(this.selectedSingleNode)return[this.selectedSingleNode];var t=[];return this.selectedNodes.forEach((function(n){var i=e.treeWidget.getNodeById(n);i&&t.push(i)})),t}},{key:"getSelectedNodesUnder",value:function(e){if(this.selectedSingleNode)return e.isParentOf(this.selectedSingleNode)?[this.selectedSingleNode]:[];var t=[];for(var n in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,n)){var i=this.treeWidget.getNodeById(n);i&&e.isParentOf(i)&&t.push(i)}return t}},{key:"isNodeSelected",value:function(e){return null!=e.id?this.selectedNodes.has(e.id):!!this.selectedSingleNode&&this.selectedSingleNode.element===e.element}},{key:"clear",value:function(){this.selectedNodes.clear(),this.selectedSingleNode=null}},{key:"removeFromSelection",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];null==e.id?this.selectedSingleNode&&e.element===this.selectedSingleNode.element&&(this.selectedSingleNode=null):(this.selectedNodes.delete(e.id),n&&e.iterate((function(){return null!=e.id&&t.selectedNodes.delete(e.id),!0})))}},{key:"addToSelection",value:function(e){null!=e.id?this.selectedNodes.add(e.id):this.selectedSingleNode=e}},{key:"isFocusOnTree",value:function(){var e=document.activeElement;return Boolean(e&&"SPAN"===e.tagName&&this.treeWidget._containsElement(e))}}]),e}(),q=function(){function e(t,n){r(this,e),a(this,"node",void 0),a(this,"$element",void 0),a(this,"treeWidget",void 0),this.init(t,n)}return s(e,[{key:"init",value:function(e,t){if(this.node=e,this.treeWidget=t,!e.element){var n=this.treeWidget.element.get(0);n&&(e.element=n)}e.element&&(this.$element=jQuery(e.element))}},{key:"addDropHint",value:function(e){return this.mustShowBorderDropHint(e)?new Q(this.$element,this.treeWidget._getScrollLeft()):new U(this.node,this.$element,e)}},{key:"select",value:function(e){var t,n=this.getLi();n.addClass("jqtree-selected"),n.attr("aria-selected","true");var i=this.getSpan();i.attr("tabindex",null!==(t=this.treeWidget.options.tabIndex)&&void 0!==t?t:null),e&&i.trigger("focus")}},{key:"deselect",value:function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.removeAttr("tabindex"),t.blur()}},{key:"getUl",value:function(){return this.$element.children("ul:first")}},{key:"getSpan",value:function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")}},{key:"getLi",value:function(){return this.$element}},{key:"mustShowBorderDropHint",value:function(e){return e===S.Inside}}]),e}(),B=function(e){l(n,e);var t=v(n);function n(){return r(this,n),t.apply(this,arguments)}return s(n,[{key:"open",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"fast";if(!this.node.is_open){this.node.is_open=!0;var r=this.getButton();r.removeClass("jqtree-closed"),r.html("");var o=r.get(0);if(o){var s=this.treeWidget.renderer.openedIconElement.cloneNode(!0);o.appendChild(s)}var a=function(){t.getLi().removeClass("jqtree-closed"),t.getSpan().attr("aria-expanded","true"),e&&e(t.node),t.treeWidget._triggerEvent("tree.open",{node:t.node})};n?this.getUl().slideDown(i,a):(this.getUl().show(),a())}}},{key:"close",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"fast";if(this.node.is_open){this.node.is_open=!1;var i=this.getButton();i.addClass("jqtree-closed"),i.html("");var r=i.get(0);if(r){var o=this.treeWidget.renderer.closedIconElement.cloneNode(!0);r.appendChild(o)}var s=function(){e.getLi().addClass("jqtree-closed"),e.getSpan().attr("aria-expanded","false"),e.treeWidget._triggerEvent("tree.close",{node:e.node})};t?this.getUl().slideUp(n,s):(this.getUl().hide(),s())}}},{key:"mustShowBorderDropHint",value:function(e){return!this.node.is_open&&e===S.Inside}},{key:"getButton",value:function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")}}]),n}(q),Q=function(){function e(t,n){r(this,e),a(this,"$hint",void 0);var i=t.children(".jqtree-element"),o=t.width()||0,s=Math.max(o+n-4,0),l=i.outerHeight()||0,d=Math.max(l-4,0);this.$hint=jQuery(''),i.append(this.$hint),this.$hint.css({width:s,height:d})}return s(e,[{key:"remove",value:function(){this.$hint.remove()}}]),e}(),U=function(){function e(t,n,i){r(this,e),a(this,"$element",void 0),a(this,"node",void 0),a(this,"$ghost",void 0),this.$element=n,this.node=t,this.$ghost=jQuery('
  • \n
  • '),i===S.After?this.moveAfter():i===S.Before?this.moveBefore():i===S.Inside&&(t.isFolder()&&t.is_open?this.moveInsideOpenFolder():this.moveInside())}return s(e,[{key:"remove",value:function(){this.$ghost.remove()}},{key:"moveAfter",value:function(){this.$element.after(this.$ghost)}},{key:"moveBefore",value:function(){this.$element.before(this.$ghost)}},{key:"moveInsideOpenFolder",value:function(){var e=this.node.children[0].element;e&&jQuery(e).before(this.$ghost)}},{key:"moveInside",value:function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")}}]),e}(),R="Node parameter is empty",X="Parameter is empty: ",Y=function(e){l(o,e);var t=v(o);function o(){var e;r(this,o);for(var n=arguments.length,i=new Array(n),s=0;s1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw Error(R);var n=null!=t?t:this.options.slide;return e.is_open?this.closeNode(e,n):this.openNode(e,n),this.element}},{key:"getTree",value:function(){return this.tree}},{key:"selectNode",value:function(e,t){return this.doSelectNode(e,t),this.element}},{key:"getSelectedNode",value:function(){return this.selectNodeHandler.getSelectedNode()}},{key:"toJson",value:function(){return JSON.stringify(this.tree.getData())}},{key:"loadData",value:function(e,t){return this.doLoadData(e,t),this.element}},{key:"loadDataFromUrl",value:function(e,t,n){return"string"==typeof e?this.doLoadDataFromUrl(e,t,null!=n?n:null):this.doLoadDataFromUrl(null,e,t),this.element}},{key:"reload",value:function(e){return this.doLoadDataFromUrl(null,null,e),this.element}},{key:"refresh",value:function(){return this._refreshElements(null),this.element}},{key:"getNodeById",value:function(e){return this.tree.getNodeById(e)}},{key:"getNodeByName",value:function(e){return this.tree.getNodeByName(e)}},{key:"getNodeByNameMustExist",value:function(e){return this.tree.getNodeByNameMustExist(e)}},{key:"getNodesByProperty",value:function(e,t){return this.tree.getNodesByProperty(e,t)}},{key:"getNodeByHtmlElement",value:function(e){return this.getNode(jQuery(e))}},{key:"getNodeByCallback",value:function(e){return this.tree.getNodeByCallback(e)}},{key:"openNode",value:function(e,t,n){var i=this;if(!e)throw Error(R);var r=function(){var e,r,o;("function"==typeof t?(e=t,r=null):(r=t,e=n),null==r)&&(r=null!==(o=i.options.slide)&&void 0!==o&&o);return[r,e]}(),o=g(r,2),s=o[0],a=o[1];return this._openNode(e,s,a),this.element}},{key:"closeNode",value:function(e,t){if(!e)throw Error(R);var n=null!=t?t:this.options.slide;return(e.isFolder()||e.isEmptyFolder)&&(new B(e,this).close(n,this.options.animationSpeed),this.saveState()),this.element}},{key:"isDragging",value:function(){return this.dndHandler.isDragging}},{key:"refreshHitAreas",value:function(){return this.dndHandler.refresh(),this.element}},{key:"addNodeAfter",value:function(e,t){var n=t.addAfter(e);return n&&this._refreshElements(t.parent),n}},{key:"addNodeBefore",value:function(e,t){if(!t)throw Error(X+"existingNode");var n=t.addBefore(e);return n&&this._refreshElements(t.parent),n}},{key:"addParentNode",value:function(e,t){if(!t)throw Error(X+"existingNode");var n=t.addParent(e);return n&&this._refreshElements(n.parent),n}},{key:"removeNode",value:function(e){if(!e)throw Error(R);if(!e.parent)throw Error("Node has no parent");this.selectNodeHandler.removeFromSelection(e,!0);var t=e.parent;return e.remove(),this._refreshElements(t),this.element}},{key:"appendNode",value:function(e,t){var n=t||this.tree,i=n.append(e);return this._refreshElements(n),i}},{key:"prependNode",value:function(e,t){var n=null!=t?t:this.tree,i=n.prepend(e);return this._refreshElements(n),i}},{key:"updateNode",value:function(e,t){if(!e)throw Error(R);var n="object"===i(t)&&t.id&&t.id!==e.id;return n&&this.tree.removeNodeFromIndex(e),e.setData(t),n&&this.tree.addNodeToIndex(e),"object"===i(t)&&t.children&&t.children instanceof Array&&(e.removeChildren(),t.children.length&&e.loadFromData(t.children)),this._refreshElements(e),this.element}},{key:"isSelectedNodeInSubtree",value:function(e){var t=this.getSelectedNode();return!!t&&(e===t||e.isParentOf(t))}},{key:"moveNode",value:function(e,t,n){if(!e)throw Error(R);if(!t)throw Error(X+"targetNode");var i=b[n];return void 0!==i&&(this.tree.moveNode(e,t,i),this._refreshElements(null)),this.element}},{key:"getStateFromStorage",value:function(){return this.saveStateHandler.getStateFromStorage()}},{key:"addToSelection",value:function(e,t){if(!e)throw Error(R);return this.selectNodeHandler.addToSelection(e),this._getNodeElementForNode(e).select(void 0===t||t),this.saveState(),this.element}},{key:"getSelectedNodes",value:function(){return this.selectNodeHandler.getSelectedNodes()}},{key:"isNodeSelected",value:function(e){if(!e)throw Error(R);return this.selectNodeHandler.isNodeSelected(e)}},{key:"removeFromSelection",value:function(e){if(!e)throw Error(R);return this.selectNodeHandler.removeFromSelection(e),this._getNodeElementForNode(e).deselect(),this.saveState(),this.element}},{key:"scrollToNode",value:function(e){if(!e)throw Error(R);var t=jQuery(e.element).offset(),n=t?t.top:0,i=this.$el.offset(),r=n-(i?i.top:0);return this.scrollHandler.scrollToY(r),this.element}},{key:"getState",value:function(){return this.saveStateHandler.getState()}},{key:"setState",value:function(e){return this.saveStateHandler.setInitialState(e),this._refreshElements(null),this.element}},{key:"setOption",value:function(e,t){return this.options[e]=t,this.element}},{key:"moveDown",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveDown(e),this.element}},{key:"moveUp",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveUp(e),this.element}},{key:"getVersion",value:function(){return"1.7.0"}},{key:"_triggerEvent",value:function(e,t){var n=jQuery.Event(e,t);return this.element.trigger(n),n}},{key:"_openNode",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,r=function(e,n,i){new B(e,t).open(i,n,t.options.animationSpeed)};if(e.isFolder()||e.isEmptyFolder)if(e.load_on_demand)this.loadFolderOnDemand(e,n,i);else{for(var o=e.parent;o;)o.parent&&r(o,!1,null),o=o.parent;r(e,n,i),this.saveState()}}},{key:"_refreshElements",value:function(e){var t=this.selectNodeHandler.isFocusOnTree(),n=!!e&&this.isSelectedNodeInSubtree(e);this.renderer.render(e),n&&this.selectCurrentNode(t),this._triggerEvent("tree.refresh")}},{key:"_getNodeElementForNode",value:function(e){return e.isFolder()?new B(e,this):new q(e,this)}},{key:"_getNodeElement",value:function(e){var t=this.getNode(e);return t?this._getNodeElementForNode(t):null}},{key:"_containsElement",value:function(e){var t=this.getNode(jQuery(e));return null!=t&&t.tree===this.tree}},{key:"_getScrollLeft",value:function(){return this.scrollHandler.getScrollLeft()}},{key:"init",value:function(){p(d(o.prototype),"init",this).call(this),this.element=this.$el,this.isInitialized=!1,this.options.rtl=this.getRtlOption(),null==this.options.closedIcon&&(this.options.closedIcon=this.getDefaultClosedIcon()),this.renderer=new F(this),this.dataLoader=new W(this),this.saveStateHandler=new M(this),this.selectNodeHandler=new $(this),this.dndHandler=new j(this),this.scrollHandler=new x(this),this.keyHandler=new T(this),this.initData(),this.element.on("click",this.handleClick),this.element.on("dblclick",this.handleDblclick),this.options.useContextMenu&&this.element.on("contextmenu",this.handleContextmenu)}},{key:"deinit",value:function(){this.element.empty(),this.element.off(),this.keyHandler.deinit(),this.tree=new I({},!0),p(d(o.prototype),"deinit",this).call(this)}},{key:"mouseCapture",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseCapture(e)}},{key:"mouseStart",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStart(e)}},{key:"mouseDrag",value:function(e){if(this.options.dragAndDrop){var t=this.dndHandler.mouseDrag(e);return this.scrollHandler.checkScrolling(),t}return!1}},{key:"mouseStop",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStop(e)}},{key:"getMouseDelay",value:function(){var e;return null!==(e=this.options.startDndDelay)&&void 0!==e?e:0}},{key:"initData",value:function(){this.options.data?this.doLoadData(this.options.data,null):this.getDataUrlInfo(null)?this.doLoadDataFromUrl(null,null,null):this.doLoadData([],null)}},{key:"getDataUrlInfo",value:function(e){var t,n=this,r=this.options.dataUrl||this.element.data("url"),o=function(t){if(null!=e&&e.id){var i={node:e.id};t.data=i}else{var r=n.getNodeIdToBeSelected();if(r){var o={selected_node:r};t.data=o}}};return"function"==typeof r?r(e):"string"==typeof r?(o(t={url:r}),t):r&&"object"===i(r)?(o(r),r):null}},{key:"getNodeIdToBeSelected",value:function(){return this.options.saveState?this.saveStateHandler.getNodeIdToBeSelected():null}},{key:"initTree",value:function(e){var t=this,n=function(){t.isInitialized||(t.isInitialized=!0,t._triggerEvent("tree.init"))};if(this.options.nodeClass){this.tree=new this.options.nodeClass(null,!0,this.options.nodeClass),this.selectNodeHandler.clear(),this.tree.loadFromData(e);var i=this.setInitialState();this._refreshElements(null),i?this.setInitialStateOnDemand(n):n()}}},{key:"setInitialState",value:function(){var e=this,t=g(function(){if(e.options.saveState){var t=e.saveStateHandler.getStateFromStorage();return t?[!0,e.saveStateHandler.setInitialState(t)]:[!1,!1]}return[!1,!1]}(),2),n=t[0],i=t[1];return n||(i=function(){if(!1===e.options.autoOpen)return!1;var t=e.getAutoOpenMaxLevel(),n=!1;return e.tree.iterate((function(e,i){return e.load_on_demand?(n=!0,!1):!!e.hasChildren()&&(e.is_open=!0,i!==t)})),n}()),i}},{key:"setInitialStateOnDemand",value:function(e){var t,n,i,r,o=this;(function(){if(o.options.saveState){var t=o.saveStateHandler.getStateFromStorage();return!!t&&(o.saveStateHandler.setInitialStateOnDemand(t,e),!0)}return!1})()||(t=o.getAutoOpenMaxLevel(),n=0,i=function(e){n+=1,o._openNode(e,!1,(function(){n-=1,r()}))},(r=function(){o.tree.iterate((function(e,n){return e.load_on_demand?(e.is_loading||i(e),!1):(o._openNode(e,!1,null),n!==t)})),0===n&&e()})())}},{key:"getAutoOpenMaxLevel",value:function(){return!0===this.options.autoOpen?-1:"number"==typeof this.options.autoOpen?this.options.autoOpen:"string"==typeof this.options.autoOpen?parseInt(this.options.autoOpen,10):0}},{key:"getClickTarget",value:function(e){var t=jQuery(e),n=t.closest(".jqtree-toggler");if(n.length){var i=this.getNode(n);if(i)return{type:"button",node:i}}else{var r=t.closest(".jqtree-element");if(r.length){var o=this.getNode(r);if(o)return{type:"label",node:o}}}return null}},{key:"getNode",value:function(e){var t=e.closest("li.jqtree_common");return 0===t.length?null:t.data("node")}},{key:"saveState",value:function(){this.options.saveState&&this.saveStateHandler.saveState()}},{key:"selectCurrentNode",value:function(e){var t=this.getSelectedNode();if(t){var n=this._getNodeElementForNode(t);n&&n.select(e)}}},{key:"deselectCurrentNode",value:function(){var e=this.getSelectedNode();e&&this.removeFromSelection(e)}},{key:"getDefaultClosedIcon",value:function(){return this.options.rtl?"◀":"►"}},{key:"getRtlOption",value:function(){if(null!=this.options.rtl)return this.options.rtl;var e=this.element.data("rtl");return null!==e&&!1!==e&&void 0!==e}},{key:"doSelectNode",value:function(e,t){var i=this,r=function(){i.options.saveState&&i.saveStateHandler.saveState()};if(!e)return this.deselectCurrentNode(),void r();var o=n(n({},{mustSetFocus:!0,mustToggle:!0}),t||{});if(i.options.onCanSelectNode?!0===i.options.selectable&&i.options.onCanSelectNode(e):!0===i.options.selectable){if(this.selectNodeHandler.isNodeSelected(e))o.mustToggle&&(this.deselectCurrentNode(),this._triggerEvent("tree.select",{node:null,previous_node:e}));else{var s=this.getSelectedNode()||null;this.deselectCurrentNode(),this.addToSelection(e,o.mustSetFocus),this._triggerEvent("tree.select",{node:e,deselected_node:s}),(a=e.parent)&&a.parent&&!a.is_open&&i.openNode(a,!1)}var a;r()}}},{key:"doLoadData",value:function(e,t){e&&(t?(this.deselectNodes(t),this.loadSubtree(e,t)):this.initTree(e),this.isDragging()&&this.dndHandler.refresh()),this._triggerEvent("tree.load_data",{tree_data:e,parent_node:t})}},{key:"deselectNodes",value:function(e){var t,n=k(this.selectNodeHandler.getSelectedNodesUnder(e));try{for(n.s();!(t=n.n()).done;){var i=t.value;this.selectNodeHandler.removeFromSelection(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"loadSubtree",value:function(e,t){t.loadFromData(e),t.load_on_demand=!1,t.is_loading=!1,this._refreshElements(t)}},{key:"doLoadDataFromUrl",value:function(e,t,n){var i=e||this.getDataUrlInfo(t);this.dataLoader.loadFromUrl(i,t,n)}},{key:"loadFolderOnDemand",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0;e.is_loading=!0,this.doLoadDataFromUrl(null,e,(function(){t._openNode(e,n,i)}))}}]),o}(H);return a(Y,"defaults",{animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,closedIcon:void 0,data:void 0,dataFilter:void 0,dataUrl:void 0,dragAndDrop:!1,keyboardSupport:!0,nodeClass:I,onCanMove:void 0,onCanMoveTo:void 0,onCanSelectNode:void 0,onCreateLi:void 0,onDragMove:void 0,onDragStop:void 0,onGetStateFromStorage:void 0,onIsMoveHandle:void 0,onLoadFailed:void 0,onLoading:void 0,onSetStateFromStorage:void 0,openedIcon:"▼",openFolderDelay:500,rtl:void 0,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0}),L.register(Y,"tree"),e.JqTreeWidget=Y,e}({}); +var jqtree=function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function n(e){for(var n=1;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function y(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var k=function(e){return e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None",e}({}),N={before:k.Before,after:k.After,inside:k.Inside,none:k.None},S=function(e){for(var t in N)if(Object.prototype.hasOwnProperty.call(N,t)&&N[t]===e)return t;return""},b=function(e){return"object"===i(e)&&"children"in e&&e.children instanceof Array},_=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;r(this,e),a(this,"id",void 0),a(this,"name",void 0),a(this,"children",void 0),a(this,"parent",void 0),a(this,"idMapping",void 0),a(this,"tree",void 0),a(this,"nodeClass",void 0),a(this,"load_on_demand",void 0),a(this,"is_open",void 0),a(this,"element",void 0),a(this,"is_loading",void 0),a(this,"isEmptyFolder",void 0),this.name="",this.isEmptyFolder=!1,this.load_on_demand=!1,this.setData(t),this.children=[],this.parent=null,n&&(this.idMapping=new Map,this.tree=this,this.nodeClass=i)}return s(e,[{key:"setData",value:function(e){if(e)if("string"==typeof e)this.name=e;else if("object"===i(e))for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];"label"===t||"name"===t?"string"==typeof n&&(this.name=n):"children"!==t&&"parent"!==t&&(this[t]=n)}}},{key:"loadFromData",value:function(e){this.removeChildren();var t,n=m(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,r=this.createNode(i);this.addChild(r),b(i)&&(0===i.children.length?r.isEmptyFolder=!0:r.loadFromData(i.children))}}catch(e){n.e(e)}finally{n.f()}return this}},{key:"addChild",value:function(e){this.children.push(e),e.setParent(this)}},{key:"addChildAtPosition",value:function(e,t){this.children.splice(t,0,e),e.setParent(this)}},{key:"removeChild",value:function(e){e.removeChildren(),this.doRemoveChild(e)}},{key:"getChildIndex",value:function(e){return this.children.indexOf(e)}},{key:"hasChildren",value:function(){return 0!==this.children.length}},{key:"isFolder",value:function(){return this.hasChildren()||this.load_on_demand}},{key:"iterate",value:function(e){!function t(n,i){if(n.children){var r,o=m(n.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;e(s,i)&&s.hasChildren()&&t(s,i+1)}}catch(e){o.e(e)}finally{o.f()}}}(this,0)}},{key:"moveNode",value:function(e,t,n){if(!e.parent||e.isParentOf(t))return!1;switch(e.parent.doRemoveChild(e),n){case k.After:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)+1),!0);case k.Before:return!!t.parent&&(t.parent.addChildAtPosition(e,t.parent.getChildIndex(t)),!0);case k.Inside:return t.addChildAtPosition(e,0),!0;default:return!1}}},{key:"getData",value:function(){var e=function e(t){return t.map((function(t){var n={};for(var i in t)if(-1===["parent","children","element","idMapping","load_on_demand","nodeClass","tree","isEmptyFolder"].indexOf(i)&&Object.prototype.hasOwnProperty.call(t,i)){var r=t[i];n[i]=r}return t.hasChildren()&&(n.children=e(t.children)),n}))};return e(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?[this]:this.children)}},{key:"getNodeByName",value:function(e){return this.getNodeByCallback((function(t){return t.name===e}))}},{key:"getNodeByNameMustExist",value:function(e){var t=this.getNodeByCallback((function(t){return t.name===e}));if(!t)throw"Node with name ".concat(e," not found");return t}},{key:"getNodeByCallback",value:function(e){var t=null;return this.iterate((function(n){return!t&&(!e(n)||(t=n,!1))})),t}},{key:"addAfter",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n+1),b(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addBefore",value:function(e){if(this.parent){var t=this.createNode(e),n=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(t,n),b(e)&&e.children.length&&t.loadFromData(e.children),t}return null}},{key:"addParent",value:function(e){if(this.parent){var t=this.createNode(e);this.tree&&t.setParent(this.tree);var n,i=this.parent,r=m(i.children);try{for(r.s();!(n=r.n()).done;){var o=n.value;t.addChild(o)}}catch(e){r.e(e)}finally{r.f()}return i.children=[],i.addChild(t),t}return null}},{key:"remove",value:function(){this.parent&&(this.parent.removeChild(this),this.parent=null)}},{key:"append",value:function(e){var t=this.createNode(e);return this.addChild(t),b(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"prepend",value:function(e){var t=this.createNode(e);return this.addChildAtPosition(t,0),b(e)&&e.children.length&&t.loadFromData(e.children),t}},{key:"isParentOf",value:function(e){for(var t=e.parent;t;){if(t===this)return!0;t=t.parent}return!1}},{key:"getLevel",value:function(){for(var e=0,t=this;t.parent;)e+=1,t=t.parent;return e}},{key:"getNodeById",value:function(e){return this.idMapping.get(e)||null}},{key:"addNodeToIndex",value:function(e){null!=e.id&&this.idMapping.set(e.id,e)}},{key:"removeNodeFromIndex",value:function(e){null!=e.id&&this.idMapping.delete(e.id)}},{key:"removeChildren",value:function(){var e=this;this.iterate((function(t){var n;return null===(n=e.tree)||void 0===n||n.removeNodeFromIndex(t),!0})),this.children=[]}},{key:"getPreviousSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)-1;return e>=0?this.parent.children[e]:null}return null}},{key:"getNextSibling",value:function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e0&&void 0!==arguments[0])||arguments[0])&&this.hasChildren())return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getNextVisibleNode",value:function(){if(this.hasChildren()&&this.is_open)return this.children[0];if(this.parent){var e=this.getNextSibling();return e||this.parent.getNextNode(!1)}return null}},{key:"getPreviousNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()?e.getLastChild():e:this.getParent()}return null}},{key:"getPreviousVisibleNode",value:function(){if(this.parent){var e=this.getPreviousSibling();return e?e.hasChildren()&&e.is_open?e.getLastChild():e:this.getParent()}return null}},{key:"getParent",value:function(){return this.parent&&this.parent.parent?this.parent:null}},{key:"getLastChild",value:function(){if(this.hasChildren()){var e=this.children[this.children.length-1];return e.hasChildren()&&e.is_open?e.getLastChild():e}return null}},{key:"initFromData",value:function(e){var t,n=this,i=function(e){var t,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.createNode();o.initFromData(r),n.addChild(o)}}catch(e){i.e(e)}finally{i.f()}};t=e,n.setData(t),b(t)&&t.children.length&&i(t.children)}},{key:"setParent",value:function(e){var t;this.parent=e,this.tree=e.tree,null===(t=this.tree)||void 0===t||t.addNodeToIndex(this)}},{key:"doRemoveChild",value:function(e){var t;this.children.splice(this.getChildIndex(e),1),null===(t=this.tree)||void 0===t||t.removeNodeFromIndex(e)}},{key:"getNodeClass",value:function(){var t;return this.nodeClass||(null==this||null===(t=this.tree)||void 0===t?void 0:t.nodeClass)||e}},{key:"createNode",value:function(e){return new(this.getNodeClass())(e)}}]),e}(),D=function(){function e(t){r(this,e),a(this,"hitAreas",void 0),a(this,"isDragging",void 0),a(this,"currentItem",void 0),a(this,"hoveredArea",void 0),a(this,"positionInfo",void 0),a(this,"treeWidget",void 0),a(this,"dragElement",void 0),a(this,"previousGhost",void 0),a(this,"openFolderTimer",void 0),this.treeWidget=t,this.hoveredArea=null,this.hitAreas=[],this.isDragging=!1,this.currentItem=null,this.positionInfo=null}return s(e,[{key:"mouseCapture",value:function(e){var t=jQuery(e.target);if(!this.mustCaptureElement(t))return null;if(this.treeWidget.options.onIsMoveHandle&&!this.treeWidget.options.onIsMoveHandle(t))return null;var n=this.treeWidget._getNodeElement(t);return n&&this.treeWidget.options.onCanMove&&(this.treeWidget.options.onCanMove(n.node)||(n=null)),this.currentItem=n,null!=this.currentItem}},{key:"mouseStart",value:function(e){var t;if(!this.currentItem||void 0===e.pageX||void 0===e.pageY)return!1;this.refresh();var n=jQuery(e.target).offset(),i=n?n.left:0,r=n?n.top:0,o=this.currentItem.node;return this.dragElement=new j(o.name,e.pageX-i,e.pageY-r,this.treeWidget.element,null===(t=this.treeWidget.options.autoEscape)||void 0===t||t),this.isDragging=!0,this.positionInfo=e,this.currentItem.$element.addClass("jqtree-moving"),!0}},{key:"mouseDrag",value:function(e){if(!this.currentItem||!this.dragElement||void 0===e.pageX||void 0===e.pageY)return!1;this.dragElement.move(e.pageX,e.pageY),this.positionInfo=e;var t=this.findHoveredArea(e.pageX,e.pageY);return t&&this.canMoveToArea(t)?(t.node.isFolder()||this.stopOpenFolderTimer(),this.hoveredArea!==t&&(this.hoveredArea=t,this.mustOpenFolderTimer(t)?this.startOpenFolderTimer(t.node):this.stopOpenFolderTimer(),this.updateDropHint())):(this.removeDropHint(),this.stopOpenFolderTimer(),this.hoveredArea=t),t||this.treeWidget.options.onDragMove&&this.treeWidget.options.onDragMove(this.currentItem.node,e.originalEvent),!0}},{key:"mouseStop",value:function(e){this.moveItem(e),this.clear(),this.removeHover(),this.removeDropHint(),this.removeHitAreas();var t=this.currentItem;return this.currentItem&&(this.currentItem.$element.removeClass("jqtree-moving"),this.currentItem=null),this.isDragging=!1,this.positionInfo=null,!this.hoveredArea&&t&&this.treeWidget.options.onDragStop&&this.treeWidget.options.onDragStop(t.node,e.originalEvent),!1}},{key:"refresh",value:function(){this.removeHitAreas(),this.currentItem&&(this.generateHitAreas(),this.currentItem=this.treeWidget._getNodeElementForNode(this.currentItem.node),this.isDragging&&this.currentItem.$element.addClass("jqtree-moving"))}},{key:"generateHitAreas",value:function(){if(this.currentItem){var e=new I(this.treeWidget.tree,this.currentItem.node,this.getTreeDimensions().bottom);this.hitAreas=e.generate()}else this.hitAreas=[]}},{key:"mustCaptureElement",value:function(e){return!e.is("input,select,textarea")}},{key:"canMoveToArea",value:function(e){if(!this.treeWidget.options.onCanMoveTo)return!0;if(!this.currentItem)return!1;var t=S(e.position);return this.treeWidget.options.onCanMoveTo(this.currentItem.node,e.node,t)}},{key:"removeHitAreas",value:function(){this.hitAreas=[]}},{key:"clear",value:function(){this.dragElement&&(this.dragElement.remove(),this.dragElement=null)}},{key:"removeDropHint",value:function(){this.previousGhost&&this.previousGhost.remove()}},{key:"removeHover",value:function(){this.hoveredArea=null}},{key:"findHoveredArea",value:function(e,t){var n=this.getTreeDimensions();if(en.right||t>n.bottom)return null;for(var i=0,r=this.hitAreas.length;i>1,s=this.hitAreas[o];if(ts.bottom))return s;i=o+1}}return null}},{key:"mustOpenFolderTimer",value:function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===k.Inside}},{key:"updateDropHint",value:function(){if(this.hoveredArea){this.removeDropHint();var e=this.treeWidget._getNodeElementForNode(this.hoveredArea.node);this.previousGhost=e.addDropHint(this.hoveredArea.position)}}},{key:"startOpenFolderTimer",value:function(e){var t=this;this.stopOpenFolderTimer();var n=this.treeWidget.options.openFolderDelay;!1!==n&&(this.openFolderTimer=window.setTimeout((function(){t.treeWidget._openNode(e,t.treeWidget.options.slide,(function(){t.refresh(),t.updateDropHint()}))}),n))}},{key:"stopOpenFolderTimer",value:function(){this.openFolderTimer&&(clearTimeout(this.openFolderTimer),this.openFolderTimer=null)}},{key:"moveItem",value:function(e){var t=this;if(this.currentItem&&this.hoveredArea&&this.hoveredArea.position!==k.None&&this.canMoveToArea(this.hoveredArea)){var n=this.currentItem.node,i=this.hoveredArea.node,r=this.hoveredArea.position,o=n.parent;r===k.Inside&&(this.hoveredArea.node.is_open=!0);var s=function(){t.treeWidget.tree.moveNode(n,i,r),t.treeWidget.element.empty(),t.treeWidget._refreshElements(null)};this.treeWidget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:S(r),previous_parent:o,do_move:s,original_event:e.originalEvent}}).isDefaultPrevented()||s()}}},{key:"getTreeDimensions",value:function(){var e=this.treeWidget.element.offset();if(e){var t=this.treeWidget.element,n=t.width()||0,i=t.height()||0,r=e.left+this.treeWidget._getScrollLeft();return{left:r,top:e.top,right:r+n,bottom:e.top+i+16}}return{left:0,top:0,right:0,bottom:0}}}]),e}(),I=function(e){l(n,e);var t=c(n);function n(e,i,o){var s;return r(this,n),a(h(s=t.call(this,e)),"currentNode",void 0),a(h(s),"treeBottom",void 0),a(h(s),"positions",void 0),a(h(s),"lastTop",void 0),s.currentNode=i,s.treeBottom=o,s}return s(n,[{key:"generate",value:function(){return this.positions=[],this.lastTop=0,this.iterate(),this.generateHitAreas(this.positions)}},{key:"generateHitAreas",value:function(e){var t,n=-1,i=[],r=[],o=m(e);try{for(o.s();!(t=o.n()).done;){var s=t.value;s.top!==n&&i.length&&(i.length&&this.generateHitAreasForGroup(r,i,n,s.top),n=s.top,i=[]),i.push(s)}}catch(e){o.e(e)}finally{o.f()}return this.generateHitAreasForGroup(r,i,n,this.treeBottom),r}},{key:"handleOpenFolder",value:function(e,t){return e!==this.currentNode&&(e.children[0]!==this.currentNode&&this.addPosition(e,k.Inside,this.getTop(t)),!0)}},{key:"handleClosedFolder",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,k.None,i):(this.addPosition(e,k.Inside,i),t!==this.currentNode&&this.addPosition(e,k.After,i))}},{key:"handleFirstNode",value:function(e){e!==this.currentNode&&this.addPosition(e,k.Before,this.getTop(jQuery(e.element)))}},{key:"handleAfterOpenFolder",value:function(e,t){e===this.currentNode||t===this.currentNode?this.addPosition(e,k.None,this.lastTop):this.addPosition(e,k.After,this.lastTop)}},{key:"handleNode",value:function(e,t,n){var i=this.getTop(n);e===this.currentNode?this.addPosition(e,k.None,i):this.addPosition(e,k.Inside,i),t===this.currentNode||e===this.currentNode?this.addPosition(e,k.None,i):this.addPosition(e,k.After,i)}},{key:"getTop",value:function(e){var t=e.offset();return t?t.top:0}},{key:"addPosition",value:function(e,t,n){var i={top:n,bottom:0,node:e,position:t};this.positions.push(i),this.lastTop=n}},{key:"generateHitAreasForGroup",value:function(e,t,n,i){for(var r=Math.min(t.length,4),o=Math.round((i-n)/r),s=n,a=0;a").addClass("jqtree-title jqtree-dragging"),s?this.$element.text(t):this.$element.html(t),this.$element.css("position","absolute"),o.append(this.$element)}return s(e,[{key:"move",value:function(e,t){this.$element.offset({left:e-this.offsetX,top:t-this.offsetY})}},{key:"remove",value:function(){this.$element.remove()}}]),e}(),E=function(e){return e?"true":"false"},C=function(){function e(t){r(this,e),a(this,"openedIconElement",void 0),a(this,"closedIconElement",void 0),a(this,"treeWidget",void 0),this.treeWidget=t,this.openedIconElement=this.createButtonElement(t.options.openedIcon||"+"),this.closedIconElement=this.createButtonElement(t.options.closedIcon||"-")}return s(e,[{key:"render",value:function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()}},{key:"renderFromRoot",value:function(){var e=this.treeWidget.element;e.empty(),this.createDomElements(e[0],this.treeWidget.tree.children,!0,1)}},{key:"renderFromNode",value:function(e){var t=jQuery(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)}},{key:"createDomElements",value:function(e,t,n,i){var r=this.createUl(n);e.appendChild(r);var o,s=m(t);try{for(s.s();!(o=s.n()).done;){var a=o.value,l=this.createLi(a,i);r.appendChild(l),this.attachNodeData(a,l),a.hasChildren()&&this.createDomElements(l,a.children,!1,i+1)}}catch(e){s.e(e)}finally{s.f()}}},{key:"attachNodeData",value:function(e,t){e.element=t,jQuery(t).data("node",e)}},{key:"createUl",value:function(e){var t,n;e?(t="jqtree-tree",n="tree",this.treeWidget.options.rtl&&(t+=" jqtree-rtl")):(t="",n="group"),this.treeWidget.options.dragAndDrop&&(t+=" jqtree-dnd");var i=document.createElement("ul");return i.className="jqtree_common ".concat(t),i.setAttribute("role",n),i}},{key:"createLi",value:function(e,t){var n=Boolean(this.treeWidget.selectNodeHandler.isNodeSelected(e)),i=e.isFolder()||e.isEmptyFolder&&this.treeWidget.options.showEmptyFolder?this.createFolderLi(e,t,n):this.createNodeLi(e,t,n);return this.treeWidget.options.onCreateLi&&this.treeWidget.options.onCreateLi(e,jQuery(i),n),i}},{key:"createFolderLi",value:function(e,t,n){var i=this.getButtonClasses(e),r=this.getFolderClasses(e,n),o=e.is_open?this.openedIconElement:this.closedIconElement,s=document.createElement("li");s.className="jqtree_common ".concat(r),s.setAttribute("role","presentation");var a=document.createElement("div");a.className="jqtree-element jqtree_common",a.setAttribute("role","presentation"),s.appendChild(a);var l=document.createElement("a");return l.className=i,l.appendChild(o.cloneNode(!0)),l.setAttribute("role","presentation"),l.setAttribute("aria-hidden","true"),this.treeWidget.options.buttonLeft&&a.appendChild(l),a.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!0)),this.treeWidget.options.buttonLeft||a.appendChild(l),s}},{key:"createNodeLi",value:function(e,t,n){var i=["jqtree_common"];n&&i.push("jqtree-selected");var r=i.join(" "),o=document.createElement("li");o.className=r,o.setAttribute("role","presentation");var s=document.createElement("div");return s.className="jqtree-element jqtree_common",s.setAttribute("role","presentation"),o.appendChild(s),s.appendChild(this.createTitleSpan(e.name,t,n,e.is_open,!1)),o}},{key:"createTitleSpan",value:function(e,t,n,i,r){var o=document.createElement("span"),s="jqtree-title jqtree_common";if(r&&(s+=" jqtree-title-folder"),s+=" jqtree-title-button-".concat(this.treeWidget.options.buttonLeft?"left":"right"),o.className=s,o.setAttribute("role","treeitem"),o.setAttribute("aria-level","".concat(t)),o.setAttribute("aria-selected",E(n)),o.setAttribute("aria-expanded",E(i)),n){var a=this.treeWidget.options.tabIndex;void 0!==a&&o.setAttribute("tabindex","".concat(a))}return this.treeWidget.options.autoEscape?o.textContent=e:o.innerHTML=e,o}},{key:"getButtonClasses",value:function(e){var t=["jqtree-toggler","jqtree_common"];return e.is_open||t.push("jqtree-closed"),this.treeWidget.options.buttonLeft?t.push("jqtree-toggler-left"):t.push("jqtree-toggler-right"),t.join(" ")}},{key:"getFolderClasses",value:function(e,t){var n=["jqtree-folder"];return e.is_open||n.push("jqtree-closed"),t&&n.push("jqtree-selected"),e.is_loading&&n.push("jqtree-loading"),n.join(" ")}},{key:"createButtonElement",value:function(e){if("string"==typeof e){var t=document.createElement("div");return t.innerHTML=e,document.createTextNode(t.innerHTML)}return jQuery(e)[0]}}]),e}(),w=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),this.treeWidget=t}return s(e,[{key:"loadFromUrl",value:function(e,t,n){var i=this;if(e){var r=this.getDomElement(t);this.addLoadingClass(r),this.notifyLoading(!0,t,r);var o=function(){i.removeLoadingClass(r),i.notifyLoading(!1,t,r)};this.submitRequest(e,(function(e){o(),i.treeWidget.loadData(i.parseData(e),t),n&&"function"==typeof n&&n()}),(function(e){o(),i.treeWidget.options.onLoadFailed&&i.treeWidget.options.onLoadFailed(e)}))}}},{key:"addLoadingClass",value:function(e){e&&e.addClass("jqtree-loading")}},{key:"removeLoadingClass",value:function(e){e&&e.removeClass("jqtree-loading")}},{key:"getDomElement",value:function(e){return e?jQuery(e.element):this.treeWidget.element}},{key:"notifyLoading",value:function(e,t,n){this.treeWidget.options.onLoading&&this.treeWidget.options.onLoading(e,t,n),this.treeWidget._triggerEvent("tree.loading_data",{isLoading:e,node:t,$el:n})}},{key:"submitRequest",value:function(e,t,i){var r,o=n({method:"GET",cache:!1,dataType:"json",success:t,error:i},"string"==typeof e?{url:e}:e);o.method=(null===(r=o.method)||void 0===r?void 0:r.toUpperCase())||"GET",jQuery.ajax(o)}},{key:"parseData",value:function(e){var t=this.treeWidget.options.dataFilter,n="string"==typeof e?JSON.parse(e):e;return t?t(n):n}}]),e}(),F=function(){function e(t){var n=this;r(this,e),a(this,"treeWidget",void 0),a(this,"handleKeyDown",(function(t){if(!n.canHandleKeyboard())return!0;var i=n.treeWidget.getSelectedNode();if(!i)return!0;switch(t.which){case e.DOWN:return n.moveDown(i);case e.UP:return n.moveUp(i);case e.RIGHT:return n.moveRight(i);case e.LEFT:return n.moveLeft(i);default:return!0}})),this.treeWidget=t,t.options.keyboardSupport&&jQuery(document).on("keydown.jqtree",this.handleKeyDown)}return s(e,[{key:"deinit",value:function(){jQuery(document).off("keydown.jqtree")}},{key:"moveDown",value:function(e){return this.selectNode(e.getNextVisibleNode())}},{key:"moveUp",value:function(e){return this.selectNode(e.getPreviousVisibleNode())}},{key:"moveRight",value:function(e){return!e.isFolder()||(e.is_open?this.selectNode(e.getNextVisibleNode()):(this.treeWidget.openNode(e),!1))}},{key:"moveLeft",value:function(e){return e.isFolder()&&e.is_open?(this.treeWidget.closeNode(e),!1):this.selectNode(e.getParent())}},{key:"selectNode",value:function(e){return!e||(this.treeWidget.selectNode(e),this.treeWidget.scrollHandler.isScrolledIntoView(jQuery(e.element).find(".jqtree-element"))||this.treeWidget.scrollToNode(e),!1)}},{key:"canHandleKeyboard",value:function(){return!!this.treeWidget.options.keyboardSupport&&this.treeWidget.selectNodeHandler.isFocusOnTree()}}]),e}();a(F,"LEFT",37),a(F,"UP",38),a(F,"RIGHT",39),a(F,"DOWN",40);var W=function(e,t){var n=function(){return"simple_widget_".concat(t)},r=function(e,t){var n=jQuery.data(e,t);return n&&n instanceof T?n:null},o=function(t,i){var o,s=n(),a=m(t.get());try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!r(l,s)){var d=new e(l,i);jQuery.data(l,s)||jQuery.data(l,s,d),d.init()}}}catch(e){a.e(e)}finally{a.f()}return t};jQuery.fn[t]=function(t){if(!t)return o(this,null);if("object"===i(t))return o(this,t);if("string"==typeof t&&"_"!==t[0]){var s=t;if("destroy"===s)return function(e){var t,i=n(),o=m(e.get());try{for(o.s();!(t=o.n()).done;){var s=t.value,a=r(s,i);a&&a.destroy(),jQuery.removeData(s,i)}}catch(e){o.e(e)}finally{o.f()}}(this);if("get_widget_class"===s)return e;for(var a=arguments.length,l=new Array(a>1?a-1:0),d=1;d1)){var n=t.changedTouches[0];e.handleMouseDown(L(n,t))}})),a(h(e),"touchMove",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseMove(t,L(n,t))}})),a(h(e),"touchEnd",(function(t){if(t&&!(t.touches.length>1)){var n=t.changedTouches[0];e.handleMouseUp(L(n,t))}})),e}return s(n,[{key:"init",value:function(){var e=this.$el.get(0);e&&(e.addEventListener("mousedown",this.mouseDown,{passive:!1}),e.addEventListener("touchstart",this.touchStart,{passive:!1})),this.isMouseStarted=!1,this.mouseDelayTimer=null,this.isMouseDelayMet=!1,this.mouseDownInfo=null}},{key:"deinit",value:function(){var e=this.$el.get(0);e&&(e.removeEventListener("mousedown",this.mouseDown,{passive:!1}),e.removeEventListener("touchstart",this.touchStart,{passive:!1})),this.removeMouseMoveEventListeners()}},{key:"handleMouseDown",value:function(e){return this.isMouseStarted&&this.handleMouseUp(e),this.mouseDownInfo=e,!!this.mouseCapture(e)&&(this.handleStartMouse(),!0)}},{key:"handleStartMouse",value:function(){document.addEventListener("mousemove",this.mouseMove,{passive:!1}),document.addEventListener("touchmove",this.touchMove,{passive:!1}),document.addEventListener("mouseup",this.mouseUp,{passive:!1}),document.addEventListener("touchend",this.touchEnd,{passive:!1});var e=this.getMouseDelay();e?this.startMouseDelayTimer(e):this.isMouseDelayMet=!0}},{key:"startMouseDelayTimer",value:function(e){var t=this;this.mouseDelayTimer&&clearTimeout(this.mouseDelayTimer),this.mouseDelayTimer=window.setTimeout((function(){t.mouseDownInfo&&(t.isMouseDelayMet=!0)}),e),this.isMouseDelayMet=!1}},{key:"handleMouseMove",value:function(e,t){if(this.isMouseStarted)return this.mouseDrag(t),void(e.cancelable&&e.preventDefault());this.isMouseDelayMet&&(this.mouseDownInfo&&(this.isMouseStarted=!1!==this.mouseStart(this.mouseDownInfo)),this.isMouseStarted?(this.mouseDrag(t),e.cancelable&&e.preventDefault()):this.handleMouseUp(t))}},{key:"handleMouseUp",value:function(e){this.removeMouseMoveEventListeners(),this.isMouseDelayMet=!1,this.mouseDownInfo=null,this.isMouseStarted&&(this.isMouseStarted=!1,this.mouseStop(e))}},{key:"removeMouseMoveEventListeners",value:function(){document.removeEventListener("mousemove",this.mouseMove,{passive:!1}),document.removeEventListener("touchmove",this.touchMove,{passive:!1}),document.removeEventListener("mouseup",this.mouseUp,{passive:!1}),document.removeEventListener("touchend",this.touchEnd,{passive:!1})}}]),n}(T),A=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"_supportsLocalStorage",void 0),this.treeWidget=t}return s(e,[{key:"saveState",value:function(){var e=JSON.stringify(this.getState());this.treeWidget.options.onSetStateFromStorage?this.treeWidget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)}},{key:"getStateFromStorage",value:function(){var e=this.loadFromStorage();return e?this.parseState(e):null}},{key:"getState",value:function(){var e,t,n=this;return{open_nodes:(t=[],n.treeWidget.tree.iterate((function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0})),t),selected_node:(e=[],n.treeWidget.getSelectedNodes().forEach((function(t){null!=t.id&&e.push(t.id)})),e)}}},{key:"setInitialState",value:function(e){if(e){var t=!1;return e.open_nodes&&(t=this.openInitialNodes(e.open_nodes)),e.selected_node&&(this.resetSelection(),this.selectInitialNodes(e.selected_node)),t}return!1}},{key:"setInitialStateOnDemand",value:function(e,t){e?this.doSetInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()}},{key:"getNodeIdToBeSelected",value:function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null}},{key:"parseState",value:function(e){var t,n=JSON.parse(e);return n&&n.selected_node&&("number"==typeof(t=n.selected_node)&&t%1==0)&&(n.selected_node=[n.selected_node]),n}},{key:"loadFromStorage",value:function(){return this.treeWidget.options.onGetStateFromStorage?this.treeWidget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):null}},{key:"openInitialNodes",value:function(e){var t,n=!1,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(o.load_on_demand?n=!0:o.is_open=!0)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"selectInitialNodes",value:function(e){var t,n=0,i=m(e);try{for(i.s();!(t=i.n()).done;){var r=t.value,o=this.treeWidget.getNodeById(r);o&&(n+=1,this.treeWidget.selectNodeHandler.addToSelection(o))}}catch(e){i.e(e)}finally{i.f()}return 0!==n}},{key:"resetSelection",value:function(){var e=this.treeWidget.selectNodeHandler;e.getSelectedNodes().forEach((function(t){e.removeFromSelection(t)}))}},{key:"doSetInitialStateOnDemand",value:function(e,t,n){var i=this,r=0,o=e,s=function(){var e,s=[],l=m(o);try{for(l.s();!(e=l.n()).done;){var d=e.value,u=i.treeWidget.getNodeById(d);u?u.is_loading||(u.load_on_demand?a(u):i.treeWidget._openNode(u,!1,null)):s.push(d)}}catch(e){l.e(e)}finally{l.f()}o=s,i.selectInitialNodes(t)&&i.treeWidget._refreshElements(null),0===r&&n()},a=function(e){r+=1,i.treeWidget._openNode(e,!1,(function(){r-=1,s()}))};s()}},{key:"getKeyName",value:function(){return"string"==typeof this.treeWidget.options.saveState?this.treeWidget.options.saveState:"tree"}},{key:"supportsLocalStorage",value:function(){return null==this._supportsLocalStorage&&(this._supportsLocalStorage=function(){if(null==localStorage)return!1;try{var e="_storage_test";sessionStorage.setItem(e,"value"),sessionStorage.removeItem(e)}catch(e){return!1}return!0}()),this._supportsLocalStorage}}]),e}(),H=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"previousTop",void 0),a(this,"isInitialized",void 0),a(this,"$scrollParent",void 0),a(this,"scrollParentTop",void 0),this.treeWidget=t,this.previousTop=-1,this.isInitialized=!1}return s(e,[{key:"checkScrolling",value:function(){this.ensureInit(),this.checkVerticalScrolling(),this.checkHorizontalScrolling()}},{key:"scrollToY",value:function(e){if(this.ensureInit(),this.$scrollParent)this.$scrollParent[0].scrollTop=e;else{var t=this.treeWidget.$el.offset(),n=t?t.top:0;jQuery(document).scrollTop(e+n)}}},{key:"isScrolledIntoView",value:function(e){var t,n,i,r;this.ensureInit();var o=e.height()||0;if(this.$scrollParent){r=0,n=this.$scrollParent.height()||0;var s=e.offset();t=(i=(s?s.top:0)-this.scrollParentTop)+o}else{n=(r=jQuery(window).scrollTop()||0)+(jQuery(window).height()||0);var a=e.offset();t=(i=a?a.top:0)+o}return t<=n&&i>=r}},{key:"getScrollLeft",value:function(){return this.$scrollParent&&this.$scrollParent.scrollLeft()||0}},{key:"initScrollParent",value:function(){var e=this,t=function(){e.scrollParentTop=0,e.$scrollParent=null};"fixed"===this.treeWidget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;n0,s=n.left+i.clientWidth,a=n.left,l=e.pageX>s-20,d=e.pageX0,o=e.pageX>i-20,s=e.pageX-n<20;o?t.scrollLeft(n+20):s&&r&&t.scrollLeft(Math.max(n-20,0))}}}]),e}(),M=function(){function e(t){r(this,e),a(this,"treeWidget",void 0),a(this,"selectedNodes",void 0),a(this,"selectedSingleNode",void 0),this.treeWidget=t,this.selectedNodes=new Set,this.clear()}return s(e,[{key:"getSelectedNode",value:function(){var e=this.getSelectedNodes();return!!e.length&&e[0]}},{key:"getSelectedNodes",value:function(){var e=this;if(this.selectedSingleNode)return[this.selectedSingleNode];var t=[];return this.selectedNodes.forEach((function(n){var i=e.treeWidget.getNodeById(n);i&&t.push(i)})),t}},{key:"getSelectedNodesUnder",value:function(e){if(this.selectedSingleNode)return e.isParentOf(this.selectedSingleNode)?[this.selectedSingleNode]:[];var t=[];for(var n in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,n)){var i=this.treeWidget.getNodeById(n);i&&e.isParentOf(i)&&t.push(i)}return t}},{key:"isNodeSelected",value:function(e){return null!=e.id?this.selectedNodes.has(e.id):!!this.selectedSingleNode&&this.selectedSingleNode.element===e.element}},{key:"clear",value:function(){this.selectedNodes.clear(),this.selectedSingleNode=null}},{key:"removeFromSelection",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];null==e.id?this.selectedSingleNode&&e.element===this.selectedSingleNode.element&&(this.selectedSingleNode=null):(this.selectedNodes.delete(e.id),n&&e.iterate((function(){return null!=e.id&&t.selectedNodes.delete(e.id),!0})))}},{key:"addToSelection",value:function(e){null!=e.id?this.selectedNodes.add(e.id):this.selectedSingleNode=e}},{key:"isFocusOnTree",value:function(){var e=document.activeElement;return Boolean(e&&"SPAN"===e.tagName&&this.treeWidget._containsElement(e))}}]),e}(),x=function(){function e(t,n){r(this,e),a(this,"node",void 0),a(this,"$element",void 0),a(this,"treeWidget",void 0),this.init(t,n)}return s(e,[{key:"init",value:function(e,t){if(this.node=e,this.treeWidget=t,!e.element){var n=this.treeWidget.element.get(0);n&&(e.element=n)}e.element&&(this.$element=jQuery(e.element))}},{key:"addDropHint",value:function(e){return this.mustShowBorderDropHint(e)?new q(this.$element,this.treeWidget._getScrollLeft()):new B(this.node,this.$element,e)}},{key:"select",value:function(e){var t,n=this.getLi();n.addClass("jqtree-selected"),n.attr("aria-selected","true");var i=this.getSpan();i.attr("tabindex",null!==(t=this.treeWidget.options.tabIndex)&&void 0!==t?t:null),e&&i.trigger("focus")}},{key:"deselect",value:function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.removeAttr("tabindex"),t.blur()}},{key:"getUl",value:function(){return this.$element.children("ul:first")}},{key:"getSpan",value:function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")}},{key:"getLi",value:function(){return this.$element}},{key:"mustShowBorderDropHint",value:function(e){return e===k.Inside}}]),e}(),$=function(e){l(n,e);var t=c(n);function n(){return r(this,n),t.apply(this,arguments)}return s(n,[{key:"open",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"fast";if(!this.node.is_open){this.node.is_open=!0;var r=this.getButton();r.removeClass("jqtree-closed"),r.html("");var o=r.get(0);if(o){var s=this.treeWidget.renderer.openedIconElement.cloneNode(!0);o.appendChild(s)}var a=function(){t.getLi().removeClass("jqtree-closed"),t.getSpan().attr("aria-expanded","true"),e&&e(t.node),t.treeWidget._triggerEvent("tree.open",{node:t.node})};n?this.getUl().slideDown(i,a):(this.getUl().show(),a())}}},{key:"close",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"fast";if(this.node.is_open){this.node.is_open=!1;var i=this.getButton();i.addClass("jqtree-closed"),i.html("");var r=i.get(0);if(r){var o=this.treeWidget.renderer.closedIconElement.cloneNode(!0);r.appendChild(o)}var s=function(){e.getLi().addClass("jqtree-closed"),e.getSpan().attr("aria-expanded","false"),e.treeWidget._triggerEvent("tree.close",{node:e.node})};t?this.getUl().slideUp(n,s):(this.getUl().hide(),s())}}},{key:"mustShowBorderDropHint",value:function(e){return!this.node.is_open&&e===k.Inside}},{key:"getButton",value:function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")}}]),n}(x),q=function(){function e(t,n){r(this,e),a(this,"$hint",void 0);var i=t.children(".jqtree-element"),o=t.width()||0,s=Math.max(o+n-4,0),l=i.outerHeight()||0,d=Math.max(l-4,0);this.$hint=jQuery(''),i.append(this.$hint),this.$hint.css({width:s,height:d})}return s(e,[{key:"remove",value:function(){this.$hint.remove()}}]),e}(),B=function(){function e(t,n,i){r(this,e),a(this,"$element",void 0),a(this,"node",void 0),a(this,"$ghost",void 0),this.$element=n,this.node=t,this.$ghost=jQuery('
  • \n
  • '),i===k.After?this.moveAfter():i===k.Before?this.moveBefore():i===k.Inside&&(t.isFolder()&&t.is_open?this.moveInsideOpenFolder():this.moveInside())}return s(e,[{key:"remove",value:function(){this.$ghost.remove()}},{key:"moveAfter",value:function(){this.$element.after(this.$ghost)}},{key:"moveBefore",value:function(){this.$element.before(this.$ghost)}},{key:"moveInsideOpenFolder",value:function(){var e=this.node.children[0].element;e&&jQuery(e).before(this.$ghost)}},{key:"moveInside",value:function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")}}]),e}(),Q="Node parameter is empty",U="Parameter is empty: ",R=function(e){l(o,e);var t=c(o);function o(){var e;r(this,o);for(var n=arguments.length,i=new Array(n),s=0;s1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw Error(Q);var n=null!=t?t:this.options.slide;return e.is_open?this.closeNode(e,n):this.openNode(e,n),this.element}},{key:"getTree",value:function(){return this.tree}},{key:"selectNode",value:function(e,t){return this.doSelectNode(e,t),this.element}},{key:"getSelectedNode",value:function(){return this.selectNodeHandler.getSelectedNode()}},{key:"toJson",value:function(){return JSON.stringify(this.tree.getData())}},{key:"loadData",value:function(e,t){return this.doLoadData(e,t),this.element}},{key:"loadDataFromUrl",value:function(e,t,n){return"string"==typeof e?this.doLoadDataFromUrl(e,t,null!=n?n:null):this.doLoadDataFromUrl(null,e,t),this.element}},{key:"reload",value:function(e){return this.doLoadDataFromUrl(null,null,e),this.element}},{key:"refresh",value:function(){return this._refreshElements(null),this.element}},{key:"getNodeById",value:function(e){return this.tree.getNodeById(e)}},{key:"getNodeByName",value:function(e){return this.tree.getNodeByName(e)}},{key:"getNodeByNameMustExist",value:function(e){return this.tree.getNodeByNameMustExist(e)}},{key:"getNodesByProperty",value:function(e,t){return this.tree.getNodesByProperty(e,t)}},{key:"getNodeByHtmlElement",value:function(e){return this.getNode(jQuery(e))}},{key:"getNodeByCallback",value:function(e){return this.tree.getNodeByCallback(e)}},{key:"openNode",value:function(e,t,n){var i=this;if(!e)throw Error(Q);var r=function(){var e,r,o;("function"==typeof t?(e=t,r=null):(r=t,e=n),null==r)&&(r=null!==(o=i.options.slide)&&void 0!==o&&o);return[r,e]}(),o=f(r,2),s=o[0],a=o[1];return this._openNode(e,s,a),this.element}},{key:"closeNode",value:function(e,t){if(!e)throw Error(Q);var n=null!=t?t:this.options.slide;return(e.isFolder()||e.isEmptyFolder)&&(new $(e,this).close(n,this.options.animationSpeed),this.saveState()),this.element}},{key:"isDragging",value:function(){return this.dndHandler.isDragging}},{key:"refreshHitAreas",value:function(){return this.dndHandler.refresh(),this.element}},{key:"addNodeAfter",value:function(e,t){var n=t.addAfter(e);return n&&this._refreshElements(t.parent),n}},{key:"addNodeBefore",value:function(e,t){if(!t)throw Error(U+"existingNode");var n=t.addBefore(e);return n&&this._refreshElements(t.parent),n}},{key:"addParentNode",value:function(e,t){if(!t)throw Error(U+"existingNode");var n=t.addParent(e);return n&&this._refreshElements(n.parent),n}},{key:"removeNode",value:function(e){if(!e)throw Error(Q);if(!e.parent)throw Error("Node has no parent");this.selectNodeHandler.removeFromSelection(e,!0);var t=e.parent;return e.remove(),this._refreshElements(t),this.element}},{key:"appendNode",value:function(e,t){var n=t||this.tree,i=n.append(e);return this._refreshElements(n),i}},{key:"prependNode",value:function(e,t){var n=null!=t?t:this.tree,i=n.prepend(e);return this._refreshElements(n),i}},{key:"updateNode",value:function(e,t){if(!e)throw Error(Q);var n="object"===i(t)&&t.id&&t.id!==e.id;return n&&this.tree.removeNodeFromIndex(e),e.setData(t),n&&this.tree.addNodeToIndex(e),"object"===i(t)&&t.children&&t.children instanceof Array&&(e.removeChildren(),t.children.length&&e.loadFromData(t.children)),this._refreshElements(e),this.element}},{key:"isSelectedNodeInSubtree",value:function(e){var t=this.getSelectedNode();return!!t&&(e===t||e.isParentOf(t))}},{key:"moveNode",value:function(e,t,n){if(!e)throw Error(Q);if(!t)throw Error(U+"targetNode");var i=N[n];return void 0!==i&&(this.tree.moveNode(e,t,i),this._refreshElements(null)),this.element}},{key:"getStateFromStorage",value:function(){return this.saveStateHandler.getStateFromStorage()}},{key:"addToSelection",value:function(e,t){if(!e)throw Error(Q);return this.selectNodeHandler.addToSelection(e),this._getNodeElementForNode(e).select(void 0===t||t),this.saveState(),this.element}},{key:"getSelectedNodes",value:function(){return this.selectNodeHandler.getSelectedNodes()}},{key:"isNodeSelected",value:function(e){if(!e)throw Error(Q);return this.selectNodeHandler.isNodeSelected(e)}},{key:"removeFromSelection",value:function(e){if(!e)throw Error(Q);return this.selectNodeHandler.removeFromSelection(e),this._getNodeElementForNode(e).deselect(),this.saveState(),this.element}},{key:"scrollToNode",value:function(e){if(!e)throw Error(Q);var t=jQuery(e.element).offset(),n=t?t.top:0,i=this.$el.offset(),r=n-(i?i.top:0);return this.scrollHandler.scrollToY(r),this.element}},{key:"getState",value:function(){return this.saveStateHandler.getState()}},{key:"setState",value:function(e){return this.saveStateHandler.setInitialState(e),this._refreshElements(null),this.element}},{key:"setOption",value:function(e,t){return this.options[e]=t,this.element}},{key:"moveDown",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveDown(e),this.element}},{key:"moveUp",value:function(){var e=this.getSelectedNode();return e&&this.keyHandler.moveUp(e),this.element}},{key:"getVersion",value:function(){return"1.7.0"}},{key:"_triggerEvent",value:function(e,t){var n=jQuery.Event(e,t);return this.element.trigger(n),n}},{key:"_openNode",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0,r=function(e,n,i){new $(e,t).open(i,n,t.options.animationSpeed)};if(e.isFolder()||e.isEmptyFolder)if(e.load_on_demand)this.loadFolderOnDemand(e,n,i);else{for(var o=e.parent;o;)o.parent&&r(o,!1,null),o=o.parent;r(e,n,i),this.saveState()}}},{key:"_refreshElements",value:function(e){var t=this.selectNodeHandler.isFocusOnTree(),n=!!e&&this.isSelectedNodeInSubtree(e);this.renderer.render(e),n&&this.selectCurrentNode(t),this._triggerEvent("tree.refresh")}},{key:"_getNodeElementForNode",value:function(e){return e.isFolder()?new $(e,this):new x(e,this)}},{key:"_getNodeElement",value:function(e){var t=this.getNode(e);return t?this._getNodeElementForNode(t):null}},{key:"_containsElement",value:function(e){var t=this.getNode(jQuery(e));return null!=t&&t.tree===this.tree}},{key:"_getScrollLeft",value:function(){return this.scrollHandler.getScrollLeft()}},{key:"init",value:function(){v(d(o.prototype),"init",this).call(this),this.element=this.$el,this.isInitialized=!1,this.options.rtl=this.getRtlOption(),null==this.options.closedIcon&&(this.options.closedIcon=this.getDefaultClosedIcon()),this.renderer=new C(this),this.dataLoader=new w(this),this.saveStateHandler=new A(this),this.selectNodeHandler=new M(this),this.dndHandler=new D(this),this.scrollHandler=new H(this),this.keyHandler=new F(this),this.initData(),this.element.on("click",this.handleClick),this.element.on("dblclick",this.handleDblclick),this.options.useContextMenu&&this.element.on("contextmenu",this.handleContextmenu)}},{key:"deinit",value:function(){this.element.empty(),this.element.off(),this.keyHandler.deinit(),this.tree=new _({},!0),v(d(o.prototype),"deinit",this).call(this)}},{key:"mouseCapture",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseCapture(e)}},{key:"mouseStart",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStart(e)}},{key:"mouseDrag",value:function(e){if(this.options.dragAndDrop){var t=this.dndHandler.mouseDrag(e);return this.scrollHandler.checkScrolling(),t}return!1}},{key:"mouseStop",value:function(e){return!!this.options.dragAndDrop&&this.dndHandler.mouseStop(e)}},{key:"getMouseDelay",value:function(){var e;return null!==(e=this.options.startDndDelay)&&void 0!==e?e:0}},{key:"initData",value:function(){this.options.data?this.doLoadData(this.options.data,null):this.getDataUrlInfo(null)?this.doLoadDataFromUrl(null,null,null):this.doLoadData([],null)}},{key:"getDataUrlInfo",value:function(e){var t,n=this,r=this.options.dataUrl||this.element.data("url"),o=function(t){if(null!=e&&e.id){var i={node:e.id};t.data=i}else{var r=n.getNodeIdToBeSelected();if(r){var o={selected_node:r};t.data=o}}};return"function"==typeof r?r(e):"string"==typeof r?(o(t={url:r}),t):r&&"object"===i(r)?(o(r),r):null}},{key:"getNodeIdToBeSelected",value:function(){return this.options.saveState?this.saveStateHandler.getNodeIdToBeSelected():null}},{key:"initTree",value:function(e){var t=this,n=function(){t.isInitialized||(t.isInitialized=!0,t._triggerEvent("tree.init"))};if(this.options.nodeClass){this.tree=new this.options.nodeClass(null,!0,this.options.nodeClass),this.selectNodeHandler.clear(),this.tree.loadFromData(e);var i=this.setInitialState();this._refreshElements(null),i?this.setInitialStateOnDemand(n):n()}}},{key:"setInitialState",value:function(){var e=this,t=f(function(){if(e.options.saveState){var t=e.saveStateHandler.getStateFromStorage();return t?[!0,e.saveStateHandler.setInitialState(t)]:[!1,!1]}return[!1,!1]}(),2),n=t[0],i=t[1];return n||(i=function(){if(!1===e.options.autoOpen)return!1;var t=e.getAutoOpenMaxLevel(),n=!1;return e.tree.iterate((function(e,i){return e.load_on_demand?(n=!0,!1):!!e.hasChildren()&&(e.is_open=!0,i!==t)})),n}()),i}},{key:"setInitialStateOnDemand",value:function(e){var t,n,i,r,o=this;(function(){if(o.options.saveState){var t=o.saveStateHandler.getStateFromStorage();return!!t&&(o.saveStateHandler.setInitialStateOnDemand(t,e),!0)}return!1})()||(t=o.getAutoOpenMaxLevel(),n=0,i=function(e){n+=1,o._openNode(e,!1,(function(){n-=1,r()}))},(r=function(){o.tree.iterate((function(e,n){return e.load_on_demand?(e.is_loading||i(e),!1):(o._openNode(e,!1,null),n!==t)})),0===n&&e()})())}},{key:"getAutoOpenMaxLevel",value:function(){return!0===this.options.autoOpen?-1:"number"==typeof this.options.autoOpen?this.options.autoOpen:"string"==typeof this.options.autoOpen?parseInt(this.options.autoOpen,10):0}},{key:"getClickTarget",value:function(e){var t=jQuery(e),n=t.closest(".jqtree-toggler");if(n.length){var i=this.getNode(n);if(i)return{type:"button",node:i}}else{var r=t.closest(".jqtree-element");if(r.length){var o=this.getNode(r);if(o)return{type:"label",node:o}}}return null}},{key:"getNode",value:function(e){var t=e.closest("li.jqtree_common");return 0===t.length?null:t.data("node")}},{key:"saveState",value:function(){this.options.saveState&&this.saveStateHandler.saveState()}},{key:"selectCurrentNode",value:function(e){var t=this.getSelectedNode();if(t){var n=this._getNodeElementForNode(t);n&&n.select(e)}}},{key:"deselectCurrentNode",value:function(){var e=this.getSelectedNode();e&&this.removeFromSelection(e)}},{key:"getDefaultClosedIcon",value:function(){return this.options.rtl?"◀":"►"}},{key:"getRtlOption",value:function(){if(null!=this.options.rtl)return this.options.rtl;var e=this.element.data("rtl");return null!==e&&!1!==e&&void 0!==e}},{key:"doSelectNode",value:function(e,t){var i=this,r=function(){i.options.saveState&&i.saveStateHandler.saveState()};if(!e)return this.deselectCurrentNode(),void r();var o=n(n({},{mustSetFocus:!0,mustToggle:!0}),t||{});if(i.options.onCanSelectNode?!0===i.options.selectable&&i.options.onCanSelectNode(e):!0===i.options.selectable){if(this.selectNodeHandler.isNodeSelected(e))o.mustToggle&&(this.deselectCurrentNode(),this._triggerEvent("tree.select",{node:null,previous_node:e}));else{var s=this.getSelectedNode()||null;this.deselectCurrentNode(),this.addToSelection(e,o.mustSetFocus),this._triggerEvent("tree.select",{node:e,deselected_node:s}),(a=e.parent)&&a.parent&&!a.is_open&&i.openNode(a,!1)}var a;r()}}},{key:"doLoadData",value:function(e,t){e&&(t?(this.deselectNodes(t),this.loadSubtree(e,t)):this.initTree(e),this.isDragging()&&this.dndHandler.refresh()),this._triggerEvent("tree.load_data",{tree_data:e,parent_node:t})}},{key:"deselectNodes",value:function(e){var t,n=m(this.selectNodeHandler.getSelectedNodesUnder(e));try{for(n.s();!(t=n.n()).done;){var i=t.value;this.selectNodeHandler.removeFromSelection(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"loadSubtree",value:function(e,t){t.loadFromData(e),t.load_on_demand=!1,t.is_loading=!1,this._refreshElements(t)}},{key:"doLoadDataFromUrl",value:function(e,t,n){var i=e||this.getDataUrlInfo(t);this.dataLoader.loadFromUrl(i,t,n)}},{key:"loadFolderOnDemand",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2?arguments[2]:void 0;e.is_loading=!0,this.doLoadDataFromUrl(null,e,(function(){t._openNode(e,n,i)}))}}]),o}(O);return a(R,"defaults",{animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,closedIcon:void 0,data:void 0,dataFilter:void 0,dataUrl:void 0,dragAndDrop:!1,keyboardSupport:!0,nodeClass:_,onCanMove:void 0,onCanMoveTo:void 0,onCanSelectNode:void 0,onCreateLi:void 0,onDragMove:void 0,onDragStop:void 0,onGetStateFromStorage:void 0,onIsMoveHandle:void 0,onLoadFailed:void 0,onLoading:void 0,onSetStateFromStorage:void 0,openedIcon:"▼",openFolderDelay:500,rtl:void 0,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0}),T.register(R,"tree"),e.JqTreeWidget=R,e}({}); //# sourceMappingURL=tree.jquery.js.map diff --git a/tree.jquery.js.map b/tree.jquery.js.map index 2a48ea35..e051fe09 100644 --- a/tree.jquery.js.map +++ b/tree.jquery.js.map @@ -1 +1 @@ -{"version":3,"file":"tree.jquery.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.0\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record[] => {\n return nodes.map((node) => {\n const tmpNode: Record = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0];\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback,\n handleError: JQuery.Ajax.ErrorCallback\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget extends SimpleWidget {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery;\n\n constructor($element: JQuery, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `
  • \n
  • `\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - â–º BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - â–¼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","isNodeRecordWithChildren","data","_typeof","Array","Node","o","isRoot","nodeClass","_classCallCheck","this","_defineProperty","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","removeChildren","_step","_iterator","_createForOfIteratorHelper","s","n","done","node","createNode","addChild","length","loadFromData","err","e","f","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","_step2","_iterator2","child","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","concat","result","iterate","nodeInfo","childIndex","newParent","_step3","originalParent","_iterator3","removeChild","nodeId","get","id","set","_this","_this$tree","removeNodeFromIndex","previousIndex","nextIndex","filter","includeChildren","nextSibling","getNextSibling","getNextNode","is_open","previousSibling","getPreviousSibling","getLastChild","getParent","lastChild","nodeData","_this2","addChildren","childrenData","_step4","_iterator4","initFromData","_this$tree2","addNodeToIndex","_this$tree3","_this$tree4","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","_this$treeWidget$opti","undefined","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolderDelay","openFolderTimer","window","setTimeout","_openNode","slide","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","nextNode","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","i","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","mustIterateInside","handleFirstNode","handleOpenFolder","handleClosedFolder","handleNode","childrenLength","forEach","_","handleAfterOpenFolder","nodeName","offsetX","offsetY","$tree","text","html","css","append","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","submitRequest","loadData","parseData","jqXHR","onLoadFailed","isLoading","onLoading","urlInfoInput","handleSuccess","handleError","_ajaxSettings$method","ajaxSettings","_objectSpread","method","cache","dataType","success","error","url","toUpperCase","ajax","dataFilter","parsedData","JSON","parse","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getNextVisibleNode","getPreviousVisibleNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","init","destroyWidget","destroy","removeData","callFunction","functionName","args","widgetFunction","apply","fn","argument1","_len","arguments","_key","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","selectedNodeIds","openNodes","open_nodes","selected_node","getSelectedNodes","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","removeFromSelection","nodeIdsParam","selectedNodes","loadingCount","newNodesIds","loadAndOpenNode","saveState","_supportsLocalStorage","sessionStorage","removeItem","testSupport","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","scrollParentTop","scrollLeft","setDocumentAsScrollParent","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","getParentWithOverflow","tagName","initScrollParent","scrollParent","offsetHeight","refreshHitAreas","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","_NodeElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","_parseParams","_this2$options$slide","parseParams","_parseParams2","_slicedToArray","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","eventName","values","event","Event","doOpenNode","_node","_slide","_onFinished","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","_this$options$startDn","startDndDelay","getDataUrlInfo","dataUrl","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","_this5","doInit","setInitialStateOnDemand","_this6","_restoreState2","restoreState","isRestored","autoOpen","maxLevel","getAutoOpenMaxLevel","autoOpenNodes","_this7","parseInt","$target","dataRtl","_this8","deselectCurrentNode","selectOptions","mustToggle","onCanSelectNode","selectable","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","initTree","tree_data","parent_node","getSelectedNodesUnder","urlInfoParam","loadFromUrl","_this9"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tree.jquery.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.0\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record[] => {\n return nodes.map((node) => {\n const tmpNode: Record = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0];\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback,\n handleError: JQuery.Ajax.ErrorCallback\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget extends SimpleWidget {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery;\n\n constructor($element: JQuery, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `
  • \n
  • `\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - â–º BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - â–¼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","isNodeRecordWithChildren","data","_typeof","Array","Node","o","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","this","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","removeChildren","_step","_iterator","_createForOfIteratorHelper","s","n","done","node","createNode","addChild","loadFromData","err","e","f","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","_step2","_iterator2","child","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","concat","result","iterate","nodeInfo","childIndex","newParent","_step3","originalParent","_iterator3","removeChild","nodeId","get","id","set","_this","_this$tree","removeNodeFromIndex","previousIndex","nextIndex","filter","nextSibling","getNextSibling","getNextNode","is_open","previousSibling","getPreviousSibling","getLastChild","getParent","lastChild","nodeData","_this2","addChildren","childrenData","_step4","_iterator4","initFromData","_this$tree2","addNodeToIndex","_this$tree3","_this$tree4","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","_this$treeWidget$opti","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolderDelay","openFolderTimer","window","setTimeout","_openNode","slide","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","nextNode","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","i","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","mustIterateInside","handleFirstNode","handleOpenFolder","handleClosedFolder","handleNode","childrenLength","forEach","_","handleAfterOpenFolder","nodeName","offsetX","offsetY","$tree","text","html","css","append","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","submitRequest","loadData","parseData","jqXHR","onLoadFailed","isLoading","onLoading","urlInfoInput","handleSuccess","handleError","_ajaxSettings$method","ajaxSettings","_objectSpread","method","cache","dataType","success","error","url","toUpperCase","ajax","dataFilter","parsedData","JSON","parse","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getNextVisibleNode","getPreviousVisibleNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","init","fn","argument1","functionName","destroy","removeData","destroyWidget","_len","args","_key","widgetFunction","apply","callFunction","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","selectedNodeIds","openNodes","open_nodes","selected_node","getSelectedNodes","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","removeFromSelection","nodeIdsParam","selectedNodes","loadingCount","newNodesIds","loadAndOpenNode","saveState","_supportsLocalStorage","sessionStorage","removeItem","testSupport","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","scrollParentTop","scrollLeft","setDocumentAsScrollParent","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","getParentWithOverflow","tagName","initScrollParent","scrollParent","offsetHeight","refreshHitAreas","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","includeChildren","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","_NodeElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","_parseParams","_this2$options$slide","parseParams","_parseParams2","_slicedToArray","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","eventName","values","event","Event","doOpenNode","_node","_slide","_onFinished","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","_this$options$startDn","startDndDelay","getDataUrlInfo","dataUrl","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","_this5","doInit","setInitialStateOnDemand","_this6","_restoreState2","restoreState","isRestored","autoOpen","maxLevel","getAutoOpenMaxLevel","autoOpenNodes","_this7","parseInt","$target","dataRtl","_this8","deselectCurrentNode","selectOptions","mustToggle","onCanSelectNode","selectable","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","initTree","tree_data","parent_node","getSelectedNodesUnder","urlInfoParam","loadFromUrl","_this9"],"mappings":"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"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index b0d3f44f..cd2d7da7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "noImplicitAny": true, "noImplicitReturns": true, "noImplicitThis": true, + "noUncheckedIndexedAccess": true, "noUnusedLocals": true, "noUnusedParameters": true, "rootDir": "src",